kubernetes(k8s):部署kubeapps应用,为Helm提供web UI界面管理

╰+哭是因爲堅強的太久メ 2023-02-17 03:16 71阅读 0赞

文章目录

    1. 部署kubeapps
    1. kubeapps的登陆
    1. kubeapps的使用
    1. 使用chart部署ingress-nginx应用
    1. 更新和回滚

1. 部署kubeapps

部署kubeapps应用,为Helm提供web UI界面管理

(1)首先需要添加一个第三方库

  1. [kubeadm@server1 kubeapps]$ helm repo add bitnami https://charts.bitnami.com/bitnami
  2. "bitnami" has been added to your repositories
  3. [kubeadm@server1 kubeapps]$ helm search repo kubeapps
  4. NAME CHART VERSION APP VERSION DESCRIPTION
  5. bitnami/kubeapps 3.6.0 v1.10.0 Kubeapps is a dashboard for your Kubernetes clu...
  6. [kubeadm@server1 kubeapps]$

(2)最新的版本是3.6.0,我们使用3.4.3,拉取解压部署文件

  1. [kubeadm@server1 kubeapps]$ helm pull bitnami/kubeapps --version 3.4.3 //拉取3.4.3版本的bitnami/kubeapps
  2. [kubeadm@server1 kubeapps]$ ls
  3. kubeapps-3.4.3.tgz
  4. [kubeadm@server1 kubeapps]$ tar zxf kubeapps-3.4.3.tgz
  5. [kubeadm@server1 kubeapps]$ ls
  6. kubeapps kubeapps-3.4.3.tgz
  7. [kubeadm@server1 kubeapps]$ cd kubeapps/
  8. [kubeadm@server1 kubeapps]$ ls
  9. charts crds requirements.lock templates values.yaml
  10. Chart.yaml README.md requirements.yaml values.schema.json
  11. [kubeadm@server1 kubeapps]$

(3)可以发现对比以前的应用多了一个requirements.yaml文件,这个文件定义了应用的依赖性

  1. [kubeadm@server1 kubeapps]$ cat requirements.yaml
  2. dependencies:
  3. - name: mongodb
  4. version: ">= 0"
  5. repository: https://kubernetes-charts.storage.googleapis.com
  6. condition: mongodb.enabled
  7. - name: postgresql
  8. version: ">= 0"
  9. repository: https://kubernetes-charts.storage.googleapis.com
  10. condition: postgresql.enabled
  11. [kubeadm@server1 kubeapps]$

可以看出其依赖mongodb以及postgresql

  1. [root@server1 ~]# docker load -i kubeapps-3.4.3.tar // 将所有镜像的打包文件上传
  2. [root@server1 ~]# for i in `docker images|grep bitnami|awk '{printf("%s:%s\n",$1,$2)}'`;do docker tag $i reg.westos.org/$i;done // 修改镜像上传名称
  3. [root@server1 ~]# for i in `docker images|grep reg.westos.org/bitnami|awk '{print $1":"$2}'`;do docker push $i;done // 上传镜像到私有仓库
  4. for i in `docker images|grep reg.westos.org/bitnami|awk '{print $1":"$2}'`;do docker rmi $i;done // 删除镜像
  5. for i in `docker images|grep bitnami|awk '{print $1":"$2}'`;do docker rmi $i;done // 删除镜像防止占用空间

(4)部署kubeapps需要的镜像至harbor仓库
在这里插入图片描述
(5) 编辑变量values.yaml文件

