天天看點

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

文章目錄

  • 1. 部署kubeapps
  • 2. kubeapps的登陸
  • 3. kubeapps的使用
  • 4. 使用chart部署ingress-nginx應用
  • 5. 更新和復原

1. 部署kubeapps

部署kubeapps應用,為Helm提供web UI界面管理

(1)首先需要添加一個第三方庫

[[email protected] kubeapps]$ helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories
[[email protected] kubeapps]$ helm search repo kubeapps
NAME            	CHART VERSION	APP VERSION	DESCRIPTION                                       
bitnami/kubeapps	3.6.0        	v1.10.0    	Kubeapps is a dashboard for your Kubernetes clu...
[[email protected] kubeapps]$ 
           

(2)最新的版本是3.6.0,我們使用

3.4.3

,拉取解壓部署檔案

[[email protected] kubeapps]$ helm pull bitnami/kubeapps --version 3.4.3  //拉取3.4.3版本的bitnami/kubeapps
[[email protected] kubeapps]$ ls
kubeapps-3.4.3.tgz
[[email protected] kubeapps]$ tar zxf kubeapps-3.4.3.tgz 
[[email protected] kubeapps]$ ls
kubeapps  kubeapps-3.4.3.tgz
[[email protected] kubeapps]$ cd kubeapps/
[[email protected] kubeapps]$ ls
charts      crds       requirements.lock  templates           values.yaml
Chart.yaml  README.md  requirements.yaml  values.schema.json
[[email protected] kubeapps]$
           

(3)可以發現對比以前的應用多了一個

requirements.yaml

檔案,這個檔案定義了應用的依賴性

[[email protected] kubeapps]$ cat requirements.yaml 
dependencies:
  - name: mongodb
    version: ">= 0"
    repository: https://kubernetes-charts.storage.googleapis.com
    condition: mongodb.enabled
  - name: postgresql
    version: ">= 0"
    repository: https://kubernetes-charts.storage.googleapis.com
    condition: postgresql.enabled
[[email protected] kubeapps]$ 
           

可以看出其依賴mongodb以及postgresql

[[email protected] ~]# docker load -i kubeapps-3.4.3.tar // 将所有鏡像的打封包件上傳
[[email protected] ~]# for i in `docker images|grep bitnami|awk '{printf("%s:%s\n",$1,$2)}'`;do docker tag $i reg.westos.org/$i;done // 修改鏡像上傳名稱
[[email protected] ~]# for i in `docker images|grep reg.westos.org/bitnami|awk '{print $1":"$2}'`;do docker push $i;done // 上傳鏡像到私有倉庫
for i in `docker images|grep reg.westos.org/bitnami|awk '{print $1":"$2}'`;do docker rmi $i;done // 删除鏡像
for i in `docker images|grep bitnami|awk '{print $1":"$2}'`;do docker rmi $i;done // 删除鏡像防止占用空間
           

(4)部署kubeapps需要的鏡像至harbor倉庫

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

(5) 編輯變量

values.yaml

檔案

預設鏡像倉庫為docker.io我們需要在全局指定我們的鏡像倉庫

[[email protected] kubeapps]$ vim values.yaml
global:
  imageRegistry: reg.westos.org  // 改寫為你的私有倉庫
useHelm3: true // 支援helm v3版本
ingress:     //打開ingress并指定主機名
  ## Set to true to enable ingress record generation
  ##
  enabled: true
  hostname: kubeapps.westos.org // 主機名

  initialRepos:      //定義初始化倉庫
    - name: stable
      url: http://mirror.azure.cn/kubernetes/charts/
    - name: bitnami
      url: https://charts.bitnami.com/bitnami
           

