Halaman ini adalah bagian dari panduan multihalaman yang menjelaskan cara melakukan migrasi dari Istio ke Anthos Service Mesh versi 1.7.8 di cluster GKE untuk mesh yang berisi beberapa cluster yang berada di project Google Cloud yang berbeda. Untuk migrasi pada mesh cluster tunggal atau untuk mesh yang berisi beberapa cluster dalam project Google Cloud yang sama, lihat Penginstalan, migrasi, dan upgrade untuk GKE.
Sebelum memulai
Sebelum menginstal Anthos Service Mesh, pastikan Anda memiliki:
- Siapkan lingkungan Anda untuk menginstal alat yang Anda perlukan.
- Siapkan project Anda untuk mengaktifkan API yang diperlukan dan menetapkan izin.
- Siapkan cluster Anda untuk mengaktifkan opsi cluster yang diperlukan.
- Meninjau Mempersiapkan migrasi dari Istio.
Menetapkan kredensial dan izin
Lakukan inisialisasi project Anda agar siap untuk diinstal. Di antara hal lainnya, perintah ini membuat akun layanan yang memungkinkan komponen bidang kontrol, seperti proxy sidecar, mengakses data dan resource project Anda dengan aman.
curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --data '' \ "https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize"
Perintah ini merespons dengan tanda kurung kurawal kosong:
{}
Dapatkan kredensial autentikasi untuk berinteraksi dengan cluster. Perintah ini juga menetapkan konteks saat ini untuk
kubectl
ke cluster.gcloud container clusters get-credentials ${CLUSTER_NAME} \ --project=${PROJECT_ID}
Berikan izin admin cluster kepada pengguna saat ini. Anda memerlukan izin ini guna membuat aturan role-based access control (RBAC) yang diperlukan untuk Anthos Service Mesh.
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user="$(gcloud config get-value core/account)"
Jika melihat error "cluster-admin-binding" already exists
, Anda dapat mengabaikannya dengan aman dan melanjutkan dengan cluster-admin-binding yang ada.
Mendownload file penginstalan
-
Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-linux-amd64.tar.gz
-
Download file tanda tangan dan gunakan
openssl
untuk memverifikasi tanda tangan:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig istio-1.7.8-asm.10-linux-amd64.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
Output yang diharapkan adalah:
Verified OK
-
Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
tar xzf istio-1.7.8-asm.10-linux-amd64.tar.gz
Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama
istio-1.7.8-asm.10
yang berisi:- Contoh aplikasi di direktori
samples
. - Alat command line
istioctl
yang Anda gunakan untuk menginstal Anthos Service Mesh ada di direktoribin
. - Profil konfigurasi Anthos Service Mesh berada di direktori
manifests/profiles
.
- Contoh aplikasi di direktori
-
Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz
-
Download file tanda tangan dan gunakan
openssl
untuk memverifikasi tanda tangan:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.7.8-asm.10-osx.tar.gz.1.sig istio-1.7.8-asm.10-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
Output yang diharapkan adalah:
Verified OK
-
Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
tar xzf istio-1.7.8-asm.10-osx.tar.gz
Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama
istio-1.7.8-asm.10
yang berisi:- Contoh aplikasi di direktori
samples
. - Alat command line
istioctl
yang Anda gunakan untuk menginstal Anthos Service Mesh ada di direktoribin
. - Profil konfigurasi Anthos Service Mesh berada di direktori
manifests/profiles
.
- Contoh aplikasi di direktori
-
Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip
-
Download file tanda tangan dan gunakan
openssl
untuk memverifikasi tanda tangan:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip.1.sig openssl dgst -verify - -signature istio-1.7.8-asm.10-win.zip.1.sig istio-1.7.8-asm.10-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
Output yang diharapkan adalah:
Verified OK
-
Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
tar xzf istio-1.7.8-asm.10-win.zip
Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama
istio-1.7.8-asm.10
yang berisi:- Contoh aplikasi di direktori
samples
. - Alat command line
istioctl
yang Anda gunakan untuk menginstal Anthos Service Mesh ada di direktoribin
. - Profil konfigurasi Anthos Service Mesh berada di direktori
manifests/profiles
.
- Contoh aplikasi di direktori
-
Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
cd istio-1.7.8-asm.10
-
Untuk memudahkan, tambahkan alat di direktori
/bin
ke PATH Anda:export PATH=$PWD/bin:$PATH
Linux
Mac OS
Windows
Mempersiapkan file konfigurasi resource
Saat menjalankan perintah istioctl install
, Anda menentukan
-f istio-operator.yaml
pada command line. File ini berisi informasi
tentang project dan cluster yang diperlukan Anthos Service Mesh. Anda harus mendownload
paket yang berisi istio-operator.yaml
dan file konfigurasi resource
lainnya agar dapat menetapkan informasi project dan cluster.
Untuk menyiapkan file konfigurasi resource:
Mesh CA
Buat direktori baru untuk file konfigurasi resource paket Anthos Service Mesh. Sebaiknya gunakan nama cluster sebagai nama direktori.
Ubah ke direktori tempat Anda ingin mendownload paket Anthos Service Mesh.
Download paket:
kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.7-asm asm
Tetapkan project ID untuk project tempat cluster dibuat:
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
Tetapkan nomor project untuk project host fleet:
kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
Tetapkan nama cluster:
kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
Tetapkan zona atau region default:
kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
Setel tag ke versi Anthos Service Mesh yang Anda instal:
kpt cfg set asm anthos.servicemesh.tag 1.7.8-asm.10
Tetapkan webhook validasi untuk menggunakan label revisi:
kpt cfg set asm anthos.servicemesh.rev asm-178-10
Saat menginstal Anthos Service Mesh, Anda menetapkan label revisi pada
istiod
. Anda harus menetapkan revisi yang sama pada webhook validasi.Karena cluster dalam konfigurasi multi-cluster Anda berada dalam project yang berbeda, Anda perlu mengonfigurasi alias domain tepercaya untuk project lain yang akan membentuk mesh layanan multi-cluster/multi-project.
Dapatkan project ID dari semua cluster yang akan berada di mesh multi-cluster/multi-project.
Untuk setiap project ID cluster, tetapkan alias domain kepercayaan. Misalnya, jika Anda memiliki cluster di 3 project, jalankan perintah berikut dan ganti
PROJECT_ID_1
,PROJECT_ID_2
, danPROJECT_ID_3
dengan project ID setiap cluster.kpt cfg set asm anthos.servicemesh.trustDomainAliases PROJECT_ID_1.svc.id.goog PROJECT_ID_2.svc.id.goog PROJECT_ID_3.svc.id.goog
Saat mengonfigurasi cluster di project lain, Anda dapat menggunakan perintah yang sama.
Alias domain kepercayaan memungkinkan Mesh CA untuk mengautentikasi beban kerja pada cluster dalam project lain. Selain menyetel alias domain tepercaya, setelah menginstal Anthos Service Mesh, Anda harus mengaktifkan load balancing lintas cluster.
Hasilkan nilai penyetel
kpt
:kpt cfg list-setters asm
Output perintah ini akan mirip dengan berikut ini:
NAME VALUE anthos.servicemesh.canonicalServiceHub gcr.io/gke-release/asm/canonical-service-controller:1.7.8-asm.10 anthos.servicemesh.controlplane.monitoring.enabled true anthos.servicemesh.hub gcr.io/gke-release/asm anthos.servicemesh.hubMembershipID MEMBERSHIP_ID anthos.servicemesh.tag 1.7.8-asm.10 anthos.servicemesh.trustDomainAliases [example-project-12345.svc.id.goog,example-project-23456.svc.id.goog,example-project-98765.svc.id.goog] base-dir base gcloud.compute.location us-central gcloud.compute.network default gcloud.compute.subnetwork default gcloud.container.cluster example-cluster-1 gcloud.container.cluster.clusterSecondaryRange gcloud.container.cluster.releaseChannel REGULAR gcloud.container.cluster.servicesSecondaryRange gcloud.container.nodepool.max-nodes 4 gcloud.core.project example-project-12345 gcloud.project.environProjectID FLEET_PROJECT_ID gcloud.project.environProjectNumber 1234567890123 gcloud.project.projectNumber 9876543210987
Pastikan nilai untuk penyetel berikut sudah benar:
- anthos.servicemesh.rev
- anthos.servicemesh.tag
- anthos.servicemesh.trustDomainAliases
- gcloud.compute.location
- gcloud.container.cluster
- gcloud.core.project
- gcloud.project.environProjectNumber
Anda dapat mengabaikan nilai untuk penyetel lainnya.
Benteng
Buat direktori baru untuk file konfigurasi resource paket Anthos Service Mesh. Sebaiknya gunakan nama cluster sebagai nama direktori.
Ubah ke direktori tempat Anda ingin mendownload paket Anthos Service Mesh.
Download paket:
kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.7-asm asm
Tetapkan project ID untuk project tempat cluster dibuat:
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
Tetapkan nomor project untuk project host fleet:
kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
Tetapkan nama cluster:
kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
Tetapkan zona atau region default:
kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
Setel tag ke versi Anthos Service Mesh yang Anda instal:
kpt cfg set asm anthos.servicemesh.tag 1.7.8-asm.10
Tetapkan webhook validasi untuk menggunakan label revisi:
kpt cfg set asm anthos.servicemesh.rev asm-178-10
Hasilkan nilai penyetel
kpt
:kpt cfg list-setters asm
Output perintah ini akan mirip dengan berikut ini:
NAME VALUE anthos.servicemesh.canonicalServiceHub gcr.io/gke-release/asm/canonical-service-controller:1.7.8-asm.10 anthos.servicemesh.controlplane.monitoring.enabled true anthos.servicemesh.hub gcr.io/gke-release/asm anthos.servicemesh.hubMembershipID MEMBERSHIP_ID anthos.servicemesh.tag 1.7.8-asm.10 anthos.servicemesh.trustDomainAliases base-dir base gcloud.compute.location us-central gcloud.compute.network default gcloud.compute.subnetwork default gcloud.container.cluster example-cluster-1 gcloud.container.cluster.clusterSecondaryRange gcloud.container.cluster.releaseChannel REGULAR gcloud.container.cluster.servicesSecondaryRange gcloud.container.nodepool.max-nodes 4 gcloud.core.project example-project-12345 gcloud.project.environProjectID FLEET_PROJECT_ID gcloud.project.environProjectNumber 1234567890123 gcloud.project.projectNumber 9876543210987
Pastikan nilai untuk penyetel berikut sudah benar:
- anthos.servicemesh.rev
- anthos.servicemesh.tag
- gcloud.compute.location
- gcloud.container.cluster
- gcloud.core.project
- gcloud.project.environProjectNumber
Anda dapat mengabaikan nilai untuk penyetel lainnya.
Bermigrasi ke Anthos Service Mesh
Untuk bermigrasi dari Istio, Anda harus mengikuti
proses upgrade bidang kontrol ganda
(disebut sebagai upgrade canary dalam dokumentasi Istio). Dengan upgrade bidang kontrol
ganda, Anda menginstal versi baru bidang kontrol bersama dengan
bidang kontrol yang ada. Saat menginstal versi baru, Anda menyertakan
label revision
yang mengidentifikasi versi bidang kontrol baru. Setiap revisi merupakan implementasi penuh bidang kontrol Anthos Service Mesh dengan Deployment dan Service-nya sendiri.
Kemudian, migrasikan ke versi baru dengan menetapkan label revision
yang sama pada beban kerja agar mengarah ke bidang kontrol baru dan melakukan mulai ulang berkelanjutan untuk memasukkan ulang proxy dengan versi Anthos Service Mesh yang baru. Dengan pendekatan ini,
Anda dapat memantau efek upgrade pada sebagian kecil
beban kerja Anda. Setelah menguji aplikasi, Anda dapat memigrasikan semua traffic ke
versi baru. Pendekatan ini jauh lebih aman daripada melakukan upgrade langsung, karena
bidang kontrol baru langsung menggantikan versi bidang
kontrol sebelumnya.
Memperbarui bidang kontrol
Mesh CA
Pastikan konteks
kubeconfig
saat ini mengarah ke cluster tempat Anda ingin menginstal Anthos Service Mesh:kubectl config current-context
Outputnya akan dalam format berikut:
gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME
Konteks
kubeconfig
dan nilai penyetelkpt
harus cocok. Jika perlu, jalankan perintahgcloud container clusters get-credentials
untuk menetapkan kontekskubeconfig
saat ini.Jalankan perintah berikut untuk men-deploy bidang kontrol baru dengan profil
asm-gcp-multiproject
. Jika Anda ingin mengaktifkan fitur opsional yang didukung, sertakan-f
dan nama file YAML pada command line berikut. Lihat Mengaktifkan fitur opsional untuk mengetahui informasi selengkapnya.istioctl install \ -f asm/istio/istio-operator.yaml \ -f asm/istio/options/multiproject.yaml \ -f asm/istio/options/multicluster.yaml\ --revision=asm-178-10
Argumen
--revision
menambahkan label revisi dalam formatistio.io/rev=asm-178-10
keistiod
. Label revisi digunakan oleh webhook injektor sidecar otomatis untuk mengaitkan sidecar yang dimasukkan dengan revisiistiod
tertentu. Untuk mengaktifkan injeksi otomatis file bantuan untuk namespace, Anda harus melabelinya dengan revisi yang cocok dengan Deploymentistiod
.File berikut menggantikan setelan di file
istio-operator.yaml
:File
multiproject.yaml
menetapkan profilasm-gcp-multiproject
.File
multicluster.yaml
mengonfigurasi setelan yang diperlukan Anthos Service Mesh untuk konfigurasi multi-cluster.
Pastikan pod bidang kontrol di
istio-system
sudah aktif:kubectl get pods -n istio-system
Contoh output:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-c56675fcd-86zdn 1/1 Running 0 2m9s istio-ingressgateway-c56675fcd-vn4nv 1/1 Running 0 2m21s istiod-asm-178-10-6d5cfd4b89-xztlr 1/1 Running 0 3m44s istiod-fb7f746f4-wcntn 1/1 Running 0 50m
Anda memiliki dua bidang kontrol Deployment dan Layanan yang berjalan berdampingan.
Deploy pengontrol Layanan Kanonis ke cluster Anda:
kubectl apply -f asm/canonical-service/controller.yaml
Pengontrol Layanan Kanonis mengelompokkan beban kerja yang termasuk dalam layanan logis yang sama. Untuk mengetahui informasi selengkapnya tentang Layanan Kanonis, lihat ringkasan Layanan Kanonis.
Benteng
Pastikan konteks
kubeconfig
saat ini mengarah ke cluster tempat Anda ingin menginstal Anthos Service Mesh:kubectl config current-context
Outputnya akan dalam format berikut:
gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME
Konteks
kubeconfig
dan nilai penyetelkpt
harus cocok. Jika perlu, jalankan perintahgcloud container clusters get-credentials
untuk menetapkan kontekskubeconfig
saat ini.Jalankan perintah berikut untuk men-deploy bidang kontrol baru dengan profil
asm-gcp-multiproject
. Jika Anda ingin mengaktifkan fitur opsional yang didukung, sertakan-f
dan nama file YAML pada command line berikut. Lihat Mengaktifkan fitur opsional untuk mengetahui informasi selengkapnya.istioctl install \ -f asm/istio/istio-operator.yaml \ -f asm/istio/options/citadel-ca.yaml \ -f asm/istio/options/multiproject.yaml \ -f asm/istio/options/multicluster.yaml\ --revision=asm-178-10
Argumen
--revision
menambahkan label revisi dalam formatistio.io/rev=asm-178-10
keistiod
. Label revisi digunakan oleh webhook injektor sidecar otomatis untuk mengaitkan sidecar yang dimasukkan dengan revisiistiod
tertentu. Untuk mengaktifkan injeksi otomatis file bantuan untuk namespace, Anda harus melabelinya dengan revisi yang cocok dengan Deploymentistiod
.File berikut menggantikan setelan di file
istio-operator.yaml
:citadel-ca.yaml
mengonfigurasi Citadel sebagai CA.File
multiproject.yaml
menetapkan profilasm-gcp-multiproject
.File
multicluster.yaml
mengonfigurasi setelan yang diperlukan Anthos Service Mesh untuk konfigurasi multi-cluster.
Pastikan pod bidang kontrol di
istio-system
sudah aktif:kubectl get pods -n istio-system
Contoh output:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-c56675fcd-86zdn 1/1 Running 0 2m9s istio-ingressgateway-c56675fcd-vn4nv 1/1 Running 0 2m21s istiod-asm-178-10-6d5cfd4b89-xztlr 1/1 Running 0 3m44s istiod-fb7f746f4-wcntn 1/1 Running 0 50m
Anda memiliki dua bidang kontrol Deployment dan Layanan yang berjalan berdampingan.
Deploy pengontrol Layanan Kanonis ke cluster Anda:
kubectl apply -f asm/canonical-service/controller.yaml
Pengontrol Layanan Kanonis mengelompokkan beban kerja yang termasuk dalam layanan logis yang sama. Untuk mengetahui informasi selengkapnya tentang Layanan Kanonis, lihat ringkasan Layanan Kanonis.
Men-deploy ulang beban kerja
Menginstal revisi baru tidak berdampak pada proxy file bantuan yang ada. Untuk
mengupgradenya, Anda harus mengonfigurasinya agar mengarah ke bidang kontrol baru. Hal ini
dikontrol selama injeksi file bantuan berdasarkan label namespace
istio.io/rev
.
Update workload yang akan dimasukkan dengan versi Anthos Service Mesh baru:
kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-178-10 --overwrite
Label
istio-injection
harus dihapus karena lebih diutamakan daripada labelistio.io/rev
.Mulai ulang Pod untuk memicu injeksi ulang:
kubectl rollout restart deployment -n NAMESPACE
Pastikan bahwa Pod dikonfigurasi untuk mengarah ke bidang kontrol
istiod-asm-178-10
:kubectl get pods -n NAMESPACE -l istio.io/rev=asm-178-10
Uji aplikasi Anda untuk memverifikasi bahwa beban kerja berfungsi dengan benar.
Jika Anda memiliki workload di namespace lain, ulangi langkah-langkah sebelumnya untuk setiap namespace.
Jika Anda yakin aplikasi telah berfungsi seperti yang diharapkan, lewati ke Menyelesaikan migrasi. Jika tidak, lakukan langkah-langkah berikut untuk melakukan rollback ke versi sebelumnya:
Untuk melakukan rollback:
Update workload yang akan dimasukkan dengan versi bidang kontrol sebelumnya:
kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
Mulai ulang Pod untuk memicu injeksi ulang agar proxy memiliki versi sebelumnya:
kubectl rollout restart deployment -n NAMESPACE
Deploy ulang
istio-ingressgateway
versi sebelumnya:kubectl -n istio-system rollout undo deploy istio-ingressgateway
Hapus bidang kontrol baru:
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-asm-178-10 -n istio-system --ignore-not-found=true
Menyelesaikan migrasi
Jika Anda yakin aplikasi Anda berfungsi seperti yang diharapkan, lakukan langkah-langkah berikut untuk menyelesaikan migrasi ke Anthos Service Mesh:
Hapus bidang kontrol lama:
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
Mendaftarkan cluster Anda
Anda harus mendaftarkan cluster ke fleet project untuk mendapatkan akses ke antarmuka pengguna terpadu di Konsol Google Cloud. Armada menyediakan cara terpadu untuk melihat dan mengelola cluster dan workload-nya, termasuk cluster di luar Google Cloud.
Baca bagian Mendaftarkan cluster ke fleet untuk mengetahui informasi tentang cara mendaftarkan cluster Anda.