Buku "Kubernetes pikeun DevOps"

Buku "Kubernetes pikeun DevOps" Halo warga Khabro! Kubernetes mangrupikeun salah sahiji unsur konci ékosistem awan modéren. Téknologi ieu nyayogikeun réliabilitas, skalabilitas sareng daya tahan kana virtualisasi wadahna. John Arundel sareng Justin Domingus ngobrol ngeunaan ékosistem Kubernetes sareng ngenalkeun solusi anu kabuktian pikeun masalah sapopoé. Léngkah-léngkah, anjeun bakal ngawangun aplikasi awan-asli anjeun sorangan sareng nyiptakeun infrastruktur pikeun ngadukung éta, nyetél lingkungan pamekaran sareng saluran panyebaran kontinyu anu bakal ngabantosan anjeun nalika anjeun damel dina aplikasi salajengna.

• Mimitian wadah sareng Kubernetes ti dasarna: teu aya pangalaman khusus anu diperyogikeun pikeun diajar topik. • Jalankeun klaster anjeun sorangan atanapi pilih jasa Kubernetes anu dikokolakeun ti Amazon, Google, jsb. • Anggo Kubernetes pikeun ngatur siklus hirup wadah sareng konsumsi sumberdaya. • Optimalkeun klaster dumasar kana ongkos, kinerja, resiliency, kakuatan sarta scalability. • Diajar alat anu pangsaéna pikeun ngembangkeun, nguji, sareng nyebarkeun aplikasi anjeun. • ngungkit prakték industri ayeuna pikeun mastikeun kaamanan jeung kontrol. • Nerapkeun prinsip DevOps di sakuliah perusahaan anjeun ku kituna tim ngembangkeun bisa meta leuwih flexibly, gancang, jeung éfisién.

Pikeun saha éta buku?

Buku ieu paling relevan pikeun pagawé departemén administrasi anu tanggung jawab pikeun server, aplikasi sareng jasa, ogé pikeun pamekar anu kalibet dina ngawangun jasa awan énggal atanapi migrasi aplikasi anu tos aya ka Kubernetes sareng awan. Tong hariwang, anjeun henteu kedah terang kumaha damel sareng Kubernetes atanapi wadahna - kami bakal ngajarkeun anjeun sadayana.

Pangguna Kubernetes anu ngalaman ogé bakal mendakan seueur nilai, kalayan liputan anu jero ngeunaan topik sapertos RBAC, panyebaran kontinyu, manajemén data sénsitip, sareng observasi. Kami ngarepkeun halaman buku pasti bakal ngandung hal anu pikaresepeun pikeun anjeun, henteu paduli kaahlian sareng pangalaman anjeun.

Patarosan naon anu dijawab ku buku?

Nalika ngarencanakeun sareng nyerat buku, urang bahas téknologi awan sareng Kubernetes sareng ratusan jalma, nyarios sareng pamimpin industri sareng ahli ogé para pemula lengkep. Di handap ieu aya patarosan anu dipilih anu aranjeunna hoyong dijawab dina ieu publikasi.

  • "Kuring resep naha anjeun kedah nyéépkeun waktos dina téknologi ieu. Masalah naon anu bakal ngabantosan abdi sareng tim abdi?"
  • "Kubernetes sigana pikaresepeun, tapi ngagaduhan halangan anu cukup luhur pikeun asupna. Nyiapkeun conto basajan teu hese, tapi administrasi salajengna jeung debugging nyaeta daunting. Kami hoyong kéngingkeun naséhat anu tiasa dipercaya ngeunaan kumaha jalma ngatur klaster Kubernetes di dunya nyata sareng masalah naon anu bakal kami hadapi."
  • "Naséhat subjektif bakal mangpaat. Ékosistem Kubernetes masihan tim énggal seueur teuing pilihan pikeun dipilih. Nalika aya sababaraha cara pikeun ngalakukeun hal anu sami, kumaha anjeun terang mana anu pangsaéna? Kumaha carana ngadamel pilihan?

Sareng panginten anu paling penting tina sadaya patarosan:

  • "Kumaha carana abdi tiasa nganggo Kubernetes tanpa ngaganggu perusahaan abdi?"

