Pembelian akaun Google Cloud: Membina contoh pelaksanaan Docker berdasarkan GCP Artifact Registry dan GKE
Mereka yang pernah bermain dengan teknologi asli awan dan sering bereksperimen dengan K8s biasanya pernah merasai betapa menyeksakannya apabila terpaksa menghadapi masalah dalam pengedaran imej kontena serta pelaksanaan kluster.
Proses pembangunan sendiri secara tradisional lazimnya berjalan seperti berikut: selepas kod siap ditulis di lokasi, ia dibungkus sebagai imej Docker, kemudian dimuat naik ke sebuah pelayan peribadi sumber terbuka seperti Harbor atau Docker Hub. Seterusnya, anda perlu mengurus sendiri kredensial aliran masuk (Secret) bagi nod K8s; sekiranya kredensial tersebut tamat tempoh, kluster GKE (Google Kubernetes Engine) akan mula melaporkan ratusan ralat.
ImagePullBackOff
Ralat paranormal (gagal menarik imej). Belum lagi disebutkan bahawa memandangkan pelayan imbas dan kluster pengkomputeran berada di pusat data yang berbeza, apabila menarik imej besar bersaiz beberapa gigabait merentasi wilayah, kos trafik internet yang tinggi serta kelewatan pemindahan data yang begitu perlahan sehingga amat menjengkelkan.
Dalam ekosistem moden Google Cloud (GCP, Google Cloud), terdapat satu gabungan emas peringkat korporat yang boleh dianggap sebagai contoh teladan:
Gunakan Artifact Registry untuk mengurus aset kontena, bersama-sama dengan GKE bagi pelaksanaan penyusunan dan penjadualan kontena secara automatik sepenuhnya.
Kehebatan luar biasa kedua-duanya terletak pada
Kebenaran lapisan bawah disepadukan secara semula jadi (berdasarkan IAM)
。 Anda tidak perlu lagi menyediakan sebarang K8s Secret yang rumit; nod GKE mampu memuat turun imej dalam masa beberapa saat serta melengkapkan kemas kini bergulir dengan kadar kelajuan rangkaian dalaman yang sangat selamat.
Hari ini kita tidak akan membincangkan teori teragih yang rumit, malah menolak sebarang jargon rasmi. Bermula terus dari tahap asas, panduan langkah demi langkah ini akan membimbing anda untuk mengemas kini sebuah aplikasi web dan menerapkannya dengan kukuh ke dalam kluster pengeluaran GKE mengikut piawaian industri syarikat gergasi.
Peringkat pertama: Pemecahan mendalam, “Model Dunia Tiga Dimensi” bagi penghantaran berasaskan awan asli
Sebelum mula menaip arahan, anda perlu terlebih dahulu memahami dengan jelas keseluruhan kitaran hayat aplikasi, dari kod sehingga pelancaran ke rangkaian awam. Satu set lengkap aliran kerja peringkat korporat terdiri daripada tiga posisi utama berikut yang disepadukan secara rapat:
Dermaga Kontena (Pendaftaran Artefak): Perpustakaan produk khusus generasi baharu GCP (yang telah sepenuhnya menggantikan GCR lama). Ia bertanggungjawab menyimpan versi imej Docker yang telah anda bungkuskan, serta dilengkapi dengan fungsi pengimbasan kerentanan pada tahap syarikat gergasi Google.
Komputasi enjin (kluster GKE): Perkhidmatan K8s yang dihoskan oleh Google. Anda tidak perlu mengurus nod Master pada lapisan bawah; cukup nyatakan melalui fail YAML berbentuk deklaratif: “Saya mahu menjalankan 3 buah replika kontena Web”, dan ia akan secara automatik memastikan kestabilannya di latar belakang.
Pintu gerbang keselamatan (peranan IAM): Inilah kunci kepada penyepaduan tanpa kata laluan. Kami akan menetapkan satu identiti khusus (Akaun Perkhidmatan) kepada nod-nod GKE, supaya ia secara semula jadi mempunyai keistimewaan untuk membaca imej dalam Artifact Registry.
Peringkat kedua: Persediaan persekitaran – Membuka wilayah infrastruktur di GCP
Sila pastikan anda telah memasang dan mengkonfigurasi pada sistem setempat anda.
Baiklah
gcloud
CLI (alat baris arahan Google Cloud) dan enjin Docker.
1. Mengaktifkan API teras (langkah pertama dalam pembukaan tanah baharu)
Di terminal, taipkan arahan berikut untuk mengaktifkan sepenuhnya enjin asas Google Cloud yang ingin kita gunakan:
Bash
gcloud services enable container.googleapis.com artifactregistry.googleapis.com
2. Mewujudkan perpustakaan imej persendirian (Artifact Registry)
Kami berada di wilayah Taiwan, China (
asia-timur1
,kelewatan akses dalam negara sangat rendah) Membina sebuah perpustakaan khas untuk Docker, ID projek andaian dipanggil
projek-gke-saya
:
Bash
gcloud artifacts repositories create gke-repo \
--format-repositori=docker
--lokasi=asia-timur1
--keterangan="Rangkaian Imej Pengeluaran GKE"
3. Mencipta kluster GKE terurus (mod Autopilot)
Bagi perusahaan kecil dan sederhana atau pasukan yang tidak mahu disusahkan oleh penalaan rumit K8s,
Sangat disyorkan untuk memilih mod Autopilot (pemanduan automatik)
。 Anda tidak perlu mengurus tugas penjadualan CPU dan memori pada nod; Google akan melaksanakan pengaturan skala automatik secara penuh berdasarkan penyenaraian Pod anda, serta hanya mengenakan bayaran mengikut penggunaan sebenar Pod yang sedang dijalankan.
Bash
gcloud container clusters create-auto prod-gke-cluster \
--lokasi=asia-timur1
(Menambahkan kelompok mengambil masa kira-kira 3~ 5 minit, minum secawan kopi dan tunggu dengan sabar.)
Peringkat ketiga: Latihan praktikal pertama – “Kontena” kod setempat dan pemindahan aliran ke awan
Kami andaikan bahawa anda mempunyai sebuah aplikasi web yang sangat ringkas di komputer tempatan anda (sama ada menggunakan Node.js atau Python), yang sedang mendengar pada port setempat.
8080
Port.
1. Menulis Dockerfile tahap pengeluaran yang serius
Di direktori pangkal projek, cipta satu yang baharu
Dockerfile
:
Dockerfile
# Menggunakan imej asas rasmi yang ringan
DARIPADA alpine:3.18
# Memasang kebergantungan masa run (contoh menggunakan Python)
JALAN apk add --no-cache python3 py3-pip
KADAR KERJA /app
CO
PY . /app
# Pendedahan port perniagaan
Pendedahan 8080
# Mulaikan perkhidmatan web
CMD ["python3", "-m", "http.server", "8080"]
2. Pengikatan kod rahsia: Konfigurasi pengesahan identiti antara Docker setempat dengan GCP
Ramai orang mengalami ralat semasa melakukan penstriman di sini kerana Docker secara lalai tidak mengenali perpustakaan GCP. Kita perlu membolehkan
gcloud
Masukkan kredensial keselamatan terus ke dalam fail konfigurasi Docker setempat:
Bash
gcloud auth configure-docker asia-east1-docker.pkg.dev
3. Mengkompil, memberi tag dan melakukan siaran kuasa tinggi
Mengikut spesifikasi piawai Artifact Registry, berikan imej tersebut sebuah nama yang standard dengan laluan awan, kemudian hantar (push) ke sana:
Bash
# Mengkompil dan mengemas kini sebagai versi v1.0
docker build -t asia-east1-docker.pkg.dev/my-gke-project/gke-repo/my-web-app:v1.0.
# Berusaha sepenuhnya untuk memindahkan trafik ke awan
docker push asia-east1-docker.pkg.dev/my-gke-project/gke-repo/my-web-app:v1.0
Setelah bar kemajuan selesai, buka halaman Artifact Registry dalam konsol GCP, dan anda akan mendapati imej tersebut telah tersimpan dengan kukuh di awan, sementara Google secara automatik sedang menjalankan pengimbasan kelemahan sistem operasi di latar belakang.
Peringkat keempat: Latihan praktikal kedua – Pelaksanaan kluster GKE melalui YAML berbentuk deklaratif
Cerminan telah dimuat naik ke awan, bagaimana cara membolehkan GKE menghidupkannya agar menjadi kontena (Pod) yang benar-benar boleh menyediakan perkhidmatan? Dalam dunia K8s, kita tidak menaip arahan melalui terminal, kita menulis
Fail konfigurasi YAML
。
Sambungkan komputer setempat ke kluster GKE yang baru sahaja dibina, dan ambil kredensial pengesahan:
Bash
gcloud container clusters get-credentials prod-gke-cluster --location=asia-east1
Cipta sebuah fail baharu di tempat ini yang dinamakan
Deployment. yaml
Fail tersebut, tampalkan kod deklaratif berikut yang mematuhi spesifikasi rangka kerja transnasional syarikat besar:
YAML
versi API: apps/v1
jenis: Pelaksanaan
metadata:
nama: pelaksanaan-apan-web
label:
aplikasi: web-se
perkhidmatan
spesifikasi:
salinan: 3 # Tetapkan lapisan ketersediaan tinggi: kekalkan 3 salinan kontena, apabila satu rosak, yang baharu akan dimulakan secara automatik
Sellector:
padananLabel:
aplikasi: perkhidmatan-web
Template:
metadata:
label:
aplikasi: perkhidmatan-web
spesifikasi:
Containers:
-Name: web-container
# Arahkan dengan tepat jalan cermin yang baru anda tolak ke Artifact Registry
imej: asia-east1-docker.pkg.dev/my-gke-project/gke-repo/my-web-app:v1.0
sukan:
-port kontena: 8080
sumber: # Hadkan dengan ketat spesifikasi sumber bagi mengelakkan kod berniat jahat daripada memboroskan keseluruhan kluster
Limits:
cpu: "500m"
Memori: "512Mi"
permintaan:
Cpu: "200m"
Memori: "256Mi"
---
ApiVersion: v1
Kind: Perkhidmatan
metadata:
Name: web-app-lb-service
spesifikasi:
Type: LoadBalancer # Biarkan GKE secara automatik pergi ke bahagian bawah rangkaian Google untuk memohon IP pengimbang beban rangkaian awam global pertahanan tinggi
Sellector:
aplikasi: perkhidmatan-web
sukan:
-protokol: TCP
port: 80 # Port pintu gerbang awam bagi pelayan hadapan
targetPort: 8080 # Merujuk kepada port sebenar di dalam kontena
Di terminal, jalankan arahan pelaksanaan satu klik dan serahkan pelan reka bentuk ini kepada GKE:
Bash
Kubectl apply -f deployment.yaml
Tahap kelima: momen menyaksikan pengesahan keajaiban-dalam talian dan latihan pemutus litar kesalahan
Selepas pelaksanaan selesai, kami menggunakan “perintah Tianyan” K8s untuk memantau kelahiran infrastruktur:
Bash
kubectl dapat p
Od
Anda akan melihat 3 hijau di skrin
Running
Pod status.
Inilah intinya: Dalam proses ini, kami tidak mempunyai kata laluan penarik cermin (ImagePullSecret). GKE bergantung pada kebenaran IAM asli untuk secara langsung menyeret cermin peribadi di Artifact Registry dengan selamat!
Seterusnya, periksa pintu extranet pengimbangan beban awam yang diberikan oleh Google kepada kami:
Bash
kubectl dapatkan perkhidmatan web-app-lb-service
Anda akan melihat
EXTERNAL-IP
IP statik rangkaian awam seperti emas muncul di lajur (seperti
34.120.x.x
)。 Ketik IP ini di penyemak imbas, halaman web akan dibuka dalam beberapa saat, dan perkhidmatan web asli awan anda secara rasmi akan terkenal!
"Latihan sekering daging" yang mensimulasikan persekitaran pengeluaran
Bagi menguji keupayaan pemulihan diri GKE, kami sengaja melakukan kerosakan di latar belakang. Padam secara manual salah satu bekas yang sedang berjalan (Pod):
Bash
Kubectl delete pod web-app-deployment-xxxxxx-xxxxx
Sebaik sahaja anda menghapusnya, anda memuat semula laman web, laman web
Tiada jeda dan gangguan sama sekali
(Kerana 2 salinan yang lain membawa lalu lintas). Apa yang lebih mengagumkan ialah apabila anda melaksanakannya lagi
Kubectl get pods
Apabila anda mendapati bahawa pod baru telah ditarik secara automatik dalam beberapa saat dan memasuki keadaan sihat. Ini adalah kekuatan kad truf dari ReplicaSet penyelenggaraan automatik GKE.
Tahap keenam: sejarah mengelakkan darah dan air mata perniagaan awan multinasional
Apabila set penyelesaian ini berjaya dilaksanakan, anda sudah pun melangkau satu halangan terbesar dalam teknologi asli awan. Tetapi untuk bertahan dalam persekitaran serentak tinggi peringkat perusahaan yang sebenar, sebagai arkitek, anda mesti segera memperkuat konfigurasi untuk mengelakkan dua lubang besar berikut:
1. Jangan sekali-kali menggunakan
Latest
Label (punca segala kejahatan dalam pengurusan pelancaran)
Ramai pasukan memilih jalan mudah, setiap kali mengkompilasi imej secara lokal mereka akan menandakannya dengan
aplikasi-web-saya:terkini
Tekan label ke atas. Juga ditulis dalam YAML
Gambar:. ..: Latest
。
Bencana berlaku: Apabila kod dalam talian keluar dari bug dan perlu digulung kembali dengan segera, anda akan mendapati bahawa semua versi sejarah telah dihanyutkan oleh beberapa versi. Selain itu, pada peringkat asas K8s terdapat mekanisme cache imej. Jika ia mendapati bahawa imej latest sudah pun wujud secara setempat, maka walaupun anda telah memuat naik kod baharu, ia mungkin akan mengambil jalan mudah dengan terus menggunakan semula imej lama yang ada di lokasi, menyebabkan versi baharu anda langsung tidak dapat diterbitkan.
Penyelesaian standard Dachang: dengan tegas memotong penggunaan latest. Setiap kali anda menolak aliran, anda mesti menggunakan nombor versi semantik (seperti v1.0, v1.1), atau
Gunakan ID Commit Git secara langsung. Semasa versi baru dilancarkan, ubah nombor versi dalam YAML untuk membolehkan GKE melakukan kemas kini bergulir yang sempurna (Rolling Update), dan mewujudkan pelepasan perniagaan tanpa henti.
2. Pemecut automatik Artifact Registry yang tersekat (pengurusan kitaran hidup)
Sekiranya pasukan pengembangan dilengkapi dengan saluran automasi CI/CD (seperti GitHub Actions, GitLab CI), setiap kali kod digabungkan, beberapa GB cermin akan dihasilkan secara automatik ke palam Artifact Registry. Sekiranya anda mengabaikannya, ribuan cermin sejarah akan terkumpul di gudang dalam beberapa bulan, dan bil simpanan awan Google pada akhir bulan secara langsung dapat membuat bos sakit.
Operasi penjimatan wang tegar: Dalam tetapan gudang Artifact Registry, hidupkan "Clean Policies".
Peraturan pemadaman automatik aset sejuk: Konfigurasikan satu peraturan seperti berikut: “Bagi imej sementara peringkat pertengahan yang tiada sebarang tag (Untagged), jika melebihi 7 hari, ia akan terus dimusnahkan secara fizikal”; atau “Bagi imej yang mempunyai tag versi, hanya kekalkan 20 versi terkini sahaja, manakala versi lama akan dipadamkan secara automatik”. Biarkan sistem membantu anda berpisah secara automatik, yang dapat membantu aset awan syarikat menjimatkan kos penyimpanan terbiar yang tinggi.
Ringkasan
Berdasarkan GCP Artifact Registry dan GKE untuk membina contoh penyebaran awan asli, inti pati industri sebenarnya terletak pada enam belas perkataan:
Versi cermin dikunci, aliran tidak rahsia dan selamat, salinan menyatakan kestabilan, dan gudang dibersihkan secara automatik
。
Melalui gabungan emas gelung tertutup ini, anda benar-benar bebas dari konfigurasi persekitaran pelayan yang rumit, pembinaan pengimbangan beban rangkaian yang kompleks, dan penatap fizikal untuk mengelakkan waktu henti. Kembalikan semua tenaga anda ke kod dan perniagaan itu sendiri. Di atas infrastruktur awan teratas Google di dunia, aplikasi anda akan mempunyai fleksibiliti tanpa had dan keyakinan pengeluar teratas dengan pemulihan bencana automatik.
gcloud services enable container.googleapis.com artifactregistry.googleapis.com
2. Mewujudkan perpustakaan imej persendirian (Artifact Registry)
Kami berada di wilayah Taiwan, China (
asia-timur1
,kelewatan akses dalam negara sangat rendah) Membina sebuah perpustakaan khas untuk Docker, ID projek andaian dipanggil
projek-gke-saya
:
Bash
gcloud artifacts repositories create gke-repo \
--format-repositori=docker
--lokasi=asia-timur1
--huraian
Ption = "GKE Production Images Repository"
3. Mencipta kluster GKE terurus (mod Autopilot)
Bagi perusahaan kecil dan sederhana atau pasukan yang tidak mahu disusahkan oleh penalaan rumit K8s,
Sangat disyorkan untuk memilih mod Autopilot (pemanduan automatik)
。 Anda tidak perlu mengurus tugas penjadualan CPU dan memori pada nod; Google akan melaksanakan pengaturan skala automatik secara penuh berdasarkan penyenaraian Pod anda, serta hanya mengenakan bayaran mengikut penggunaan sebenar Pod yang sedang dijalankan.
Bash
gcloud container clusters create-auto prod-gke-cluster \
--lokasi=asia-timur1
(Menambahkan kelompok mengambil masa kira-kira 3~ 5 minit, minum secawan kopi dan tunggu dengan sabar.)
Peringkat ketiga: Latihan praktikal pertama – “Kontena” kod setempat dan pemindahan aliran ke awan
Kami andaikan bahawa anda mempunyai sebuah aplikasi web yang sangat ringkas di komputer tempatan anda (sama ada menggunakan Node.js atau Python), yang sedang mendengar pada port setempat.
8080
Port.
1. Menulis Dockerfile tahap pengeluaran yang serius
Di direktori pangkal projek, cipta satu yang baharu
Dockerfile
:
# Menggunakan imej asas rasmi yang ringan
DARIPADA alpine:3.18
# Memasang kebergantungan masa run (contoh menggunakan Python)
JALAN apk add --no-cache python3 py3-pip
KADAR KERJA /app
COPY. /app
# Pendedahan port perniagaan
Pendedahan 8080
# Mulaikan perkhidmatan web
CMD ["python3", "-m", "http.server", "8080"]
2. Pengikatan kod rahsia: Konfigurasi pengesahan identiti antara Docker setempat dengan GCP
Ramai orang mengalami ralat semasa melakukan penstriman di sini kerana Docker secara lalai tidak mengenali perpustakaan GCP. Kita perlu membolehkan
gcloud
Masukkan kredensial keselamatan terus ke dalam fail konfigurasi Docker setempat:
Bash
gcloud auth configure-docker asia-east1-docker.pkg.dev
3. Mengkompil, memberi tag dan melakukan siaran kuasa tinggi
Mengikut spesifikasi piawai Artifact Registry, berikan imej tersebut sebuah nama yang standard dengan laluan awan, kemudian hantar (push) ke sana:
Bash
# Mengkompil dan mengemas kini sebagai versi v1.0
Docker build -t asia-east1-docker.pkg.dev/my-gke-project/gke-repo/my-web-app:
V1.0.
# Berusaha sepenuhnya untuk memindahkan trafik ke awan
docker push asia-east1-docker.pkg.dev/my-gke-project/gke-repo/my-web-app:v1.0
Setelah bar kemajuan selesai, buka halaman Artifact Registry dalam konsol GCP, dan anda akan mendapati imej tersebut telah tersimpan dengan kukuh di awan, sementara Google secara automatik sedang menjalankan pengimbasan kelemahan sistem operasi di latar belakang.
Peringkat keempat: Latihan praktikal kedua – Pelaksanaan kluster GKE melalui YAML berbentuk deklaratif
Cerminan telah dimuat naik ke awan, bagaimana cara membolehkan GKE menghidupkannya agar menjadi kontena (Pod) yang benar-benar boleh menyediakan perkhidmatan? Dalam dunia K8s, kita tidak menaip arahan melalui terminal, kita menulis
Fail konfigurasi YAML
。
Sambungkan komputer setempat ke kluster GKE yang baru sahaja dibina, dan ambil kredensial pengesahan:
Bash
gcloud container clusters get-credentials prod-gke-cluster --location=asia-east1
Cipta sebuah fail baharu di tempat ini yang dinamakan
penempatan.yaml
Fail tersebut, tampalkan kod deklaratif berikut yang mematuhi spesifikasi rangka kerja transnasional syarikat besar:
YAML
versi API: apps/v1
jenis: Pelaksanaan
metadata:
nama: pelaksanaan-apan-web
label:
aplikasi: perkhidmatan-web
spesifikasi:
salinan: 3 # Tetapkan lapisan ketersediaan tinggi: kekalkan 3 salinan kontena, apabila satu rosak, yang baharu akan dimulakan secara automatik
pemilih:
padananLabel:
aplikasi: perkhidmatan-web
templat:
metadata:
label:
aplikasi: perkhidmatan-web
spesifikasi:
kontena:
-nama: bekas-web
# Tujukan dengan tepat kepada laluan imej yang baru sahaja anda hantar ke Artifact Registry
imej: asia-east1-docker.pkg.dev/my-gke-project/gke-repo/my-web-app:v1.0
sukan:
-port kontena: 8080
Sumber: # Hadkan spesifikasi sumber dengan ketat untuk mengelakkan dihimpit oleh kod jahat
Kluster kering
had:
cpu: "500m"
ingatan: "512Mi"
permintaan:
cpu: "200m"
ingatan: "256Mi"
---
versiAPI: v1
jenis: Perkhidmatan
metadata:
nama: perkhidmatan-pengimbang-beban-laman-web
spesifikasi:
jenis: Pengeimbang Beban # Membenarkan GKE secara automatik memohon satu alamat IP penyeimbang beban awam global yang dilindungi daripada ancaman tinggi di rangkaian asas Google
pemilih:
aplikasi: perkhidmatan-web
sukan:
-protokol: TCP
port: 80 # Port pintu gerbang awam bagi pelayan hadapan
targetPort: 8080 # Merujuk kepada port sebenar di dalam kontena
Di terminal, jalankan arahan pelaksanaan satu klik dan serahkan pelan reka bentuk ini kepada GKE:
Bash
kubectl apply -f deployment.yaml
Peringkat kelima: Masa untuk menyaksikan keajaiban—pengesahan pelancaran dan latihan pemutusan ralat
Selepas pelaksanaan selesai, kami menggunakan “perintah Tianyan” K8s untuk memantau kelahiran infrastruktur:
Bash
kubectl dapatkan pod
Anda akan melihat tiga warna hijau menyala di skrin.
Berlari
Pod dalam keadaan tertentu.
Bahagian pentingnya ialah: Dalam proses ini, kami tidak menyediakan sebarang kata laluan pemgambilan imej (ImagePullSecret), namun GKE menggunakan kebenaran IAM asli untuk memuat turun dengan selamat imej peribadi daripada Artifact Registry!
Seterusnya, semak pintu luar penyeimbang beban awam yang diperuntukkan oleh Google kepada kita:
Bash
kubectl dapatkan perkhidmatan web-app-lb-service
Anda akan melihat
IP-LUARAN
Dalam ruangan tersebut muncul sebuah alamat IP statik awam yang berharga seperti emas (contohnya
34.120.x.x
)。 Taip IP ini di pelayar, laman web akan terbuka serta-merta—perkhidmatan web berasaskan awan anda kini secara rasmi mendapat perhatian umum!
Latihan “Canggah Daging” yang mensimulasikan persekitaran pengeluaran
Bagi menguji keupayaan pemulihan diri GKE, kami sengaja melakukan kerosakan di latar belakang. Padamkan secara manual salah satu kongten (Pod) yang sedang berjalan:
Bash
kubectl delete pod web-app-deployment-xxxxxx-xxxxx
Sebaik sahaja anda menghapusnya, anda pergi untuk menyikatnya lagi
Laman web baru, laman web
Sama sekali tiada lag atau gangguan
(Ini kerana 2 replika yang lain sedang menanggung trafik). Yang lebih menakjubkan lagi, apabila anda melaksanakan semula
kubectl dapatkan pod
Pada ketika itu, anda akan mendapati bahawa sebuah Pod baharu telah secara automatik dinaikkan dalam masa beberapa saat dan berada dalam keadaan sihat. Inilah kehebatan utama GKE dalam penyelenggaraan automatik Set Replika yang bersifat deklaratif.
Peringkat keenam: Sejarah pahit dan pengalaman berharga mengelakkan jerangkap samar dalam perniagaan asli awan rentas sempadan
Apabila set penyelesaian ini berjaya dilaksanakan, anda sudah pun melangkau satu halangan terbesar dalam teknologi asli awan. Namun, untuk terus bertahan dalam persekitaran perusahaan sebenar yang mengalami kelakuan rintangan tinggi, sebagai arkitek, anda mesti segera melaksanakan pengukuhan lanjutan terhadap konfigurasi bagi mengelakkan dua perangkap tersembunyi utama berikut:
1. Tidak sekali-kali digunakan
terkini
Label (punca segala kejahatan dalam pengurusan pelancaran)
Ramai pasukan memilih jalan mudah, setiap kali mengkompilasi imej secara lokal mereka akan menandakannya dengan
aplikasi-web-saya:terkini
Tandai dinaikkan ke atas. Dalam YAML juga tertulis
imej:. ..:terkini
。
Bencana berlaku: Apabila terdapat pepijat dalam kod dalam talian yang memerlukan pemulangan segera, anda akan mendapati bahawa semua versi terdahulu telah digantikan oleh versi “terkini”. Selain itu, pada peringkat asas K8s terdapat mekanisme cache imej. Jika ia mendapati bahawa imej latest sudah pun wujud secara setempat, maka walaupun anda telah memuat naik kod baharu, ia mungkin akan mengambil jalan mudah dengan terus menggunakan semula imej lama yang ada di lokasi, menyebabkan versi baharu anda langsung tidak dapat diterbitkan.
Penyelesaian standard oleh syarikat besar: Tegas membuang penggunaan versi terkini. Setiap kali anda mendorong aliran, anda mesti menggunakan nombor versi semantik (seperti v1.0, v1.1), atau menggunakan ID Commit Git secara langsung. Apabila menerbitkan versi baharu, sila kemaskinikan nombor versi dalam fail YAML agar GKE dapat melaksanakan kemas kini bergulir (Rolling Update) secara lancar, sekali gus memastikan pelancaran versi tanpa sebarang tempoh henti perkhidmatan.
2. Kegagalan pemadaman automatik (pengurusan kitaran hidup) dalam Artifact Registry
Jika pasukan pembangunan telah menyediakan aliran kerja automatik CI/CD (seperti GitHub Actions, GitLab CI), setiap kali kod disepadukan, sebuah imej bersaiz beberapa gigabait akan secara automatik dijana dan dimasukkan ke dalam Artifact Registry. Jika tidak diendahkan, dalam beberapa bulan sahaja gudang akan dipenuhi beribu-ribu imej lama yang sudah tidak digunakan lagi, dan bil storan awan Google pada akhir bulan pasti akan membuat bos terasa sangat sakit hati.
Langkah penjimatan wang yang berkesan: Dalam tetapan stor Artifact Registry, aktifkan “Dasar Pembersihan (Cleanup Policies)”.
Peraturan pemadaman automatik aset sejuk: Konfigurasikan satu peraturan seperti berikut: “Bagi imej sementara peringkat pertengahan yang tiada sebarang tag (Untagged), jika melebihi 7 hari, ia akan terus dimusnahkan secara fizikal”; atau “Bagi imej yang mempunyai tag versi, hanya kekalkan 20 versi terkini sahaja, manakala versi lama akan dipadamkan secara automatik”. Biarkan sistem membantu anda berpisah secara automatik, yang dapat membantu aset awan syarikat menjimatkan
Bayaran simpanan terbiar yang tinggi.
Ringkasan
Berdasarkan GCP Artifact Registry dan GKE untuk membina contoh pelaksanaan berasaskan awan, inti pati utama pada peringkat industri sebenarnya terkandung dalam enam belas aksara:
Versi cermin dikunci, penarikan aliran tanpa kata laluan selamat, pengisytiharan salinan untuk mengekalkan kestabilan, storan dibersihkan secara automatik
。
Melalui gabungan emas gelung tertutup ini, anda benar-benar bebas dari konfigurasi persekitaran pelayan yang rumit, pembinaan pengimbangan beban rangkaian yang kompleks, dan penatap fizikal untuk mengelakkan waktu henti. Serahkan sepenuhnya tenaga anda kepada kod dan perniagaan itu sendiri; di atas infrastruktur asli awan bertaraf terkemuka dunia daripada Google, aplikasi anda akan memiliki kebolehubahsuaian tanpa had serta keupayaan pemulihan bencana automatik yang kukuh seperti sebuah syarikat gergasi ternama.
