Archebwch “Kubernetes ar gyfer DevOps”

Archebwch “Kubernetes ar gyfer DevOps” Helo, drigolion Khabro! Kubernetes yw un o elfennau allweddol yr ecosystem cwmwl modern. Mae'r dechnoleg hon yn darparu dibynadwyedd, scalability, a gwydnwch i rhithwiroli cynhwysydd. Mae John Arundel a Justin Domingus yn siarad am ecosystem Kubernetes ac yn cyflwyno atebion profedig i broblemau bob dydd. Cam wrth gam, byddwch yn adeiladu eich cymhwysiad cwmwl-frodorol eich hun ac yn creu'r seilwaith i'w gefnogi, yn sefydlu amgylchedd datblygu a phiblinell defnydd parhaus a fydd yn eich helpu wrth i chi weithio ar eich cymwysiadau nesaf.

• Dechreuwch gyda chynwysyddion a Kubernetes o'r pethau sylfaenol: nid oes angen profiad arbennig i ddysgu'r pwnc. • Rhedeg eich clystyrau eich hun neu ddewis gwasanaeth Kubernetes a reolir gan Amazon, Google, ac ati. • Defnyddiwch Kubernetes i reoli cylch bywyd cynhwysydd a'r defnydd o adnoddau. • Optimeiddio clystyrau yn seiliedig ar gost, perfformiad, gwydnwch, pŵer a scalability. • Dysgwch yr offer gorau i ddatblygu, profi a defnyddio eich cymwysiadau. • Trosoledd arferion presennol y diwydiant i sicrhau diogelwch a rheolaeth. • Rhoi egwyddorion DevOps ar waith ym mhob rhan o'ch cwmni fel y gall timau datblygu weithredu'n fwy hyblyg, cyflym ac effeithlon.

Ar gyfer pwy mae'r llyfr?

Mae'r llyfr yn fwyaf perthnasol i weithwyr adrannau gweinyddol sy'n gyfrifol am weinyddion, cymwysiadau a gwasanaethau, yn ogystal ag i ddatblygwyr sy'n ymwneud â naill ai adeiladu gwasanaethau cwmwl newydd neu fudo cymwysiadau presennol i Kubernetes a'r cwmwl. Peidiwch â phoeni, nid oes angen i chi wybod sut i weithio gyda Kubernetes neu gynwysyddion - byddwn yn dysgu popeth i chi.

Bydd defnyddwyr profiadol Kubernetes hefyd yn dod o hyd i lawer o werth, gyda sylw manwl i bynciau fel RBAC, defnydd parhaus, rheoli data sensitif, ac arsylwi. Gobeithiwn y bydd tudalennau’r llyfr yn bendant yn cynnwys rhywbeth diddorol i chi, waeth beth fo’ch sgiliau a’ch profiad.

Pa gwestiynau mae'r llyfr yn eu hateb?

Wrth gynllunio ac ysgrifennu'r llyfr, buom yn trafod technoleg cwmwl a Kubernetes gyda channoedd o bobl, gan siarad ag arweinwyr diwydiant ac arbenigwyr yn ogystal â dechreuwyr llwyr. Isod mae cwestiynau dethol yr hoffent eu gweld yn cael eu hateb yn y cyhoeddiad hwn.

  • “Mae gen i ddiddordeb mewn pam y dylech chi dreulio amser ar y dechnoleg hon. Pa broblemau fydd yn fy helpu i a’m tîm i’w datrys?”
  • “Mae Kubernetes yn ymddangos yn ddiddorol, ond mae ganddo rwystr eithaf uchel i fynediad. Nid yw paratoi enghraifft syml yn anodd, ond mae gweinyddu a dadfygio pellach yn frawychus. Hoffem gael cyngor dibynadwy ar sut mae pobl yn rheoli clystyrau Kubernetes yn y byd go iawn a pha broblemau rydyn ni'n debygol o ddod ar eu traws."
  • “Byddai cyngor goddrychol yn ddefnyddiol. Mae ecosystem Kubernetes yn rhoi gormod o opsiynau i dimau newydd ddewis ohonynt. Pan fo sawl ffordd o wneud yr un peth, sut ydych chi'n gwybod pa un sydd orau? Sut i wneud dewis?