Petikan. Konfigurasi sarta objék Rusiah

Kamampuhan pikeun misahkeun logika aplikasi Kubernetes tina konfigurasina (nyaéta, tina nilai atanapi setélan anu tiasa robih kana waktosna) mangpaat pisan. Nilai konfigurasi biasana kalebet setélan khusus lingkungan, alamat DNS layanan pihak katilu, sareng kredensial auténtikasi.

Tangtosna, sadayana ieu tiasa dilebetkeun langsung kana kodeu, tapi pendekatan ieu henteu cukup fleksibel. Contona, ngarobah nilai konfigurasi lajeng bakal merlukeun anjeun ngawangun sarta nyebarkeun kode anjeun deui. Solusi anu langkung saé nyaéta misahkeun konfigurasi tina kode sareng maca tina file atanapi variabel lingkungan.

Kubernetes nyadiakeun sababaraha cara pikeun ngatur konfigurasi. Kahiji, anjeun tiasa ngalihkeun niléy ka aplikasi ngaliwatan variabel lingkungan anu ditangtukeun dina spésifikasi bungkus pod (tingali "Variabel Lingkungan" dina kaca 192). Kadua, data konfigurasi tiasa disimpen langsung di Kubernetes nganggo ConfigMap sareng objék Rahasia.

Dina bab ieu, urang neuleuman objék ieu di jéntré tur tingal sababaraha pendekatan praktis pikeun ngatur konfigurasi tur data sénsitip ngagunakeun aplikasi demo.

Ngamutahirkeun cangkang pod nalika parobahan konfigurasi

Bayangkeun anjeun gaduh panyebaran dina kluster anjeun sareng anjeun badé ngarobih sababaraha nilai dina ConfigMap na. Upami anjeun nganggo bagan Helm (tingali "Helm: Manajer Paket pikeun Kubernetes" dina kaca 102), anjeun tiasa otomatis ngadeteksi parobahan konfigurasi sareng ngamuat deui cangkang pod anjeun dina hiji trik anu rapih. Tambihkeun anotasi ieu kana spésifikasi panyebaran anjeun:

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

Témplat panyebaran ayeuna ngandung checksum tina parameter konfigurasi: upami parameter dirobah, jumlahna bakal diropéa. Upami anjeun ngajalankeun pamutahiran Helm, Helm bakal ngadeteksi yén spésifikasi panyebaran parantos robih sareng bakal ngamimitian deui sadaya cangkang pod.

Data sénsitip dina Kubernetes

Kami parantos terang yén objék ConfigMap nyayogikeun mékanisme anu fleksibel pikeun nyimpen sareng ngakses data konfigurasi dina klaster. Nanging, kalolobaan aplikasi gaduh inpormasi anu sénsitip sareng sénsitip, sapertos kecap akses atanapi konci API. Éta ogé tiasa disimpen dina ConfigMap, tapi solusi ieu henteu idéal.

Gantina, Kubernetes nawarkeun tipe husus objék dirancang pikeun nyimpen data sénsitip: Rahasia. Salajengna, hayu urang tingali conto kumaha objék ieu tiasa dianggo dina aplikasi demo urang.

Pikeun ngamimitian, tingali dina manifest Kubernetes pikeun objék Rusiah (tingali hello-secret-env/k8s/secret.yaml):

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

Dina conto ieu, konci swasta magicWord nyaéta xyzzy (en.wikipedia.org/wiki/Xyzzy_(computing)). Kecap xyzzy umumna mangpaat pisan dina dunya komputer. Sarupa sareng ConfigMap, anjeun tiasa nyimpen sababaraha konci sareng nilai dina objék Rahasia. Di dieu, pikeun kesederhanaan, kami nganggo ngan hiji pasangan konci-nilai.

Ngagunakeun Objék Rahasia salaku Variabel Lingkungan

Sapertos ConfigMap, obyék Rusiah tiasa disayogikeun dina wadahna salaku variabel lingkungan atanapi salaku file dina disk na. Dina conto di handap ieu, urang bakal napelkeun variabel lingkungan kana nilai tina Rahasia:

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