默认镜像仓库为docker.io我们需要在全局指定我们的镜像仓库

  1. [kubeadm@server1 kubeapps]$ vim values.yaml
  2. global:
  3. imageRegistry: reg.westos.org // 改写为你的私有仓库
  4. useHelm3: true // 支持helm v3版本
  5. ingress: //打开ingress并指定主机名
  6. ## Set to true to enable ingress record generation
  7. ##
  8. enabled: true
  9. hostname: kubeapps.westos.org // 主机名
  10. initialRepos: //定义初始化仓库
  11. - name: stable
  12. url: http://mirror.azure.cn/kubernetes/charts/
  13. - name: bitnami
  14. url: https://charts.bitnami.com/bitnami

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200611182613197.png![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNjk2OQ_size_16_color_FFFFFF_t_70 1]在这里插入图片描述在这里插入图片描述(6)安装部署

  1. [kubeadm@server1 kubeapps]$ kubectl create namespace kubeapps // 创建kubeapps的namespace
  2. namespace/kubeapps created
  3. [kubeadm@server1 kubeapps]$ helm -n kubeapps install kubeapps . // 部署kubeapps
  4. NAME: kubeapps
  5. LAST DEPLOYED: Wed May 13 22:02:12 2020
  6. NAMESPACE: kubeapps
  7. STATUS: deployed
  8. REVISION: 1
  9. NOTES:

等待一会查看状态

  1. [kubeadm@server1 kubeapps]$ kubectl -n kubeapps get pod
  2. NAME READY STATUS RESTARTS AGE
  3. apprepo-kubeapps-sync-bitnami-9bbtf-tskp8 1/1 Running 0 47s
  4. apprepo-kubeapps-sync-stable-scpsv-ctsqm 1/1 Running 1 47s
  5. kubeapps-6688575df9-2gtgb 1/1 Running 0 77s
  6. kubeapps-6688575df9-w929g 1/1 Running 0 77s
  7. kubeapps-internal-apprepository-controller-8cdf54665-tz8xr 1/1 Running 0 77s
  8. kubeapps-internal-assetsvc-6b94785ffb-gg8v2 1/1 Running 0 77s
  9. kubeapps-internal-assetsvc-6b94785ffb-pt8vk 1/1 Running 1 77s
  10. kubeapps-internal-dashboard-6b65678647-knfsv 1/1 Running 0 77s
  11. kubeapps-internal-dashboard-6b65678647-n4xws 1/1 Running 0 77s
  12. kubeapps-internal-kubeops-59887fdbf8-45tmk 1/1 Running 0 77s
  13. kubeapps-internal-kubeops-59887fdbf8-m9c44 1/1 Running 0 76s
  14. kubeapps-mongodb-685d4c95d9-j9d84 1/1 Running 0 77s
  15. [kubeadm@server1 kubeapps]$
  16. [kubeadm@server1 kubeapps]$ kubectl -n kubeapps get svc
  17. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  18. kubeapps ClusterIP 10.99.50.162 <none> 80/TCP 2m5s
  19. kubeapps-internal-assetsvc ClusterIP 10.109.59.64 <none> 8080/TCP 2m5s
  20. kubeapps-internal-dashboard ClusterIP 10.100.238.44 <none> 8080/TCP 2m5s
  21. kubeapps-internal-kubeops ClusterIP 10.106.236.117 <none> 8080/TCP 2m4s
  22. kubeapps-mongodb ClusterIP 10.97.156.50 <none> 27017/TCP 2m4s
  23. [kubeadm@server1 kubeapps]$
  24. [kubeadm@server1 kubeapps]$ kubectl -n kubeapps get deployments.apps
  25. NAME READY UP-TO-DATE AVAILABLE AGE
  26. kubeapps 2/2 2 2 2m35s
  27. kubeapps-internal-apprepository-controller 1/1 1 1 2m35s
  28. kubeapps-internal-assetsvc 2/2 2 2 2m35s
  29. kubeapps-internal-dashboard 2/2 2 2 2m35s
  30. kubeapps-internal-kubeops 2/2 2 2 2m35s
  31. kubeapps-mongodb 1/1 1 1 2m35s
  32. [kubeadm@server1 kubeapps]$

可以看出创建了两个cronjob,每隔10分钟同步我们定义的两个仓库

  1. [kubeadm@server1 kubeapps]$ kubectl -n kubeapps get cronjobs.batch
  2. NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
  3. apprepo-kubeapps-sync-bitnami */10 * * * * False 0 <none> 2m28s
  4. apprepo-kubeapps-sync-stable */10 * * * * False 0 <none> 2m28s
  5. [kubeadm@server1 kubeapps]$

部署成功

2. kubeapps的登陆

