• kubernetes helm


    目录

    一、helm 

    二、部署helm

    三、封装chart包

    四、上传chart到OCI仓库

    五、部署wordpress博客系统

    六、helm部署storageclass

    七、helm部署ingress-nginx

    八、helm部署metrics-server

    九、kubeapps


    一、helm 

    • Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum
    • Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发
    • 对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库
    • 对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序

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

    二、部署helm

    官网:https://helm.sh/zh/docs/intro/quickstart/

    https://github.com/helm/helm/releases

    安装:

    1. tar zxf helm-v3.11.0-linux-amd64.tar.gz
    2. cd linux-amd64/
    3. mv helm /usr/local/bin/

     配置helm命令补齐

    1. echo "source <(helm completion bash)" >> ~/.bashrc
    2. source ~/.bashrc
    3. helm version

    查询官方应用中心

    helm search hub nginx

     添加第三方repo源

    1. helm repo add my-repo https://charts.bitnami.com/bitnami
    2. helm repo list
    3. helm search repo nginx

    拉取应用
    1. helm pull my-repo/nginx
    2. tar zxf nginx-15.4.0.tgz
    3. cd nginx/

    按需修改
    vim values.yaml
    

     

     上传镜像

    1. docker pull bitnami/nginx:1.25.3-debian-11-r0
    2. docker tag docker.io/bitnami/nginx:1.25.3-debian-11-r0 reg.westos.org/bitnami/nginx:1.25.3-debian-11-r0
    3. 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
    

    三、封装chart包

    1. helm create mychart
    2. vim Chart.yaml
    3. vim values.yaml

     

    检测语法 打包  部署应用  回收

    1. helm lint mychart/
    2. helm package mychart/
    3. helm install myapp mychart-0.1.0.tgz
    4. helm list

     

    测试:更新:

     

    测试:

    回收:

    kubectl get all

    四、上传chart到OCI仓库

    创建harbor仓库:

    未登录认证时 :

    需要拷贝证书以及登录

    1. cp /etc/docker/certs.d/reg.westos.org/ca.crt /etc/pki/tls/certs/
    2. helm registry login reg.westos.org -u admin -p 123456
    3. 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 回滚版本

     测试:

    五、部署wordpress博客系统

    上传镜像:

    下载chart包部署 mysql数据库集群     使用yml文件安装应用 

    1. vim mysql-values.yaml
    2. global:
    3. imageRegistry: reg.westos.org
    4. architecture: replication
    5. auth:
    6. rootPassword: westos
    7. database: wordpress
    8. username: wordpress
    9. password: wordpress
    10. replicationUser: replicator
    11. replicationPassword: westos
    12. helm install --wait mydbcluster -f mysql-values.yaml mysql-9.14.2.tgz

     查看部署信息

    helm  get manifest mydbcluster |kubectl get -f -
    

    连接数据库
    1. MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default mydbcluster-mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d)
    2. 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
    3. mysql -h mydbcluster-mysql-primary.default.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"
    4. mysql -h mydbcluster-mysql-secondary.default.svc.cluster.local -uwordpress -pwordpress

     部署wordpress

    1. vim wordpress-values.yaml
    2. global:
    3. imageRegistry: reg.westos.org
    4. wordpressUsername: james
    5. wordpressPassword: james
    6. mariadb:
    7. enabled: false
    8. externalDatabase:
    9. host: mydbcluster-mysql-primary
    10. user: wordpress
    11. password: wordpress
    12. database: wordpress
    13. 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 -
    

    使用浏览器访问wordpress  登录 192.168.67.122/admin

    升级mydbcluster

    1. vim mysql-values-update.yaml
    2. global:
    3. imageRegistry: reg.westos.org
    4. architecture: replication
    5. auth:
    6. rootPassword: westos
    7. database: wordpress
    8. username: wordpress
    9. password: wordpress
    10. replicationUser: replicator
    11. replicationPassword: westos
    12. secondary:
    13. replicaCount: 2
    14. helm upgrade --atomic --timeout 10m mydbcluster -f mysql-values-update.yaml mysql-9.14.2.tgz

    查看历史修订   回滚版本

    1. helm history mydbcluster
    2. helm get manifest mydbcluster --revision 1
    3. helm rollback mydbcluster 1
    4. helm history mydbcluster

    回收:

    六、helm部署storageclass

    删除原有的部署
    kubectl delete  -f  nfs-client.yaml

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

    修改配置文件

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

    创建namespace

    kubectl create namespace nfs-provisioner
    

     使用oci部署应用

    1. helm -n nfs-provisioner install nfs-client --wait oci://reg.westos.org/charts/nfs-subdir-external-provisioner
    2. kubectl -n nfs-provisioner get pod

    测试:

    七、helm部署ingress-nginx

    回收原有部署
    kubectl delete  -f deploy.yaml
    
    上传镜像文件

    添加repo下载chart包

    1. helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
    2. helm search repo ingress-nginx
    3. helm pull ingress-nginx/ingress-nginx

    修改配置文件

    vim values.yaml
    

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

    1. tar zxf ingress-nginx-4.8.3.tgz
    2. helm package ingress-nginx
    3. helm push ingress-nginx-4.8.3.tgz oci://reg.westos.org/charts

     创建namespace   部署应用

    1. kubectl create namespace ingress-nginx
    2. helm -n ingress-nginx install ingress-nginx oci://reg.westos.org/charts/ingress-nginx

     测试:

    1. helm -n ingress-nginx get manifest ingress-nginx |kubectl get -f -
    2. helm install myapp local/mychart
    3. curl myapp.westos.org
    4. helm uninstall myapp

    八、helm部署metrics-server

    回收原有部署
    kubectl delete -f components.yaml

    添加repo 及下载

    1. helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
    2. helm search repo metrics-server
    3. helm pull metrics-server/metrics-server

     解压修改配置文件

    1. tar zxf metrics-server-3.8.4.tgz
    2. cd metrics-server
    3. vim values.yaml

    上传至oci

    创建namespace

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

    测试:

    九、kubeapps

    下载上传镜像:

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

    下载chart包

    1. helm search repo kubeapps
    2. helm pull my-repo/kubeapps

    解压修改配置文件

    1. tar zxf kubeapps-14.0.2.tgz
    2. cd kubeapps/
    3. vim values.yaml

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

    打包上传至oci

    1. helm package kubeapps/
    2. helm push kubeapps-14.0.2.tgz oci://reg.westos.org/charts

    创建namespace 使用oci部署

    1. kubectl create namespace kubeapps
    2. helm -n kubeapps install kubeapps oci://reg.westos.org/charts/kubeapps

    获取访问信息:

     访问:

    授权并获取token
    1. kubectl create serviceaccount kubeapps-operator -n kubeapps
    2. kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=kubeapps:kubeapps-operator
    3. kubectl -n kubeapps create token kubeapps-operator

     使用token登录web页面

  • 相关阅读:
    车道线算法合集——各个车道线论文代码地址、算法总结、优劣分析
    6.SpringBoot与缓存
    Chapter 11 Working with Dates and Times
    jar包不能够直接运行的解决办法
    数据分类分级指南范围
    低代码开发:智能财务系统开发应用
    msvcp140.dll是什么东西,如何解决msvcp140.dll丢失的问题的方法分享
    解决重启Linux服务器后数据消失问题
    rxjs Observable of 操作符的单步调试分析
    Vue3理解(6)
  • 原文地址:https://blog.csdn.net/weixin_56744753/article/details/134296892