Ac efallai’r cwestiwn pwysicaf oll:

  • “Sut alla i ddefnyddio Kubernetes heb amharu ar fy nghwmni?”

Dyfyniad. Gwrthrychau Cyfluniad a Chyfrinach

Mae'r gallu i wahanu rhesymeg cais Kubernetes o'i ffurfweddiad (hynny yw, o unrhyw werthoedd neu osodiadau a allai newid dros amser) yn ddefnyddiol iawn. Mae gwerthoedd ffurfweddu fel arfer yn cynnwys gosodiadau amgylchedd-benodol, cyfeiriadau DNS gwasanaeth trydydd parti, a manylion dilysu.

Wrth gwrs, gellir rhoi hyn i gyd yn uniongyrchol yn y cod, ond nid yw'r dull hwn yn ddigon hyblyg. Er enghraifft, byddai newid gwerth cyfluniad wedyn yn gofyn i chi adeiladu a defnyddio'ch cod eto. Ateb llawer gwell fyddai gwahanu'r ffurfweddiad o'r cod a'i ddarllen o ffeil neu newidynnau amgylchedd.

Mae Kubernetes yn darparu sawl ffordd wahanol o reoli cyfluniad. Yn gyntaf, gallwch drosglwyddo gwerthoedd i'r cymhwysiad trwy newidynnau amgylchedd a nodir yn y fanyleb amlapiwr codennau (gweler “Newidynnau Amgylcheddol” ar dudalen 192). Yn ail, gellir storio data cyfluniad yn uniongyrchol yn Kubernetes gan ddefnyddio gwrthrychau ConfigMap a Secret.

Yn y bennod hon, rydym yn archwilio'r gwrthrychau hyn yn fanwl ac yn edrych ar rai dulliau ymarferol o reoli cyfluniad a data sensitif gan ddefnyddio cymhwysiad demo.

Diweddaru cregyn codennau pan fydd cyfluniad yn newid

Dychmygwch fod gennych leoliad yn eich clwstwr a'ch bod am newid rhai gwerthoedd yn ei ConfigMap. Os ydych chi'n defnyddio'r siart Helm (gweler “Helm: Rheolwr Pecyn ar gyfer Kubernetes” ar dudalen 102), gallwch chi ganfod newid cyfluniad yn awtomatig ac ail-lwytho'ch cregyn codennau mewn un tric taclus. Ychwanegwch yr anodiad canlynol at eich manyleb defnyddio:

checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") .
       | sha256sum }}

Mae'r templed lleoli bellach yn cynnwys gwiriad o baramedrau cyfluniad: os bydd y paramedrau'n cael eu newid, bydd y swm yn cael ei ddiweddaru. Os ydych chi'n rhedeg uwchraddio helmed, bydd Helm yn canfod bod y fanyleb lleoli wedi newid a bydd yn ailgychwyn pob plisgyn pod.

Data sensitif yn Kubernetes

Gwyddom eisoes fod y gwrthrych ConfigMap yn darparu mecanwaith hyblyg ar gyfer storio a chael mynediad at ddata ffurfweddu mewn clwstwr. Fodd bynnag, mae gan y rhan fwyaf o gymwysiadau wybodaeth sy'n sensitif ac yn sensitif, fel cyfrineiriau neu allweddi API. Gellir ei storio hefyd yn ConfigMap, ond nid yw'r ateb hwn yn ddelfrydol.

Yn lle hynny, mae Kubernetes yn cynnig math arbennig o wrthrych sydd wedi'i gynllunio i storio data sensitif: Secret. Nesaf, gadewch i ni edrych ar enghraifft o sut y gellir defnyddio'r gwrthrych hwn yn ein cymhwysiad demo.