Jalankeun paréntah di handap ieu dina gudang demo pikeun nerapkeun manifests:

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

Sapertos sateuacanna, teraskeun port lokal ka panyebaran pikeun ningali hasilna dina panyungsi anjeun:

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

Nalika muka alamat localhost:9999/ anjeun kedah ningali ieu:

The magic word is "xyzzy"

Nulis Objék Rahasia kana File

Dina conto ieu, urang bakal ngagantelkeun objék Rusiah kana wadahna salaku file. Kodeu aya dina folder halo-rahasia-file tina gudang demo.

Pikeun nyambungkeun Rahasia salaku file, kami bakal nganggo panyebaran ieu:

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

Sapertos dina subseksi "Nyieun file konfigurasi tina objék ConfigMap" dina p. 240, urang nyieun volume (dina hal ieu demo-rusiah-volume) jeung Gunung kana wadahna di bagian volumeMounts spésifikasi. Widang mountPath nyaéta / rusiah, ku kituna Kubernetes bakal nyiptakeun hiji file dina folder ieu pikeun unggal pasangan konci / nilai anu ditetepkeun dina objék Rusiah.

Dina conto urang, urang ngartikeun ngan hiji pasangan konci-nilai disebut magicWord, jadi manifest bakal nyieun hiji read-hijina file / Rahasia / magicWord kalawan data sénsitip dina wadahna.

Upami anjeun nerapkeun manifest ieu dina cara anu sami sareng conto sateuacana, anjeun kedah nampi hasil anu sami:

The magic word is "xyzzy"

Maca Objék Rusiah

Dina bagian saméméhna, kami nganggo kubectl ngajelaskeun paréntah pikeun nampilkeun eusi ConfigMap. Naha sami tiasa dilakukeun sareng Rahasia?

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

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

Data
====
magicWord: 5   bytes

Punten dicatet yén data sorangan henteu ditampilkeun. Objék rusiah dina Kubernetes téh tipena Opaque, nu hartina eusina teu dipintonkeun dina kubectl ngajéntrékeun kaluaran, éntri log, atawa terminal, jadi teu mungkin mun teu kahaja nembongkeun informasi sénsitip.

Pikeun ningali versi YAML anu disandikeun tina data sénsitip, paké paréntah kubectl get:

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

dasar64

Naon eHl6enk=, lengkep béda ti nilai aslina urang? Ieu sabenerna objék Rusiah, digambarkeun dina base64 encoding. Base64 mangrupikeun skéma pikeun ngodekeun data binér sawenang-wenang salaku senar karakter.

Kusabab informasi sénsitip bisa jadi binér teu kaluaran (sakumaha dina kasus konci enkripsi TLS), objék Rahasia salawasna disimpen dina format base64.

Téks beHl6enk= nyaéta versi disandi base64 tina kecap rusiah urang xyzzy. Anjeun tiasa pariksa ieu ku ngajalankeun paréntah base64 -decode dina terminal:

echo "eHl6enk=" | base64 --decode
xyzzy

Janten, samentawis Kubernetes ngajagi anjeun tina ngahaja ngaluarkeun data sénsitip dina terminal atanapi file log, upami anjeun parantos maca idin kana objék Rahasia dina rohangan ngaran anu khusus, data éta tiasa didasarkeun kana 64ed teras dikodekeun.

Upami anjeun peryogi base64 encode sababaraha téks (contona, nempatkeun éta dina Rahasia), paké paréntah base64 tanpa alesan:

echo xyzzy | base64
eHl6enkK

Ngaksés Objék Rusiah

Saha anu tiasa maca sareng ngédit objék Rahasia? Ieu ditangtukeun ku RBAC, mékanisme kontrol aksés (urang bakal ngabahas eta di jéntré dina subsection "Perkenalan kana Peran-Dumasar Aksés Control" dina kaca 258). Upami anjeun ngajalankeun klaster anu henteu gaduh RBAC atanapi henteu diaktipkeun, sadaya objék Rusiah anjeun sayogi pikeun pangguna sareng wadahna (urang bakal ngajelaskeun engké yén anjeun henteu kedah ngagaduhan klaster produksi tanpa RBAC).

