Dokumen ini menjelaskan cara administrator Google Kubernetes Engine (GKE) dapat menginstal Anthos Service Mesh dan memigrasikan workload yang saat ini berjalan dengan mesh layanan Istio. Konfigurasi Anthos Service Mesh yang di-deploy mencakup Cloud Monitoring untuk telemetri dan certificate authority Anthos Service Mesh (Mesh CA) untuk pengelolaan sertifikat mesh ketersediaan tinggi dan terkelola. Gateway, layanan virtual, dan konfigurasi mesh lainnya yang menentukan topologi mesh Anda akan dipertahankan dalam migrasi.
Proses ini mencakup penginstalan cluster tunggal. Untuk penginstalan mesh multi-cluster, lihat Menyiapkan mesh multi-cluster di GKE, yang mencakup langkah-langkah cara menambahkan cluster ke Anthos Service Mesh setelah penginstalan.
Untuk menyelesaikan langkah-langkah dalam dokumen ini, Anda harus menggunakan Istio 1.7 atau yang lebih baru dengan cluster GKE. Anthos Service Mesh tidak mendukung Helm untuk
penginstalan atau konfigurasi. Sebaiknya administrator mesh menggunakan
IstioOperator
API untuk konfigurasi mesh. Proses ini dapat menyebabkan periode nonaktif untuk aplikasi Anda saat beralih certificate authority. Jadi, sebaiknya lakukan proses ini selama masa pemeliharaan terjadwal.
Anthos Service Mesh menggunakan Istio dan Envoy API yang sama untuk mengonfigurasi mesh Anda, sehingga tidak perlu mengubah resource yang ada.
Beberapa perbedaan implementasi setelah migrasi adalah sebagai berikut:
Bidang kontrol Istio diganti dengan bidang kontrol Anthos Service Mesh.
Certificate authority Citadel dihapus, dan sertifikat dikelola oleh layanan Mesh CA Google Cloud.
Telemetry dikirim ke Cloud Logging dan Cloud Monitoring. Dasbor dan pengelolaan SLO tersedia di Google Cloud Console.
Jika Anda memiliki resource
IstioOperator
yang disesuaikan, skrip dapat menganggapnya sebagai input.Penginstalan Istio open source Anda (versi 1.7 atau yang lebih baru) dimigrasikan ke Anthos Service Mesh versi 1.10 dengan Mesh CA. Jika Anda memiliki versi Istio yang berbeda atau memerlukan versi Anthos Service Mesh yang berbeda, atau ingin men-deploy Anthos Service Mesh dengan bidang kontrol yang dikelola Google, lihat Mempersiapkan migrasi dari Istio.
Prasyarat
Prasyarat berikut diperlukan untuk menyelesaikan panduan ini:
Anda telah menginstal cluster GKE yang menggunakan Istio versi 1.7 atau yang lebih baru. Jika Anda tidak memiliki cluster GKE, atau ingin menguji panduan ini pada cluster baru (pengujian) terlebih dahulu, ikuti langkah-langkah dalam Lampiran untuk membuat cluster GKE baru dengan Istio versi 1.7 atau yang lebih baru yang di-deploy dengan aplikasi pengujian.
Anda dapat menggunakan Cloud Shell untuk melakukan langkah-langkah dalam panduan ini, karena panduan ini diuji di Cloud Shell.
Tujuan
Dalam panduan ini, Anda dapat memilih jalur migrasi. Anda dapat memilih antara jalur dengan skrip satu langkah atau migrasi dengan skrip langkah demi langkah.
Untuk informasi selengkapnya, lihat Memilih jalur migrasi.
Untuk mendapatkan jawaban atas pertanyaan umum terkait migrasi ini, lihat Bermigrasi dari Istio 1.7 atau yang lebih baru ke FAQ Anthos Service Mesh dan Mesh CA.
Sebelum memulai
Untuk panduan ini, Anda memerlukan akses administratif ke cluster GKE dengan Istio terinstal. Untuk mengamati perilaku aplikasi Anda selama proses migrasi, sebaiknya lakukan proses ini terlebih dahulu dengan cluster dalam lingkungan pengembangan atau staging.
Anthos Service Mesh memiliki persyaratan berikut. Anda dapat melakukannya secara manual sendiri atau mengizinkan alat yang disediakan untuk mengaktifkan dependensi atas nama Anda selama proses pra-penginstalan.
Aktifkan Google Cloud API berikut:
container.googleapis.com
meshca.googleapis.com
meshconfig.googleapis.com
gkehub.googleapis.com
stackdriver.googleapis.com
Mengaktifkan Workload Identity dan Stackdriver untuk cluster GKE Anda.
Beri label cluster Anda untuk mengaktifkan antarmuka pengguna Layanan.
Mendapatkan hak admin cluster di cluster Kubernetes.
Daftarkan cluster Anda ke fleet.
Aktifkan fitur
servicemesh
di perangkat.
Menyiapkan lingkungan Anda
Untuk menyiapkan lingkungan Anda, ikuti langkah-langkah berikut:
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah halaman Google Cloud Console, sesi Cloud Shell dimulai dan menampilkan prompt command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Perlu waktu beberapa detik untuk memulai sesi.
Buat variabel lingkungan yang digunakan dalam panduan ini:
export PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID} export PROJECT_NUM=$(gcloud projects describe ${PROJECT_ID} --format='value(projectNumber)') export CLUSTER_NAME=GKE_CLUSTER_NAME export CLUSTER_LOCATION=GKE_CLUSTER_REGION_OR_ZONE
Buat folder
WORKDIR
:mkdir -p migrate-to-asm-working-dir && cd migrate-to-asm-working-dir && export WORKDIR=`pwd`
Buat file
KUBECONFIG
untuk panduan ini:touch asm-kubeconfig && export KUBECONFIG=`pwd`/asm-kubeconfig
Hubungkan ke cluster GKE Anda:
Cluster zona
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --zone ${CLUSTER_LOCATION}
Cluster regional
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --region ${CLUSTER_LOCATION}
Download skrip migrasi:
curl -LO https://storage.googleapis.com/csm-artifacts/asm/migrate-to-asm chmod +x ./migrate-to-asm
Memilih jalur migrasi
Anda dapat memilih salah satu dari dua jalur untuk bermigrasi ke Anthos Service Mesh. Pilih hanya salah satu dari dua strategi ini, lalu lanjutkan ke bagian tersebut:
Migrasi satu langkah ke Anthos Service Mesh. Seperti namanya, Anda dapat melakukan semua langkah yang diperlukan untuk bermigrasi ke Anthos Service Mesh menggunakan satu perintah. Hal ini mungkin bermanfaat jika Anda memiliki banyak cluster dan memerlukan cara yang cepat dan mudah untuk mengupgradenya ke Anthos Service Mesh. Namun, metode ini dapat menyebabkan periode nonaktif aplikasi.
Migrasi langkah demi langkah ke Anthos Service Mesh. Metode ini memberi Anda kontrol lebih atas setiap langkah dan membantu Anda memahami dengan tepat apa saja yang diperlukan untuk bermigrasi ke Anthos Service Mesh.
Migrasi satu langkah ke Anthos Service Mesh
Di bagian ini, Anda akan memigrasikan penginstalan Istio versi 1.7 (atau yang lebih baru) saat ini ke Anthos Service Mesh versi 1.10. Bagian ini memungkinkan Anda melakukan migrasi dengan menjalankan satu langkah. Jika Anda ingin melakukan migrasi dengan menjalankan serangkaian langkah, lihat bagian Migrasi langkah demi langkah ke Anthos Service Mesh.
Untuk bermigrasi ke Anthos Service Mesh, jalankan perintah berikut. Dengan
perintah apa pun, Anda dapat menggunakan flag --dry-run
untuk mencetak perintah, bukan
menjalankannya, atau Anda dapat menggunakan flag --verbose
untuk mencetak perintah saat
skrip menjalankannya. Jika sebelumnya Anda telah mengonfigurasi dependensi, seperti yang disebutkan di
bagian Sebelum memulai, Anda dapat menghilangkan
flag --enable-dependencies
.
Tidak ada resource kustom
Jangan gunakan resource IstioOperator
kustom:
./migrate-to-asm migrate \ --cluster_location $CLUSTER_LOCATION \ --cluster-name $CLUSTER_NAME \ --project-id $PROJECT_ID \ --enable-dependencies \ --verbose
Menggunakan resource kustom
Gunakan resource IstioOperator
kustom:
export ISTIO_OPERATOR_FILEPATH=PATH_OF_ISTIO_OPERATOR_YAML_FILE ./migrate-to-asm migrate \ --cluster_location $CLUSTER_LOCATION \ --cluster-name $CLUSTER_NAME \ --project-id $PROJECT_ID \ --enable-dependencies \ --custom_overlay ${ISTIO_OPERATOR_FILEPATH} \ --verbose
Perintah ini akan melakukan langkah-langkah berikut:
- Memastikan versi Istio adalah versi 1.7 atau yang lebih baru.
- Mengaktifkan Workload Identity pada cluster. Workload Identity diperlukan untuk Mesh CA. Anda tidak perlu mengaktifkan Server Metadata GKE pada node pool yang ada.
- Mengaktifkan API yang diperlukan untuk Anthos Service Mesh.
- Mendaftarkan cluster ke fleet.
- Memperbarui cluster dengan label yang diperlukan.
- Mengevaluasi apakah bidang kontrol yang dikelola Google lebih baik untuk cluster yang ditentukan.
- Men-deploy Anthos Service Mesh dengan konfigurasi bidang kontrol yang optimal.
- Memberi label ulang semua namespace yang mengaktifkan Istio dengan label Anthos Service Mesh yang diperlukan.
- Memulai ulang workload di semua namespace yang mengaktifkan Anthos Service Mesh agar beban kerja mendapatkan proxy Anthos Service Mesh baru.
- Menghapus bidang kontrol Istio.
Migrasi langkah demi langkah ke Anthos Service Mesh
Di bagian ini, Anda akan memigrasikan penginstalan Istio versi 1.7 (atau yang lebih baru) ke Anthos Service Mesh versi 1.10. Bagian ini memungkinkan Anda melakukan migrasi dengan menjalankan serangkaian langkah. Jika Anda ingin melakukan migrasi dalam satu langkah, lihat bagian Migrasi satu langkah ke Anthos Service Mesh.
Langkah-langkah berikut diperlukan untuk bermigrasi ke Anthos Service Mesh:
- Lakukan langkah pra-migrasi untuk memvalidasi serta menyiapkan cluster dan lingkungan untuk migrasi ke Anthos Service Mesh.
- Instal Anthos Service Mesh sebagai bidang kontrol canary bersama bidang kontrol Istio yang sudah ada dan siapkan workload.
- Menguji workload di Anthos Service Mesh dan memberi label ulang namespace untuk injeksi sidecar Anthos Service Mesh.
- Mengakses dan memeriksa dasbor Anthos Service Mesh.
- Membersihkan artefak Istio atau melakukan roll back ke versi Istio yang sudah ada.
Lakukan langkah pra-migrasi
Langkah pra-migrasi akan melakukan tindakan berikut:
Fitur ini memvalidasi bahwa informasi project dan cluster sudah benar dan versi Istio yang diinstal kompatibel dengan migrasi.
Library ini mencadangkan konfigurasi untuk gateway default dan label untuk mesh layanan Istio saat ini.
Jika digunakan, flag
--enable-dependencies
akan mengaktifkan dependensi atas nama Anda; jika tidak, flag ini akan memverifikasi bahwa dependensi diaktifkan.
Skrip pra-migrasi membuat folder baru (atau menimpa folder yang sudah ada)
bernama configuration_backup
di direktori saat ini.
Untuk melakukan langkah pra-migrasi, jalankan perintah berikut:
Dependensi
Aktifkan dependensi:
./migrate-to-asm pre-migrate \ --cluster_location $CLUSTER_LOCATION \ --cluster-name $CLUSTER_NAME \ --project-id $PROJECT_ID \ --enable-dependencies
Tidak ada dependensi
Jangan aktifkan dependensi:
./migrate-to-asm pre-migrate \ --cluster_location $CLUSTER_LOCATION \ --cluster-name $CLUSTER_NAME \ --project-id $PROJECT_ID
Outputnya mirip dengan hal berikut ini:
migrate-to-asm: Checking installation tool dependencies... migrate-to-asm: Checking for $PROJECT_ID... migrate-to-asm: Confirming cluster information for $PROJECT_ID/$LOCATION/$CLUSTER_NAME... migrate-to-asm: Confirming node pool requirements for $PROJECT_ID/$LOCATION/$CLUSTER_NAME... migrate-to-asm: Checking existing Istio version(s)... migrate-to-asm: 1.9.5 migrate-to-asm: No version issues found. migrate-to-asm: Enabling required APIs... migrate-to-asm: migrate-to-asm: APIs enabled. migrate-to-asm: Enabling the service mesh feature... migrate-to-asm: migrate-to-asm: The service mesh feature is already enabled. migrate-to-asm: Enabling Stackdriver on $LOCATION/$CLUSTER_NAME... Updating $CLUSTER_NAME... .........................done. Updated [https://container.googleapis.com/v1/projects/$PROJECT_ID/zones/$LOCATION/clusters/$CLUSTER_NAME]. To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/$LOCATION/$CLUSTER_NAME?project=$PROJECT_ID migrate-to-asm: migrate-to-asm: Stackdriver enabled. migrate-to-asm: Querying for core/account... migrate-to-asm: Binding user@example.com to cluster admin role... migrate-to-asm: migrate-to-asm: migrate-to-asm: Successfully bound to cluster admin role. migrate-to-asm: Initializing meshconfig API... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 3 0 3 0 0 6 0 --:--:-- --:--:-- --:--:-- 6 migrate-to-asm: migrate-to-asm: Finished pre-migration!
Menginstal Anthos Service Mesh dan menyiapkan workload
Langkah ini akan melakukan hal-hal berikut:
- Proses ini akan memeriksa keberadaan folder
configuration_backup
, dan jika folder tidak ada, folder akan dibatalkan untuk memastikan bahwa alat pra-migrasi berhasil berjalan. - Layanan ini menginstal dan mengonfigurasi bidang kontrol Anthos Service Mesh berdasarkan analisis konfigurasi cluster dan mesh.
- Class ini menggunakan resource
IstioOperator
kustom jika tersedia. Jika Anda memiliki gateway kustom atau beberapa gateway yang telah dikonfigurasi dengan menggunakan resourceIstioOperator
, gunakan resource yang sama pada langkah ini.
Untuk melewati analisis dan memaksa alat untuk menginstal bidang kontrol tidak terkelola
yang berjalan dengan resource cluster Anda, tambahkan flag --no-mcp
ke perintah Anda.
Anda dapat memilih salah satu dari tiga jalur saat menginstal Anthos Service Mesh:
Opsi 1: Tanpa resource
IstioOperator
kustom. Anda dapat menginstal Anthos Service Mesh tanpa resource kustom. Menggunakan opsi ini akan menginstal konfigurasi default Istio dan mengupdateistio-ingressgateway
default yang berlaku.Opsi 2: Dengan opsi
--no-gateways
. Saat menginstal Anthos Service Mesh tanpa resourceIstioOperator
kustom, Anda juga dapat menggunakan opsi--no-gateways
untuk tidak memperbaruiistio-ingressgateway
default yang diterapkan. Jika menggunakan opsi ini, Anda harus mengupgrade gateway secara manual setelah penginstalan.Opsi 3: Dengan resource
IstioOperator
kustom. Anda dapat menginstal Anthos Service Mesh dengan resourceIstioOperator
kustom. Jika Anda men-deploy Istio menggunakan resourceIstioOperator
kustom, sebaiknya gunakan resourceIstioOperator
yang sama saat menginstal Anthos Service Mesh.
Untuk menginstal Anthos Service Mesh, jalankan salah satu perintah berikut:
Opsi 1
Upgrade istio-ingressgateway
default yang sudah diterapkan:
./migrate-to-asm install-asm \ --cluster_location $CLUSTER_LOCATION \ --cluster-name $CLUSTER_NAME \ --project-id $PROJECT_ID
Opsi 2
Jangan upgrade istio-ingressgateway
default yang sudah diterapkan:
./migrate-to-asm install-asm \ --cluster_location $CLUSTER_LOCATION \ --cluster-name $CLUSTER_NAME \ --project-id $PROJECT_ID \ --no-gateways
Opsi 3
Mengupgrade gateway sudah diterapkan dengan resource IstioOperator
kustom:
export ISTIO_OPERATOR_FILEPATH=PATH_OF_ISTIO_OPERATOR_YAML_FILE ./migrate-to-asm install-asm \ --cluster_location $CLUSTER_LOCATION \ --cluster-name $CLUSTER_NAME \ --project-id $PROJECT_ID \ --custom-overlay ${ISTIO_OPERATOR_FILEPATH}
Outputnya mirip dengan hal berikut ini:
migrate-to-asm: Checking installation tool dependencies... migrate-to-asm: Checking for $PROJECT_ID... migrate-to-asm: Fetching/writing Google Cloud credentials to kubeconfig file... Fetching cluster endpoint and auth data. kubeconfig entry generated for $CLUSTER_NAME. migrate-to-asm: migrate-to-asm: Verifying connectivity (20s)... migrate-to-asm: kubeconfig set to $PROJECT_ID/$LOCATION/$CLUSTER_NAME... migrate-to-asm: Configuring kpt package... asm/ set 20 field(s) of setter "gcloud.container.cluster" to value "$CLUSTER_NAME" asm/ set 28 field(s) of setter "gcloud.core.project" to value "$PROJECT_ID" asm/ set 2 field(s) of setter "gcloud.project.projectNumber" to value "42" asm/ set 5 field(s) of setter "gcloud.project.environProjectNumber" to value "42" asm/ set 20 field(s) of setter "gcloud.compute.location" to value "$LOCATION" asm/ set 1 field(s) of setter "gcloud.compute.network" to value "$PROJECT_ID-default" asm/ set 6 field(s) of setter "anthos.servicemesh.rev" to value "asm-1102-2" asm/ set 5 field(s) of setter "anthos.servicemesh.tag" to value "1.10.2-asm.2" asm/ set 4 field(s) of setter "anthos.servicemesh.hubTrustDomain" to value "$PROJECT_ID.svc.id.goog" asm/ set 2 field(s) of setter "anthos.servicemesh.hub-idp-url" to value "https://container.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION/clusters/$CLUSTER_NAME" asm/ set 4 field(s) of setter "anthos.servicemesh.trustDomainAliases" to value "$PROJECT_ID.svc.id.goog" migrate-to-asm: Configured. migrate-to-asm: Installing Anthos Service Mesh control plane... migrate-to-asm: - Processing resources for Istio core. ✔ Istio core installed - Processing resources for Istiod. - Processing resources for Istiod. Waiting for Deployment/istio-system/istiod-asm-1102-2 ✔ Istiod installed - Processing resources for CNI, Ingress gateways. - Processing resources for CNI, Ingress gateways. Waiting for Deployment/istio-system/istio-ingressgateway ✔ CNI installed - Processing resources for Ingress gateways. Waiting for Deployment/istio-system/istio-ingressgateway ✔ Ingress gateways installed - Pruning removed resources migrate-to-asm: migrate-to-asm: namespace/asm-system created customresourcedefinition.apiextensions.k8s.io/canonicalservices.anthos.cloud.google.com configured role.rbac.authorization.k8s.io/canonical-service-leader-election-role created clusterrole.rbac.authorization.k8s.io/canonical-service-manager-role configured clusterrole.rbac.authorization.k8s.io/canonical-service-metrics-reader unchanged serviceaccount/canonical-service-account created rolebinding.rbac.authorization.k8s.io/canonical-service-leader-election-rolebinding created clusterrolebinding.rbac.authorization.k8s.io/canonical-service-manager-rolebinding unchanged clusterrolebinding.rbac.authorization.k8s.io/canonical-service-proxy-rolebinding unchanged service/canonical-service-controller-manager-metrics-service created deployment.apps/canonical-service-controller-manager created deployment.apps/canonical-service-controller-manager condition met migrate-to-asm: migrate-to-asm: migrate-to-asm: ******* migrate-to-asm: Control plane installation complete!
Memasukkan ulang workload dan memeriksa perilaku aplikasi
Bidang kontrol Anthos Service Mesh kini siap menangani workload, tetapi bidang kontrol Istio yang ada masih mengelola workload yang sudah ada. Untuk memigrasikan workload tersebut, Anda perlu melabeli ulang namespace Kubernetes yang saat ini diberi label untuk injeksi Istio dengan label revisi Anthos Service Mesh. Kemudian, Anda perlu memulai ulang beban kerja di namespace tersebut. Anda dapat melakukannya secara manual (lihat Catatan pada langkah 1) atau dengan satu langkah menggunakan alat tersebut.
Langkah pelabelan ulang akan melakukan hal berikut:
- Fungsi ini menemukan semua namespace yang saat ini menggunakan label injeksi Istio.
- Fungsi ini akan memberi label ulang namespace tersebut dengan
istio.io/rev=asm-1102-2
. - Memulai ulang beban kerja di namespace.
Untuk memasukkan ulang beban kerja, ikuti langkah-langkah berikut:
Beri label ulang semua namespace yang mengaktifkan Istio dan mulai ulang workload dengan menjalankan perintah berikut:
./migrate-to-asm relabel \ --cluster_location $CLUSTER_LOCATION \ --cluster-name $CLUSTER_NAME \ --project-id $PROJECT_ID
Outputnya mirip dengan hal berikut ini:
migrate-to-asm: Checking installation tool dependencies... migrate-to-asm: Checking for $PROJECT_ID... migrate-to-asm: Fetching/writing Google Cloud credentials to kubeconfig file... Fetching cluster endpoint and auth data. kubeconfig entry generated for $CLUSTER_NAME. migrate-to-asm: migrate-to-asm: Verifying connectivity (20s)... migrate-to-asm: kubeconfig set to $PROJECT_ID/$LOCATION/$CLUSTER_NAME... ****** migrate-to-asm: Installation of Anthos Service Mesh has completed. Migration will continue migrate-to-asm: by relabeling and restarting workloads in the following namespaces: migrate-to-asm: namespace/default migrate-to-asm: Continue with migration? (Y/n)Y migrate-to-asm: Relabeling namespace/default... namespace/default labeled migrate-to-asm: Restarting workloads in namespace/default and waiting for them to become available (max 5 min)... deployment.apps/frontend restarted deployment.apps/backend restarted deployment.apps/frontend condition met deployment.apps/backend condition met migrate-to-asm: ******* migrate-to-asm: Finished restarting workloads!
Tunggu hingga semua Deployment dimulai ulang, lalu periksa versi bidang data dengan menjalankan perintah berikut:
istioctl version
Outputnya mirip dengan hal berikut ini:
client version: 1.8.0 pilot version: 1.9.5 istiod version: 1.10.2-asm.2 data plane version: 1.10.2-asm.2 (14 proxies)
Verifikasi bahwa aplikasi berfungsi dengan baik setelah dimulai ulang.
Mengakses dasbor Anthos Service Mesh
Di bagian ini, Anda akan membuka dasbor Anthos Service Mesh dan memastikan Anda menerima sinyal emas untuk semua Layanan. Anda juga akan dapat melihat topologi aplikasi.
Di konsol Google Cloud, buka halaman Anthos Service Mesh.
Anda akan dapat melihat metrik dan topologi untuk Layanan Anda.
Untuk mempelajari dasbor Anthos Service Mesh lebih lanjut, lihat Menjelajahi Anthos Service Mesh di Konsol Google Cloud.
Menyelesaikan migrasi
Sebelum menyelesaikan migrasi, pastikan semua aplikasi Anda berfungsi dengan benar. Setelah menyelesaikan migrasi, Anda tidak dapat melakukan roll back ke versi Istio yang ada. Menyelesaikan migrasi akan melakukan langkah-langkah berikut:
- Proses ini memvalidasi bahwa semua proxy yang berjalan di cluster menggunakan Anthos Service Mesh.
- Metode ini menghapus komponen Istio yang tidak digunakan dari cluster. Langkah ini tidak dapat dibatalkan.
Untuk menyelesaikan migrasi ke Anthos Service Mesh, jalankan perintah berikut:
./migrate-to-asm finalize \ --cluster_location $CLUSTER_LOCATION \ --cluster-name $CLUSTER_NAME \ --project-id $PROJECT_ID
migrate-to-asm: Checking installation tool dependencies... migrate-to-asm: Checking for asm-scriptaro-oss... migrate-to-asm: All proxies running Anthos Service Mesh! Remove previous control plane resources? (Y/n) migrate-to-asm: **** migrate-to-asm: Previous Istio control plane has been removed.
Melakukan roll back ke versi Istio yang ada
Jalankan langkah rollback untuk melabeli ulang namespace dengan label injeksi Istio sebelumnya, memulai ulang workload, dan roll back perubahan gateway. Setelah itu, alat ini akan menghapus semua komponen Anthos Service Mesh yang di-deploy di cluster.
Anda harus mengembalikan dependensi yang diaktifkan oleh langkah pra-migrasi secara manual.
Untuk melakukan roll back ke Istio, jalankan perintah berikut:
./migrate-to-asm rollback \ --cluster_location $CLUSTER_LOCATION \ --cluster-name $CLUSTER_NAME \ --project-id $PROJECT_ID
migrate-to-asm: Checking installation tool dependencies... migrate-to-asm: Checking for $PROJECT_ID... ****** migrate-to-asm: Rolling back migration by relabeling and restarting workloads migrate-to-asm: in the following namespaces: migrate-to-asm: namespace/default migrate-to-asm: Continue with rollback? (Y/n) migrate-to-asm: Relabeling namespace/default... namespace/default labeled migrate-to-asm: Restarting workloads in namespace/default and waiting for them to become available (max 5 min)... deployment.apps/frontend restarted deployment.apps/backend restarted deployment.apps/frontend condition met deployment.apps/backend condition met migrate-to-asm: ******* migrate-to-asm: Finished restarting workloads! service/istio-ingressgateway configured deployment.apps/istio-ingressgateway configured There are still 14 proxies pointing to the control plane revision asm-1102-2 istio-ingressgateway-66c85975d-2gt8c.istio-system istio-ingressgateway-66c85975d-jdd96.istio-system ... frontend-685dcb78d6-9l45j.default If you proceed with the uninstall, these proxies will become detached from any control plane and will not function correctly. Removed HorizontalPodAutoscaler:istio-system:istio-ingressgateway. Removed HorizontalPodAutoscaler:istio-system:istiod-asm-1102-2. ... Removed ClusterRoleBinding::mdp-controller. ✔ Uninstall complete namespace "asm-system" deleted migrate-to-asm: **** migrate-to-asm: Anthos Service Mesh has been uninstalled from the cluster.
Lampiran
Membuat cluster GKE dengan Istio terinstal
Di bagian ini, Anda akan men-deploy cluster GKE dengan Istio diaktifkan. Anda dapat menggunakan cluster GKE pribadi atau nonpribadi. Cluster GKE pribadi harus memiliki endpoint GKE publik. Anda juga memverifikasi penginstalan Istio.
Jika sudah memiliki cluster GKE, Anda dapat melewati langkah pembuatan dan memastikan bahwa Anda memiliki akses ke cluster yang menggunakan file KUBECONFIG
. Konteks yang digunakan panduan ini ditentukan dalam variabel ${CLUSTER_1_CTX}
. Anda dapat menetapkan konteks cluster ke variabel ini.
Buat variabel lingkungan yang digunakan dalam panduan ini:
# Enter your project ID export PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID} export PROJECT_NUM=$(gcloud projects describe ${PROJECT_ID} --format='value(projectNumber)') export CLUSTER_NAME=GKE_CLUSTER_NAME export CLUSTER_LOCATION=GKE_CLUSTER_REGION_OR_ZONE export CLUSTER_CTX=gke_${PROJECT_ID}_${CLUSTER_LOCATION}_${CLUSTER_NAME} export ISTIO_VERSION=ISTIO_VERSION # Must be versions 1.7 through 1.10 and must be of the form major.minor.patch, for example 1.7.4 or 1.9.5
Buat cluster GKE dengan Istio diaktifkan (ini adalah cluster pribadi). Anda juga dapat melakukan langkah-langkah ini dengan cluster GKE non-pribadi.
Cluster zona
gcloud container clusters create ${CLUSTER_NAME} \ --project ${PROJECT_ID} \ --zone ${CLUSTER_LOCATION} \ --machine-type "e2-standard-4" \ --num-nodes "4" --min-nodes "2" --max-nodes "5" \ --enable-ip-alias --enable-autoscaling
Cluster regional
gcloud container clusters create ${CLUSTER_NAME} \ --project ${PROJECT_ID} \ --region ${CLUSTER_LOCATION} \ --machine-type "e2-standard-4" \ --num-nodes "4" --min-nodes "2" --max-nodes "5" \ --enable-ip-alias --enable-autoscaling
Konfirmasi bahwa cluster adalah
RUNNING
:gcloud container clusters list
Outputnya mirip dengan hal berikut ini:
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS gke-east us-east1-b 1.19.10-gke.1600 34.73.171.206 e2-standard-4 1.19.10-gke.1600 4 RUNNING
Hubungkan ke cluster:
Cluster zona
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --zone ${CLUSTER_LOCATION}
Cluster regional
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --region ${CLUSTER_LOCATION}
Jangan lupa membatalkan penetapan variabel KUBECONFIG
di bagian akhir.
Instal Istio
Di bagian ini, Anda akan men-deploy Istio versi 1.7 ke cluster GKE.
Download Istio:
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=${ISTIO_VERSION} TARGET_ARCH=x86_64 sh -
Instal Istio menggunakan alat command line
istioctl
. Pilih salah satu opsi dari salah satu opsi berikut:- Opsi 1: tanpa resource
IstioOperator
kustom Opsi 2: dengan resource
IstioOperator
kustom
Opsi 1
Tanpa resource
IstioOperator
kustom:./istio-${ISTIO_VERSION}/bin/istioctl install --set profile=default -y
Outputnya mirip dengan hal berikut ini:
✔ Istio core installed ✔ Istiod installed ✔ Ingress gateways installed ✔ Installation complete
Opsi 2
Dengan resource
IstioOperator
kustom:cat <<EOF > istio-operator.yaml apiVersion: install.istio.io/v1alpha1 kind: IstioOperator metadata: name: istio-operator spec: components: base: enabled: true ingressGateways: - enabled: true k8s: env: - name: TERMINATION_DRAIN_DURATION_SECONDS value: "10" hpaSpec: maxReplicas: 10 metrics: - resource: name: cpu targetAverageUtilization: 80 type: Resource minReplicas: 2 resources: limits: cpu: "4" memory: 8Gi requests: cpu: "2" memory: 4Gi service: ports: - name: status-port port: 15021 targetPort: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 - name: tls port: 15443 targetPort: 15443 name: istio-ingressgateway - enabled: true k8s: env: - name: TERMINATION_DRAIN_DURATION_SECONDS value: "10" hpaSpec: maxReplicas: 10 minReplicas: 2 resources: limits: cpu: "4" memory: 8Gi requests: cpu: "2" memory: 4Gi service: ports: - name: status-port port: 15021 targetPort: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 - name: tls port: 15443 targetPort: 15443 label: istio: istio-api-ingressgateway name: istio-api-ingressgateway meshConfig: defaultConfig: tracing: sampling: 1 zipkin: address: jaeger-collector.observability.svc.cluster.local:9411 enableTracing: true EOF ./istio-${ISTIO_VERSION}/bin/istioctl install -f istio-operator.yaml -y
Outputnya mirip dengan hal berikut ini:
✔ Istio core installed ✔ Istiod installed ✔ Ingress gateways installed ✔ Installation complete
- Opsi 1: tanpa resource
Pastikan Layanan dan Pod Istio di-deploy dan berjalan:
kubectl --context=${CLUSTER_CTX} -n istio-system get services,pods
Outputnya mirip dengan hal berikut ini:
Opsi 1
Tanpa resource
IstioOperator
kustom:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/istio-ingressgateway LoadBalancer 10.64.5.113 <pending> 15021:31285/TCP,80:31740/TCP,443:30753/TCP,15443:31246/TCP 33s service/istiod ClusterIP 10.64.15.184 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP,853/TCP 45s NAME READY STATUS RESTARTS AGE pod/istio-ingressgateway-6f44d6745b-22q9h 1/1 Running 0 34s pod/istiod-b89f5cc6-nhsrc 1/1 Running 0 48s
Opsi 2
Dengan resource
IstioOperator
kustom:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/istio-api-ingressgateway LoadBalancer 10.100.0.84 104.196.26.108 15021:32489/TCP,80:30083/TCP,443:30565/TCP,15443:30705/TCP 76s service/istio-ingressgateway LoadBalancer 10.100.3.221 34.139.111.125 15021:30966/TCP,80:31557/TCP,443:31016/TCP,15443:31574/TCP 75s service/istiod ClusterIP 10.100.13.72 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 86s NAME READY STATUS RESTARTS AGE pod/istio-api-ingressgateway-79978ddc65-hslbv 1/1 Running 0 61s pod/istio-api-ingressgateway-79978ddc65-z92w8 1/1 Running 0 77s pod/istio-ingressgateway-fb47c4859-pkdn7 1/1 Running 0 60s pod/istio-ingressgateway-fb47c4859-t2pfq 1/1 Running 0 77s pod/istiod-9445656d7-fxk9j 1/1 Running 0 89s
Terapkan Butik Online
Di bagian ini, Anda akan men-deploy contoh aplikasi berbasis microservice yang disebut Online Boutique ke cluster GKE. Butik Online diterapkan di namespace yang mendukung Istio. Anda memverifikasi bahwa aplikasi berfungsi dan bahwa Istio memasukkan proxy file bantuan ke setiap Pod.
Jika sudah memiliki cluster yang dilengkapi aplikasi, Anda dapat melewati proses pembuatan namespace baru dan men-deploy Butik Online. Anda dapat mengikuti proses yang sama untuk semua namespace di bagian Menginstal Anthos Service Mesh dan menyiapkan workload.
Men-deploy Butik Online ke cluster GKE:
kpt pkg get \ https://github.com/GoogleCloudPlatform/microservices-demo.git/release \ online-boutique kubectl --context=${CLUSTER_CTX} create namespace online-boutique kubectl --context=${CLUSTER_CTX} label namespace online-boutique istio-injection=enabled kubectl --context=${CLUSTER_CTX} -n online-boutique apply -f online-boutique
Tunggu hingga semua Deployment siap:
kubectl --context=${CLUSTER_CTX} -n online-boutique wait --for=condition=available --timeout=5m deployment adservice kubectl --context=${CLUSTER_CTX} -n online-boutique wait --for=condition=available --timeout=5m deployment checkoutservice kubectl --context=${CLUSTER_CTX} -n online-boutique wait --for=condition=available --timeout=5m deployment currencyservice kubectl --context=${CLUSTER_CTX} -n online-boutique wait --for=condition=available --timeout=5m deployment emailservice kubectl --context=${CLUSTER_CTX} -n online-boutique wait --for=condition=available --timeout=5m deployment frontend kubectl --context=${CLUSTER_CTX} -n online-boutique wait --for=condition=available --timeout=5m deployment paymentservice kubectl --context=${CLUSTER_CTX} -n online-boutique wait --for=condition=available --timeout=5m deployment productcatalogservice kubectl --context=${CLUSTER_CTX} -n online-boutique wait --for=condition=available --timeout=5m deployment shippingservice kubectl --context=${CLUSTER_CTX} -n online-boutique wait --for=condition=available --timeout=5m deployment cartservice kubectl --context=${CLUSTER_CTX} -n online-boutique wait --for=condition=available --timeout=5m deployment loadgenerator kubectl --context=${CLUSTER_CTX} -n online-boutique wait --for=condition=available --timeout=5m deployment recommendationservice
Pastikan ada dua container per Pod—container aplikasi dan proxy sidecar Istio yang dimasukkan secara otomatis oleh Istio ke dalam Pod:
kubectl --context=${CLUSTER_CTX} -n online-boutique get pods
Outputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE adservice-7cbc9bd9-t92k4 2/2 Running 0 3m21s cartservice-d7db78c66-5qfmt 2/2 Running 1 3m23s checkoutservice-784bfc794f-j8rl5 2/2 Running 0 3m26s currencyservice-5898885559-lkwg4 2/2 Running 0 3m23s emailservice-6bd8b47657-llvgv 2/2 Running 0 3m27s frontend-764c5c755f-9wf97 2/2 Running 0 3m25s loadgenerator-84cbcd768c-5pdbr 2/2 Running 3 3m23s paymentservice-6c676df669-s779c 2/2 Running 0 3m25s productcatalogservice-7fcf4f8cc-hvf5x 2/2 Running 0 3m24s recommendationservice-79f5f4bbf5-6st24 2/2 Running 0 3m26s redis-cart-74594bd569-pfhkz 2/2 Running 0 3m22s shippingservice-b5879cdbf-5z7m5 2/2 Running 0 3m22s
Anda juga dapat memeriksa versi proxy Envoy file bantuan dari salah satu Pod untuk memastikan bahwa Anda telah men-deploy proxy Istio versi 1.4 Envoy:
export FRONTEND_POD=$(kubectl get pod -n online-boutique -l app=frontend --context=${CLUSTER_CTX} -o jsonpath='{.items[0].metadata.name}') kubectl --context=${CLUSTER_CTX} get pods ${FRONTEND_POD} -n online-boutique -o json | jq '.status.containerStatuses[].image'
Outputnya mirip dengan hal berikut ini:
"docker.io/istio/proxyv2:1.7.4" "gcr.io/google-samples/microservices-demo/frontend:v0.3.4"
Akses aplikasi dengan membuka alamat IP alamat IP Layanan
istio-ingressgateway
:kubectl --context=${CLUSTER_CTX} -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
Langkah selanjutnya
- Untuk mendapatkan jawaban atas pertanyaan umum (FAQ) terkait migrasi ini, lihat Bermigrasi dari Istio 1.7 atau yang lebih baru ke FAQ Anthos Service Mesh dan Mesh CA.