在KubeSphere中部署Kubeapps


1. 情況說明

使用一台VMWare Workstation虛擬機,4核8G內存,50G磁盤
已安裝KubeSphere 2.1 版本,已經按照官方文檔的入門必讀,示例一創建好相應的賬號信息等
KubeSphere 文檔地址:https://kubesphere.com.cn/docs/v2.1/zh-CN/introduction/intro/

2. 實現的效果

kubeapps官方文檔地址:https://github.com/kubeapps/kubeapps

想使用kubeapps,通過helm管理部署在k8s集群的應用,部署,升級,回退版本等
同時可以在KubeSphere中查看部署的應用等

3. 步驟

(1).要求

  • k8s集群版本:1.8+
  • Helm版本:2.14.0+
  • 已安裝kubectl

KubeSphere 2.1 版本安裝的k8s集群是1.15.5版本,helm版本是2.14.3,已安裝kubectl,符合上述要求

[root@ks-allinone ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", BuildDate:"2019-10-15T19:07:57Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", BuildDate:"2019-10-15T19:07:57Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}
[root@ks-allinone ~]# helm version
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}

(2) 安裝kubeapps

# 查看helm倉庫
[root@ks-allinone ~]# helm repo list
NAME    URL                                             
stable  https://kubernetes-charts.storage.googleapis.com
local   http://127.0.0.1:8879/charts

# 添加helm倉庫                 
[root@ks-allinone ~]# helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories

# 再次查看helm倉庫
[root@ks-allinone ~]# helm repo list
NAME    URL                                             
stable  https://kubernetes-charts.storage.googleapis.com
local   http://127.0.0.1:8879/charts                    
bitnami https://charts.bitnami.com/bitnami

# 開始安裝,使用單獨的命名空間
[root@ks-allinone ~]# helm install --name kubeapps --namespace kubeapps bitnami/kubeapps
NAME:   kubeapps
LAST DEPLOYED: Tue Nov 19 15:32:55 2019
NAMESPACE: kubeapps
STATUS: DEPLOYED

RESOURCES:
==> v1/ConfigMap
NAME                                DATA  AGE
kubeapps-frontend-config            1     5s
kubeapps-internal-dashboard-config  2     5s

==> v1/Deployment
NAME                                        READY  UP-TO-DATE  AVAILABLE  AGE
kubeapps                                    0/2    2           0          5s
kubeapps-internal-apprepository-controller  0/1    1           0          5s
kubeapps-internal-chartsvc                  0/2    2           0          5s
kubeapps-internal-dashboard                 0/2    2           0          5s
kubeapps-internal-tiller-proxy              0/2    2           0          4s
kubeapps-mongodb                            0/1    1           0          5s

==> v1/Pod(related)
NAME                                                         READY  STATUS             RESTARTS  AGE
kubeapps-76bfb9557f-97f2g                                    0/1    ContainerCreating  0         4s
kubeapps-76bfb9557f-gj8nl                                    0/1    Pending            0         4s
kubeapps-internal-apprepository-controller-6764b79b6b-tv76f  0/1    ContainerCreating  0         4s
kubeapps-internal-chartsvc-677b745bb9-nqw4j                  0/1    ContainerCreating  0         4s
kubeapps-internal-chartsvc-677b745bb9-wwdrl                  0/1    ContainerCreating  0         4s
kubeapps-internal-dashboard-87f979fd7-chwsr                  0/1    ContainerCreating  0         4s
kubeapps-internal-dashboard-87f979fd7-jl76k                  0/1    ContainerCreating  0         4s
kubeapps-internal-tiller-proxy-57c4d9c6dd-2gwwq              0/1    ContainerCreating  0         4s
kubeapps-internal-tiller-proxy-57c4d9c6dd-tg2n8              0/1    ContainerCreating  0         4s
kubeapps-mongodb-788ff89fd9-wp8dq                            0/1    ContainerCreating  0         4s

==> v1/Service
NAME                            TYPE       CLUSTER-IP     EXTERNAL-IP  PORT(S)    AGE
kubeapps                        ClusterIP  10.233.32.3    <none>       80/TCP     5s
kubeapps-internal-chartsvc      ClusterIP  10.233.33.159  <none>       8080/TCP   5s
kubeapps-internal-dashboard     ClusterIP  10.233.16.70   <none>       8080/TCP   5s
kubeapps-internal-tiller-proxy  ClusterIP  10.233.4.189   <none>       8080/TCP   5s
kubeapps-mongodb                ClusterIP  10.233.30.14   <none>       27017/TCP  5s

==> v1/ServiceAccount
NAME                                        SECRETS  AGE
kubeapps-internal-apprepository-controller  1        5s
kubeapps-internal-tiller-proxy              1        5s

==> v1beta1/Role
NAME                                        AGE
kubeapps-internal-apprepository-controller  5s
kubeapps-internal-tiller-proxy              5s
kubeapps-repositories-read                  5s
kubeapps-repositories-write                 5s

==> v1beta1/RoleBinding
NAME                                        AGE
kubeapps-internal-apprepository-controller  5s
kubeapps-internal-tiller-proxy              5s


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"
   export POD_NAME=$(kubectl get pods --namespace kubeapps -l "app=kubeapps" -o jsonpath="{.items[0].metadata.name}")
   kubectl port-forward --namespace kubeapps $POD_NAME 8080:8080

2. Open a browser and access Kubeapps using the obtained URL.

# 然后操作步驟如下:
export POD_NAME=$(kubectl get pods --namespace kubeapps -l "app=kubeapps" -o jsonpath="{.items[0].metadata.name}")
kubectl port-forward --namespace kubeapps $POD_NAME 8080:8080



# 查看kubeapps命名空間的pod情況,需要等所有的pod狀態是running或Completed才行
[root@ks-allinone ~]# kubectl get pods  --namespace kubeapps
NAME                                                          READY   STATUS              RESTARTS   AGE
apprepo-sync-bitnami-1574149200-glnhg                         0/1     ContainerCreating   0          10s
apprepo-sync-bitnami-fqhnh-jx7g9                              1/1     Running             3          3m51s
apprepo-sync-incubator-1574149200-lbdjz                       0/1     ContainerCreating   0          10s
apprepo-sync-incubator-5glkx-v8w5l                            0/1     Completed           3          3m51s
apprepo-sync-stable-1574149200-bjfnh                          0/1     ContainerCreating   0          10s
apprepo-sync-stable-z2vlh-4f2kv                               1/1     Running             0          3m51s
apprepo-sync-svc-cat-1574149200-5kmj7                         0/1     ContainerCreating   0          10s
apprepo-sync-svc-cat-274bp-5b2zd                              0/1     Completed           0          3m51s
kubeapps-76bfb9557f-97f2g                                     1/1     Running             0          7m20s
kubeapps-76bfb9557f-gj8nl                                     1/1     Running             0          7m20s
kubeapps-internal-apprepository-controller-6764b79b6b-tv76f   1/1     Running             0          7m20s
kubeapps-internal-chartsvc-677b745bb9-nqw4j                   1/1     Running             0          7m20s
kubeapps-internal-chartsvc-677b745bb9-wwdrl                   1/1     Running             0          7m20s
kubeapps-internal-dashboard-87f979fd7-chwsr                   1/1     Running             0          7m20s
kubeapps-internal-dashboard-87f979fd7-jl76k                   1/1     Running             0          7m20s
kubeapps-internal-tiller-proxy-57c4d9c6dd-2gwwq               1/1     Running             0          7m20s
kubeapps-internal-tiller-proxy-57c4d9c6dd-tg2n8               1/1     Running             0          7m20s
kubeapps-mongodb-788ff89fd9-wp8dq                             1/1     Running             0          7m20s

(3) 設置kubeapps訪問k8s集群權限

[root@ks-allinone ~]# kubectl create serviceaccount kubeapps-operator
serviceaccount/kubeapps-operator created

[root@ks-allinone ~]# kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator
clusterrolebinding.rbac.authorization.k8s.io/kubeapps-operator created

# 獲取訪問k8s api的token
[root@ks-allinone ~]# 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
# 記住這個token,訪問dashboard界面登陸時需要用
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Imt1YmVhcHBzLW9wZXJhdG9yLXRva2VuLTZ3aGJnIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Imt1YmVhcHBzLW9wZXJhdG9yIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZjAzYzUxMWYtNThhZi00YTNjLWE5NzctMzE2YmRkMDA1MTZiIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OmRlZmF1bHQ6a3ViZWFwcHMtb3BlcmF0b3IifQ.xmLLkX3x91HKUilTLnVEyblnAQ0HwW-J__6geg0KOrkB35_gRkKMGp8ftl7vT5KEWRyW8fyAIJHc2LEo8uLGSbsQDzvuUxEBnvUzcgsrOR03Idh8cTdsgpynNnyhlLGCqEq-fBn-8HUCap4B4c00NXImD3BhtkJ6PCy0CfrnQyua1qXR6RqqRH0epIedxsNAGGvFgKmeYO2Eq_04BKsmEMRkcBbGXx848O_6izBW7kHc9lfSEUfFwvrCs1YXBWJk7UGrh9lmlt1U-3BjFAXg-7hC74kx-G1Mj_Z2cxhnJ4W6XckphxE5NPBeoDow0GcD7jx4C4QkzX7fQXrKaKyYPQ

(4) 在KubeSphere中設置kubeapps等

  1. 使用集群管理員賬號登陸,在工作台界面會查看到有一個項目,名稱是kubeapps,但是沒有分配企業空間。
    創建名稱是kubeapps的企業空間,然后再返回到該界面,點擊右邊的三個豎點,分配企業空間,把項目kubeapps分配到企業空間kubeapps
  2. 點擊項目名稱kubeapps,進入項目詳情界面。
    先在項目設置,高級設置中開啟外放訪問,使用NodePort。
    然后在應用負載的服務界面,點擊kubeapps,更多操作,編輯外網訪問,訪問方式是NodePort。此時右邊會出現"點擊訪問"按鈕,點擊這個開始訪問kubeapps的dashboard web界面,輸入上一步的token值即可登陸進去

4. 使用kubeapps

  • 可以添加倉庫地址,點擊"Configuration"中的App Repositories
  • 在Applications界面,選擇不同的NAMESPACE,可以顯示安裝的應用
  • 選擇"Catalog"可以查看倉庫中的應用,直接部署到k8s中進行使用,同時可以在KubeSphere中查看管理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM