- 云原生
- 后端
- 前端
【免费下载链接】kubeapps
A web-based UI for deploying and managing applications in Kubernetes clusters
Kubeapps 是一个面向 Kubernetes 集群的云原生应用管理平台,提供浏览、部署和运维应用全生命周期的 Web 界面。本文基于 Kubeapps 官方入门教程,带你完成一次完整的实践:用 Helm 安装 Kubeapps、创建演示用访问凭证、通过kubectl port-forward启动 Dashboard,并部署、查看和卸载一个 WordPress 示例应用。读完并跟做完本文,你将掌握 Kubeapps 的安装方式、API Token 认证原理与 Dashboard 的核心使用流程。
前置条件
在开始之前,请确认你的环境满足以下条件(依据 官方教程):
- 一个可用的 Kubernetes 集群(v1.21+),以及已安装并配置好、能与集群通信的
helm(v3.2.0+)和kubectl命令行工具; - Kubeapps 已在 AKS、GKE、kind、minikube 和 Docker for Desktop Kubernetes 上测试通过;
- Kubeapps 支持启用了 RBAC 的集群,推荐在启用 RBAC 的集群上安装以获得更高安全性。
在 GKE 上安装 Kubeapps 需要拥有 "Owner" 角色或 "Container Engine Admin" 角色。
Step 1:安装 Kubeapps
推荐通过 Bitnami 官方 Kubeapps chart 安装最新版本。安装命令为:
kubectl create namespace kubeapps helm install kubeapps --namespace kubeapps oci://registry-1.docker.io/bitnamicharts/kubeapps以上命令会将 Kubeapps 部署到集群的kubeapps命名空间,安装过程可能需要几分钟。待 Pod 全部运行后再继续下一步。
从仓库中的 chart 结构看(Chart.yaml),当前仓库维护的 chart 版本为17.1.1,一次安装会部署多个协同工作的组件:
| 组件 | 职责 | 源码/镜像 |
|---|---|---|
frontend | NGINX 前端入口,对外暴露 HTTP 服务 | templates/frontend |
dashboard | React 构建的 Web 界面 | dashboard/src |
kubeapps-apis | gRPC API 服务,提供包仓库与应用管理接口 | cmd/kubeapps-apis |
apprepository-controller | 同步 AppRepository 与 Helm 仓库索引 | cmd/apprepository-controller |
asset-syncer | 将包索引写入 PostgreSQL 并失效缓存 | cmd/asset-syncer |
oci-catalog | 提供 OCI 目录(如 Docker Hub)列表能力 | cmd/oci-catalog |
pinniped-proxy | Pinniped 认证代理 | cmd/pinniped-proxy |
其中frontend的 Service 名称由 frontend/service.yaml 中的common.names.fullname模板生成,即等于 release 名称kubeapps——这正是后文port-forward svc/kubeapps能直接生效的原因;而 Dashboard 的 Service 名称则带-internal-dashboard后缀,见 _helpers.tpl 中的kubeapps.dashboard.fullname定义。更详细的安装、配置与升级参数请查阅 chart README。
Step 2:创建访问 Kubeapps 和 Kubernetes 的演示凭证
对于正式面向用户的生产安装,应当 配置 OAuth2/OIDC 提供方 来启用安全认证;但仅为了快速体验,更简单的做法是创建一个 Kubernetes ServiceAccount,用它的 API Token 通过 Kubeapps 认证 Kubernetes API Server。
注意:生产环境中不建议给用户分配
cluster-admin角色,请参见 访问控制文档 为不同用户配置细粒度访问控制。
Linux/macOS
kubectl create --namespace default serviceaccount kubeapps-operator kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Secret metadata: name: kubeapps-operator-token namespace: default annotations: kubernetes.io/service-account.name: kubeapps-operator type: kubernetes.io/service-account-token EOFWindows
kubectl create --namespace default serviceaccount kubeapps-operator kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator @" apiVersion: v1 kind: Secret metadata: name: kubeapps-operator-token namespace: default annotations: kubernetes.io/service-account.name: kubeapps-operator type: kubernetes.io/service-account-token "@ | kubectl apply -f -创建完成后,获取 Token:
Linux/macOS
kubectl get --namespace default secret kubeapps-operator-token -o go-template='{{.data.token | base64decode}}'Windows(PowerShell)
[Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($(kubectl get --namespace default secret kubeapps-operator-token -o jsonpath='{.data.token}')))Windows(CMD)
创建名为GetDashToken.cmd的文件,内容如下:
@ECHO OFF REM Get the Base64 encoded token kubectl get --namespace default secret kubeapps-operator-token -o jsonpath={.data.token} > b64.txt REM Decode The Token DEL token.txt certutil -decode b64.txt token.txt在命令提示符中运行GetDashToken.cmd,Token 内容即保存在token.txt中。
机制说明:上面创建的 Secret 类型为kubernetes.io/service-account-token,并通过注解kubernetes.io/service-account.name绑定到kubeapps-operatorServiceAccount——Kubernetes API Server 检测到该 Secret 后会签发一个长期有效的 Bearer Token。之后你在 Dashboard 登录页粘贴的正是这个 Token:Dashboard 的登录组件(参见 TokenLogin.tsx)将其提交给后端,Kubeapps 再以该身份调用 Kubernetes API Server,因此该凭证的 RBAC 权限决定了你在 Kubeapps 中能看到和操作的范围。
Step 3:启动 Kubeapps Dashboard
Kubeapps 安装完成后,在本地运行以下命令建立安全访问通道:
kubectl port-forward -n kubeapps svc/kubeapps 8080:80这会启动一个 HTTP 代理,将本机 8080 端口转发到集群内的kubeapps前端服务。在浏览器中访问 http://127.0.0.1:8080/ 即可打开 Dashboard 登录页:
将上一步生成的 Token 粘贴到登录框中完成认证,即可进入 Kubeapps Dashboard,浏览集群中已部署的应用与可用的应用目录。
注意:如果是为其他人部署 Kubeapps,应使用LoadBalancer/NodePort类型的 Service 或配置 Ingress 代替kubectl port-forward。仓库中的 ingress.yaml 支持ingress.hostname、ingress.extraHosts、TLS 与 cert-manager 注解等配置,相关参数见 values.yaml。
Step 4:部署应用——WordPress
Dashboard 启动后即可开始向集群部署应用。以部署 WordPress 为例:
使用Deploy按钮或点击Catalog页面,从已配置的任意仓库中的包列表里选择应用。本例假设要部署 WordPress,可在搜索框中检索:
点击Deploy按钮,进入 Chart 详情页。
Kubeapps 会提示你输入 release 名称和应用配置值;表单由 Chart 的
values(YAML)驱动,可在相邻的 YAML 标签页中查看原始内容:点击Deploy按钮开始部署。你可以直接在浏览器中跟踪新部署的状态:页面顶部显示状态、应用的
access URL以及应用包含的secret;页面下方可以看到各个资源,以及 Ready Pod 数量;将鼠标悬停在status上可以看到各工作负载中 Ready/总 Pod 数。
访问 WordPress 站点:运行Notes部分给出的命令获取 URL,或直接点击页面上显示的 HTTP/HTTPS URL。
注意:取决于云服务商,应用的可访问 URL 可能需要一段时间才能就绪,在 URL 分配前 Service 会保持 "Pending" 状态。如果使用的是 Minikube,需要在终端运行
minikube tunnel,应用才能分配 IP 地址。
获取登录凭证:查看Notes部分可获取 WordPress 账号登录信息;也可以点击wordpress-password旁边的"眼睛"图标直接查看密码。
可选 Step 5:卸载/删除 WordPress
如果希望卸载 WordPress,只需在应用详情页点击Delete按钮,Kubeapps 会通过 Helm 卸载该 release 并级联删除相关资源。
后续步骤
完成本篇快速上手后,建议沿着仓库内文档继续深入:
- 访问控制:为不同用户配置基于 RBAC 的细粒度权限;
- 配置 OIDC 提供方:用 OAuth2/OIDC 替代演示 Token 实现正式用户认证;
- chart README:完整的安装、配置与升级参数说明(含
values.yaml全量参数); - 管理包仓库:添加私有/自定义 Helm 仓库;
- ROADMAP:了解 Kubeapps 项目规划。
Kubeapps 核心能力概览:
- 从公有或私有仓库浏览并部署打包应用;
- 通过直观的 UI 自定义部署配置;
- 升级、管理和删除集群中已部署的应用;
- 通过 API 管理包仓库与应用(实现见 cmd/kubeapps-apis)。
- 云原生
- 后端
- 前端
【免费下载链接】kubeapps
A web-based UI for deploying and managing applications in Kubernetes clusters
相关推荐
Kubeapps 快速上手:从 Helm 安装到在 Kubernetes 集群中部署首个 WordPress 应用
Kubeapps 快速上手:从 Helm 安装到在 Kubernetes 集群中部署首个 WordPress 应用 Kubeapps 是运行在 Kubernet
云原生后端前端Nuclio 快速上手:用 Docker 一键启动 Dashboard 并部署你的第一个 Serverless 函数
Nuclio 快速上手:用 Docker 一键启动 Dashboard 并部署你的第一个 Serverless 函数 Nuclio 是一个高性能的 Server
云原生后端微服务5分钟上手Helm:从安装到部署第一个Kubernetes应用
5分钟上手Helm:从安装到部署第一个Kubernetes应用 你还在手动编写Kubernetes YAML文件吗?还在为应用版本管理和回滚烦恼吗?本文将带你5
云原生容器编排CLI运维
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考