Gunakan prosedur yang sama untuk upgrade versi minor (misalnya versi 1.7 hingga 1.8) dan untuk upgrade rilis patch (misalnya 1.8.0 hingga 1.8.8).
Jika mengupgrade dari Apigee hybrid versi 1.6 atau yang lebih lama, Anda harus mengupgrade ke hybrid versi 1.7 terlebih dahulu sebelum mengupgrade ke versi 1.8.8. Lihat petunjuk untuk Mengupgrade Apigee hybrid ke versi 1.7.
Jika Anda sudah menggunakan hybrid v1.8.0 dan ingin bermigrasi ke gateway masuk Apigee dari Anthos Service Mesh, lihat Memigrasikan ke gateway masuk Apigee.
Memperkenalkan gateway masuk Apigee
Mulai versi 1.8, Apigee hybrid menawarkan fitur baru untuk mengelola gateway masuk untuk penginstalan hybrid Anda, gateway masuk Apigee. Anthos Service Mesh tidak lagi menjadi prasyarat untuk penginstalan hybrid. Dengan gateway ingress Apigee, Apigee akan berhenti menyediakan konfigurasi perutean ke Anthos Service Mesh. Setelah upgrade, Anda harus memigrasikan traffic ke gateway masuk Apigee baru sebelum dapat mulai menggunakan fitur ini.
Apigee menggunakan sebagian kecil fitur Anthos Service Mesh untuk gateway masuk. Mulai versi hybrid 1.8, Apigee hybrid menyertakan gateway masuk yang diinstal dan diupgrade sebagai bagian dari upgrade Apigee hybrid. Oleh karena itu, Anda tidak perlu membangun keahlian seputar Anthos Service Mesh untuk menginstal, mengupgrade, dan mengelola Apigee hybrid. Masalah terkait versi gateway masuk dan kompatibilitas dengan rilis hibrida Apigee ditangani secara otomatis.
Dua skenario untuk melakukan migrasi adalah:
- Migrasi multi-cluster atau multi-region (direkomendasikan):
Sebelum beralih ke Ingress baru untuk Apigee, kosongkan semua traffic ke cluster atau region lain dari cluster yang Anda migrasikan. Tindakan ini akan memberi Anda waktu untuk menguji apakah gateway masuk Apigee baru berfungsi seperti yang diharapkan. Kemudian, alihkan traffic kembali ke cluster yang diupgrade.
- Upgrade langsung (tidak direkomendasikan di lingkungan produksi):
Selama upgrade, Apigee akan menampilkan gateway masuk baru dengan alamat IP yang Anda tentukan. Kemudian, Anda dapat menguji apakah gateway ingress Apigee baru berfungsi seperti yang diharapkan, lalu mengalihkan traffic ke ingress baru. Mungkin ada periode nonaktif selama upgrade ini.
Saat mengupgrade Apigee hybrid ke versi 1.8, Anda harus mengonfigurasi gateway masuk Apigee di file penggantian. Setelah mengupgrade, Anda mengontrol jenis gateway masuk yang akan digunakan cluster dengan mengarahkan data A atau CNAME di registrar ke alamat IP untuk gateway masuk Apigee atau untuk Anthos Service Mesh.
Ringkasan upgrade ke versi 1.8.8
Prosedur untuk mengupgrade Apigee hybrid diatur dalam bagian berikut:
- Bersiap untuk mengupgrade.
- Instal runtime campuran versi 1.8.8.
- Untuk gateway masuk, pilih salah satu opsi berikut:
- (Direkomendasikan) Gunakan gateway masuk Apigee baru, ikuti langkah-langkah di Beralih traffic dari Anthos Service Mesh ke gateway masuk Apigee.
- Lanjutkan menggunakan Anthos Service Mesh untuk gateway masuk Anda.
Prasyarat
Petunjuk upgrade ini mengasumsikan bahwa Anda telah menginstal Apigee hybrid versi 1.7.x atau rilis patch versi 1.8.x sebelumnya dan ingin mengupgradenya ke versi 1.8.8. Jika Anda mengupdate dari versi sebelumnya, lihat petunjuk untuk Mengupgrade Apigee hybrid ke versi 1.7.
Jika memilih untuk terus menggunakan Anthos Service Mesh, Anda harus memastikan bahwa Anthos Service Mesh diupgrade ke versi yang didukung. Lihat tabel Platform yang didukung untuk versi Anthos Service Mesh yang didukung.
Bersiap untuk mengupgrade ke versi 1.8
Mencadangkan penginstalan hybrid Anda (direkomendasikan)
- Petunjuk ini menggunakan variabel lingkungan APIGEECTL_HOME untuk direktori
dalam sistem file tempat Anda menginstal
apigeectl
. Jika perlu, ubah direktori ke direktoriapigeectl
dan tentukan variabel dengan perintah berikut:Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Mac OS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- Buat salinan cadangan direktori
$APIGEECTL_HOME/
versi 1.7. Contoh:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.7-backup.tar.gz $APIGEECTL_HOME
- Cadangkan database Cassandra Anda dengan mengikuti petunjuk di Pencadangan dan pemulihan Cassandra
Tambahkan peran Cloud Trace Agent ke akun layanan untuk runtime Apigee. (Opsional)
Opsional: Jika Anda berencana menggunakan Cloud Trace dan belum
melakukan langkah ini pada penginstalan hybrid v1.7, pastikan akun layanan
untuk layanan runtime Apigee Anda memiliki peran Google Cloud Trace Agent.
(roles/cloudtrace.agent
).
Untuk lingkungan produksi, ini biasanya adalah akun layanan apigee-runtime
. Untuk
lingkungan non-produksi, ini biasanya adalah akun layanan apigee-non-prod
.
Anda dapat menambahkan peran di UI Cloud console > IAM & Admin > Service accounts atau dengan perintah berikut:
- Dapatkan alamat email untuk akun layanan Anda dengan perintah berikut:
Produksi
gcloud iam service-accounts list --filter "apigee-runtime"
Jika cocok dengan pola
apigee-runtime@$ORG_NAME.iam.gserviceaccount.com
, Anda dapat menggunakan pola tersebut di langkah berikutnya.Non-Prod
gcloud iam service-accounts list --filter "apigee-non-prod"
Jika cocok dengan pola
apigee-non-prod@$ORG_NAME.iam.gserviceaccount.com
, Anda dapat menggunakan pola tersebut di langkah berikutnya. - Tetapkan peran Cloud Trace Agent ke akun layanan:
Produksi
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-runtime@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
Non-Prod
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
Contoh
gcloud projects add-iam-policy-binding hybrid-example-project \ --member="serviceAccount:apigee-runtime@hybrid-example-project.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
Dengan: $PROJECT_ID adalah nama project Google Cloud tempat Apigee hybrid diinstal.
Bersiap untuk menginstal gateway traffic masuk Apigee
Untuk menginstal gateway traffic masuk Apigee sebagai bagian dari upgrade. Anda perlu menambahkan
properti
ingressGateways
berikut ke file penggantian.
Sintaks
ingressGateways: - name: INGRESS_NAME replicaCountMin: REPLICAS_MIN replicaCountMax: REPLICAS_MAX resources: requests: cpu: CPU_COUNT_REQ memory: MEMORY_REQ limits: cpu: CPU_COUNT_LIMIT memory: MEMORY_LIMIT svcAnnotations: # optional. See Known issue 243599452. SVC_ANNOTATIONS_KEY: SVC_ANNOTATIONS_VALUE svcLoadBalancerIP: SVC_LOAD_BALANCER_IP # optional
Contoh
ingressGateways: - name: prod1 replicaCountMin: 2 replicaCountMax: 100 resources: requests: cpu: 1 memory: 1Gi limits: cpu: 2 memory: 2Gi
- INGRESS_NAME adalah nama deployment ingress. Nama ini dapat berupa nama apa pun yang memenuhi
persyaratan berikut:
- Memiliki panjang maksimum 17 karakter
- Hanya berisi karakter alfanumerik huruf kecil, '-', atau '.'
- Dimulai dengan karakter alfanumerik
- Diakhiri dengan karakter alfanumerik
Lihat
ingressGateways[].name
dalam referensi Properti konfigurasi - REPLICAS_MIN dan REPLICAS_MAX adalah jumlah replika minimum dan maksimum untuk gateway masuk Apigee dalam penginstalan Anda. Untuk informasi selengkapnya dan setelan default, lihat
ingressGateways[].replicaCountMin
daningressGateways[].replicaCountMax
dalam referensi Properti konfigurasi. - CPU_COUNT_REQ dan MEMORY_REQ adalah permintaan CPU dan memori untuk setiap replika gateway masuk Apigee dalam penginstalan Anda.
Untuk informasi selengkapnya dan setelan default, lihat
ingressGateways[].resources.requests.cpu
daningressGateways[].resources.requests.memory
dalam referensi Properti konfigurasi. - CPU_COUNT_LIMIT dan MEMORY_LIMIT Batas CPU dan memori maksimum untuk setiap replika gateway ingress Apigee dalam penginstalan Anda.
Untuk informasi selengkapnya dan setelan default, lihat
ingressGateways[].resources.limits.cpu
daningressGateways[].resources.limits.memory
dalam referensi Properti konfigurasi. - SVC_ANNOTATIONS_KEY dan SVC_ANNOTATIONS_VALUE (opsional):
Ini adalah key-value pair yang menyediakan anotasi untuk layanan ingress default Anda. Anotasi digunakan oleh platform cloud Anda untuk membantu mengonfigurasi penginstalan hybrid, misalnya menetapkan jenis load balancer ke internal atau eksternal. Contoh:
ingressGateways: svcAnnotations: networking.gke.io/load-balancer-type: "Internal"
Anotasi bervariasi dari satu platform ke platform yang lain. Lihat dokumentasi platform Anda untuk mengetahui anotasi yang diperlukan dan disarankan.
LihatingressGateways[].svcAnnotations
di referensi Properti konfigurasi. - SVC_LOAD_BALANCER_IP (opsional) Memungkinkan Anda menetapkan alamat IP statis untuk load balancer. Pada platform yang mendukung penentuan alamat IP load balancer, load
balancer akan dibuat dengan alamat IP ini. Di platform yang tidak mengizinkan Anda menentukan alamat IP load balancer, properti ini akan diabaikan.
Jika Anda tidak memiliki alamat IP statis yang dialokasikan untuk load balancer, hapus properti ini dari file penggantian.
LihatingressGateways[].svcLoadBalancerIP
di referensi Properti konfigurasi.
Lakukan perubahan tambahan pada file penggantian untuk mengaktifkan atau menonaktifkan fitur v1.8 opsional
Tambahkan properti berikut ke file overrides.yaml
untuk mengaktifkan fitur baru di
hybrid v1.8. Fitur ini bersifat opsional.
- UDCA cakupan organisasi kini aktif secara default. Menggunakan satu deployment UDCA untuk menangani traffic untuk semua lingkungan
mencegah penggunaan pod UDCA yang kurang dan meningkatkan ketersediaan resource node untuk komponen Apigee lainnya.
UDCA cakupan organisasi menggunakan satu akun layanan untuk semua lingkungan,
apigee-udca
.Jika Anda menggunakan akun layanan yang berbeda untuk UDCA di lingkungan yang berbeda, perhatikan bahwa akun layanan tersebut kini akan menggunakan akun layanan yang ditentukan di tingkat organisasi dalam file penggantian Anda dengan
udca:serviceAccountPath
, bukan akun layanan yang ditentukan di tingkat lingkungan denganenvs:udca:serviceAccountPath
.Apigee hybrid v 1.8 mendukung UDCA cakupan lingkungan. Untuk mempertahankan UDCA per lingkungan, tetapkan
orgScopedUDCA: false
.Lihat
orgScopedUDCA
dalam referensi Properti konfigurasi. - Aktifkan
validateOrg
untuk mewajibkan validasi ketat bahwa organisasi dan lingkungan Apigee aktif serta berfungsi dengan project Google Cloud Platform yang ditentukan dalam fileoverrides
Anda.validateOrg: true
Menginstal runtime hybrid 1.8.8
- Pastikan Anda berada di direktori dasar campuran (induk direktori tempat
file yang dapat dieksekusi
apigeectl
berada):cd $APIGEECTL_HOME/..
-
Download paket rilis untuk sistem operasi Anda menggunakan perintah berikut. Pastikan untuk memilih platform Anda di tabel berikut:
Linux
Linux 64 bit:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.8.8/apigeectl_linux_64.tar.gz
Mac OS
Mac 64-bit:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.8.8/apigeectl_mac_64.tar.gz
Windows
Windows 64-bit:
curl -LO ^ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.8.8/apigeectl_windows_64.zip
- Ubah nama direktori
apigeectl/
Anda saat ini menjadi nama direktori cadangan. Misalnya:Linux
mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.7/
Mac OS
mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.7/
Windows
rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.7
-
Ekstrak konten file gzip yang didownload ke direktori dasar campuran Anda. Direktori dasar campuran adalah direktori tempat direktori
apigeectl-v1.7
yang diganti namanya berada:Linux
tar xvzf filename.tar.gz -C ./
Mac OS
tar xvzf filename.tar.gz -C ./
Windows
tar xvzf filename.zip -C ./
-
Secara default, konten tar diperluas ke dalam direktori dengan versi dan platform dalam namanya. Misalnya:
./apigeectl_1.8.8-xxxxxxx_linux_64
. Ganti nama direktori tersebut menjadiapigeectl
menggunakan perintah berikut:Linux
mv apigeectl_1.8.8-xxxxxxx_linux_64 apigeectl
Mac OS
mv apigeectl_1.8.8-xxxxxxx_mac_64 apigeectl
Windows
rename apigeectl_1.8.8-xxxxxxx_windows_64 apigeectl
-
Ubah ke direktori
apigeectl
:cd ./apigeectl
Direktori ini adalah direktori utama
apigeectl
. Di sinilah perintah yang dapat dieksekusiapigeectl
berada. - Petunjuk ini menggunakan variabel lingkungan
$APIGEECTL_HOME
untuk direktori dalam sistem file tempat utilitasapigeectl
diinstal. Jika perlu, ubah direktori ke direktoriapigeectl
dan tentukan variabel dengan perintah berikut:Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Mac OS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- Verifikasi versi
apigeectl
dengan perintahversion
:./apigeectl version
Version: 1.8.8
- Pindah ke direktori
hybrid-base-directory/hybrid-files
. Direktorihybrid-files
adalah tempat file konfigurasi seperti file penggantian, sertifikat, dan akun layanan berada. Contoh:cd $APIGEECTL_HOME/../hybrid-files
- Pastikan
kubectl
ditetapkan ke konteks yang benar menggunakan perintah berikut. Konteks saat ini harus ditetapkan ke cluster tempat Anda mengupgrade Apigee hybrid.kubectl config get-contexts | grep \*
- Di direktori
hybrid-files
:-
Perbarui link simbolis berikut ke
$APIGEECTL_HOME
. Link ini memungkinkan Anda menjalankan perintahapigeectl
yang baru diinstal dari dalam direktorihybrid-files
:ln -nfs
$APIGEECTL_HOME
/tools toolsln -nfs
$APIGEECTL_HOME
/config configln -nfs
$APIGEECTL_HOME
/templates templatesln -nfs
$APIGEECTL_HOME
/plugins plugins -
Untuk memeriksa apakah symlink dibuat dengan benar, jalankan perintah berikut dan pastikan
jalur link mengarah ke lokasi yang benar:
ls -l | grep ^l
-
Perbarui link simbolis berikut ke
- Lakukan inisialisasi uji coba untuk memeriksa error:
${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client
Dengan OVERRIDES_FILE adalah nama file penggantian Anda, misalnya
./overrides/overrides.yaml
. - Jika tidak ada error, lakukan inisialisasi hybrid 1.8.8. Perintah ini juga menginstal dan mengonfigurasi gateway traffic masuk Apigee:
$APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE
- Periksa status inisialisasi:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
Jika berhasil, output akan menampilkan:
All containers ready.
Sebagai pemeriksaan lebih lanjut, Anda juga dapat menjalankan perintah ini untuk memeriksa status ApigeeDataStore:
kubectl describe apigeeds -n apigee
Pada output, cari
State: running
. - Periksa error dengan uji coba perintah
apply
menggunakan flag--dry-run
:$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --dry-run=client
- Jika tidak ada error, terapkan penggantian Anda. Pilih dan ikuti petunjuk untuk lingkungan produksi atau
lingkungan non-prod, bergantung pada penginstalan Anda.
Produksi
Untuk lingkungan produksi, Anda harus mengupgrade setiap komponen campuran satu per satu, dan memeriksa status komponen yang diupgrade sebelum melanjutkan ke komponen berikutnya.
- Pastikan Anda berada di direktori
hybrid-files
. - Terapkan penggantian untuk mengupgrade Cassandra:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --datastore
- Pemeriksaan selesai:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
Lanjutkan ke langkah berikutnya hanya jika pod sudah siap.
- Terapkan penggantian untuk mengupgrade komponen Telemetri dan periksa penyelesaiannya:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --telemetry
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- Tampilkan komponen Redis:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --redis
- Terapkan penggantian untuk mengupgrade komponen tingkat organisasi (MART, Watcher, dan Apigee
Connect) dan periksa penyelesaiannya:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --org
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- Terapkan penggantian untuk mengupgrade lingkungan Anda. Anda memiliki dua pilihan:
- Lingkungan demi lingkungan: Terapkan penggantian Anda ke satu lingkungan pada satu waktu dan periksa penyelesaiannya. Ulangi
langkah ini untuk setiap lingkungan:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --env ENV_NAME
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
Dengan ENV_NAME adalah nama lingkungan yang Anda upgrade.
- Semua lingkungan sekaligus: Terapkan penggantian Anda ke semua lingkungan sekaligus dan periksa penyelesaiannya:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --all-envs
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- Lingkungan demi lingkungan: Terapkan penggantian Anda ke satu lingkungan pada satu waktu dan periksa penyelesaiannya. Ulangi
langkah ini untuk setiap lingkungan:
- Terapkan penggantian untuk mengupgrade komponen
virtualhosts
dan periksa penyelesaiannya:$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --settings virtualhosts
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
Non-prod
Di sebagian besar lingkungan non-produksi, demo, atau eksperimental, Anda dapat menerapkan penggantian ke semua komponen sekaligus. Jika lingkungan non-produksi Anda besar dan kompleks atau sangat mirip dengan lingkungan produksi, sebaiknya gunakan petunjuk untuk mengupgrade lingkungan produksi.
- Pastikan Anda berada di direktori
hybrid-files
. $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE
- Periksa statusnya:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- Pastikan Anda berada di direktori
Mengupgrade versi Kubernetes
Upgrade platform Kubernetes Anda ke versi yang didukung oleh hybrid 1.8. Ikuti dokumentasi platform Anda jika Anda memerlukan bantuan.
Mengalihkan traffic dari Anthos Service Mesh ke gateway masuk Apigee
Untuk mengalihkan traffic ke gateway masuk Apigee:
- Mengekspos gateway masuk Apigee. Ikuti prosedur di Mengekspos gateway masuk Apigee.
- Uji gateway masuk baru Anda dengan memanggil proxy. Idealnya, uji semua proxy penting yang saat ini telah Anda deploy.
- Untuk mengalihkan traffic, perbarui data DNS Anda agar mengarah ke alamat IP untuk gateway ingress Apigee baru Anda.
Bergantung pada penyedia DNS, Anda mungkin dapat mengalihkan traffic secara bertahap ke endpoint baru.
Tips: Anda dapat menemukan alamat IP eksternal gateway ingress Apigee dengan perintah berikut: kubectl get svc -n apigee -l app=apigee-ingressgateway
Output Anda akan terlihat seperti ini:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apigee-ingressgateway-prod-hybrid-37a39bd LoadBalancer 192.0.2.123 233.252.0.123 15021:32049/TCP,80:31624/TCP,443:30723/TCP 16h
- Pastikan semua traffic runtime berfungsi dengan memantau dasbor Anda. Hanya lanjutkan ke langkah berikutnya jika semuanya berfungsi seperti yang diharapkan. Pastikan tidak ada traffic yang melewati gateway masuk lama (Anthos Service Mesh), karena pembaruan DNS mungkin lambat diterapkan karena caching DNS.
- Untuk menghentikan Apigee agar tidak menyediakan konfigurasi ke Anthos Service Mesh, ikuti langkah-langkah di bagian Berhenti menyediakan konfigurasi ke ASM dalam panduan Mengelola gateway ingress Apigee.
- Uji ulang dan pantau traffic proxy API.
- Ikuti petunjuk dalam dokumentasi Anthos Service Mesh untuk Meng-uninstal Anthos Service Mesh dari cluster.
Mengupgrade Anthos Service Mesh ke versi 1.15
Lakukan prosedur menggunakan dokumentasi Anthos Service Mesh yang sesuai untuk platform Anda:
Petunjuk untuk menginstal dan mengonfigurasi Anthos Service Mesh berbeda-beda bergantung pada platform Anda. Platform dibagi menjadi kategori berikut:
- GKE: Cluster Google Kubernetes Engine yang berjalan di Google Cloud.
- Di luar Google Cloud: Cluster Anthos yang berjalan di:
- Cluster Anthos di VMware (GKE on-prem)
- Anthos on bare metal
- Cluster Anthos di AWS
- Amazon EKS
- Platform Kubernetes Lainnya: Cluster yang sesuai dibuat dan berjalan di:
- AKS
- EKS
- OpenShift
GKE
Urutan untuk mengupgrade ke versi Anthos Service Mesh 1.13.9 untuk penginstalan hybrid Anda adalah sebagai berikut:
- Bersiaplah untuk upgrade.
- Instal Anthos Service Mesh versi baru.
- Hapus deployment, layanan, dan webhook versi Anthos Service Mesh sebelumnya dari penginstalan saat ini.
- Upgrade gateway dan konfigurasikan webhook baru.
Bersiap untuk mengupgrade Anthos Service Mesh ke versi 1.13.9
- Tinjau persyaratan di Mengupgrade Anthos Service Mesh, tetapi jangan lakukan upgrade terlebih dahulu.
- Sebelum menginstal versi baru, tentukan revisi saat ini. Anda memerlukan informasi ini untuk menghapus deployment, layanan, dan webhook versi Anthos Service Mesh sebelumnya dari penginstalan saat ini. Gunakan perintah berikut untuk menyimpan revisi
istiod
saat ini ke variabel lingkungan:export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
echo $DELETE_REV
Output Anda akan terlihat seperti
1.12.9-asm.2
- Buat file
overlay.yaml
baru atau pastikan bahwaoverlay.yaml
yang ada berisi konten berikut:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Ikuti petunjuk di bagian berikut dalam dokumentasi Anthos Service Mesh:
- Download asmcli
- Memberikan izin admin cluster
- Memvalidasi project dan cluster
- Upgrade dengan fitur opsional. Berhenti sebelum memulai bagian "Upgrade Gateway".
- Beralih ke platform kontrol baru:
- Dapatkan label revisi yang ada di
istiod
:kubectl get pod -n istio-system -L istio.io/rev
Output dari perintah ini akan mirip dengan berikut ini.
NAME READY STATUS RESTARTS AGE REV istiod-asm-1139-10-67998f4b55-lrzpz 1/1 Running 0 68m asm-1129-0 istiod-asm-1139-10-67998f4b55-r76kr 1/1 Running 0 68m asm-1129-0 istiod-1129-0-1-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1139-10 istiod-1129-0-1-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1139-10
- Tetapkan label revisi yang lebih baru ke variabel lingkungan.
Dalam output, di kolom
REV
, catat nilai label revisi untuk versi baru. Dalam contoh ini, nilainya adalahasm-1139-10
export UPGRADE_REV="REVISION_LABEL"
- Tambahkan label revisi ke namespace
istio-system
dan hapus labelistio-injection
(jika ada) dengan perintah berikut.kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite
Jika melihat
"istio-injection not found"
dalam output, Anda dapat mengabaikannya. Artinya, namespace sebelumnya tidak memiliki labelistio-injection
. Karena injeksi otomatis gagal jika namespace memiliki labelistio-injection
dan revisi, semua perintahkubectl label
dalam dokumentasi Anthos Service Mesh menyertakan penghapusan labelistio-injection
. - Mulai ulang Pod untuk memicu injeksi ulang.
kubectl rollout restart deployment -n istio-system
- Uji aplikasi Anda untuk memverifikasi bahwa workload berfungsi dengan benar.
- Jika Anda memiliki workload di namespace lain, ulangi langkah-langkah untuk memberi label pada namespace dan memulai ulang Pod.
- Dapatkan label revisi yang ada di
- Hapus versi sebelumnya:
- Buka direktori tempat Anda menginstal
asmcli
. - Simpan direktori output untuk penginstalan Anthos Service Mesh Anda di variabel lingkungan
DIR_PATH
. Ini adalah direktori yang sama dengan yang Anda tentukan dalam prosedur Upgrade dengan fitur opsional.export DIR_PATH=OUTPUT_DIR
- Buat skrip shell yang berisi perintah berikut:
#!/bin/bash set -ex if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f ${DIR_PATH}/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- Jalankan skrip untuk menghapus versi sebelumnya.
- Buka direktori tempat Anda menginstal
Di luar Google Cloud
Petunjuk ini mencakup upgrade Anthos Service Mesh di:
- Cluster Anthos di VMware (GKE on-prem)
- Anthos on bare metal
- Cluster Anthos di AWS
- Amazon EKS
Urutan untuk mengupgrade ke versi Anthos Service Mesh 1.13.9 untuk penginstalan hybrid Anda adalah sebagai berikut:
- Bersiaplah untuk upgrade.
- Instal Anthos Service Mesh versi baru.
- Hapus deployment, layanan, dan webhook versi Anthos Service Mesh sebelumnya dari penginstalan saat ini.
- Upgrade gateway dan konfigurasikan webhook baru.
Bersiap untuk mengupgrade Anthos Service Mesh ke versi 1.13.9
- Tinjau persyaratan di Mengupgrade Anthos Service Mesh, tetapi jangan lakukan upgrade terlebih dahulu.
- Sebelum menginstal versi baru, tentukan revisi saat ini. Anda memerlukan informasi ini untuk menghapus deployment, layanan, dan webhook versi Anthos Service Mesh sebelumnya dari penginstalan saat ini. Gunakan perintah berikut untuk menyimpan revisi
istiod
saat ini ke variabel lingkungan:export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
echo $DELETE_REV
Output Anda akan terlihat seperti
1.12.9-asm.2
- Buat file
overlay.yaml
baru atau pastikan bahwaoverlay.yaml
yang ada berisi konten berikut:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 values: gateways: istio-ingressgateway: runAsRoot: true meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Ikuti petunjuk di bagian berikut dalam dokumentasi Anthos Service Mesh:
- Download asmcli
- Memberikan izin admin cluster
- Memvalidasi project dan cluster
- Upgrade dengan fitur opsional. Berhenti sebelum memulai bagian "Upgrade Gateway".
- Beralih ke platform kontrol baru:
- Dapatkan label revisi yang ada di
istiod
:kubectl get pod -n istio-system -L istio.io/rev
Output dari perintah ini akan mirip dengan berikut ini.
NAME READY STATUS RESTARTS AGE REV istiod-asm-1139-10-67998f4b55-lrzpz 1/1 Running 0 68m asm-1129-0 istiod-asm-1139-10-67998f4b55-r76kr 1/1 Running 0 68m asm-1129-0 istiod-1129-0-1-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1139-10 istiod-1129-0-1-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1139-10
- Tetapkan label revisi yang lebih baru ke variabel lingkungan.
Dalam output, di kolom
REV
, catat nilai label revisi untuk versi baru. Dalam contoh ini, nilainya adalahasm-1139-10
export UPGRADE_REV="REVISION_LABEL"
- Tambahkan label revisi ke namespace
istio-system
dan hapus labelistio-injection
(jika ada) dengan perintah berikut.kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite
Jika melihat
"istio-injection not found"
dalam output, Anda dapat mengabaikannya. Artinya, namespace sebelumnya tidak memiliki labelistio-injection
. Karena injeksi otomatis gagal jika namespace memiliki labelistio-injection
dan revisi, semua perintahkubectl label
dalam dokumentasi Anthos Service Mesh menyertakan penghapusan labelistio-injection
. - Mulai ulang Pod untuk memicu injeksi ulang.
kubectl rollout restart deployment -n istio-system
- Uji aplikasi Anda untuk memverifikasi bahwa workload berfungsi dengan benar.
- Jika Anda memiliki workload di namespace lain, ulangi langkah-langkah untuk memberi label pada namespace dan memulai ulang Pod.
- Dapatkan label revisi yang ada di
- Hapus versi sebelumnya:
- Buka direktori tempat Anda menginstal
asmcli
. - Simpan direktori output untuk penginstalan Anthos Service Mesh Anda di variabel lingkungan
DIR_PATH
. Ini adalah direktori yang sama dengan yang Anda tentukan dalam prosedur Upgrade dengan fitur opsional.export DIR_PATH=OUTPUT_DIR
- Buat skrip shell yang berisi perintah berikut:
#!/bin/bash set -ex if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f ${DIR_PATH}/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- Jalankan skrip untuk menghapus versi sebelumnya.
- Buka direktori tempat Anda menginstal
AKS / EKS
Dalam petunjuk ini, proses mengupgrade Anthos Service Mesh (Anthos Service Mesh) versi istio-1.13.9-asm.10 di cluster yang terpasang Anthos sama dengan melakukan penginstalan baru.
Bersiap untuk menginstal Anthos Service Mesh
- Sebelum menginstal versi baru, tentukan revisi saat ini. Anda memerlukan
informasi ini untuk menghapus webhook validasi dan webhook mutasi
dari penginstalan Anthos Service Mesh saat ini. Gunakan perintah berikut untuk menyimpan revisi
istiod
saat ini ke variabel lingkungan:export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
echo $DELETE_REV
Output Anda akan terlihat seperti
1.12.9-asm.2
- Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-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.13.9-asm.10-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.13.9-asm.10-linux-amd64.tar.gz.1.sig istio-1.13.9-asm.10.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Ekstrak konten file ke lokasi mana pun pada sistem file Anda. Misalnya,
untuk mengekstrak konten ke direktori kerja saat ini:
tar xzf istio-1.13.9-asm.10-linux-amd64.tar.gz
Perintah ini membuat direktori penginstalan di direktori kerja saat ini yang bernama
istio-1.13.9-asm.10
yang berisi:- Contoh aplikasi di direktori
samples
. - Alat command line
istioctl
yang Anda gunakan untuk menginstal Anthos Service Mesh berada 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.13.9-asm.10
- Untuk memudahkan, tambahkan alat di direktori
/bin
kePATH
Anda:export PATH=$PWD/bin:$PATH
- Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-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.13.9-asm.10-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.13.9-asm.10-osx.tar.gz.1.sig istio-1.13.9-asm.10.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Ekstrak konten file ke lokasi mana pun pada sistem file Anda. Misalnya,
untuk mengekstrak konten ke direktori kerja saat ini:
tar xzf istio-1.13.9-asm.10-osx.tar.gz
Perintah ini membuat direktori penginstalan di direktori kerja saat ini yang bernama
istio-1.13.9-asm.10
yang berisi:- Contoh aplikasi di direktori
samples
. - Alat command line
istioctl
yang Anda gunakan untuk menginstal Anthos Service Mesh berada 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.13.9-asm.10
- Untuk memudahkan, tambahkan alat di direktori
/bin
kePATH
Anda:export PATH=$PWD/bin:$PATH
- Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-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.13.9-asm.10-win.zip.1.sig
openssl dgst -verify - -signature istio-1.13.9-asm.10-win.zip.1.sig istio-1.13.9-asm.10.win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Ekstrak konten file ke lokasi mana pun pada sistem file Anda. Misalnya,
untuk mengekstrak konten ke direktori kerja saat ini:
tar xzf istio-1.13.9-asm.10-win.zip
Perintah ini membuat direktori penginstalan di direktori kerja saat ini yang bernama
istio-1.13.9-asm.10
yang berisi:- Contoh aplikasi di direktori
samples
. - Alat command line
istioctl
yang Anda gunakan untuk menginstal Anthos Service Mesh berada 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.13.9-asm.10
- Untuk memudahkan, tambahkan alat di direktori \bin ke PATH Anda:
set PATH=%CD%\bin:%PATH%
- Setelah Anthos Service Mesh Istio diinstal, periksa versi
istioctl
:istioctl version
- Buat namespace bernama istio-system untuk komponen bidang kontrol:
kubectl create namespace istio-system
Linux
Mac OS
Windows
Menginstal Anthos Service Mesh
- Edit file
overlay.yaml
atau buat file baru dengan konten berikut:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: accessLogFile: /dev/stdout enableTracing: true accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}' components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: service: type: LoadBalancer ports: - name: status-port port: 15021 targetPort: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443
- Instal Anthos Service Mesh dengan
istioctl
menggunakan profilasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1139-10" \ --filename overlay.yaml
Output Anda akan terlihat seperti ini:
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod-asm-1139-10-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1139-10-798ffb964-fnj8c 1/1 Running 1 3m21s
Argumen
--set revision
menambahkan label revisi dalam formatistio.io/rev=asm-1139-10
keistiod
. Label revisi digunakan oleh webhook injector sidecar otomatis untuk mengaitkan sidecar yang dimasukkan dengan revisiistiod
tertentu. Untuk mengaktifkan injeksi otomatis sidecar untuk namespace, Anda harus memberi label dengan revisi yang cocok dengan label diistiod
. - Pastikan penginstalan Anda selesai:
kubectl get svc -n istio-system
Output Anda akan terlihat seperti ini:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod-asm-1139-10 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
- Beralih ke platform kontrol baru:
- Dapatkan label revisi yang ada di
istiod
:kubectl get pod -n istio-system -L istio.io/rev
Output dari perintah ini akan mirip dengan berikut ini.
NAME READY STATUS RESTARTS AGE REV istiod-asm-1139-10-67998f4b55-lrzpz 1/1 Running 0 68m asm-1129-0 istiod-asm-1139-10-67998f4b55-r76kr 1/1 Running 0 68m asm-1129-0 istiod-1129-0-1-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1139-10 istiod-1129-0-1-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1139-10
- Tetapkan label revisi yang lebih baru ke variabel lingkungan.
Dalam output, di kolom
REV
, catat nilai label revisi untuk versi baru. Dalam contoh ini, nilainya adalahasm-1139-10
export UPGRADE_REV="REVISION_LABEL"
- Tambahkan label revisi ke namespace
istio-system
dan hapus labelistio-injection
(jika ada) dengan perintah berikut.kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite
Jika melihat
"istio-injection not found"
dalam output, Anda dapat mengabaikannya. Artinya, namespace sebelumnya tidak memiliki labelistio-injection
. Karena injeksi otomatis gagal jika namespace memiliki labelistio-injection
dan revisi, semua perintahkubectl label
dalam dokumentasi Anthos Service Mesh menyertakan penghapusan labelistio-injection
. - Mulai ulang Pod untuk memicu injeksi ulang.
kubectl rollout restart deployment -n istio-system
- Uji aplikasi Anda untuk memverifikasi bahwa workload berfungsi dengan benar.
- Jika Anda memiliki workload di namespace lain, ulangi langkah-langkah untuk memberi label pada namespace dan memulai ulang Pod.
- Dapatkan label revisi yang ada di
- Hapus versi sebelumnya:
- Buka direktori tempat Anda menginstal
asmcli
. - Buat skrip shell yang berisi perintah berikut:
#!/bin/bash set -ex if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- Jalankan skrip untuk menghapus versi sebelumnya.
- Buka direktori tempat Anda menginstal
OpenShift
Dalam petunjuk ini, proses mengupgrade Anthos Service Mesh (Anthos Service Mesh) versi istio-1.13.9-asm.10 di cluster yang terpasang Anthos sama dengan melakukan penginstalan baru.
Bersiap untuk menginstal Anthos Service Mesh
- Sebelum menginstal versi baru, tentukan revisi saat ini. Anda memerlukan
informasi ini untuk menghapus webhook validasi dan webhook mutasi
dari penginstalan Anthos Service Mesh saat ini. Gunakan perintah berikut untuk menyimpan revisi
istiod
saat ini ke variabel lingkungan:export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
echo $DELETE_REV
Output Anda akan terlihat seperti
1.12.9-asm.2
- Berikan batasan konteks keamanan (SCC)
anyuid
ke istio-system dengan perintah OpenShift CLI (oc
) berikut:oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-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.13.9-asm.10-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.13.9-asm.10-linux-amd64.tar.gz.1.sig istio-1.13.9-asm.10.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Ekstrak konten file ke lokasi mana pun pada sistem file Anda. Misalnya,
untuk mengekstrak konten ke direktori kerja saat ini:
tar xzf istio-1.13.9-asm.10-linux-amd64.tar.gz
Perintah ini membuat direktori penginstalan di direktori kerja saat ini yang bernama
istio-1.13.9-asm.10
yang berisi:- Contoh aplikasi di direktori
samples
. - Alat command line
istioctl
yang Anda gunakan untuk menginstal Anthos Service Mesh berada 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.13.9-asm.10
- Untuk memudahkan, tambahkan alat di direktori
/bin
kePATH
Anda:export PATH=$PWD/bin:$PATH
- Berikan batasan konteks keamanan (SCC)
anyuid
ke istio-system dengan perintah OpenShift CLI (oc
) berikut:oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-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.13.9-asm.10-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.13.9-asm.10-osx.tar.gz.1.sig istio-1.13.9-asm.10.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Ekstrak konten file ke lokasi mana pun pada sistem file Anda. Misalnya,
untuk mengekstrak konten ke direktori kerja saat ini:
tar xzf istio-1.13.9-asm.10-osx.tar.gz
Perintah ini membuat direktori penginstalan di direktori kerja saat ini yang bernama
istio-1.13.9-asm.10
yang berisi:- Contoh aplikasi di direktori
samples
. - Alat command line
istioctl
yang Anda gunakan untuk menginstal Anthos Service Mesh berada 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.13.9-asm.10
- Untuk memudahkan, tambahkan alat di direktori
/bin
kePATH
Anda:export PATH=$PWD/bin:$PATH
- Berikan batasan konteks keamanan (SCC)
anyuid
ke istio-system dengan perintah OpenShift CLI (oc
) berikut:oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-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.13.9-asm.10-win.zip.1.sig
openssl dgst -verify - -signature istio-1.13.9-asm.10-win.zip.1.sig istio-1.13.9-asm.10.win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Ekstrak konten file ke lokasi mana pun pada sistem file Anda. Misalnya,
untuk mengekstrak konten ke direktori kerja saat ini:
tar xzf istio-1.13.9-asm.10-win.zip
Perintah ini membuat direktori penginstalan di direktori kerja saat ini yang bernama
istio-1.13.9-asm.10
yang berisi:- Contoh aplikasi di direktori
samples
. - Alat command line
istioctl
yang Anda gunakan untuk menginstal Anthos Service Mesh berada 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.13.9-asm.10
- Untuk memudahkan, tambahkan alat di direktori \bin ke PATH Anda:
set PATH=%CD%\bin:%PATH%
- Setelah Anthos Service Mesh Istio diinstal, periksa versi
istioctl
:istioctl version
- Buat namespace bernama istio-system untuk komponen bidang kontrol:
kubectl create namespace istio-system
Linux
Mac OS
Windows
Mengonfigurasi webhook validasi
Saat menginstal Anthos Service Mesh, Anda menetapkan label revisi di istiod
. Anda harus menetapkan revisi yang sama di webhook yang memvalidasi.
- Buat file bernama
istiod-service.yaml
dengan konten berikut:apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1139-10 app: istiod istio: pilot release: istio spec: ports: - port: 15010 name: grpc-xds # plaintext protocol: TCP - port: 15012 name: https-dns # mTLS with k8s-signed cert protocol: TCP - port: 443 name: https-webhook # validation and injection targetPort: 15017 protocol: TCP - port: 15014 name: http-monitoring # prometheus stats protocol: TCP selector: app: istiod istio.io/rev: asm-1139-10 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Gunakan
kubectl
untuk menerapkan konfigurasi webhook validasi:kubectl apply -f istiod-service.yaml
- Verifikasi bahwa konfigurasi telah diterapkan:
kubectl get svc -n istio-system
Responsnya akan terlihat seperti:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 22s
Menginstal Anthos Service Mesh
- Edit file
overlay.yaml
atau buat file baru dengan konten berikut:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: accessLogFile: /dev/stdout enableTracing: true accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}' components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: service: type: LoadBalancer ports: - name: status-port port: 15021 targetPort: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443
- Instal Anthos Service Mesh dengan
istioctl
menggunakan profilasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1139-10" \ --filename overlayfile.yaml
Output Anda akan terlihat seperti ini:
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod-asm-1139-10-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1139-10-798ffb964-fnj8c 1/1 Running 1 3m21s
Argumen
--set revision
menambahkan label revisi dalam formatistio.io/rev=1.6.11-asm.1
keistiod
. Label revisi digunakan oleh webhook injector sidecar otomatis untuk mengaitkan sidecar yang dimasukkan dengan revisiistiod
tertentu. Untuk mengaktifkan injeksi otomatis sidecar untuk namespace, Anda harus memberi label dengan revisi yang cocok dengan label diistiod
. - Pastikan penginstalan Anda selesai:
kubectl get svc -n istio-system
Output Anda akan terlihat seperti ini:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod-asm-1139-10 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
- Beralih ke platform kontrol baru:
- Dapatkan label revisi yang ada di
istiod
:kubectl get pod -n istio-system -L istio.io/rev
Output dari perintah ini akan mirip dengan berikut ini.
NAME READY STATUS RESTARTS AGE REV istiod-asm-1139-10-67998f4b55-lrzpz 1/1 Running 0 68m asm-1129-0 istiod-asm-1139-10-67998f4b55-r76kr 1/1 Running 0 68m asm-1129-0 istiod-1129-0-1-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1139-10 istiod-1129-0-1-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1139-10
- Tetapkan label revisi yang lebih baru ke variabel lingkungan.
Dalam output, di kolom
REV
, catat nilai label revisi untuk versi baru. Dalam contoh ini, nilainya adalahasm-1139-10
export UPGRADE_REV="REVISION_LABEL"
- Tambahkan label revisi ke namespace
istio-system
dan hapus labelistio-injection
(jika ada) dengan perintah berikut.kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite
Jika melihat
"istio-injection not found"
dalam output, Anda dapat mengabaikannya. Artinya, namespace sebelumnya tidak memiliki labelistio-injection
. Karena injeksi otomatis gagal jika namespace memiliki labelistio-injection
dan revisi, semua perintahkubectl label
dalam dokumentasi Anthos Service Mesh menyertakan penghapusan labelistio-injection
. - Mulai ulang Pod untuk memicu injeksi ulang.
kubectl rollout restart deployment -n istio-system
- Uji aplikasi Anda untuk memverifikasi bahwa workload berfungsi dengan benar.
- Jika Anda memiliki workload di namespace lain, ulangi langkah-langkah untuk memberi label pada namespace dan memulai ulang Pod.
- Dapatkan label revisi yang ada di
- Hapus versi sebelumnya:
- Buka direktori tempat Anda menginstal
asmcli
. - Buat skrip shell yang berisi perintah berikut:
#!/bin/bash set -ex if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- Jalankan skrip untuk menghapus versi sebelumnya.
- Buka direktori tempat Anda menginstal
Me-roll back upgrade
Ikuti langkah-langkah berikut untuk melakukan roll back upgrade sebelumnya:
- Bersihkan tugas yang telah selesai untuk namespace runtime campuran, dengan NAMESPACE adalah
namespace yang ditentukan dalam file penggantian, jika Anda menentukan namespace. Jika tidak, namespace defaultnya adalah
apigee
:kubectl delete job -n NAMESPACE \ $(kubectl get job -n NAMESPACE \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- Bersihkan tugas yang telah selesai untuk namespace
apigee-system
:kubectl delete job -n apigee-system \ $(kubectl get job -n apigee-system \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- Ubah variabel
APIGEECTL_HOME
agar mengarah ke direktori yang berisiapigeectl
versi sebelumnya. Contoh:export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
- Urungkan perubahan pada file
overrides
Anda:- Hapus atau jadikan
ingressGateways
dan semua propertinya sebagai komentar. - Tetapkan nilai
virtualhosts.selector.app
ke nilai sebelumnya, misalnya:virtualhosts: - name: my-env-group selector: app: istio-ingressgateway
- Hapus atau jadikan
ao.args.disableIstioConfigInAPIServer
sebagai komentar.
- Hapus atau jadikan
- Di direktori root penginstalan yang ingin Anda kembalikan, jalankan
apigeectl apply
, periksa status pod, lalu jalankanapigeectl init
. Pastikan untuk menggunakan file penggantian asli untuk versi yang ingin Anda rollback:- Di direktori hybrid-files, jalankan
apigeectl apply
:$APIGEECTL_HOME
/apigeectl apply -f ORIGINAL_OVERRIDES_FILEDengan ORIGINAL_OVERRIDES_FILE adalah jalur relatif dan nama file penggantian untuk penginstalan campuran versi sebelumnya, misalnya,
./overrides/overrides1.7.yaml
. - Periksa status pod Anda:
kubectl -n NAMESPACE get pods
Dengan NAMESPACE adalah namespace hybrid Apigee Anda.
- Periksa status
apigeeds
:kubectl describe apigeeds -n apigee
Output Anda akan terlihat seperti ini:
Status: Cassandra Data Replication: Cassandra Pod Ips: 10.8.2.204 Cassandra Ready Replicas: 1 Components: Cassandra: Last Successfully Released Version: Revision: v1-f8aa9a82b9f69613 Version: v1 Replicas: Available: 1 Ready: 1 Total: 1 Updated: 1 State: running Scaling: In Progress: false Operation: Requested Replicas: 0 State: running
Lanjutkan ke langkah berikutnya hanya jika pod
apigeeds
sedang berjalan. - Jalankan perintah berikut untuk mencatat nilai jumlah replika baru untuk
pemroses pesan setelah upgrade.Jika nilai ini tidak cocok dengan yang telah Anda tetapkan
sebelumnya, ubah nilai dalam file penggantian agar cocok dengan konfigurasi
sebelumnya.
apigeectl apply -f ORIGINAL_OVERRIDES_FILE --dry-run=client --print-yaml --env ENV_NAME 2>/dev/null |grep "runtime:" -A 25 -B 1| grep "autoScaler" -A 2
Output Anda akan terlihat seperti ini:
autoScaler: minReplicas: 2 maxReplicas: 10
-
Jika Anda melakukan rollback ke hybrid v1.8.4 atau yang lebih lama, hapus deployment pengontrol yang digunakan oleh hybrid v1.8.5 dan yang lebih baru:
kubectl -n apigee-system delete deploy apigee-controller-manager
- Jalankan
apigeectl init
:$APIGEECTL_HOME
/apigeectl init -f ORIGINAL_OVERRIDES_FILE
- Di direktori hybrid-files, jalankan
- Hapus deployment pengelola gateway ingress Apigee. Komponen ini hanya relevan untuk Apigee hybrid versi 1.8 dan yang lebih baru.
kubectl delete deployment -n NAMESPACE apigee-ingress-gateway-manager
Dengan NAMESPACE adalah namespace hybrid Apigee Anda.