I ddechrau, edrychwch ar faniffest Kubernetes ar gyfer y gwrthrych Cyfrinachol (gweler hello-secret-env/k8s/secret.yaml):

apiVersion: v1
kind: Secret
metadata:
    name: demo-secret
stringData:
    magicWord: xyzzy

Yn yr enghraifft hon, yr allwedd breifat magicWord yw xyzzy (en.wikipedia.org/wiki/Xyzzy_(computing)). Yn gyffredinol, mae'r gair xyzzy yn ddefnyddiol iawn ym myd cyfrifiaduron. Yn debyg i ConfigMap, gallwch storio allweddi a gwerthoedd lluosog mewn gwrthrych Cyfrinachol. Yma, er mwyn symlrwydd, dim ond un pâr gwerth allweddol a ddefnyddiwn.

Defnyddio Gwrthrychau Cudd fel Newidynnau Amgylcheddol

Fel ConfigMap, gall y gwrthrych Secret fod ar gael yn y cynhwysydd fel newidynnau amgylchedd neu fel ffeil ar ei ddisg. Yn yr enghraifft ganlynol, byddwn yn neilltuo newidyn amgylchedd i'r gwerth o Secret:

spec:
   containers:
       - name: demo
          image: cloudnatived/demo:hello-secret-env
          ports:
             - containerPort: 8888
          env:
             - name: GREETING
               valueFrom:
               secretKeyRef:
                  name: demo-secret
                  key: magicWord

Rhedeg y gorchymyn canlynol yn y storfa demo i gymhwyso'r maniffestau:

kubectl apply -f hello-secret-env/k8s/
deployment.extensions "demo" configured
secret "demo-secret" created

Fel o'r blaen, anfonwch y porthladd lleol ymlaen i'r lleoliad i weld y canlyniad yn eich porwr:

kubectl port-forward deploy/demo 9999:8888
Forwarding from 127.0.0.1:9999 -> 8888
Forwarding from [::1]:9999 -> 8888

Wrth agor cyfeiriad localhost:9999/ dylech weld y canlynol:

The magic word is "xyzzy"

Ysgrifennu Gwrthrychau Cyfrinachol i Ffeiliau

Yn yr enghraifft hon, byddwn yn atodi'r gwrthrych Cyfrinachol i'r cynhwysydd fel ffeil. Mae'r cod wedi'i leoli yn ffolder ffeil hello-gyfrinachol yr ystorfa demo.

I gysylltu Secret fel ffeil, byddwn yn defnyddio'r defnydd canlynol:

spec:
   containers:
       - name: demo
          image: cloudnatived/demo:hello-secret-file
          ports:
              - containerPort: 8888
          volumeMounts:
              - name: demo-secret-volume
                mountPath: "/secrets/"
                readOnly: true
   volumes:
      - name: demo-secret-volume
        secret:
           secretName: demo-secret

Fel yn yr is-adran “Creu ffeiliau ffurfweddu o wrthrychau ConfigMap” ar t. 240, rydym yn creu cyfaint (yn yr achos hwn demo-secret-volume) a'i osod i'r cynhwysydd yn adran cyfrolMounts y fanyleb. Y maes mountPath yw / cyfrinachau, felly bydd Kubernetes yn creu un ffeil yn y ffolder hwn ar gyfer pob pâr allweddol / gwerth a ddiffinnir yn y gwrthrych Cyfrinachol.

Yn ein hesiampl, fe wnaethom ddiffinio dim ond un pâr gwerth allweddol o'r enw magicWord, felly bydd y maniffest yn creu un ffeil darllen yn unig / cyfrinachau / MagicWord gyda data sensitif yn y cynhwysydd.

Os ydych chi'n cymhwyso'r maniffest hwn yn yr un ffordd â'r enghraifft flaenorol, dylech chi gael yr un canlyniad:

The magic word is "xyzzy"

Darllen Gwrthrychau Cyfrinachol

