k8s-学习笔记15-helm
Helm 从入门到实践 - 肖祥 - 博客园 (cnblogs.com)
helm3 - cjw1219 - 博客园 (cnblogs.com)
k8s的yaml文件是不支持变量的,而一批服务,是大部分配置一样,只有少部分是不一样的。
我之前都是用文本编辑器去全局替换的,很二。
我的诉求就是有一个基础模板,然后不同的服务传入不同的变量,这样对于yaml的管理就方便很多
helm:变量放在一个文件里,然后yaml去read这些变量,然后渲染到yaml里
我们在 k8s 中部署一个应用,通常面临以下几个问题:
- 如何统一管理、配置和更新这些分散的 k8s 的应用资源文件
- 如何分发和复用一套应用模板
- 如何将应用的一系列资源当做一个软件包管理
HELM安装
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
helm install 普通yaml文件
# 创建一个名为nginx的配置,然后把默认生成的template下的文件删掉 helm create nginx
# 生成nginx yaml到template目录 kubectl create deployment web --image=nginx --dry-run -o yaml > deployment.yaml kubectl expose deployment web --port=80 --target-port=80 --dry-run -o yaml > service.yaml
# 使用helm安装,它就把template下的deployment和service都安装了。但这里没有变量 helm install web /root/nginx/
helm install 使用变量
Chart.yaml
apiVersion: v2 name: nginx-test description: A Helm chart for Kubernetes type: application version: 0.1.0 appVersion: "1.16.0"
values.yaml
replicas: 2 image: nginx imageTag: 1.17
templates/dp.yaml
kind: Deployment apiVersion: apps/v1 metadata: name: {{ .Chart.Name }} labels: app: {{ .Chart.Name }} spec: replicas: {{ .Values.replicas }} selector: matchLabels: app: {{ .Chart.Name }} template: metadata: labels: app: {{ .Chart.Name }} spec: containers: - name: {{ .Chart.Name }} image: {{ .Values.image }}:{{ .Values.imageTag }} ports: - containerPort: 80 protocol: TCP imagePullPolicy: Always resources: requests: cpu: "200m" memory: "1200Mi" restartPolicy: Always terminationGracePeriodSeconds: 10 securityContext: runAsUser: 0 schedulerName: default-scheduler strategy: rollingUpdate: maxUnavailable: 1 maxSurge: 1 revisionHistoryLimit: 7 progressDeadlineSeconds: 600 --- kind: Service apiVersion: v1 metadata: name: {{ .Chart.Name }} spec: ports: - protocol: TCP port: 80 targetPort: 8080 selector: app: {{ .Chart.Name }} sessionAffinity: None
# 部署测试,没问题就可以去掉 helm install web2 /root/java --dry-run
helm upgrade
# 将values.yaml中的image修改为1.18 helm upgrade web /root/java
# REVISION升为2 # helm ls NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION web default 2 2021-05-07 15:19:10.386135051 +0800 CST deployed nginx-test-0.1.0 1.16.0