helm3 kubeapps

1,127 阅读4分钟

这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战

前言

helm 命令行 参数众多,如果有UI工具使用,肯定会更加方便了, 前几年流行的 Monocular 已经不再支持了,另一个新秀马上就出来了 就是kubeapps

kubeapps

24.png

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令牌

13.png

如果觉得转发端口麻烦,可以将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

14.png

  • kubeapps 是一组nginx应用
  • kubeops 是一组后端应用
  • kubedashboard 是一组前端应用
  • 后端和前端以及nginx使用了deployment控制器
  • pg数据库,属于有状态服务,使用了statefulset控制器
  • 使用batch批处理同步apprepo
  • 使用cronjab定时每10分钟同步apprepo

使用

打开界面后,可以看到2个kubeapps chart 因为我们现在只用helm部署了2个

19.png

点击center-nginx 这个chart ,进入到功能面版,可以进行更新,回滚,删除等动作,还可以看到部署时的Note message

20.png

右上角的管理功能面版,可以看到集群的所有namespace

15.png

Repo功能

因为暂时只有一个bitnami仓库,如果要添加仓库 请选择右上角的Application Repositories

Name 和helm chart 地址填一下既可 16.png 18.png

Operator功能

如果想启用支持Operator,需要再部署软件,默认是没有加上的 17.png

安装支持包

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页面,点击应用就可以看到相应功能了