Buku "Kubernetes for DevOps"

Buku "Kubernetes for DevOps" Halo warga Khabro! Kubernetes minangka salah sawijining unsur penting ing ekosistem awan modern. Teknologi iki nyedhiyakake linuwih, skalabilitas lan daya tahan kanggo virtualisasi wadah. John Arundel lan Justin Domingus ngomong babagan ekosistem Kubernetes lan ngenalake solusi sing wis kabukten kanggo masalah saben dina. Langkah demi langkah, sampeyan bakal nggawe aplikasi cloud-native dhewe lan nggawe infrastruktur kanggo ndhukung, nyiyapake lingkungan pangembangan lan pipa penyebaran terus-terusan sing bakal mbantu sampeyan nggarap aplikasi sabanjure.

• Miwiti wadhah lan Kubernetes saka dhasar: ora ana pengalaman khusus sing dibutuhake kanggo sinau topik kasebut. • Jalanake kluster sampeyan dhewe utawa pilih layanan Kubernetes sing dikelola saka Amazon, Google, lsp. • Gunakake Kubernetes kanggo ngatur siklus urip wadah lan konsumsi sumber daya. • Ngoptimalake kluster adhedhasar biaya, kinerja, daya tahan, daya lan skalabilitas. • Sinau alat sing paling apik kanggo ngembangake, nguji, lan nyebarake aplikasi sampeyan. • Leverage laku industri saiki kanggo njamin keamanan lan kontrol. • Ngleksanakake prinsip DevOps ing saindhenging perusahaan sampeyan supaya tim pangembang bisa tumindak kanthi luwih fleksibel, cepet, lan efisien.

Buku iku kanggo sapa?

Buku kasebut paling relevan kanggo karyawan departemen administrasi sing tanggung jawab kanggo server, aplikasi lan layanan, uga kanggo pangembang sing melu mbangun layanan awan anyar utawa migrasi aplikasi sing wis ana menyang Kubernetes lan awan. Aja kuwatir, sampeyan ora perlu ngerti carane nggarap Kubernetes utawa kontaner - kita bakal mulang sampeyan kabeh.

Pangguna Kubernetes sing berpengalaman uga bakal nemokake akeh nilai, kanthi jangkoan sing jero babagan topik kayata RBAC, panyebaran terus-terusan, manajemen data sensitif, lan observasi. Muga-muga kaca-kaca ing buku kasebut mesthi ngemot barang sing menarik kanggo sampeyan, preduli saka katrampilan lan pengalaman sampeyan.

Pitakonan apa sing dijawab buku?

Nalika ngrancang lan nulis buku kasebut, kita ngrembug babagan teknologi maya lan Kubernetes karo atusan wong, ngomong karo pimpinan lan pakar industri uga wong anyar sing lengkap. Ing ngisor iki ana pitakonan sing dipilih sing pengin dijawab ing publikasi iki.

  • "Aku kepengin weruh kenapa sampeyan kudu nglampahi wektu ing teknologi iki. Masalah apa sing bakal mbantu aku lan tim ngrampungake?
  • "Kubernetes katon menarik, nanging nduweni alangan sing cukup dhuwur kanggo mlebu. Nyiyapake conto prasaja ora angel, nanging administrasi lan debugging luwih angel. Kita pengin njaluk saran sing bisa dipercaya babagan carane wong ngatur klompok Kubernetes ing jagad nyata lan masalah apa sing bakal kita alami.
  • "Saran subyektif bakal mbiyantu. Ekosistem Kubernetes menehi tim anyar akeh opsi kanggo milih saka. Yen ana sawetara cara kanggo nindakake perkara sing padha, kepiye sampeyan ngerti endi sing paling apik? Carane nggawe pilihan?

Lan mbok menawa sing paling penting saka kabeh pitakonan:

  • "Kepiye carane nggunakake Kubernetes tanpa ngganggu perusahaanku?"

Kutipan. Konfigurasi lan obyek Rahasia

Kemampuan kanggo misahake logika aplikasi Kubernetes saka konfigurasi (yaiku, saka nilai utawa setelan sing bisa diganti liwat wektu) migunani banget. Nilai konfigurasi biasane kalebu setelan khusus lingkungan, alamat DNS layanan pihak katelu, lan kredensial otentikasi.

Mesthi, kabeh iki bisa dilebokake langsung menyang kode, nanging pendekatan iki ora cukup fleksibel. Contone, ngganti nilai konfigurasi banjur mbutuhake sampeyan mbangun lan masang kode maneh. Solusi sing luwih apik yaiku misahake konfigurasi saka kode lan maca saka file utawa variabel lingkungan.

Kubernetes nyedhiyakake sawetara cara kanggo ngatur konfigurasi. Pisanan, sampeyan bisa ngirim nilai menyang aplikasi liwat variabel lingkungan sing ditemtokake ing spesifikasi bungkus pod (pirsani "Variabel Lingkungan" ing kaca 192). Kapindho, data konfigurasi bisa disimpen langsung ing Kubernetes nggunakake ConfigMap lan obyek Rahasia.

