iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0

helm 是拿來管理設定檔的工具。他會將K8s中的各元件yaml檔打包成一個叫做chart的集合,再透過參數去管理設定yaml檔。

先建立一個chart - helm-demo

helm create helm-demo

舉例來說,我們有一個deployment的 yaml檔

# deployment.yaml
apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
   name: blue-nginx
 spec:
   replicas: 2

我們將其中變數拉出來到values.yaml

replicaCount: 2

然後修改deployment.yaml

apiVersion: apps/v1
 kind: Deployment
 metadata:
   name: {{ include "value-helm-demo.fullname" . }}
 spec:
   replicas: {{ .Values.replicaCount }}

再來就可以一鍵部署這份檔案,直接在/helm-demo下指令

helm install .

NAME:   gilded-peacock

release:Helm 部署出去的實體我們稱為release(A Release is an instance of a chart running in a Kubernetes cluster.)

chart:A Chart is a Helm package。It contains all of the resource definitions necessary to run an application, tool, or service inside of a Kubernetes cluster.

在terraform的resource helm_release 描述一個chart在k8s cluster中的預期狀態

resource helm_release

name:這個release的名字

repository:需要的chart的來源

chart:被安裝的chart。這邊可以填local path、chart的URL、或是chart的名字(如果他的repo是唯一的)。

你也可以使用repo/chart,如果之前這個chart有被helm repo add。但通常不推薦

set:自定義的值

set-config.kasAddress:為了代理k8s的agent所要帶入的值

resource "helm_release" "gitlab_agent" {
  name = "gitlab-agent"

  repository = "https://charts.gitlab.io"
  chart      = "gitlab-agent"

  create_namespace = true
  namespace        = var.agent_namespace

  set {
    name  = "config.kasAddress"
    value = var.kas_address
  }

  set {
    name  = "config.token"
    value = var.agent_token
  }
}

上一篇
部署 K8S 及 Gitlab
下一篇
正式部署EKS
系列文
用K8s打造你的Youtube13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言