千家信息网

k8s包管理Helm命令大全

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,前言helm的三个核心概念:Chart: chart就是一个安装包,类似与rpm,deb这样的安装包Reporitory: 仓库,一个http服务器存放Charts包. 安装完helm之后,默认配置了
千家信息网最后更新 2024年11月26日k8s包管理Helm命令大全

前言

helm的三个核心概念:

  • Chart: chart就是一个安装包,类似与rpm,deb这样的安装包
  • Reporitory: 仓库,一个http服务器存放Charts包. 安装完helm之后,默认配置了谷歌官方stable仓库.
  • release: heml install一个chart之后生成的实例.一个chart每次安装都会产生一个release.
    release之间没有直接关系,每个release有revision,对应这个release在helm管理下的版本.

helm安装有四种方式:

  • 从repository, helm install stable/mysql
  • charts打包后的tgz包,helm install mysql-2.3.tgz
  • 从tgz解压后的charts目录,helm install mysql/
  • 从url, helm install http://127.0.0.1:8879/charts/mysql

helm的日常使用:

一个release的生命周期
  1. 首先查找包,如想要安装mysql,helm search mysql,mysql是个关键字,如果一个chart中的chart.yaml文件内定义了这个关键字,则可以被搜索到.

    $ helm search mysqlNAME                                    CHART VERSION   APP VERSION     DESCRIPTION                                                 stable/mysql                            1.3.0           5.7.14          Fast, reliable, scalable, and easy to use open-source rel...stable/mysqldump                        2.5.0           2.4.1           A Helm chart to help backup MySQL databases using mysqldump stable/prometheus-mysql-exporter        0.5.1           v0.11.0         A Helm chart for prometheus mysql exporter with cloudsqlp...stable/percona                          1.1.0           5.7.17          free, fully compatible, enhanced, open source drop-in rep...stable/percona-xtradb-cluster           1.0.0           5.7.19          free, fully compatible, enhanced, open source drop-in rep
  2. 查看安装包的内容,helm inspect -h, helm inspect values 只查看暴露的自定义参数, 或者直接helm fetch下载此安装包至当前目录.

    $ helm inspect values stable/mysql## mysql image version## ref: https://hub.docker.com/r/library/mysql/tags/##image: "mysql"imageTag: "5.7.14"busybox:  image: "busybox"  tag: "1.29.3"testFramework:  image: "dduportal/bats"  tag: "0.4.0"## Specify password for root user#### Default: random 10 character string# mysqlRootPassword: testing
  3. 根据查看到的values来自定义安装或直接安装.helm install, 使用helm template $chartsName输出K8s的资源文件,参数与install一样.使用--dry-run --debug来模拟安装过程并打印配置信息.
    cat << EOF > config.yamlmariadbUser: user0mariadbDatabase: user0dbEOFhelm install stable/mysql  -f configure.yaml --set service.nodePort=31313# 只查看安装过程中的文件,不进行实际安装.helm install stable/mysql  -f configure.yaml --set service.nodePort=31313 --debug --dry-run# 输出对应k8s的yaml文件helm template stable/mysql  -f configure.yaml --set service.nodePort=31313 
  4. 查看安装后的release, helm ls, 可以查看release的名字,revision版本,更新时间,当前状态,chart版本,app版本,namespace.
    $ helm lsNAME                    REVISION        UPDATED                         STATUS          CHART           APP VERSION                     NAMESPACEgilded-mule             6               Wed Jul 17 10:31:33 2019        DEPLOYED        minio-2.5.0     RELEASE.2019-05-14T23-57-45Z    default  hopping-rottweiler      1               Wed Jul 17 10:06:06 2019        FAILED          minio-2.5.0     RELEASE.2019-05-14T23-57-45Z    default  modest-tuatara          1               Wed Jul 17 10:09:30 2019        FAILED          qujun-2.5.0     RELEASE.2019-05-14T23-57-45Z    default  
  5. 查看release当前安装的资源状态,helm status $releaseName.

    $ helm status gilded-muleLAST DEPLOYED: Wed Jul 17 10:31:33 2019NAMESPACE: defaultSTATUS: DEPLOYEDRESOURCES:==> v1/ConfigMapNAME               DATA  AGEgilded-mule-minio  1     68m==> v1/PersistentVolumeClaimNAME               STATUS   VOLUME  CAPACITY  ACCESS MODES  STORAGECLASS  AGEgilded-mule-minio  Pending  68m==> v1/Pod(related)NAME                                READY  STATUS   RESTARTS  AGEgilded-mule-minio-84f85fff78-rv6r6  0/1    Pending  0         68m==> v1/SecretNAME               TYPE    DATA  AGEgilded-mule-minio  Opaque  2     68m...........
  6. 查看release详细信息,heml get $releasename, 查看对应k8s的yaml文件, helm get manifest $releaseName.查看安装时自定义的value.heml get values $releasename

    $ helm get gilded-mule   REVISION: 6RELEASED: Wed Jul 17 10:31:33 2019CHART: minio-2.5.0USER-SUPPLIED VALUES:service:    nodePort: 31312COMPUTED VALUES:DeploymentUpdate:    maxSurge: 100%    maxUnavailable: 0    type: RollingUpdateStatefulSetUpdate:    updateStrategy: RollingUpdate ......# 查看这个release安装时自定义的参数.$ helm get values gilded-mule                        service:    nodePort: 31312
  7. 升级,回退,查看版本记录,helm upgrade, helm rollback, helm hisotry
    helm upgrade --set service.nodePort=31312  gilded-mule stable/minio helm rollback  gilded-mule 1helm hisotry  gilded-mule 
  8. 删除
    helm delete $releaseNamehelm list --all
repository的使用
  1. 查看当前的仓库,helm repo list
  2. 在本机创建自己的仓库
    mkdir -p ~/my-reponohup helm serve --address 127.0.0.1:8879 --repo-path ~/my-repo &# 此时会在mys-repo下新建一个index.html文件
  3. 添加自己的仓库
    helm repo add my-repo http://127.0.0.1:8879
  4. 在自己仓库中添加包,更新index

    # 先去github上下载chartscp -r mysql  ~/my-repocd  ~/my-repohelm package mysql --save=false   helm repo index --url=http://127.0.0.1:8879 .    
  5. 更新仓库缓存,helm update
创建自己的charts
  1. 快速创建模板,helm create my-charts,修改对应内容
  2. 打包,然后拷贝至repository的目录,然后执行更新index操作. helm package
  3. 安装,helm install . 或 helm install my-charts.tgz
  4. 验证charts格式,helm lint
  5. 查看charts文件内容. helm inspect chart my-charts
  6. 查看value文件内容. helm inspect values my-charts
  7. 查看charts目录下文件内容. helm inspect my-charts
  8. 查看charts模板渲染后k8s的yaml,helm template my-charts -f configfile --set a=b

注意: 如果tiller的serviceaccount只有自己namespace的权限,那么charts中的namespaces也需要指定在tiller的namespaces中.

0