helm開發Chart包部署


 

在Kubernetes環境中使用Helm來管理應用頗為方便,在使用第三方的Chart時,不論學習還是修改都會更加得心應手;

環境信息
實戰環境的版本信息如下,請確保以下軟件都已運行正常:

操作系統 :CentOS Linux release 7.6.1810
Kubernetes:1.13
Helm:2.12.3
創建Chart
執行命令helm create tomcat,會創建一個tomcat目錄,里面的內容如下:
[root@master ~]# tree tomcat
tomcat
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml

3 directories, 8 files

template目錄中的deployment.yaml、service.yaml這些文件的內容,和我們平時創建pod和service時編寫的yaml文件類似,不同之處在於很多配置的值並非固定,而是用變量代替了,以deployment.yaml中的鏡像名稱為例,如下圖綠框所示:

 

 

上圖綠框中的變量是在tomcat/values.yaml中定義的,如下圖紅框所示,只要我們修改了其中的內容,也就完成了depoloyment.yaml中鏡像的設置:

 

 

目前創建Chart已經成功,接下來就是修改deployment.yaml和vlues.yaml,改成tomcat所需的內容;
修改配置
修改tomcat/values.yaml的內容,包括Pod鏡像和版本、Service的類型,如下圖的兩個紅框中的內容:

 

 

 

此次實戰並沒有准備好存活探針和就緒探針,所以這兩個配置也要去掉,否則會導致創建Kubernetes判定創建Pod失敗,修改方法是將deployment.yaml中如下圖紅框中的內容全部刪除:

 

 

 

修改template/deployment.yaml中的內容,將端口從80改為8080,如下圖紅框所示:

 

 

 

至此,修改完畢,接下來嘗試部署到Kubernetes環境;
檢查和部署
在tomcat文件夾所在目錄,輸入以下命令,可以看到將values.yaml的值填寫到deployment.yaml、service.yaml后的最終效果:
helm install --dry-run --debug tomcat

得到輸出如下:

[root@master ~]# helm install --dry-run --debug tomcat
[debug] Created tunnel using local port: '42163'

[debug] SERVER: "127.0.0.1:42163"

[debug] Original chart version: ""
[debug] CHART PATH: /root/tomcat

NAME: virtuous-gorilla
REVISION: 1
RELEASED: Sat Mar 23 14:52:35 2019
CHART: tomcat-0.1.0
USER-SUPPLIED VALUES:
{}

COMPUTED VALUES:
affinity: {}
fullnameOverride: ""
image:
pullPolicy: IfNotPresent
repository: tomcat
tag: latest
ingress:
annotations: {}
enabled: false
hosts:
- chart-example.local
paths: []
tls: []
nameOverride: ""
nodeSelector: {}
replicaCount: 1
resources: {}
service:
port: 80
type: NodePort
tolerations: []
...

篇幅所限只展示了一部分輸出,可見設置的值已經生效;
2. 執行命令helm install tomcat,即可部署當前的Chart到Kubernetes環境,控制台輸出如下:

[root@master ~]# helm install tomcat
NAME: wistful-condor
LAST DEPLOYED: Sat Mar 23 14:54:27 2019
NAMESPACE: default
STATUS: DEPLOYED

RESOURCES:
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wistful-condor-tomcat NodePort 10.108.155.239 <none> 80:32190/TCP 0s

==> v1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
wistful-condor-tomcat 1 1 1 0 0s

==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
wistful-condor-tomcat-7c784699b8-zl7mm 0/1 ContainerCreating 0 0s


NOTES:
1. Get the application URL by running these commands:
export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services wistful-condor-tomcat)
export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT

根據控制台的提示,我們輸入以下命令,即可獲取到外部訪問此服務的地址:
export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services wistful-condor-tomcat)
export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT

我這里得到的地址是:http://192.168.182.130:31768/
3. 在瀏覽器輸入上述地址,可見訪問tomcat服務成功,如下圖:

 

 

 

4. 自定義Chart開發和驗證都完成了,執行命令helm package tomcat即可將整個Chart的配置文件打包,方便在其他環境安裝部署;

至此helm開發Chart實戰就全部完成了,經歷了此番實戰,今后學習中如遇到公共倉庫有不錯的Chart,可用helm fetch xxx
將Chart包下載到本地來研究學習源碼和配置,也可自己修改后再在本地install;


免責聲明!

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



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