Yn yr adran flaenorol, defnyddiwyd y gorchymyn disgrifio kubectl i arddangos cynnwys ConfigMap. A ellir gwneud yr un peth gyda Secret?

kubectl describe secret/demo-secret
Name:          demo-secret

Namespace:      default
Labels:             <none>
Annotations:
Type:               Opaque

Data
====
magicWord: 5   bytes

Sylwch nad yw'r data ei hun yn cael ei arddangos. Mae gwrthrychau cyfrinachol yn Kubernetes o fath Anhryloyw, sy'n golygu nad yw eu cynnwys yn cael ei ddangos yn kubectl disgrifio allbwn, cofnodion log, neu'r derfynell, gan ei gwneud yn amhosibl datgelu gwybodaeth sensitif yn ddamweiniol.

I weld fersiwn YAML wedi'i amgodio o ddata sensitif, defnyddiwch y gorchymyn kubectl get:

kubectl get secret/demo-secret -o yaml
apiVersion: v1
data:
   magicWord: eHl6enk=
kind: Secret
metadata:
...
type: Opaque

sylfaen64

Beth yw eHl6enk=, hollol wahanol i'n gwerth gwreiddiol? Gwrthrych Cyfrinachol yw hwn mewn gwirionedd, a gynrychiolir yn amgodio base64. Mae Base64 yn gynllun ar gyfer amgodio data deuaidd mympwyol fel cyfres o nodau.

