K8S v1.18.x 部署-Kubeadm方式-10:部署Addon-Helm

Helm架構
K8S v1.18.x 部署-Kubeadm方式-10:部署Addon-Helmnode

圖片來自IBM Developer Blog。linux

部署Helm
本文只展現二進制方式安裝,其餘方式可查看官方文檔。nginx

下載安裝包git

K8S Master1節點上

[root@K8S-PROD-M1 workspace]# wget https://get.helm.sh/helm-v3.4.1-linux-amd64.tar.gz
解壓安裝包
[root@K8S-PROD-M1 workspace]# tar -zxvf helm-v3.4.1-linux-amd64.tar.gz
[root@K8S-PROD-M1 workspace]# mv linux-amd64/helm /usr/local/bin/helm
與K8S 交互
採用與執行kubectl命令時的與K8S集羣進行交互的配置文件:/root/.kube/config。github

K8S v1.18.x 部署-Kubeadm方式-10:部署Addon-Helm

Chart倉庫操做
經常使用倉庫:docker

倉庫操做:

添加倉庫

[root@K8S-PROD-M1 ~]# helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
[root@K8S-PROD-M1 ~]# helm repo add brigade https://brigadecore.github.io/charts
[root@K8S-PROD-M1 ~]# helm repo add bitnami https://charts.bitnami.com/bitnami
[root@K8S-PROD-M1 ~]# helm repo add harbor https://helm.goharbor.io

更新蒼鷺

[root@K8S-PROD-M1 ~]# helm repo update

搜索倉庫

[root@K8S-PROD-M1 ~]# helm repo list
[root@K8S-PROD-M1 ~]# helm search repo stable
[root@K8S-PROD-M1 ~]# helm search repo brigade

刪除倉庫

[root@K8S-PROD-M1 ~]# helm repo remove aliyun

可搜索所有可用chart

[root@K8S-PROD-M1 ~]# helm search hub
[root@K8S-PROD-M1 ~]# helm search hub wordpress
其餘命令

  • 查看配置

heml env

  • 查看幫助

helm help

經常使用選項

  • 模擬安裝

--dry-run

  • 生成release名稱

-g, --generate-name

  • 跳過命令行的運行鉤子

--no-hooks

測試Helm
安裝應用

查找確認存在

[root@K8S-PROD-M1 ~]# helm search repo nginx

安裝repo期間,helm客戶端將顯示有關建立了哪些資源,發佈狀態是什麼以及是否能夠或應該執行其餘配置步驟的有用信息。

因爲許多chart須要較大的鏡像,須要必定時間才能正確部署至集羣,Helm不會等到全部資源都在運行後才退出。

默認安裝的namespace是:default, 也可通過-n明確指定。

以repo中chart安裝

[root@K8S-PROD-M1 ~]# helm install my-nginx bitnami/nginx

以壓縮包中chart安裝

[root@K8S-PROD-M1 ~]# helm install my-nginx bitnami.nginx.tgz

以解壓後的目錄安裝

[root@K8S-PROD-M1 ~]# helm install my-nginx bitnami/nginx/

指定變量

[root@K8S-PROD-M1 ~]# helm install --set name=prod my-nginx bitnami/nginx/

指定變量的值爲string類型

[root@K8S-PROD-M1 ~]# helm install --set-string long_int=123 my-nginx bitnami/nginx/

指定引用的文件地址

[root@K8S-PROD-M1 ~]# helm install --set-file my_script=dothings.sh my-nginx bitnami/nginx/

同時指定多個變量

[root@K8S-PROD-M1 ~]# helm install --set foo=bar --set bar=foo my-nginx bitnami/nginx/

查看已安裝的release

[root@K8S-PROD-M1 ~]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
my-nginx default 1 2020-11-30 15:29:44.362452632 +0800 CST deployed nginx-8.2.0 1.19.5

狀態查看

[root@K8S-PROD-M1 ~]# helm status my-nginx
NAME: my-nginx
LAST DEPLOYED: Mon Nov 30 15:29:44 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
...

查看安裝歷史

[root@K8S-PROD-M1 ~]# helm history my-nginx
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Mon Nov 30 15:29:44 2020 deployed nginx-8.2.0 1.19.5 Install complete

回滾指定歷史版本

