Kunbernetes利器-helm

Kunbernetes利器-helm

helm是什麼?

引用helm官方的英文介紹:

The package manager for Kubernetes Helm is the best way to find, share, and use software built for Kubernetes.意思就是helm是kubernetes生態中的一個包管理工具,可以快速發現、共享以及為Kubernetes構建應用.

為什麼要擁抱helm?

在沒使用helm之前,向kubernetes部署應用,我們要依次部署deployment、svc等,步驟較繁瑣。況且隨著很多項目微服務化,複雜的應用在容器中部署以及管理顯得較為複雜,helm通過打包的方式,支持發佈的版本管理和控制,很大程度上簡化了Kubernetes應用的部署和管理.

本文包含的主要內容

一、 安裝helm
二、helm常用命令
三、自定義Chart
四、 Chart模板
五、參考文檔

一、安裝helm

helm客戶端

下載helm:https://github.com/helm/helm/releases,其中有Mac、Linux、Windows版本,本文以Linux為例.

-tar -zxvf helm-v2.9.1-linux-amd64.tar.gz

-mv linux-amd64/helm /usr/local/bin/helm

-helm help #確認是否安裝成功

helm服務端

直接安裝:

-helm init --upgrade

-#docker pull gcr.io/kubernetes-helm/tiller

tips:安裝服務端會拉取:gcr.io/kubernetes-helm/tiller ,遺憾的是國內無法直接訪問”gcr.io”等.

使用阿里雲鏡像:


-docker pull registry.cn-hangzhou.aliyuncs.com/kube_containers/tiller

-docker tag registry.cn-hangzhou.aliyuncs.com/kube_containers/tiller gcr.io/kubernetes-helm/tiller:v2.9.1

-helm init

確認服務端(tiller)

-kubectl get pods -o wide -n kube-system |grep tiller
-#Running tiller安裝成功

確認客戶端和服務端連接成功

-helm version

-Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

-Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

#顯示client和Server表示客戶端和服務連接成功

helm search

通過helm search 可查找helm倉庫中可用chart

-helm search mysql #查找mysql

-NAME CHART VERSION APP VERSION DESCRIPTION

-stable/mysql 0.8.2 5.7.14 Fast, reliable, scalable, and easy to use open-...

-stable/prometheus-mysql-exporter 0.1.0 v0.10.0 A Helm chart for prometheus mysql exporter with...

-stable/percona 0.3.2 5.7.17 free, fully compatible, enhanced, open source d...

-stable/percona-xtradb-cluster 0.1.5 5.7.19 free, fully compatible, enhanced, open source d...

-stable/phpmyadmin 0.1.7 4.8.2 phpMyAdmin is an mysql administration frontend

-stable/gcloud-sqlproxy 0.3.6 1.11 Google Cloud SQL Proxy

-stable/mariadb 4.2.7 10.1.34 Fast, reliable, scalable, and easy to -use open-...

-helm install stable/mysql #安裝mysql

二、helm的一些常用命令

-helm search 查找可用的Charts

-helm inspect 查看指定Chart的基本信息

-helm install 根據指定的Chart 部署一個Release到K8s

-helm create 創建自己的Chart

-helm package 打包Chart,一般是一個壓縮包文件

-release:

-helm list 列出已經部署的Release

-helm delete [RELEASE] 刪除一個Release. 並沒有物理刪除, 出於審計需要,歷史可查。

-helm status [RELEASE] 查看指定的Release信息,即使使用helm delete命令刪除的Release.

-helm upgrade 升級某個Release

-helm rollback [RELEASE] [REVISION] 回滾Release到指定發佈序列

-helm get values [RELEASE] 查看Release的配置文件值

-repo:

-helm repo list

-helm repo add [RepoName] [RepoUrl]

-helm repo update

三、自定義Chart

以jptStore為例自定義Chart

Chart基本結構

-helm-Chart-demo-jptstore
-templates
-deployment.yaml
-service.yaml
-Chart.yaml
-values.yaml
-REAME.md

Chart.yaml