Oherwydd y gall gwybodaeth sensitif fod yn ddeuaidd ac nid yn allbwn (fel sy'n wir gydag allwedd amgryptio TLS), mae gwrthrychau cyfrinachol bob amser yn cael eu storio ar fformat base64.

Y testun beHl6enk= yw'r fersiwn wedi'i amgodio base64 o'n gair cyfrinachol xyzzy. Gallwch chi wirio hyn trwy redeg y gorchymyn dadgodio base64 yn y derfynell:

echo "eHl6enk=" | base64 --decode
xyzzy

Felly, er bod Kubernetes yn eich amddiffyn rhag allbynnu data sensitif yn ddamweiniol yn y derfynell neu'r ffeiliau log, os ydych wedi darllen caniatâd ar wrthrychau Cyfrinachol mewn gofod enw penodol, gellir seilio'r data hwnnw 64 a'i ddadgodio wedi hynny.

Os oes angen i base64 amgodio rhywfaint o destun (er enghraifft, i'w roi mewn Cyfrinach), defnyddiwch y gorchymyn base64 heb ddadleuon:

echo xyzzy | base64
eHl6enkK

Cyrchu Gwrthrychau Cyfrinachol

Pwy all ddarllen a golygu Gwrthrychau Cudd? Pennir hyn gan RBAC, sef mecanwaith rheoli mynediad (byddwn yn ei drafod yn fanwl yn yr isadran “Cyflwyniad i Reoli Mynediad Seiliedig ar Rôl” ar dudalen 258). Os ydych chi'n rhedeg clwstwr nad oes ganddo RBAC neu nad yw wedi'i alluogi, mae eich holl wrthrychau Cyfrinachol ar gael i unrhyw ddefnyddwyr a chynwysyddion (byddwn yn esbonio yn ddiweddarach na ddylech gael unrhyw glystyrau cynhyrchu heb RBAC).

Amgryptio data goddefol

Beth am y rhai sydd â mynediad i'r gronfa ddata ac ati lle mae Kubernetes yn storio ei holl wybodaeth? A allant ddarllen data sensitif heb ganiatâd i ddarllen gwrthrychau Cudd trwy'r API?

Ers fersiwn 1.7, mae Kubernetes yn cefnogi amgryptio data goddefol. Mae hyn yn golygu bod gwybodaeth sensitif y tu mewn ac ati yn cael ei storio wedi'i hamgryptio ar ddisg ac ni ellir ei darllen hyd yn oed gan y rhai sydd â mynediad uniongyrchol i'r gronfa ddata. Er mwyn ei ddadgryptio, mae angen allwedd arnoch sydd gan weinydd Kubernetes API yn unig. Mewn clwstwr sydd wedi'i ffurfweddu'n gywir, dylid galluogi amgryptio goddefol.

Gallwch wirio a yw amgryptio goddefol yn gweithio yn eich clwstwr fel hyn:

kubectl describe pod -n kube-system -l component=kube-apiserver |grep encryption
        --experimental-encryption-provider-config=...

Os na welwch y faner experimental-encryption-provider-config, nid yw amgryptio goddefol wedi'i alluogi. Wrth ddefnyddio Google Kubernetes Engine neu wasanaethau rheoli Kubernetes eraill, caiff eich data ei amgryptio gan ddefnyddio mecanwaith gwahanol, felly ni fydd y faner yn bresennol. Gwiriwch gyda'ch gwerthwr Kubernetes i weld a yw cynnwys ac ati wedi'i amgryptio.

Storio data cyfrinachol

Mae yna rai adnoddau Kubernetes na ddylid byth eu tynnu o'r clwstwr, fel gwrthrychau Cyfrinachol hynod sensitif. Gallwch ddiogelu adnodd rhag cael ei ddileu gan ddefnyddio anodiad a ddarparwyd gan y rheolwr Helm:

kind: Secret
metadata:
    annotations:
        "helm.sh/resource-policy": keep

Strategaethau Rheoli Gwrthrychau Cudd

Yn yr enghraifft o’r adran flaenorol, diogelwyd data sensitif rhag mynediad heb awdurdod yn syth ar ôl cael ei storio yn y clwstwr. Ond mewn ffeiliau maniffest cawsant eu storio fel testun plaen.

Ni ddylech fyth roi gwybodaeth gyfrinachol mewn ffeiliau sy'n rheoli fersiynau. Sut allwch chi reoli a storio'r wybodaeth hon yn ddiogel cyn ei chymhwyso i'ch clwstwr Kubernetes?

Gallwch ddewis unrhyw offer neu strategaethau ar gyfer trin data sensitif yn eich cymwysiadau, ond bydd angen i chi ateb o leiaf y cwestiynau canlynol o hyd.

  • Ble dylid storio data sensitif fel ei fod yn hygyrch iawn?
  • Sut i wneud data sensitif yn hygyrch i'ch cymwysiadau gweithredol?
  • Beth ddylai ddigwydd i'ch cymwysiadau pan fyddwch chi'n disodli neu'n golygu data sensitif?

Am awduron

John Arundel yn ymgynghorydd gyda 30 mlynedd o brofiad yn y diwydiant cyfrifiaduron. Mae wedi ysgrifennu sawl llyfr ac yn gweithio gyda llawer o gwmnïau o wahanol wledydd, gan eu cynghori ar seilwaith cwmwl-frodorol a Kubernetes. Yn ei amser rhydd, mae’n mwynhau syrffio, yn saethwr pistol da, ac yn chwarae’r piano fel amatur. Yn byw mewn bwthyn stori dylwyth teg yng Nghernyw, Lloegr.

Justin Domingus — peiriannydd gweinyddu systemau yn gweithio mewn amgylchedd DevOps gyda Kubernetes a thechnolegau cwmwl. Mae'n mwynhau treulio amser yn yr awyr agored, yfed coffi, crancod, ac eistedd wrth y cyfrifiadur. Yn byw yn Seattle, Washington, gyda chath fendigedig a gwraig a ffrind gorau hyd yn oed yn fwy rhyfeddol, Adrienne.

» Ceir rhagor o fanylion am y llyfr yn gwefan y cyhoeddwr
» Tabl cynnwys
» Detholiad

Ar gyfer Khabrozhiteley gostyngiad o 25% gan ddefnyddio cwpon - Kubernetes

Ar ôl talu'r fersiwn papur o'r llyfr, anfonir llyfr electronig trwy e-bost.

Ffynhonnell: hab.com

Ychwanegu sylw