作者:槐佳辉。Sealos maintainer
在 Kubernetes 的世界中,命令行工具(如 kubectl 和 helm)是我们与集群交互的主要方式。然而,有时候,我们可能希望能够在 Web 页面中直接打开一个终端,执行这些命令,而不需要在本地环境中安装和配置这些工具。本文将深入探讨如何通过 Kubernetes 自定义资源定义(CRD)实现这个功能,并通过一个真实的示例展示其设计和实现过程。

Sealos 中的 App Launchpad 和 Database 等应用为我们屏蔽掉了 kubernetes 资源层面的逻辑,抽象为应用层,但是对应更为复杂的情况,可能需要我们更原生的操作 kubernetes。
如下所示,在 Terminal 中与 K8s API Server 交互:
查看 Pod 资源(kubernetes 最小调度单位,真正运行容器的资源):
$ kubectl get pod

查看存储 pvc 资源(容器挂载的存储资源,如 App Launchpad 中指定的存储):
$ kubectl get pvc

Terminal 高级用法
Terminal 还支持更为复杂的操作。
Terminal + App Launchpad 一键交互
可以直接通过终端 App 进入每个应用所在容器的终端。假设你在应用管理中部署了一个应用 Nginx,可以直接进入 Nginx 应用的详情页面,依次点击详情右侧的三个点,再点击「终端」,便进入了 Nginx 应用的终端。


Terminal + Database 一键直连
在终端中一键直连数据库 App 中创建的数据库。
进入数据库详情页面,点击左侧的「一键连接」:

跳转到 Terminal 并直连数据库:

本文探讨如何通过Kubernetes自定义资源定义(CRD)在Web页面实现终端功能。介绍了Terminal高级用法,如与App Launchpad、Database交互,阐述功能设计与实现,包括Controller、Pod等,还提及前后端交互流程、自定义配置,最后提出未来改进方向,提升用户与集群交互体验。
最低0.47元/天 解锁文章
1596

被折叠的 条评论
为什么被折叠?