Ing bab iki, kita njelajah obyek kasebut kanthi rinci lan ndeleng sawetara pendekatan praktis kanggo ngatur konfigurasi lan data sensitif nggunakake aplikasi demo.

Nganyari cangkang pod nalika owah-owahan konfigurasi

Bayangake sampeyan duwe panyebaran ing kluster lan sampeyan pengin ngganti sawetara nilai ing ConfigMap. Yen sampeyan nggunakake grafik Helm (pirsani "Helm: Package Manager kanggo Kubernetes" ing kaca 102), sampeyan bisa kanthi otomatis ndeteksi owah-owahan konfigurasi lan ngisi maneh cangkang pod ing siji trik sing rapi. Tambahake anotasi ing ngisor iki menyang spesifikasi panyebaran sampeyan:

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

Cithakan penyebaran saiki ngemot checksum saka paramèter konfigurasi: yen paramèter diganti, jumlah bakal dianyari. Yen sampeyan nganyarke helm, Helm bakal ndeteksi manawa spesifikasi penyebaran wis diganti lan bakal miwiti maneh kabeh cangkang pod.

Data sensitif ing Kubernetes

Kita wis ngerti manawa obyek ConfigMap nyedhiyakake mekanisme fleksibel kanggo nyimpen lan ngakses data konfigurasi ing kluster. Nanging, umume aplikasi duwe informasi sing sensitif lan sensitif, kayata sandhi utawa kunci API. Uga bisa disimpen ing ConfigMap, nanging solusi iki ora becik.

Nanging, Kubernetes nawakake jinis obyek khusus sing dirancang kanggo nyimpen data sensitif: Rahasia. Sabanjure, ayo goleki conto carane obyek iki bisa digunakake ing aplikasi demo.

Kanggo miwiti, deleng manifest Kubernetes kanggo obyek Rahasia (pirsani hello-secret-env/k8s/secret.yaml):

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

Ing conto iki, kunci pribadi magicWord yaiku xyzzy (en.wikipedia.org/wiki/Xyzzy_(computing)). Tembung xyzzy umume migunani banget ing jagad komputer. Kaya ConfigMap, sampeyan bisa nyimpen pirang-pirang tombol lan nilai ing obyek Rahasia. Ing kene, kanggo kesederhanaan, kita nggunakake mung siji pasangan nilai kunci.

Nggunakake Obyek Rahasia minangka Variabel Lingkungan

Kaya ConfigMap, obyek Rahasia bisa kasedhiya ing wadhah minangka variabel lingkungan utawa minangka file ing disk. Ing conto ing ngisor iki, kita bakal nemtokake variabel lingkungan menyang nilai saka Rahasia:

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

Jalanake perintah ing ngisor iki ing repositori demo kanggo ngetrapake manifests:

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

Kaya sadurunge, terusake port lokal menyang panyebaran kanggo ndeleng asil ing browser sampeyan:

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

Nalika mbukak alamat localhost:9999/ sampeyan kudu ndeleng ing ngisor iki:

The magic word is "xyzzy"

Nulis Obyek Rahasia menyang File

Ing conto iki, kita bakal masang obyek Rahasia menyang wadhah minangka file. Kode kasebut ana ing folder hello-secret-file saka gudang demo.

Kanggo nyambungake Rahasia minangka file, kita bakal nggunakake panyebaran ing ngisor iki:

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

Kaya ing bagean "Nggawe file konfigurasi saka obyek ConfigMap" ing p. 240, kita nggawe volume (ing kasus iki demo-rahasia-volume) lan dipasang ing wadhah ing bagean volumeMounts saka specification. Bidang mountPath yaiku /rahasia, mula Kubernetes bakal nggawe siji file ing folder iki kanggo saben pasangan kunci/nilai sing ditetepake ing obyek Rahasia.

Ing conto kita, kita nemtokake mung siji pasangan nilai kunci sing diarani magicWord, mula manifest bakal nggawe file / rahasia / magicWord sing mung diwaca kanthi data sensitif ing wadhah kasebut.

Yen sampeyan ngetrapake manifest iki kanthi cara sing padha karo conto sadurunge, sampeyan kudu entuk asil sing padha:

The magic word is "xyzzy"

Maca Obyek Rahasia

Ing bagean sadurunge, kita nggunakake perintah kubectl describe kanggo nampilake isi ConfigMap. Bisa padha karo Rahasia?

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

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

Data
====
magicWord: 5   bytes

Elinga yen data dhewe ora ditampilake. Obyek rahasia ing Kubernetes kalebu jinis Opaque, tegese isine ora ditampilake ing kubectl njlèntrèhaké output, entri log, utawa terminal, saéngga ora sengaja mbukak informasi sensitif.

Kanggo ndeleng versi data sensitif YAML sing dienkode, gunakake perintah kubectl get:

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

base64

Apa eHl6enk=, beda banget karo nilai asli kita? Iki sejatine obyek Rahasia, diwakili ing enkoding base64. Base64 minangka skema kanggo ngodhe data biner arbitrer minangka senar karakter.

Amarga informasi sensitif bisa uga binar lan dudu output (kaya kasus kunci enkripsi TLS), obyek rahasia tansah disimpen ing format base64.

