精华内容
下载资源
问答
  • helm-wrapper是带有的helm3 HTTP包装器。 使用helm-wrapper,您可以使用HTTP RESTFul API做类似helm commondline的操作(安装/卸载/升级/获取/列表/回滚...)。 支持API 如果某些API需要支持多个集群,则可以使用...
  • Helm Diff插件 这是一个Helm插件,可让您预览helm upgrade将发生的变化。 它基本上会在发行的最新部署版本和helm upgrade --debug --dry-run之间产生差异。 这也可以用来比较头盔版本的两个修订版。 安装 使用Helm...
  • Helm v3命名空间插件 该插件旨在用作Helm v3中自动创建名称空间的替代品。 出于某些良好的原因,Helm v3中已删除了此功能,但在某些情况下仍需要处理创建名称空间的问题。 它非常简单,并且可以将简单的kubectl ...
  • 如果您认为自己在 Vault Helm 中发现了安全问题,请通过与我们联系,负责任地披露。 此存储库包含用于在 Kubernetes 上安装和配置 Vault 的官方 HashiCorp Helm 图表。 根据提供的值,此图表支持 Kubernetes 上 ...
  • #此项目已归档 这是一个相当大的旅程,但是几年之后,... Helm软件包可以具有依赖关系,就像Debian软件包可以具有依赖关系一样,它们极大地简化了Kubernetes中复杂的分布式系统的管理。 此图表以可配置的大小引导了
  • 这是的官方Helm Chart,这是一种从运行中的OpenStack Cloud导出Prometheus指标的工具。 配置 图表配置在values.yaml文件中完成。 用法 # Get a local copy git clone ...
  • Helm插件将图表包推送到 安装 根据plugin.yaml的版本,将从GitHub下载发行版二进制文件: $ helm plugin install https://github.com/chartmuseum/helm-push.git Downloading and installing helm-push v0.9.0 ......
  • 这样您就不必为Helm 3图表从头开始手动编写values.schema.json 插件可生成 没什么花哨的代码,所有繁重的工作都是通过以下方式完成的: 用于生成JSON模式。 它的一个分支。 感谢 用于YAML解析 -用于CLI的东西 ...
  • helm-sonarqube-源码

    2021-04-02 19:45:21
    helm upgrade --install --namespace default --values ./values.yaml sonar sonarqube/sonarqube 配置 下表列出了SonarQube图表的可配置参数及其默认值。 范围 描述 默认 image.repository 图像存储库。 ...
  • :rocket: 将Helm Charts推送到基于OCI的注册表! :rocket: :light_bulb: 将Helm Charts与您的Docker映像一起存储。 不再需要托管Helm存储库 :wheelchair_symbol: :memo: 有关基于OCI的安全托管的更多信息 用法 ...
  • Helm-Intellisense: Lint :此命令分析当前活动的文档并验证所有路径(如.Values.foo.bar )均指向有效值。 Helm-Intellisense: Lint Chart :等效于Lint命令,但对于当前处于活动状态的文件的图表中的所有文件。 ...
  • mac安装helm-v3.0.2-darwin-amd64.tar.gz 直接把helm放到/usr/local/bin/helm目录下 直接在控制台打印 ---helm version 显示version.BuildInfo{Version:"v3.0.2", GitCommit:"19e47ee3283ae98139d98460de796c1be1e...
  • Helm

    2021-05-11 15:26:39
    Helm 前言 最近一直在研究kubernetes相关的技术,公司用到了Helm,之前了解的一直不深,本着探索的精神,今天把这个工具好好的学一下 什么是Helm Helm是Kubernetes的包管理器,类似于Linux中的yum、apt-get等工具 为...

    Helm

    前言

    最近一直在研究kubernetes相关的技术,公司用到了Helm,之前了解的一直不深,本着探索的精神,今天把这个工具好好的学一下

    什么是Helm

    Helm是Kubernetes的包管理器,类似于Linux中的yum、apt-get等工具

    为什么要用Helm

    我们都知道,在kubernetes中部署应用是通过yaml文件来进行配置的,拿部署nginx举例,在k8s中部署需要以下文件

    1. deployment
    2. service
    3. ingress

    我们需要手动的配置好这些文件,并在其中配置好对应的关系。在应用多的情况下,管理这些yaml是十分困难的

    使用Helm的好处

    • 不必为每个应用手动编写单独的yaml文件,只需要创建helm图表,将应用程序部署到集群中即可
    • 在k8s集群对容器编排的基础上,helm是对应用进行编排,主要用于管理k8s中复杂的应用
    • helm可以管理k8s中的资源依赖,可以重用chart包,可以为不同集群定制不同的配置
    • heml生态圈丰富、社区活跃

    安装Helm

    helm官方提供了好几种安装方式,自己选择适用的即可,我这里介绍两种

    使用二进制安装

    image.png

    • 解压软件包
    [root@master-201 ~]# tar -zxvf helm-v3.5.4-linux-amd64.tar.gz  -C /tmp/
    linux-amd64/
    linux-amd64/helm
    linux-amd64/LICENSE
    linux-amd64/README.md
    
    • 在解压目录中找到helm程序,将其移动到系统命令中即可
    mv /tmp/linux-amd64/helm /usr/bin/
    

    使用脚本安装

    Helm官方还提供了一个安装脚本

    $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
    $ chmod 700 get_helm.sh
    $ ./get_helm.sh
    

    Helm 使用

    在使用Helm之前,需要先了解下Helm中的三大概念

    • Chart
    • Repository
    • Release

    Chart: CHart表示的是一个Helm包。一个Chart包含了运行kubernetes集群中应用的所需要的工具、服务、资源定义等内容(类似Centos中的rpm包)

    Repository: 存放Charts的仓库,类似于Centos中的yum源(软件包仓库)

    Release: 运行在Kubernetes集群中的chart的实例。一个chart可以在一个集群中安装多次,每次安装会产生一个新的Release

    简单使用

    安装完helm之后,我们可以直接敲helm命令,来查看帮助文档。这里介绍几个常用的命令

    helm search

    使用helm search来查找charts

    使用语法

    • helm search hub 从官方的仓库中查找列出可用的helm charts
    • helm search repo 从添加到本地的仓库中进行查找(使用 helm add repo “库名” 命令添加库到本地)

    示例:

    $ helm search hub
    https://artifacthub.io/packages/helm/snyk/snyk-...  1.54.0                                                                      A Helm chart for the Snyk Monitor
    https://artifacthub.io/packages/helm/isotoma/so...  0.1.5                           1.0                                         A Helm chart for socat-tunneller
    https://artifacthub.io/packages/helm/softonic/s...  0.2.0                           1.0.0                                       A Helm chart for Kubernetes
    https://artifacthub.io/packages/helm/preferred-...  3.2.0                           8.7.0                                       A helm chart to install Apache Solr: http://luc...
    https://artifacthub.io/packages/helm/bitnami/solr   0.3.2                           8.8.2                                       Apache Solr is an open source enterprise search...
    https://artifacthub.io/packages/helm/apache-sol...  0.3.0                           v0.3.0                                      The Solr Operator enables easy management of So...
    ......
    
    $ helm search repo
    bitnami/thanos                                      3.15.1          0.19.0          Thanos is a highly available metrics system tha...
    bitnami/tomcat                                      9.1.0           10.0.5          Chart for Apache Tomcat
    bitnami/wavefront                                   2.0.4           1.3.4           Chart for Wavefront Collector for Kubernetes
    bitnami/wavefront-adapter-for-istio                 0.1.2           0.1.5           Wavefront Adapter for Istio is a lightweight Is...
    bitnami/wavefront-prometheus-storage-adapter        0.2.1           1.0.3           Wavefront Storage Adapter is a Prometheus integ...
    bitnami/wildfly                                     9.0.1           23.0.1          Chart for Wildfly
    bitnami/wordpress                                   10.10.3         5.7.1           Web publishing platform for building blogs and ...
    bitnami/zookeeper                                   6.7.0           3.7.0           A centralized service for maintaining configura...
    ingress-nginx/ingress-nginx                         3.29.0          0.45.0          Ingress controller for Kubernetes using NGINX a...
    prometheus-community/alertmanager                   0.8.0           v0.21.0         The Alertmanager handles alerts sent by client ...
    prometheus-community/kube-prometheus-stack          14.9.0          0.46.0          kube-prometheus-stack collects Kubernetes manif...
    prometheus-community/prometheus                     13.8.0          2.26.0          Prometheus is a monitoring system and time seri...
    prometheus-community/prometheus-adapter             2.12.1          v0.8.3          A Helm chart for k8s prometheus adapter
    prometheus-community/prometheus-blackbox-exporter   4.10.4          0.18.0          Prometheus Blackbox Exporter
    prometheus-community/prometheus-cloudwatch-expo...  0.14.1          0.10.0          A Helm chart for prometheus cloudwatch-exporter
    prometheus-community/prometheus-consul-exporter     0.4.0           0.4.0           A Helm chart for the Prometheus Consul Exporter
    prometheus-community/prometheus-couchdb-exporter    0.2.0           1.0             A Helm chart to export the metrics from couchdb...
    prometheus-community/prometheus-druid-exporter      0.9.0           v0.8.0          Druid exporter to monitor druid metrics with Pr...
    prometheus-community/prometheus-elasticsearch-e...  4.4.0           1.1.0           Elasticsearch stats exporter for Prometheus
    prometheus-community/prometheus-kafka-exporter      1.0.0           v1.2.0          A Helm chart to export the metrics from Kafka i...
    ......
    
    $ helm repo add brigade https://brigadecore.github.io/charts
    
    
    # helm repo
    $ helm repo list   # 列出本地仓库中的charts
    

    helm install

    使用helm install来安装一个软件包

    语法:helm install release名 chart名称

    示例:

    [root@master-201 ~]# helm install demo bitnami/wordpress
    WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /root/.kube/config
    WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /root/.kube/config
    NAME: demo
    LAST DEPLOYED: Tue May 11 10:52:54 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    NOTES:
    ** Please be patient while the chart is being deployed **
    
    Your WordPress site can be accessed through the following DNS name from within your cluster:
    
        demo-wordpress.default.svc.cluster.local (port 80)
    
    To access your WordPress site from outside the cluster follow the steps below:
    
    1. Get the WordPress URL by running these commands:
    
      NOTE: It may take a few minutes for the LoadBalancer IP to be available.
            Watch the status with: 'kubectl get svc --namespace default -w demo-wordpress'
    
       export SERVICE_IP=$(kubectl get svc --namespace default demo-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
       echo "WordPress URL: http://$SERVICE_IP/"
       echo "WordPress Admin URL: http://$SERVICE_IP/admin"
    
    2. Open a browser and access WordPress using the obtained URL.
    
    3. Login with the following credentials below to see your blog:
    
      echo Username: user
      echo Password: $(kubectl get secret --namespace default demo-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)
    

    helm在安装过程中会打印出一些信息,我们需要关注一下,有时需要根据信息进行额外的配置,例如上面的例子中,安装完应用后,需要利用打印出的信息来帮助我们登陆应用

    ps: helm客户端不会等待所有资源都运行完才退出,这意味着有时候docker镜像过大时,需要很久才能安装到kubernetes集群中

    安装自定义chart

    在一些环境下,官方提供的chart无法满足我们的需求,这时就需要我们自定义chart

    $ helm create demo # 创建一个名为demo的chart 
    

    chart目录结构

    [root@master-201 ~]# tree demo
    demo
    ├── charts  # 依赖的其他charts
    ├── Chart.yaml  # chart的描述信息(版本等)
    ├── templates  # 模板目录
    │   ├── deployment.yaml 
    │   ├── _helpers.tpl   # 放置可以通过chart复用的模板辅助对象
    │   ├── hpa.yaml
    │   ├── ingress.yaml # kubernetes中的ingress
    │   ├── NOTES.txt  # chart的注释信息(执行helm install时 会被打印)
    │   ├── serviceaccount.yaml  # kubernetes中的serviceaccount
    │   ├── service.yaml # kubernetes中的service
    │   └── tests
    │       └── test-connection.yaml
    └── values.yaml  # 重点掌握  包含了chart的默认值
    
    """
    补充: 有些软件的chart仓库中会有一个requirements.txt文件,我们可以在requirement.yaml中定义应用所依赖的chart
    """
    

    templates目录

    在templates目录下的模板文件遵循go语言 template的特性

    # deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: {{ include "demo.fullname" . }}
      labels:
        {{- include "demo.labels" . | nindent 4 }}
    spec:
      {{- if not .Values.autoscaling.enabled }}
      replicas: {{ .Values.replicaCount }}
      {{- end }}
      selector:
        matchLabels:
          {{- include "demo.selectorLabels" . | nindent 6 }}
      template:
        metadata:
          {{- with .Values.podAnnotations }}
          annotations:
            {{- toYaml . | nindent 8 }}
          {{- end }}
          labels:
            {{- include "demo.selectorLabels" . | nindent 8 }}
        spec:
          {{- with .Values.imagePullSecrets }}
          imagePullSecrets:
            {{- toYaml . | nindent 8 }}
          {{- end }}
          serviceAccountName: {{ include "demo.serviceAccountName" . }}
          securityContext:
            {{- toYaml .Values.podSecurityContext | nindent 8 }}
          containers:
            - name: {{ .Chart.Name }}
              securityContext:
                {{- toYaml .Values.securityContext | nindent 12 }}
              image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
              imagePullPolicy: {{ .Values.image.pullPolicy }}
              ports:
                - name: http
                  containerPort: 80
                  protocol: TCP
              livenessProbe:
                httpGet:
                  path: /
                  port: http
              readinessProbe:
    "deployment.yaml" 61L, 1821C                                                                                               1,1           Top
            {{- toYaml . | nindent 8 }}
          {{- end }}
    

    可以看到,在我们熟悉的deployment配置基础上,在关键的信息处通过{{变量}}的形式进行替换,这是template的语法,Values是在values.yaml中进行定义,在执行helm install时会进行渲染

    """
    values.yaml
    """
    
    # Default values for demo.
    # This is a YAML-formatted file.
    # Declare variables to be passed into your templates.
    
    replicaCount: 1
    
    image:
      repository: nginx
      pullPolicy: IfNotPresent
      # Overrides the image tag whose default is the chart appVersion.
      tag: ""
    
    imagePullSecrets: []
    nameOverride: ""
    fullnameOverride: ""
    
    serviceAccount:
      # Specifies whether a service account should be created
      create: true
      # Annotations to add to the service account
      annotations: {}
      # The name of the service account to use.
      # If not set and create is true, a name is generated using the fullname template
      name: ""
    
    podAnnotations: {}
    
    podSecurityContext: {}
      # fsGroup: 2000
    
    securityContext: {}
      # capabilities:
      #   drop:
      #   - ALL
      # readOnlyRootFilesystem: true
      # runAsNonRoot: true
      # runAsUser: 1000
    
    service:
      type: ClusterIP
      port: 80
    
    ingress:
      enabled: false
      annotations: {}
        # kubernetes.io/ingress.class: nginx
        # kubernetes.io/tls-acme: "true"
      hosts:
        - host: chart-example.local
          paths: []
      tls: []
      #  - secretName: chart-example-tls
      #    hosts:
      #      - chart-example.local
    ......
    

    具体values的配置会在以后的文章中介绍,本文只是简单了解helm的基础使用

    检查模板语法是否正确

    [root@master-201 demo]# helm lint .
    WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /root/.kube/config
    WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /root/.kube/config
    ==> Linting .
    [INFO] Chart.yaml: icon is recommended
    
    1 chart(s) linted, 0 chart(s) failed
    

    部署到kubernetes

    配置好chart后,执行以下命令即可安装

    $ helm install nginx .  # nginx为release的名,.代表当前chart
    
    $ helm list # 查看部署的release
    

    helm2中 直接使用 helm install . 即可安装 ,在helm3中 必须这一定release名

    image.png

    helm打包、发布

    我们自定义了一个chart,并将其部署到了kubernetes中,现在我们来看下如何将应用打包发布

    1. 将chart打成一个压缩包
    [root@master-201 demo]# helm package .
    WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /root/.kube/config
    WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /root/.kube/config
    Successfully packaged chart and saved it to: /root/demo/demo-0.1.0.tgz
    
    1. 发布到repository中

    helm2和helm3中 操作方式不同

    helm2:

    1. 启动一个Repository Serve
    2. 将chart加入本地的仓库中
    helm默认为我们提供了一个命令,用于启动本地Repository
    
    $ helm serve &
    该 Server 默认 $HOME/.helm/repository/local 目录作为 Chart 存储,并在 8879 端口上提供服务。
    
    $ helm add local http://127.0.0.1 8879
    

    helm3:

    需要外部仓库软件的支持,我们可以使用harbor仓库

    [root@master-201 helm]# helm repo add demo https://luvyw.com/chartrepo/charts
    

    使用helm repo list进行查看

    $ helm repo list
    [root@master-201 helm]# helm repo list
    NAME    URL                                      
    stable  http://mirror.azure.cn/kubernetes/charts/
    demo    https://luvyw.com/chartrepo/charts
    

    helm升级与回滚

    使用helm upgrade进行升级

    $ hepo upgrade 
    

    也可以在修改完chart.yaml文件后,将其重新打包,放入仓库,然后执行helm repo update进行升级

    $ helm histort demo #查看历史版本
    
    $ helm rollback demo 1 # 回滚操作
    

    更多有关helm模板的知识点,请移步官方文档,根据自己的需求做针对性的学习

    本文参考链接:

    helm官方手册

    展开全文
  • helm install ${release-name} . -f= ${specific-value.yaml} -n={namespace} # Example of deploy the chart helm install nfs-client . -f=eck-uat-values.yaml -n=eck (下面是原始的README.md) nfs-client-...
  • Kubernetes(k8s)应用管理利器Helm(2020)

    千人学习 2020-03-25 21:29:08
    Helm帮助我们管理kubernetes的应用,Helm chart帮助我们定义,安装和升级kubernetes应用。它主要有以下几个特征:  > 管理复杂的应用  > 简单的升级  > 方便共享  > 轻松的回退 ...
  • 掌舵人插件 一个用于与一起使用的的Java版本。 先决条件 文献资料 该项目已。 用法与范例 请参阅和文档。
  • 如果您使用的是Helm的最新版本,则不再需要此功能! helm template现在是头盔的内置部分。 只需运行helm template --help您现有的HelmHelm模板插件 这是一个Helm插件,可帮助图表开发人员调试其图表。 它像helm ...
  • heml中文文档,Helm是查找,共享和使用为Kubernetes构建的软件的最佳方式。本指南解释了使用Helm(和Tiller)来管理Kubernetes群集上的软件包的基础知识。 它假定您已经安装了Helm客户端和Tiller服务器(通常是helm ...
  • 私有 Kubernetes OpenVPN Helm 图表 TL;DR:此图表旨在部署私有 VPN 服务器,而无需访问集群中的其他 Pod 。 将其视为 Kubernetes 集群中的自有 Nord/Express VPN。 用法 $ helm repo add k8s-ovpn ...
  • helm-v3.7.0-windows-amd64.zip
  • 提供程序以与Helm相同的方式通过Terraform管理Kubernetes集群中已安装的 。 内容 要求 v0.12.x v1.14.x(构建提供程序插件) v3.xx部署图表 入门 这是一个如何在默认的kubernetes集群上安装mariadb图表的小示例...
  • Helm 2to3插件 Helm v3插件,可迁移和清理Helm v2配置并就地发布到Helm v3 总览 升级到Helm的新主要版本中,最重要的方面之一就是数据的迁移。 考虑到版本之间的架构变化,Helm v2到v3尤其如此。 2to3插件通过支持...
  • 我自己的traefik服务基于traefik-helm-chart部署在我的K8集群上 kubectl创建ns traefik 头盔安装--namespace traefik traefik traefik / traefik -f values.yaml kubectl -n traefik创建秘密的通用do-registry --...
  • helm客户端

    2018-06-06 16:03:07
    google的资源下载不了,只好上传到csdn上大家共享了,goole资源连接:wget https://storage.googleapis.com/kubernetes-helm/helm-v2.7.0-linux-amd64.tar.gz
  • 1、下载 所需版本(这里以helm稳定版helm-v3.2.4为例) 2、解压缩(tar -zxvf helm-v3.2.4-linux-amd64.tar.gz) 3、helm在解压后的目录中找到二进制文件,然后将其移至所需的目标位置(mv linux-amd64/helm /usr/...
  • tar -xzvf helm-v3.3.0-linux-arm64.tar.gz mv linux-arm64/helm /usr/local/bin/helm helm version
  • 掌舵单元测试 在YAML中对头盔图表进行单元测试...它将最新版本的二进制文件安装到helm插件目录中。 开始使用 在图表的.helmignore中添加tests ,并在$YOUR_CHART/tests/deployment_test.yaml创建以下测试文件: suite
  • helm-v3.5.2-linux-arm64.tar.gz
  • Helm微服务示例 此存储库用作示例,说明如何为多个微服务创建DRY Helm图表以及Umbrella图表。 要进一步了解基本细节,请参阅。 要求 确保将您的kubectl配置为与某些K8S群集通信,并且已初始化了helm客户端。 安装 ...
  • 对于此示例,我们假设一个场景具有两个集群:暂存和生产。 最终目标是利用Flux和Kustomize来管理两个群集,同时最大程度地...Flux将监视Helm存储库,并将基于semver范围自动将Helm版本升级到其最新图表版本。 先决条件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,041
精华内容 10,016
关键字:

helm