目录

Helm V3 与 V2 最大的区别在于去掉了tiller:

官网:https://helm.sh/zh/docs/intro/quickstart/
https://github.com/helm/helm/releases
安装:
- tar zxf helm-v3.11.0-linux-amd64.tar.gz
- cd linux-amd64/
- mv helm /usr/local/bin/

配置helm命令补齐
- echo "source <(helm completion bash)" >> ~/.bashrc
- source ~/.bashrc
- helm version

查询官方应用中心
helm search hub nginx

添加第三方repo源
- helm repo add my-repo https://charts.bitnami.com/bitnami
- helm repo list
- helm search repo nginx

- helm pull my-repo/nginx
- tar zxf nginx-15.4.0.tgz
- cd nginx/

vim values.yaml




上传镜像

- docker pull bitnami/nginx:1.25.3-debian-11-r0
- docker tag docker.io/bitnami/nginx:1.25.3-debian-11-r0 reg.westos.org/bitnami/nginx:1.25.3-debian-11-r0
- docker push reg.westos.org/bitnami/nginx:1.25.3-debian-11-r0


部署应用
helm install myapp .

测试:

再次修改配置
vim values.yaml

helm upgrade myapp .

查看应用
helm list

helm history myapp

回滚应用
helm rollback myapp 1
helm uninstall myapp

- helm create mychart
- vim Chart.yaml
- vim values.yaml




检测语法 打包 部署应用 回收
- helm lint mychart/
- helm package mychart/
- helm install myapp mychart-0.1.0.tgz
- helm list

测试:
更新:



测试:

回收:
kubectl get all

创建harbor仓库:

未登录认证时 :
需要拷贝证书以及登录
- cp /etc/docker/certs.d/reg.westos.org/ca.crt /etc/pki/tls/certs/
- helm registry login reg.westos.org -u admin -p 123456
-
- helm env

上传chart
helm push mychart-0.2.0.tgz oci://reg.westos.org/charts

下载chart,默认下载最新版本
helm pull oci://reg.westos.org/charts/mychart --version 0.2.0
安装chart
helm install myapp oci://reg.westos.org/charts/mychart --version 0.1.0

测试:

helm upgrade myapp oci://reg.westos.org/charts/mychart --version 0.2.0

也可以使用
helm rollback myapp 1 回滚版本
测试:
上传镜像:


下载chart包部署 mysql数据库集群 使用yml文件安装应用
- vim mysql-values.yaml
-
- global:
- imageRegistry: reg.westos.org
- architecture: replication
- auth:
- rootPassword: westos
- database: wordpress
- username: wordpress
- password: wordpress
- replicationUser: replicator
- replicationPassword: westos
-
- helm install --wait mydbcluster -f mysql-values.yaml mysql-9.14.2.tgz


查看部署信息
helm get manifest mydbcluster |kubectl get -f -

- MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default mydbcluster-mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d)
-
- kubectl run mydbcluster-mysql-client --rm --tty -i --restart='Never' --image reg.westos.org/bitnami/mysql:8.0.35-debian-11-r0 --namespace default --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash
-
- mysql -h mydbcluster-mysql-primary.default.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"
-
- mysql -h mydbcluster-mysql-secondary.default.svc.cluster.local -uwordpress -pwordpress


部署wordpress
- vim wordpress-values.yaml
-
- global:
- imageRegistry: reg.westos.org
- wordpressUsername: james
- wordpressPassword: james
- mariadb:
- enabled: false
- externalDatabase:
- host: mydbcluster-mysql-primary
- user: wordpress
- password: wordpress
- database: wordpress
-
- helm install myblog -f wordpress-values.yaml wordpress-18.1.6.tgz

等待myblog初始化完毕
kubectl logs myblog-wordpress-c6d4c4647-qdts6 -f

获取myblog 外部IP
helm get manifest myblog |kubectl get -f -

升级mydbcluster
- vim mysql-values-update.yaml
- global:
- imageRegistry: reg.westos.org
- architecture: replication
- auth:
- rootPassword: westos
- database: wordpress
- username: wordpress
- password: wordpress
- replicationUser: replicator
- replicationPassword: westos
- secondary:
- replicaCount: 2
-
- helm upgrade --atomic --timeout 10m mydbcluster -f mysql-values-update.yaml mysql-9.14.2.tgz

查看历史修订 回滚版本
- helm history mydbcluster
- helm get manifest mydbcluster --revision 1
- helm rollback mydbcluster 1
- helm history mydbcluster


回收:



kubectl delete -f nfs-client.yaml

- helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
- helm search repo nfs-subdir-external-provisioner



修改配置文件



将修改好的文件打包 上传chart到oci

创建namespace
kubectl create namespace nfs-provisioner
使用oci部署应用
- helm -n nfs-provisioner install nfs-client --wait oci://reg.westos.org/charts/nfs-subdir-external-provisioner
- kubectl -n nfs-provisioner get pod

测试:




kubectl delete -f deploy.yaml
添加repo下载chart包
- helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
- helm search repo ingress-nginx
- helm pull ingress-nginx/ingress-nginx

修改配置文件
vim values.yaml



将修改好的文件打包 上传chart到oci
- tar zxf ingress-nginx-4.8.3.tgz
- helm package ingress-nginx
- helm push ingress-nginx-4.8.3.tgz oci://reg.westos.org/charts

创建namespace 部署应用
- kubectl create namespace ingress-nginx
- helm -n ingress-nginx install ingress-nginx oci://reg.westos.org/charts/ingress-nginx

测试:
- helm -n ingress-nginx get manifest ingress-nginx |kubectl get -f -
- helm install myapp local/mychart
- curl myapp.westos.org
- helm uninstall myapp



kubectl delete -f components.yaml
添加repo 及下载
- helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
- helm search repo metrics-server
- helm pull metrics-server/metrics-server

解压修改配置文件
- tar zxf metrics-server-3.8.4.tgz
- cd metrics-server
- vim values.yaml
上传至oci

创建namespace
- kubectl create namespace metrics-server
- helm -n metrics-server install metrics-server oci://reg.westos.org/charts/metrics-server
- helm -n metrics-server get manifest metrics-server kubectl get -f

测试:

下载上传镜像:
- docker load -i kubeapps-2.9.0.tar
- docker images |grep reg.westos.org/bitnami | awk '{system("docker push "$1":"$2"")}'


下载chart包
- helm search repo kubeapps
- helm pull my-repo/kubeapps

解压修改配置文件
- tar zxf kubeapps-14.0.2.tgz
- cd kubeapps/
- vim values.yaml


使用LoadBalancer 不使用ingress ingress访问需要在Windows上添加解析



打包上传至oci
- helm package kubeapps/
- helm push kubeapps-14.0.2.tgz oci://reg.westos.org/charts


创建namespace 使用oci部署
- kubectl create namespace kubeapps
- helm -n kubeapps install kubeapps oci://reg.westos.org/charts/kubeapps


获取访问信息:

访问:

- kubectl create serviceaccount kubeapps-operator -n kubeapps
- kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=kubeapps:kubeapps-operator
- kubectl -n kubeapps create token kubeapps-operator

使用token登录web页面