[root@K8S-PROD-M1 ~]# helm rollback my-nginx 1

Helm3中,刪除release也會刪除發佈記錄。若是但願保留刪除發佈記錄,可以使用helm uninstall --keep-history。

使用helm list --uninstalled將僅顯示帶有--keep-history標誌卸載的發行版。

卸載release

[root@K8S-PROD-M1 ~]# helm uninstall my-nginx

查看全部Release

[root@K8S-PROD-M1 ~]# helm list --all
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
my-nginx default 1 2020-11-30 15:29:44.362452632 +0800 CST uninstalled nginx-8.2.0 1.19.5

卸載應用,不保留安裝記錄

[root@K8S-PROD-M1 ~]# helm delete my-nginx
release "my-nginx" uninstalled
自定義參數安裝應用
Helm 中支持使用自定義yaml文件和 --set命令參數對要安裝的應用進行參數配置,首先查看可配置參數:

查看可配置參數

[root@K8S-PROD-M1 ~]# helm show values bitnami/nginx
使用自定義values.yaml文件安裝應用

建立自定義配置文件: values.yaml

[root@K8S-PROD-M1 nginx]# cat > values.yaml << EOF
image:
registry: docker.io
repository: bitnami/nginx
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 1000m
memory: 512Mi
EOF

使用自定義配置文件運行應用

helm install -f values.yaml bitnami/nginx
使用--set配置參數進行安裝應用
--set參數是在使用helm命令時候添加的參數,能夠在執行helm安裝與更新應用時使用,多個參數間用」,「隔開。

若是配置文件和--set同時使用,則--set設置的參數會覆蓋配置文件中的參數配置。

對於--set配置參數,Helm官方對於不一樣的配置類型給出了不一樣的寫法,以下:

K8S v1.18.x 部署-Kubeadm方式-10:部署Addon-Helm

[root@K8S-PROD-M1 nginx]# helm install --set 'registry.registry=docker.io,registry.repository=bitnami/nginx' bitnami/nginx
升級應用

建立新的配置參數文件values.yaml

[root@K8S-PROD-M1 nginx]# cat > values.yaml << EOF
service.type: NodePort
service.nodePorts.http: 30002
EOF

應用更新

[root@K8S-PROD-M1 nginx]# helm upgrade -f values.yaml my-nginx bitnami/nginx -n default

查看新配置是否生效

[root@K8S-PROD-M1 nginx]# helm get values my-nginx
渲染模板
查看經過指定的參數渲染的Kubernetes部署資源模板:

[root@K8S-PROD-M1 ~]# helm template bitnami/nginx
開發Chart
建立chart
[root@K8S-PROD-M1 ~]# mkdir -p /root/workspace/helm
[root@K8S-PROD-M1 ~]# cd /root/workspace/helm
[root@K8S-PROD-M1 helm]# helm create chart-demo
[root@K8S-PROD-M1 helm]# tree chart-demo/
chart-demo/
├── charts #該目錄保存其餘依賴的 chart(子 chart)
├── Chart.yaml
├── templates #chart配置模板,用於渲染最終的Kubernetes YAML文件
│ ├── deployment.yaml #Kubernetes deployment 配置
│ ├── _helpers.tpl #用於建立模板時的幫助類
│ ├── hpa.yaml
│ ├── ingress.yaml #Kubernetes ingress配置
│ ├── NOTES.txt #用戶運行helm install時候的提示信息
│ ├── serviceaccount.yaml #Kubernetes serviceaccount配置
│ ├── service.yaml #Kubernetes service配置
│ └── tests
│ └── test-connection.yaml
└── values.yaml # 定義chart模板中的自定義配置的默認值,能夠在執行helm install或helm update的時候覆蓋

3 directories, 10 files
修改Chart
上一步建立的是一個標準的chart目錄結構,能夠編輯相應配置從而建立本身的chart。

驗證建立後是否正常

[root@K8S-PROD-M1 helm]# helm lint chart-demo/
==> Linting chart-demo/
[INFO] Chart.yaml: icon is recommended

1 chart(s) linted, 0 chart(s) failed

將建立的進行打包

[root@K8S-PROD-M1 helm]# helm package chart-demo/Successfully packaged chart and saved it to: /root/workspace/helm/chart-demo-0.1.0.tgz

相關文章
相關標籤/搜索