浏览器访问kubeapps.redhat.org
在这里插入图片描述
需要token登陆,因此我们需要创建sa并为其附加 cluster-admin 的权限

  1. [kubeadm@server1 kubeapps]$ kubectl create serviceaccount kubeapps-operator -n kubeapps
  2. serviceaccount/kubeapps-operator created
  3. [kubeadm@server1 kubeapps]$ kubectl -n kubeapps get sa
  4. NAME SECRETS AGE
  5. default 1 27m
  6. kubeapps-internal-apprepository-controller 1 24m
  7. kubeapps-internal-kubeops 1 24m
  8. kubeapps-operator 1 7s
  9. [kubeadm@server1 kubeapps]$ kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=kubeapps:kubeapps-operator
  10. clusterrolebinding.rbac.authorization.k8s.io/kubeapps-operator created
  11. [kubeadm@server1 kubeapps]$

查看token

  1. [kubeadm@server1 kubeapps]$ kubectl -n kubeapps describe sa kubeapps-operator
  2. Name: kubeapps-operator
  3. Namespace: kubeapps
  4. Labels: <none>
  5. Annotations: <none>
  6. Image pull secrets: <none>
  7. Mountable secrets: kubeapps-operator-token-gcfwr
  8. Tokens: kubeapps-operator-token-gcfwr
  9. Events: <none>
  10. [kubeadm@server1 kubeapps]$ kubectl -n kubeapps describe secrets kubeapps-operator-token-gcfwr
  11. Name: kubeapps-operator-token-gcfwr
  12. Namespace: kubeapps
  13. Labels: <none>
  14. Annotations: kubernetes.io/service-account.name: kubeapps-operator
  15. kubernetes.io/service-account.uid: 19c16e66-80d3-4fbd-b117-d679e71015c5
  16. Type: kubernetes.io/service-account-token
  17. Data
  18. ====
  19. ca.crt: 1025 bytes
  20. namespace: 8 bytes
  21. token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlNUdEFKWnVENXZtcnczV0FDbVNOU0JmN0RrYXFqWlk1VXVzZFp3dWF6bUUifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlYXBwcyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlYXBwcy1vcGVyYXRvci10b2tlbi1nY2Z3ciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJ
  22. ...
  23. ...

复制token到网页端登陆
在这里插入图片描述
登陆成功。

3. kubeapps的使用

添加自己的chart库

因为我们仓库的地址为reg.westos.org,在pod内不能解析这个地址,因此我们首先需要添加pod内解析

  1. [kubeadm@server1 kubeapps]$ kubectl -n kube-system get cm
  2. NAME DATA AGE
  3. coredns 1 23d
  4. extension-apiserver-authentication 6 23d
  5. kube-flannel-cfg 2 23d
  6. kube-proxy 2 23d
  7. kubeadm-config 2 23d
  8. kubelet-config-1.18 1 23d
  9. [kubeadm@server1 kubeapps]$ kubectl -n kube-system edit cm coredns

在这里插入图片描述
添加仓库
在这里插入图片描述
在这里插入图片描述信息填写完成后安装

在这里插入图片描述在网页端就可以搜到
在这里插入图片描述点进入可以看到两个版本0.1.00.2.0
在这里插入图片描述

4. 使用chart部署ingress-nginx应用

点击Deploy
在这里插入图片描述在这里插入图片描述更改部署文件,使用ingress
在这里插入图片描述
更改后提交,等待一会变成ready
在这里插入图片描述
测试访问
在这里插入图片描述
部署成功。

5. 更新和回滚

点击Upgrade,更改版本号
在这里插入图片描述
在这里插入图片描述更改后点击提交

再次访问发现应用已更新
在这里插入图片描述
点击Rollback 进行回滚
在这里插入图片描述等待ready后,再次测试访问
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,71人围观)

还没有评论,来说两句吧...

相关阅读

    相关 k8s插件helm部署

    一、helm简介 很多人都使用过Ubuntu下的ap-get或者CentOS下的yum,这两者都是Linux系统下的包管理工具。采用apt-get/yum,应用开发者...

    相关 k8s部署Kubeapps

    kubeapps作为helm的ui界面,方便快速的部署常用的docker应用 由于是采用kubespray部署kubernetes环境自带helm,所以这部分不再累述。 进