Énkripsi data pasip

Kumaha upami anu gaduh aksés kana database jsb dimana Kubernetes nyimpen sadaya inpormasi na? Naha aranjeunna tiasa maca data sénsitip tanpa gaduh idin pikeun maca objék Rahasia via API?

Kusabab versi 1.7, Kubernetes ngadukung énkripsi data pasip. Ieu ngandung harti yén informasi sénsitip jero etcd disimpen énkripsi dina disk jeung teu bisa dibaca malah ku nu boga aksés langsung kana database. Pikeun ngadekrip éta, anjeun peryogi konci anu ngan ukur aya ku server API Kubernetes. Dina klaster anu dikonpigurasi leres, énkripsi pasip kedah diaktipkeun.

Anjeun tiasa mariksa upami enkripsi pasip tiasa dianggo dina klaster anjeun ku cara kieu:

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

Upami anjeun henteu ningali bandéra eksperimen-enkripsi-panyadia-config, énkripsi pasip henteu diaktipkeun. Nalika nganggo Google Kubernetes Engine atanapi jasa manajemén Kubernetes anu sanés, data anjeun énkripsi nganggo mékanisme anu béda, janten bandéra moal aya. Pariksa ku vendor Kubernetes anjeun pikeun ningali naha eusi jsbd énkripsi.

Nyimpen data rahasia

Aya sababaraha sumber Kubernetes anu henteu kedah dipiceun tina kluster, sapertos objék Rahasia anu sénsitip pisan. Anjeun tiasa ngajagi sumber tina dihapus nganggo anotasi anu disayogikeun ku manajer Helm:

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

Strategi Manajemén Objék Rusiah

Dina conto tina bagian saméméhna, data sénsitip ditangtayungan tina aksés diidinan langsung saatos disimpen dina kluster. Tapi dina file manifest aranjeunna disimpen salaku téks polos.

Anjeun teu kedah nempatkeun inpormasi rahasia dina file anu aya dina kadali versi. Kumaha anjeun tiasa ngatur sareng nyimpen inpormasi ieu sacara aman sateuacan nerapkeun kana klaster Kubernetes anjeun?

Anjeun tiasa milih alat atanapi strategi pikeun nanganan data sénsitip dina aplikasi anjeun, tapi anjeun tetep kedah ngajawab sahenteuna patarosan di handap ieu.

  • Dimana data sénsitip kedah disimpen supados tiasa diaksés?
  • Kumaha carana sangkan data sénsitip diaksés ka aplikasi aktip anjeun?
  • Naon anu bakal kajadian ka aplikasi anjeun nalika anjeun ngagentos atanapi ngédit data sénsitip?

Ngeunaan pangarang

John Arundel mangrupakeun konsultan jeung 30 taun pangalaman dina industri komputer. Anjeunna parantos nyerat sababaraha buku sareng damel sareng seueur perusahaan ti nagara-nagara anu béda-béda, naroskeun aranjeunna ngeunaan infrastruktur asli awan sareng Kubernetes. Dina waktu luang-Na, anjeunna enjoys surfing, mangrupakeun penembak péstol alus, sarta maénkeun piano salaku amatir. Cicing di pondok dongeng di Cornwall, Inggris.

Justin Dominus - Insinyur administrasi sistem damel di lingkungan DevOps sareng Kubernetes sareng téknologi awan. Anjeunna mikaresep nyéépkeun waktos di luar, nginum kopi, crabbing, sareng calik dina komputer. Hirup di Seattle, Washington, sareng ucing anu saé sareng pamajikan anu langkung saé sareng réréncangan, Adrienne.

» Rincian langkung seueur ngeunaan buku tiasa dipendakan di ramatloka penerbit
» daptar eusi
» Intisari

Pikeun Khabrozhiteley diskon 25% ngagunakeun kupon - Kubernetes

Kana mayar versi kertas tina buku, hiji buku éléktronik bakal dikirim ku e-mail.

sumber: www.habr.com

Tambahkeun komentar