这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战
前言
helm 命令行 参数众多,如果有UI工具使用,肯定会更加方便了,
前几年流行的 Monocular 已经不再支持了,另一个新秀马上就出来了 就是kubeapps
kubeapps
kubeapps特点
- 访问和操作公有和私有的helm 仓库
- 支持创建和管理多namespace
- 支持RBAC身份验证和授权
更多详情,请直接浏览官网
kubeapps 官网 kubeapps.com/
kubeapps github地址 github.com/kubeapps/ku…
安装
先决条件
- kubernetes 版本 >=11.15
- helm 版本 >=3.1.0
第1步
创建kubeapps 命名空间,然后直接使用helm安装
kubectl create namespace kubeapps
helm install kubeapps --namespace kubeapps bitnami/kubeapps
返回输出,前面章节提到helm 只会按照顺序将所需要的资源提交 创建,但有没有启动成功是不管的,所有还需要使用kubectl查看 部署进展,,下方输出也有 说明
NAME: kubeapps
NAMESPACE: kubeapps
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **
Tip:
Watch the deployment status using the command: kubectl get pods -w --namespace kubeapps
Kubeapps can be accessed via port 80 on the following DNS name from within your cluster:
kubeapps.kubeapps.svc.cluster.local
To access Kubeapps from outside your K8s cluster, follow the steps below:
1. Get the Kubeapps URL by running these commands:
echo "Kubeapps URL: http://127.0.0.1:8080"
kubectl port-forward --namespace kubeapps service/kubeapps 8080:80
2. Open a browser and access Kubeapps using the obtained URL.
### WARNING: You did not provide a value for the postgresqlPassword so one has been generated randomly ###
接下来我们使用 kubectl get pods -w --namespace kubeapps 查看进度
最后还有一个警告,说明postgresql 没有设置密码,是随机值,这个暂时不管,因为我们在测试,后面改也行
第2步
然后接下来创建一下账号和集群权限,这里创建的是管理员权限,如果在生产环境创建普通角色既可
kubectl create --namespace default serviceaccount kubeapps-operator
kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator
账号创建之后,获取一下令牌
kubectl get secret $(kubectl get serviceaccount kubeapps-operator -o jsonpath='{range .secrets[*]}{.name}{"\n"}{end}' | grep kubeapps-operator-token) -o jsonpath='{.data.token}' -o go-template='{{.data.token | base64decode}}' && echo
可以看到令牌其实是放在.data.token里面的加密的,最后用了base64decode解密出来
第3步
转发端口,以便访问服务
kubectl port-forward --namespace kubeapps service/kubeapps 8080:80
前面的8080是监听在本机的,后面的80是指service/kubeapps 这个资源的,如果本机8080已被占用,可以换成其他端口
但是如果我们使用上面的命令,是无法访问的,因为默认监听在127.0.0.1上,我们的浏览器不可能访问到服务器的127.0.0.1。所以需要使用全局监控,这样访问 IP:8080就可以了
kubectl port-forward --address 0.0.0.0 --namespace kubeapps service/kubeapps 8080:80
输入前面获取的token令牌
如果觉得转发端口麻烦,可以将service改成NodePort使用 IP:PORT访问
kubectl edit -n kubeapps svc/kubeapps
#edit保存既生效,查看nodeport端口
kubectl get svc -n kubeapps
分析资源
然后看看该服务启动了哪些资源,把replicaset 过滤掉,因为deployment是基于rep,2个内容是一样的
kubectl get all -n kubeapps | grep -v replicaset
- kubeapps 是一组nginx应用
- kubeops 是一组后端应用
- kubedashboard 是一组前端应用
- 后端和前端以及nginx使用了deployment控制器
- pg数据库,属于有状态服务,使用了statefulset控制器
- 使用batch批处理同步apprepo
- 使用cronjab定时每10分钟同步apprepo
使用
打开界面后,可以看到2个kubeapps chart 因为我们现在只用helm部署了2个
点击center-nginx 这个chart ,进入到功能面版,可以进行更新,回滚,删除等动作,还可以看到部署时的Note message
右上角的管理功能面版,可以看到集群的所有namespace
Repo功能
因为暂时只有一个bitnami仓库,如果要添加仓库 请选择右上角的Application Repositories
Name 和helm chart 地址填一下既可
Operator功能
如果想启用支持Operator,需要再部署软件,默认是没有加上的
安装支持包
curl -L https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.18.2/install.sh -o install.sh
chmod +x install.sh
./install.sh v0.18.2
安装完成再打开 operator页面,点击应用就可以看到相应功能了