helm安装配置

作者: 647f379ea944 | 来源:发表于2018-08-12 09:36 被阅读1次

    简介

    helm是kubernetes的包管理工具,用于简化部署和管理 Kubernetes 应用。用来管理charts——预先配置好的安装包资源。

    Helm和charts的主要作用:

    • 应用程序封装
    • 版本管理
    • 依赖检查
    • 便于应用程序分发

    helm是一个C/S框架的软件,helm相当于一个客户端,tiller是一个服务端

    • Helm CLI 是 Helm 客户端,可以在本地执行
    • Tiller 是服务器端组件,在 Kubernetes 群集上运行,并管理 Kubernetes 应用程序的生命周期
    • Repository 是 Chart 仓库,Helm客户端通过HTTP协议来访问仓库中Chart的索引文件和压缩包

    安装

    安装之前需要先配置好kubeconfigkubectl可以正常使用就表示kubeconfig已经配置正确,也可以通过环境变量KUBECONFIG指定helm使用的kubeconfig

    安装helm

    # 如下地址下载helm二进制文件 
    # 解压之后放在自己的PATH路径下
    # https://github.com/helm/helm/releases
    mkdir -pv helm && cd helm
    wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
    tar xf helm-v2.9.1-linux-amd64.tar.gz
    sudo mv linux-amd64/helm /usr/local/bin
    rm -rf linux-amd64
    
    # 查看版本,不显示出server版本,因为还没有安装server
    helm version
    

    简单安装tiller(本次实验采用)

    # 部署 tiller
    helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 \
    --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    
    # 查看
    kubectl get pods -n kube-system -l app=helm
    kubectl get svc -n kube-system -l app=helm
    

    安全性更高的安装tiller(tls)

    helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 \
    --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts \
    --tiller-tls \
    --tiller-tls-verify \
    --tiller-tls-cert=cert.pem \
    --tiller-tls-key=key.pem \
    --tls-ca-cert=ca.pem \
    --service-account=tiller
    
    # 其他命令都需要使用 tls
    # --tls
    

    配置rbac

    cat >helm-rbac-config.yaml<<EOF
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: tiller
      namespace: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRoleBinding
    metadata:
      name: tiller
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
      - kind: ServiceAccount
        name: tiller
        namespace: kube-system
    EOF
    kubectl create -f helm-rbac-config.yaml
    
    # 配置tiller使用创建的ServiceAccount
    kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
    

    查看状态

    # 查看pod启动情况
    kubectl get pod -n kube-system -l app=helm
    
    # 再次查看版本,显示出server版本
    helm version
    

    简单使用

    查看可用charts

    # 更新charts列表
    helm repo update 
    
    # 搜索可用charts
    helm search
    helm search mysql
    

    查看已经安装的charts

    helm list
    # helm ls
    

    安装测试

    以下两种部署方式任选一种

    使用命令行模式部署
    # 使用命令行模式部署
    helm install -n mariadb-test \
    --set persistence.enabled=false,mariadbRootPassword=will,mariadbUser=will,mariadbPassword=will,mariadbDatabase=will \
    stable/mariadb
    
    使用配置文件定制部署
    # 使用配置文件方式部署
    # 查看可配置项
    helm inspect values stable/mariadb
    
    # 获取所有可配置项(去行空行和注释)
    helm inspect values stable/mariadb | egrep -v '^\s*#|^$'
    
    # 配置
    cat >config.yml<<EOF
    usePassword: true
    mariadbRootPassword: will
    mariadbUser: will
    mariadbPassword: will
    mariadbDatabase: will
    persistence:
      enabled: false
    EOF
    
    # 部署
    helm install -n mariadb-test -f config.yml stable/mariadb
    
    测试
    # 查看状态
    helm ls
    kubectl get pods
    kubectl get svc
    
    # 连接测试
    kubectl run mariadb-cli --image=bitnami/mariadb:10.1.28-r1 -i --tty bash
    mysql -hmariadb-test-mariadb -uwill -pwill will
    show databases;
    select version();
    select user();
    
    # 删除 mariadb-cli
    kubectl delete deploy mariadb-cli
    
    # 删除部署
    helm delete mariadb-test --purge
    

    自定义chart

    创建chart

    # 创建
    helm create hello
    
    # chart目录结构介绍
    hello
    ├── charts # 本chart依赖的chart
    ├── Chart.yaml # 描述chart的基本信息,如名称版本等
    ├── templates # kubernetes manifest文件模板目录
    │   ├── deployment.yaml
    │   ├── _helpers.tpl
    │   ├── ingress.yaml
    │   ├── NOTES.txt # 纯文本文件,可在其中填写chart的使用说明
    │   └── service.yaml
    └── values.yaml # chart配置的默认值
    
    # 对chart的模板和配置进行测试
    helm install --dry-run --debug ./
    

    测试安装chart

    # 安装
    helm install -n hello-test ./
    
    # 查看
    helm ls
    kubectl get pods
    kubectl get svc
    
    # 端口转发
    export POD_NAME=$(kubectl get pods --namespace default -l "app=hello,release=hello-test" -o jsonpath="{.items[0].metadata.name}")
    kubectl port-forward $POD_NAME 8080:80
    
    # 访问
    curl http://127.0.0.1:8080
    
    # 删除
    helm delete hello-test --purge
    

    chart分发

    # 打包为压缩包
    helm package ./
    

    参考文档

    相关文章

      网友评论

        本文标题:helm安装配置

        本文链接:https://www.haomeiwen.com/subject/iotsbftx.html