helm☞01入门

阅读量: zyh 2021-06-17 16:21:58
Categories: > Tags:

前言

helm: k8s的包管理器,这里是v3版本

大致流程:Chart仓库<-helm->存储到helm客户端本地->config->kubeconfig->Kube Apiserver->Release

chart仓库:存储chart程序包,不包含程序,是一个资源描述/模板 ,是一个http服务器。

helm:本地客户端

config:提供chart包所需的变量,构建特定的chart包配置,对应chart包里的values.yaml文件

Release:特定的chart包的本地实例化对象,部署于目标集群上的一个实例

当chart更新后,helm可以滚动更新对应的Release实例

部署

下载Helm包

Helm | 安装Helm

Releases · helm/helm (github.com)

Helm包是一个二进制程序,直接解压就可以用,将解压后的 helm 文件放置在 /usr/bin/ 下即可

你也可以通过脚本一键安装最新版本的helm: curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

添加源

添加微软家的源,并命名为 stable

helm repo add stable http://mirror.azure.cn/kubernetes/charts/

列出已有的源

helm repo list

查询stable源包含的包

helm search repo stable

常用命令

release命令(v3版本)

chart命令(v3版本)

定制化

就是通过定制化包的values.yaml

通过下列命令导出包所支持的所有参数:

helm show value <pkg.name>
➜   helm show values apphub/nginx  | grep -v '#' | grep -v '^$'
image:
  registry: docker.io
  repository: bitnami/nginx
  tag: 1.16.1-debian-10-r0
  pullPolicy: IfNotPresent
replicaCount: 1
podAnnotations: {}
affinity: {}
nodeSelector: {}
tolerations: {}
resources:
  limits: {}
  requests: {}
livenessProbe:
  httpGet:
    path: /
    port: http
  initialDelaySeconds: 30
  timeoutSeconds: 5
  failureThreshold: 6
readinessProbe:
  httpGet:
    path: /
    port: http
  initialDelaySeconds: 5
  timeoutSeconds: 3
  periodSeconds: 5
service:
  type: LoadBalancer
  port: 80
  httpsPort: 443
  nodePorts:
    http: ""
    https: ""
  annotations: {}
  externalTrafficPolicy: Cluster
ingress:
  enabled: false
  certManager: false
  hostname: example.local
  annotations: {}
  tls:
    - hosts:
        - example.local
      secretName: example.local-tls
  secrets:
metrics:
  enabled: false
  image:
    registry: docker.io
    repository: bitnami/nginx-exporter
    tag: 0.5.0-debian-10-r0
    pullPolicy: IfNotPresent
  podAnnotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: "9113"
  service:
    port: 9113
    annotations:
      prometheus.io/scrape: "true"
      prometheus.io/port: "{{ .Values.metrics.service.port }}"
  resources:
    limits: {}
    requests: {}
  serviceMonitor:
    enabled: false

可以看到配置并非是k8s的标准格式。