![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/20200611182613197.png

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原
kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原
kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

(6)安裝部署

[[email protected] kubeapps]$ kubectl create namespace kubeapps // 建立kubeapps的namespace
namespace/kubeapps created

[[email protected] kubeapps]$ helm -n kubeapps install kubeapps .  // 部署kubeapps
NAME: kubeapps
LAST DEPLOYED: Wed May 13 22:02:12 2020
NAMESPACE: kubeapps
STATUS: deployed
REVISION: 1
NOTES:
           

等待一會檢視狀态

[[email protected] kubeapps]$ kubectl -n kubeapps get pod
NAME                                                         READY   STATUS    RESTARTS   AGE
apprepo-kubeapps-sync-bitnami-9bbtf-tskp8                    1/1     Running   0          47s
apprepo-kubeapps-sync-stable-scpsv-ctsqm                     1/1     Running   1          47s
kubeapps-6688575df9-2gtgb                                    1/1     Running   0          77s
kubeapps-6688575df9-w929g                                    1/1     Running   0          77s
kubeapps-internal-apprepository-controller-8cdf54665-tz8xr   1/1     Running   0          77s
kubeapps-internal-assetsvc-6b94785ffb-gg8v2                  1/1     Running   0          77s
kubeapps-internal-assetsvc-6b94785ffb-pt8vk                  1/1     Running   1          77s
kubeapps-internal-dashboard-6b65678647-knfsv                 1/1     Running   0          77s
kubeapps-internal-dashboard-6b65678647-n4xws                 1/1     Running   0          77s
kubeapps-internal-kubeops-59887fdbf8-45tmk                   1/1     Running   0          77s
kubeapps-internal-kubeops-59887fdbf8-m9c44                   1/1     Running   0          76s
kubeapps-mongodb-685d4c95d9-j9d84                            1/1     Running   0          77s
[[email protected] kubeapps]$
           
[[email protected] kubeapps]$ kubectl -n kubeapps get svc
NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE
kubeapps                      ClusterIP   10.99.50.162     <none>        80/TCP      2m5s
kubeapps-internal-assetsvc    ClusterIP   10.109.59.64     <none>        8080/TCP    2m5s
kubeapps-internal-dashboard   ClusterIP   10.100.238.44    <none>        8080/TCP    2m5s
kubeapps-internal-kubeops     ClusterIP   10.106.236.117   <none>        8080/TCP    2m4s
kubeapps-mongodb              ClusterIP   10.97.156.50     <none>        27017/TCP   2m4s
[[email protected] kubeapps]$
           
[[email protected] kubeapps]$ kubectl -n kubeapps get deployments.apps 
NAME                                         READY   UP-TO-DATE   AVAILABLE   AGE
kubeapps                                     2/2     2            2           2m35s
kubeapps-internal-apprepository-controller   1/1     1            1           2m35s
kubeapps-internal-assetsvc                   2/2     2            2           2m35s
kubeapps-internal-dashboard                  2/2     2            2           2m35s
kubeapps-internal-kubeops                    2/2     2            2           2m35s
kubeapps-mongodb                             1/1     1            1           2m35s
[[email protected] kubeapps]$
           

可以看出建立了兩個cronjob,每隔10分鐘同步我們定義的兩個倉庫

[[email protected] kubeapps]$ kubectl -n kubeapps get cronjobs.batch 
NAME                            SCHEDULE       SUSPEND   ACTIVE   LAST SCHEDULE   AGE
apprepo-kubeapps-sync-bitnami   */10 * * * *   False     0        <none>          2m28s
apprepo-kubeapps-sync-stable    */10 * * * *   False     0        <none>          2m28s
[[email protected] kubeapps]$ 
           

部署成功

2. kubeapps的登陸

浏覽器通路

kubeapps.redhat.org

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

需要token登陸,是以我們需要建立sa并為其附加 cluster-admin 的權限

[[email protected] kubeapps]$ kubectl create serviceaccount kubeapps-operator -n kubeapps 
serviceaccount/kubeapps-operator created
[[email protected] kubeapps]$ kubectl -n kubeapps get sa
NAME                                         SECRETS   AGE
default                                      1         27m
kubeapps-internal-apprepository-controller   1         24m
kubeapps-internal-kubeops                    1         24m
kubeapps-operator                            1         7s
[[email protected] kubeapps]$ kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=kubeapps:kubeapps-operator
clusterrolebinding.rbac.authorization.k8s.io/kubeapps-operator created
[[email protected] kubeapps]$ 
           

檢視token

[[email protected] kubeapps]$ kubectl -n kubeapps describe sa kubeapps-operator 
Name:                kubeapps-operator
Namespace:           kubeapps
Labels:              <none>
Annotations:         <none>
Image pull secrets:  <none>
Mountable secrets:   kubeapps-operator-token-gcfwr
Tokens:              kubeapps-operator-token-gcfwr
Events:              <none>
[[email protected] kubeapps]$ kubectl -n kubeapps describe secrets kubeapps-operator-token-gcfwr
Name:         kubeapps-operator-token-gcfwr
Namespace:    kubeapps
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: kubeapps-operator
              kubernetes.io/service-account.uid: 19c16e66-80d3-4fbd-b117-d679e71015c5

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  8 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IlNUdEFKWnVENXZtcnczV0FDbVNOU0JmN0RrYXFqWlk1VXVzZFp3dWF6bUUifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlYXBwcyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlYXBwcy1vcGVyYXRvci10b2tlbi1nY2Z3ciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJ
...
...
           

複制token到網頁端登陸

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

登陸成功。

3. kubeapps的使用

添加自己的

chart庫

因為我們倉庫的位址為

reg.westos.org

,在pod内不能解析這個位址,是以我們首先需要添加pod内解析

[[email protected] kubeapps]$ kubectl -n kube-system get cm
NAME                                 DATA   AGE
coredns                              1      23d
extension-apiserver-authentication   6      23d
kube-flannel-cfg                     2      23d
kube-proxy                           2      23d
kubeadm-config                       2      23d
kubelet-config-1.18                  1      23d
[[email protected] kubeapps]$ kubectl -n kube-system edit cm coredns
           
kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

添加倉庫

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原
kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

資訊填寫完成後安裝

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

在網頁端就可以搜到

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

點進入可以看到兩個版本

0.1.0

0.2.0

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

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

點選Deploy

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原
kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

更改部署檔案,使用ingress

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

更改後送出,等待一會變成ready

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

測試通路

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

部署成功。

5. 更新和復原

點選

Upgrade

,更改版本号

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原
kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

更改後點選送出

再次通路發現應用已更新

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

點選Rollback 進行復原

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

等待ready後,再次測試通路

kubernetes(k8s):部署kubeapps應用,為Helm提供web UI界面管理1. 部署kubeapps2. kubeapps的登陸3. kubeapps的使用4. 使用chart部署ingress-nginx應用5. 更新和復原

繼續閱讀