天天看點

helm安裝配置

簡介

helm是kubernetes的包管理工具,用于簡化部署和管理 Kubernetes 應用。用來管理charts——預先配置好的安裝包資源。

Helm和charts的主要作用:

  • 應用程式封裝
  • 版本管理
  • 依賴檢查
  • 便于應用程式分發

helm是一個C/S架構的軟體,helm相當于一個用戶端,tiller是一個 服務端

  • Helm CLI 是 Helm 用戶端,可以在本地執行
  • Tiller 是伺服器端元件,在 Kubernetes 群集上運作,并管理 Kubernetes 應用程式的生命周期
  • Repository 是 Chart 倉庫,Helm用戶端通過HTTP協定來通路倉庫中Chart的索引檔案和壓縮包

安裝

安裝之前需要先配置好

kubeconfig

kubectl

可以正常使用就表示

kubeconfig

已經配置正确,也可以通過環境變量

KUBECONFIG

指定helm使用的

kubeconfig

安裝helm

# 如下位址下載下傳helm二進制檔案 
# 解壓之後放在自己的PATH路徑下
# https://github.com/helm/helm/releases
mkdir -pv helm && cd helm
wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
tar xf helm-v2.9.1-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin
rm -rf linux-amd64

# 檢視版本,不顯示出server版本,因為還沒有安裝server
helm version
複制代碼           

簡單安裝tiller(本次實驗采用)

# 部署 tiller
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 \
--stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

# 檢視
kubectl get pods -n kube-system -l app=helm
kubectl get svc -n kube-system -l app=helm
複制代碼           

安全性更高的安裝tiller(tls)

helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 \
--stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts \
--tiller-tls \
--tiller-tls-verify \
--tiller-tls-cert=cert.pem \
--tiller-tls-key=key.pem \
--tls-ca-cert=ca.pem \
--service-account=tiller

# 其他指令都需要使用 tls
# --tls
複制代碼           

配置rbac

cat >helm-rbac-config.yaml<<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system
EOF
kubectl create -f helm-rbac-config.yaml

# 配置tiller使用建立的ServiceAccount
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
複制代碼           

檢視狀态

# 檢視pod啟動情況
kubectl get pod -n kube-system -l app=helm

# 再次檢視版本,顯示出server版本
helm version
複制代碼           

簡單使用

檢視可用charts

# 更新charts清單
helm repo update 

# 搜尋可用charts
helm search
helm search mysql
複制代碼           

檢視已經安裝的charts

helm list
# helm ls
複制代碼           

安裝測試

以下兩種部署方式任選一種
使用指令行模式部署
# 使用指令行模式部署
helm install -n mariadb-test \
--set persistence.enabled=false,mariadbRootPassword=will,mariadbUser=will,mariadbPassword=will,mariadbDatabase=will \
stable/mariadb
複制代碼           
使用配置檔案定制部署
# 使用配置檔案方式部署
# 檢視可配置項
helm inspect values stable/mariadb

# 擷取所有可配置項(去行空行和注釋)
helm inspect values stable/mariadb | egrep -v '^\s*#|^$'

# 配置
cat >config.yml<<EOF
usePassword: true
mariadbRootPassword: will
mariadbUser: will
mariadbPassword: will
mariadbDatabase: will
persistence:
  enabled: false
EOF

# 部署
helm install -n mariadb-test -f config.yml stable/mariadb
複制代碼           
測試
# 檢視狀态
helm ls
kubectl get pods
kubectl get svc

# 連接配接測試
kubectl run mariadb-cli --image=bitnami/mariadb:10.1.28-r1 -i --tty bash
mysql -hmariadb-test-mariadb -uwill -pwill will
show databases;
select version();
select user();

# 删除 mariadb-cli
kubectl delete deploy mariadb-cli

# 删除部署
helm delete mariadb-test --purge
複制代碼           

自定義chart

建立chart

# 建立
helm create hello

# chart目錄結構介紹
hello
├── charts # 本chart依賴的chart
├── Chart.yaml # 描述chart的基本資訊,如名稱版本等
├── templates # kubernetes manifest檔案模闆目錄
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── ingress.yaml
│   ├── NOTES.txt # 純文字檔案,可在其中填寫chart的使用說明
│   └── service.yaml
└── values.yaml # chart配置的預設值

# 對chart的模闆和配置進行測試
helm install --dry-run --debug ./
複制代碼           

測試安裝chart

# 安裝
helm install -n hello-test ./

# 檢視
helm ls
kubectl get pods
kubectl get svc

# 端口轉發
export POD_NAME=$(kubectl get pods --namespace default -l "app=hello,release=hello-test" -o jsonpath="{.items[0].metadata.name}")
kubectl port-forward $POD_NAME 8080:80

# 通路
curl http://127.0.0.1:8080

# 删除
helm delete hello-test --purge
複制代碼           

chart分發

# 打包為壓縮包
helm package ./           

本文轉自掘金-

helm安裝配置