功能:
helm类似linux下面的包管理器apt-get/yum,能够快速的把yaml文件安装进k8s,且能够方便解决不同环境的配置问题。
前提:
已经安装k8s
熟练使用kubectl及yaml配置文件
安装:
helm版本地址
https://github.com/helm/helm/releases/tag/v3.1.2
[root@web-test-01 ~]
wget https://get.helm.sh/helm-v3.1.2-linux-amd64.tar.gz
tar zxvf helm-v3.1.2-linux-amd64.tar.gz
cd linux-amd64
cp helm /usr/bin/helm
helm3就安装好了,测试下
helm version
version.BuildInfo{Version:"v3.1.2", GitCommit:"d878d4d45863e42fd5cff6743294a11d28a9abce", GitTreeState:"clean", GoVersion:"go1.13.8"}
怎么使用helm呢?
[root@web-test-01]# helm create demo
[root@web-test-01 demo]# tree
.
├── charts #这个 charts 依赖的其他 charts,始终被安装
├── Chart.yaml #描述这个 Chart 的相关信息、包括名字、描述信息、版本
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl #模版助手
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml #模板变量文件
进入demo目录
[root@web-test-01 demo]#helm install -f values.yaml mydemo .
NAME: mydemo
LAST DEPLOYED: Sun Apr 5 17:16:56 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=demo,app.kubernetes.io/instance=mydemo" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace default port-forward $POD_NAME 8080:80
根据提示操作,查看创建是否成功
[root@web-test-01 demo]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
default mydemo-856c65db6b-tm8dp 1/1 Running 0 44m
那我们接下来修改下配置文件
helm create demo2
values.yaml里面就是配置的变量,将里面的内容修改为
message: "hello helm3"
将templates文件夹下面的内容全部删除
新建NOTES.txt,修改为
Welcome to my blog, This is testing, {{ .Values.message }}
新建 config-map.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: {{ .Values.message }}
检查语法
[root@web-test-01 demo2]#helm lint
==> Linting .
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, 0 chart(s) failed
开始安装
[root@web-test-01 demo2]#helm install -f values.yaml demo2 .
NAME: demo2
LAST DEPLOYED: Sun Apr 5 19:41:51 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Welcome to my blog, This is testing hello helm3
[root@web-test-01 demo2]# kubectl get cm
NAME DATA AGE
demo2-configmap 1 4m
查看和删除部署的helm
[root@web-test-01 demo2]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
demo2 default 1 2020-04-05 19:41:51.645910504 +0800 CST deployed demo2-0.1.0 1.16.0
[root@web-test-01 demo2]# helm uninstall demo2
release "demo2" uninstalled