Tèks beHl6enk= minangka versi kode basis64 saka tembung rahasia kita xyzzy. Sampeyan bisa verifikasi iki kanthi mbukak printah base64 -decode ing terminal:

echo "eHl6enk=" | base64 --decode
xyzzy

Dadi, nalika Kubernetes nglindhungi sampeyan saka ora sengaja ngetokake data sensitif ing terminal utawa file log, yen sampeyan wis maca ijin kanggo obyek Rahasia ing ruang jeneng tartamtu, data kasebut bisa di-base64 lan banjur didekode.

Yen sampeyan kudu ngodhe base64 sawetara teks (contone, kanggo nyelehake ing Rahasia), gunakake printah base64 tanpa bantahan:

echo xyzzy | base64
eHl6enkK

Ngakses Obyek Rahasia

Sapa sing bisa maca lan nyunting obyek Rahasia? Iki ditemtokake dening RBAC, mekanisme kontrol akses (kita bakal ngrembug kanthi rinci ing bagean "Pambuka Kontrol Akses Berbasis Peran" ing kaca 258). Yen sampeyan mbukak kluster sing ora duwe RBAC utawa ora aktif, kabeh obyek Rahasia kasedhiya kanggo pangguna lan wadhah (kita bakal nerangake mengko yen sampeyan ora duwe klompok produksi tanpa RBAC).

Enkripsi data pasif

Kepiye babagan sing duwe akses menyang database etcd ing ngendi Kubernetes nyimpen kabeh informasi? Bisa maca data sensitif tanpa ijin kanggo maca obyek Rahasia liwat API?

Wiwit versi 1.7, Kubernetes ndhukung enkripsi data pasif. Iki tegese informasi sensitif nang etcd disimpen ndhelik ing disk lan ora bisa diwaca malah dening sing duwe akses langsung menyang database. Kanggo dekripsi, sampeyan butuh kunci sing mung ana ing server API Kubernetes. Ing kluster sing dikonfigurasi kanthi bener, enkripsi pasif kudu diaktifake.

Sampeyan bisa mriksa manawa enkripsi pasif bisa digunakake ing kluster kanthi cara iki:

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

Yen sampeyan ora ndeleng gendera eksperimen-enkripsi-provider-config, enkripsi pasif ora diaktifake. Nalika nggunakake Google Kubernetes Engine utawa layanan manajemen Kubernetes liyane, data sampeyan dienkripsi nggunakake mekanisme sing beda, dadi gendera ora bakal ana. Priksa karo vendor Kubernetes kanggo ndeleng apa konten etcd dienkripsi.

Nyimpen data rahasia

Ana sawetara sumber daya Kubernetes sing ora kudu dibusak saka kluster, kayata obyek Rahasia sing sensitif banget. Sampeyan bisa nglindhungi sumber supaya ora dibusak nggunakake anotasi sing diwenehake dening manajer Helm:

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

Strategi Manajemen Obyek Rahasia

Ing conto saka bagean sadurunge, data sensitif direksa saka akses ora sah sanalika sawise disimpen ing kluster. Nanging ing file nyata disimpen minangka teks biasa.

Sampeyan ora kudu nyelehake informasi rahasia ing file sing ana ing kontrol versi. Kepiye carane sampeyan bisa ngatur lan nyimpen informasi iki kanthi aman sadurunge nglamar menyang kluster Kubernetes?

Sampeyan bisa milih alat utawa strategi kanggo nangani data sensitif ing aplikasi sampeyan, nanging sampeyan isih kudu mangsuli pitakon ing ngisor iki.

  • Ing endi data sensitif kudu disimpen supaya bisa diakses?
  • Kepiye carane nggawe data sensitif bisa diakses kanggo aplikasi sing aktif?
  • Apa sing kudu kedadeyan ing aplikasi sampeyan nalika ngganti utawa ngowahi data sensitif?

Babagan penulis

John Arundel minangka konsultan kanthi pengalaman 30 taun ing industri komputer. Dheweke wis nulis pirang-pirang buku lan kerja bareng karo akeh perusahaan saka macem-macem negara, menehi saran babagan infrastruktur awan lan Kubernetes. Ing wektu luang, dheweke seneng surfing, dadi penembak pistol sing apik, lan main piano minangka amatir. Manggon ing pondokan dongeng ing Cornwall, Inggris.

Justin Dominus - insinyur administrasi sistem sing kerja ing lingkungan DevOps karo Kubernetes lan teknologi awan. Dheweke seneng mbuwang wektu ing njobo, ngombe kopi, crabbing, lan lungguh ing komputer. Manggon ing Seattle, Washington, kanthi kucing sing apik banget lan bojo lan kanca sing paling apik, Adrienne.

» Rincian liyane babagan buku bisa ditemokake ing situs web penerbit
» Daftar Isi
» Kutipan

Kanggo Khabrozhiteley diskon 25% nggunakake kupon - Kubernetes

Sawise mbayar versi kertas buku kasebut, buku elektronik bakal dikirim liwat e-mail.

Source: www.habr.com

Add a comment