-name: hello-Chart
-version: 1.0.0
`

deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: jpt-test
namespace: ns-team-1-env-2
spec:
replicas: 1
template:
metadata:
labels:
app: jpt-test
spec:
containers:
- name: jpt-test
image: registry.cn-hangzhou.aliyuncs.com/mckj/jptstrore
imagePullPolicy: Always
ports:
- containerPort: 8080
hostPort: 8083
protocol: TCP

鏡像:registry.cn-hangzhou.aliyuncs.com/mckj/jptstrore,部署在ns-team-1-env-2命名空間下,映射主機端口為8083以便於部署後訪問測試。名為jtp-test的deployment.

service.yaml

-apiVersion: v1
-kind: Service
-metadata:
-name: jpt-test
-namespace: ns-team-1-env-2
-spec:
- ports:
- name: http-p-8080
-port: 8080
- protocol: TCP
- targetPort: 8080
-selector:
-app: jpt-test

在ns-team-1-env-2下部署一個名為jpt-test的service

install Chart

-cd helm-Chart-demo-jptstore #切到templates目錄級
-helm install .
#確認是否部署成功
-kubectl get deploy,svc,pod -n ns-team-1-env-2 |grep jpt-test

四、Helm Chart模板

基於上面的Chart我們將鏡像等參數提取到values.yaml文件中,在deployment.yaml通過模板訪問

配置文件 values.yaml

-image:
-repository: registry.cn-hangzhou.aliyuncs.com/mckj/jptstrore
-tag: latest
-pullPolicy: Always

#注意 key和value之間有給空格,不然後面渲染模板語法通不過

deployment.yaml中引用values.yaml中的數據

-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
- name: {{.Chart.Name}} #訪問Chart.yaml中的數據
-namespace: ns-team-1-env-2
-spec:
-replicas: 1
-template:
-metadata:
- labels:
- app: jpt-test
-spec:
-containers:
- name: jpt-test
- image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
- imagePullPolicy: {{ .Values.image.pullPolicy }}
- ports:
- containerPort: 8080
- hostPort: 8083
- protocol: TCP

執行帶有模板的Chart


-cd helm
-helm install .

#模板語法通過會出現下面的輸出數據
-RESOURCES:
-==> v1/Service
-NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
-jpt-test ClusterIP 10.111.17.249 8080/TCP 0s
-==> v1beta1/Deployment
-NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE

-jpt-test 1 1 1 0 0s

-==> v1/Pod(related)
-NAME READY STATUS RESTARTS AGE
-jpt-test-5bd49d546b-45dz8 0/1 Terminating 0 8d
-jpt-test-5bd49d546b-75764 0/1 Pending 0 0s

下載本文例子訪問 : https://github.com/gitzl/helm-Chart-demo-jptstore


五、參考文檔

  • 官方文檔 :https://docs.helm.sh/
  • 中文文檔:

https://whmzsu.github.io/helm-doc-zh-cn/

  • 參考Demo :

https://github.com/gitzl/helm/tree/master/docs/examples/nginx


關於Wise2C睿雲智合

圳睿雲智合科技有限公司成立於2012年,總部位於深圳,並分別在成都、深圳設立了研發中心,北京、上海設立了分支機構,核心骨幹人員全部為來自金融、科技行業知名企業資深業務專家、技術專家。早期專注於為中國金融保險等大型企業提供創新技術、電子商務、CRM等領域專業諮詢服務。

自016年始,在率先將容器技術引進到中國保險行業客戶後,公司組建了專業的容器技術產品研發和實施服務團隊,旨在幫助中國金融行業客戶將容器創新技術應用於企業信息技術支持業務發展的基礎能力改善與提升,成為中國金融保險行業容器技術服務領導品牌。

此,憑藉多年來在呼叫中心領域的業務經驗與技術積累,睿雲智合率先在業界推出基於開源軟交換平臺FreeSwitch的微服務架構多媒體數字化業務平臺,將語音、視頻、webchat、微信、微博等多種客戶接觸渠道集成,實現客戶統一接入、精準識別、智能路由的CRM策略,並以容器化治理來支持平臺的全應用生命週期管理,顯著提升了數字化業務處理的靈活、高效、彈性、穩定等特性,為幫助傳統企業向“以客戶為中心”的數字化業務轉型提供完美的一站式整體解決方案。

客戶&作夥伴

Kunbernetes利器-helm

原文地址:https://mp.weixin.qq.com/s/Ju1WsUxP6mW6hy7fMCUwAA


分享到:


相關文章: