文章目錄
- 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倉庫
(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
(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
需要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到網頁端登陸
登陸成功。
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
添加倉庫
資訊填寫完成後安裝
在網頁端就可以搜到
點進入可以看到兩個版本
0.1.0
和
0.2.0
4. 使用chart部署ingress-nginx應用
點選Deploy
更改部署檔案,使用ingress
更改後送出,等待一會變成ready
測試通路
部署成功。
5. 更新和復原
點選
Upgrade
,更改版本号
更改後點選送出
再次通路發現應用已更新
點選Rollback 進行復原
等待ready後,再次測試通路