Hoʻokumu ʻakomi o nā mea huna ma Helm

Hoʻokumu ʻakomi o nā mea huna ma Helm

hui Kubernetes aaS mai Mail.ru unuhi ʻōlelo pōkole e pili ana i ka hana ʻana i nā mea huna Helm i ka wā e hoʻohou ana. ʻO ka mea aʻe kahi kikokikona mai ka mea kākau o ka ʻatikala - ka luna ʻenehana o Intoware, kahi hui e hoʻomohala ana i nā hopena SaaS.

He ʻoluʻolu nā pahu. I ka wā mua he anti-container wau (hilahila wau i ka ʻae ʻana), akā i kēia manawa ke kākoʻo piha nei au i ka hoʻohana ʻana i kēia ʻenehana. Inā ʻoe e heluhelu ana i kēia, manaʻolana ʻoe ua holo kūleʻa i nā kai o Docker, ʻike i nā pono o Kubernetes, a ua maʻalahi kou ola me Helm.

Eia naʻe, ʻoi aku ka paʻakikī o kekahi mau mea ma mua o ka mea e pono ai.

Pehea e hoʻopuka ai i nā mea huna i ka wā e hoʻonui ai?

ʻO kahi huna Kubernetes kahi kumu waiwai i loaʻa nā kī/waiwai paʻa āu e makemake ai e hoʻohana i kāu code. ʻO kēia paha nā kaula pili waihona, nā ʻōlelo huna leka uila, a pēlā aku. Ma ka hoʻohana ʻana i nā mea huna, hana ʻoe i kahi kaʻawale ʻokoʻa ma waena o nā code a me nā hoʻonohonoho, e ʻae iā ʻoe e hana maʻalahi i nā deployments like ʻole me ka hoʻololi ʻole i ka codebase.

ʻO kahi kūlana maʻamau ke kamaʻilio ʻelua modula me ke kī maʻamau. ʻAʻohe mea ma waho o ka pūʻulu e ʻike i kēia kī, no ka mea, ua manaʻo ʻia ia no ke kamaʻilio pākahi a me hoʻokahi i loko o ka hui.

Ka hana huna

ʻO ka maʻamau, no ka hana ʻana i kahi huna ma Helm pono ʻoe e:

  • wehewehe i ka mea huna i loko o ka waihona waiwai;
  • e wehewehe hou i ka wā o ka hoʻolālā;
  • e kuhikuhi iā ia i loko o ka deployment/pod;
  • ... waiwai!

He mea maʻamau e like me kēia:

apiVersion: v1
kind: Secret
metadata:
  name: my-super-awesome-api-key
type: Opaque
stringData:
  apiKey: {{ .Values.MyApiKeySecret | quote }}

He mea huna Kubernetes maʻalahi e hoʻohana ana i nā waiwai mai values.yml

Akā e ʻōlelo mākou ʻaʻole makemake ʻoe e wehewehe i kāu mea huna i ka faila waiwai.

Nui nā koho i ka wā e pono ai ka hoʻolālā ʻana i kahi kī kaʻana like, pono e hana ʻia i ka wā o ke kau ʻana.

Ma ka laʻana kamaʻilio module-to-module ma luna, ʻaʻole makemake ʻia e kaʻana like i ka mea huna ma waho o ka waiho ʻana. No laila, makemake nui ʻia e loaʻa iā Helm nā mīkini e hoʻopuka maʻalahi i kahi huna me ka ʻole e kuhikuhi pololei.

Hooki

Hāʻawi nā Hooks iā ʻoe e holo code ma nā wahi kikoʻī i ka wā o ke kaʻina hana. Aia paha kahi hana hoʻonohonoho pono e holo ma hope o ka hoʻokomo mua ʻana, a i ʻole pono e hoʻomaʻemaʻe ʻia ma mua o ka hana ʻana i kekahi mea hou.

No ka hoʻoponopono ʻana i kā mākou pilikia o ka hoʻohui ʻana i kahi kī i hana ʻia i ka wā o ka hoʻokomo ʻana, kūpono nā makau hoʻokomo mua. Akā aia kahi hopu: ʻaʻole hiki iā ʻoe ke hoʻopuka maʻalahi i ka mea huna i hoʻokahi manawa ma kahi hōʻano hou. E hana nā Hooks i kēlā me kēia mea hou.

Inā ua hana ʻoe i kāu mea huna a ʻaʻole i hoʻokō ʻia kāu hoʻokomo mua ʻana a laila hoʻōki i ka heluhelu ʻana, e hana maikaʻi ka makau pre-install iā ʻoe.

Akā inā he ʻāpana o ka mea huna i kahi mea hou (malia paha he hiʻohiʻona hou ʻaʻole i laila i ka wā o ka hoʻokomo ʻana), a laila hilahila ʻaʻole hiki iā ʻoe ke hana i kahi hook pre-installation e hana hoʻokahi wale nō.

Nā hana

Hāʻawi nā hana Helm iā ʻoe e hoʻohui i nā mea kikoʻī like ʻole i kāu mau palapala hoʻolālā.

apiVersion: v1
kind: Secret
metadata:
  name: my-super-awesome-api-key
type: Opaque
stringData:
  apiKey: {{ uuidv4 | quote }} #Generate a new UUID and quote it

Hōʻike kēia hiʻohiʻona i ka waiwai o ka mea huna apiKey ʻo ia ka UUID hou i hana ʻia i ka wā hoʻokomo.

Loaʻa i ka Helm kahi waihona hiʻohiʻona nui maoli e hoʻohana i nā hiʻohiʻona kāhāhā GO a me ka hale waihona hiʻohiʻona o Sprig e hana i nā hoʻolālā maʻamau.

Hana huli

Hoʻohui ʻia i ka Helm 3.1 Hana huli, ka mea e hiki ai iā ʻoe ke noi i kahi hoʻolālā e kū nei a:

  • e nānā i ke ola o nā kumuwaiwai;
  • e hoʻihoʻi i ka waiwai o kahi kumuwaiwai e hoʻohana ai ma hope.

Me ka hoʻohana ʻana i kēia mau mana ʻelua, hiki iā mākou ke hana i kahi mea huna hoʻokahi manawa i hana ʻia me ka ikaika!

# 1. Запросить существование секрета и вернуть в переменной $secret
{{- $secret := (lookup "v1" "Secret" .Release.Namespace "some-awesome-secret" -}}
apiVersion: v1
kind: Secret
metadata:
  name: some-awesome-secret
type: Opaque

# 2. Если секрет существует, взять его значение как apiKey (секрет использует кодирование Base64, так что используйте ключ "data")
{{ if $secret -}}
data:
  apiKey: {{ $secret.data.apiKey }}

# 3. Если секрет не существует — создать его (в этот раз используйте "stringData", так как будет обычное значение)!
{{ else -}}
stringData:
  apiKey: {{ uuidv4 | quote }}
{{ end }}

Ke hoʻohana ʻia kahi mea hou i ke kikowaena, e hoʻopuka ʻo Helm i kahi waiwai huna hou (inā ʻaʻohe mea huna) a i ʻole e hoʻohana hou i ka waiwai i loaʻa.

Pomaikai!

He aha hou aʻe e heluhelu ai ma ke kumuhana:

  1. ʻEkolu pae o ka autoscaling ma Kubernetes a pehea e hoʻohana pono ai.
  2. ʻO nā Kubernetes i ka ʻuhane o ka pōā me kahi hoʻohālike no ka hoʻokō.
  3. ʻO kā mākou kahawai a puni Kubernetes ma Telegram.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka