Auto-iran ti asiri ni Helm

Auto-iran ti asiri ni Helm

Egbe Kubernetes aaS lati Mail.ru túmọ a kukuru akọsilẹ nipa bi o ṣe le ṣe ina awọn aṣiri Helm laifọwọyi nigbati o nmu imudojuiwọn. Awọn atẹle jẹ ọrọ lati ọdọ onkọwe ti nkan naa - oludari imọ-ẹrọ ti Intoware, ile-iṣẹ kan ti o dagbasoke awọn solusan SaaS.

Awọn apoti jẹ itura. Ni akọkọ Mo jẹ egboogi-eiyan (Oju mi ​​lati gba eleyi), ṣugbọn nisisiyi Mo ṣe atilẹyin ni kikun lilo imọ-ẹrọ yii. Ti o ba n ka eyi, o ti ni ireti ni aṣeyọri lilö kiri ni okun Docker, mọ awọn anfani ti Kubernetes, ati pe o jẹ ki igbesi aye rẹ rọrun pupọ pẹlu Helm.

Sibẹsibẹ, diẹ ninu awọn ohun ni o wa kedere le siwaju sii ju ti won nilo lati wa ni.

Bii o ṣe le ṣe ipilẹṣẹ awọn aṣiri laifọwọyi nigbati o nmu imudojuiwọn?

Aṣiri Kubernetes jẹ orisun ti o ni awọn orisii bọtini / iye ti o fẹ lo ninu koodu rẹ. Iwọnyi le jẹ awọn gbolohun ọrọ asopọ data, awọn ọrọ igbaniwọle imeeli, ati bẹbẹ lọ. Nipa lilo awọn aṣiri, o ṣẹda iyatọ ti o han gbangba laarin koodu ati awọn eto, gbigba ọ laaye lati ṣe irọrun ṣe awọn imuṣiṣẹ oriṣiriṣi laisi iyipada koodu koodu.

Ipo ti o wọpọ ni nigbati awọn modulu meji gbọdọ ṣe ibaraẹnisọrọ nipa lilo bọtini ti o wọpọ. Ko si ẹnikan ti o wa ni ita iṣupọ yẹ ki o mọ bọtini yii, nitori pe o ti pinnu fun ibaraẹnisọrọ ọkan-si-ọkan laarin iṣupọ.

Ṣiṣe awọn asiri

Ni deede, lati ṣẹda aṣiri ni Helm o nilo lati:

  • ṣe apejuwe asiri ninu faili iye;
  • redefine rẹ nigba imuṣiṣẹ;
  • tọka si inu imuṣiṣẹ / podu;
  • ... èrè!

Nigbagbogbo o dabi iru eyi:

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

Aṣiri Kubernetes ti o rọrun ni lilo awọn iye lati values.yml

Ṣugbọn jẹ ki a sọ pe o ko fẹ lati pato aṣiri rẹ ninu faili iye.

Awọn aṣayan pupọ lo wa nigbati imuṣiṣẹ nilo bọtini pinpin, eyiti o gbọdọ ṣe ipilẹṣẹ lakoko fifi sori ẹrọ.

Ninu apẹẹrẹ ibaraẹnisọrọ module-si-module loke, kii ṣe ifẹ lati pin aṣiri ni ita ti imuṣiṣẹ. Nitorinaa, o jẹ iwunilori pupọ pe Helm ni awọn ọna ṣiṣe lati ṣe ipilẹṣẹ aṣiri laifọwọyi laisi nini pato taara.

Awọn ìkọ

Awọn kio gba ọ laaye lati ṣiṣẹ koodu ni awọn ipo kan pato lakoko ilana fifi sori ẹrọ. Iṣẹ iṣeto le wa ti o nilo lati ṣiṣẹ lẹhin fifi sori akọkọ, tabi boya afọmọ nilo lati ṣee ṣaaju ṣiṣe imudojuiwọn eyikeyi.

Lati yanju iṣoro wa ti fifi bọtini kan ti ipilẹṣẹ lakoko fifi sori ẹrọ, awọn kio fifi sori tẹlẹ jẹ apẹrẹ. Ṣugbọn apeja kan wa: o ko le ṣe ipilẹṣẹ aṣiri laifọwọyi ni ẹẹkan lori imudojuiwọn kan. Hooks yoo ṣiṣẹ lori gbogbo imudojuiwọn.

Ti o ba ti ṣe ipilẹṣẹ aṣiri rẹ ati pe fifi sori akọkọ rẹ ko tii ṣẹlẹ sibẹsibẹ lẹhinna da kika kika duro, kio ti a fi sii tẹlẹ yoo ṣiṣẹ nla fun ọ.

Ṣugbọn ti aṣiri ba jẹ apakan ti imudojuiwọn kan (boya ẹya tuntun ti ko si lakoko fifi sori ẹrọ), lẹhinna o jẹ itiju pe o ko le ṣẹda kio fifi sori iṣaaju ti o ṣiṣẹ lẹẹkan.

Awọn iṣẹ

Awọn iṣẹ Helm gba ọ laaye lati ṣafikun ọpọlọpọ awọn eroja iwe afọwọkọ si awọn iwe afọwọkọ imuṣiṣẹ rẹ.

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

Apẹẹrẹ yii fihan pe iye aṣiri apiKey yoo jẹ UUID tuntun ti a ṣejade lakoko fifi sori ẹrọ.

Helm pẹlu ile-ikawe ẹya ti o gbooro nitootọ ti o ṣe adaṣe awọn ẹya awoṣe GO iyalẹnu ati ile-ikawe ẹya Sprig lati ṣẹda awọn imuṣiṣẹ aṣa.

Iṣẹ wiwa

Fi kun ni Helm 3.1 Iṣẹ wiwa, eyiti o fun ọ laaye lati beere imuṣiṣẹ ti o wa tẹlẹ ati:

  • ṣayẹwo awọn aye ti oro;
  • pada iye ti ohun ti wa tẹlẹ awọn oluşewadi fun nigbamii lilo.

Lilo mejeeji ti awọn agbara wọnyi, a le ṣẹda igba kan, aṣiri ti ipilẹṣẹ ni agbara!

# 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 }}

Nigbakugba ti imudojuiwọn tuntun ba lo si olupin naa, Helm yoo ṣe ipilẹṣẹ iye aṣiri tuntun (ti ko ba si aṣiri sibẹsibẹ) tabi tun lo iye ti o wa tẹlẹ.

Ti o dara orire!

Kini ohun miiran lati ka lori koko:

  1. Awọn ipele mẹta ti autoscaling ni Kubernetes ati bii o ṣe le lo wọn daradara.
  2. Kubernetes ninu ẹmi afarape pẹlu awoṣe fun imuse.
  3. Ikanni wa ni ayika Kubernetes ni Telegram.

orisun: www.habr.com

Fi ọrọìwòye kun