Upgrade ke ringkasan versi 1.3.6.
Prosedur untuk mengupgrade Apigee Hybrid diatur di bagian berikut:
- Persiapan
- Membuat dan memperbarui akun layanan.
- Merencanakan grup lingkungan.
- Salin dan perbarui file pengganti.
- Upgrade Istio dan pengelola sertifikat.
- Instal runtime hybrid versi 1.3.
- Jalankan pembersihan.
Prasyarat
- Apigee hybrid versi 1.2. Jika Anda mengupdate dari versi sebelumnya, lihat petunjuk untuk Mengupgrade Apigee Hybrid ke versi 1.2.
Persiapan
- (Direkomendasikan) Buat salinan cadangan direktori
$APIGEECTL_HOME/
versi 1.2 Anda. Contoh:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.2-backup.tar.gz $APIGEECTL_HOME
- (Direkomendasikan) Cadangkan database Cassandra dengan mengikuti petunjuk di Pencadangan dan pemulihan Cassandra
- Upgrade platform Kubernetes Anda sebagai berikut. Ikuti dokumentasi platform Anda jika
Anda memerlukan bantuan:
Platform Upgrade ke versi GKE 1,15.x Anthos 1,5 AKS 1.16.x menggunakan Anthos cluster terpasang - Jika Anda tidak menggunakan Apigee Connect dalam penginstalan hybrid, aktifkan Apigee
Hubungkan.
- Periksa apakah Apigee Connect API telah diaktifkan:
gcloud services list | grep apigeeconnect apigeeconnect.googleapis.com Apigee Connect API
- Jika tidak, aktifkan API:
gcloud services enable apigeeconnect.googleapis.com --project $PROJECT_ID
Dengan $PROJECT_ID sebagai project ID Google Cloud Anda.
-
Pada command line, dapatkan kredensial autentikasi
gcloud
, seperti yang ditunjukkan contoh berikut:TOKEN=$(gcloud auth print-access-token)
Untuk memeriksa apakah token Anda telah diisi, gunakan
echo
, seperti yang ditunjukkan pada contoh berikut:echo $TOKEN
Tindakan ini akan menampilkan token Anda sebagai string yang dienkode.
Untuk informasi selengkapnya, lihat Ringkasan alat command line gcloud.
- Periksa apakah Apigee Connect diaktifkan untuk organisasi Anda:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"
Dengan $ORG_NAME adalah ID organisasi Anda.
Jika output berisi:
"name" : "features.mart.connect.enabled", "value" : "true"
Apigee Connect diaktifkan.
- Jika Apigee Connect tidak diaktifkan, tetapkan peran Agen Apigee Connect ke layanan MART
akun:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/apigeeconnect.Agent
- Aktifkan Apigee Connect dengan perintah berikut:
curl -H "Authorization: Bearer $TOKEN" -X PUT \ -H "Content-Type: application/json" \ -d '{ "name" : "'"$ORG_NAME"'", "properties" : { "property" : [ { "name" : "features.hybrid.enabled", "value" : "true" }, { "name" : "features.mart.connect.enabled", "value" : "true" } ] } }' \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"
Jika output berisi dua properti berikut, Apigee Connect berhasil diaktifkan:
{ "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" }
- Periksa apakah Apigee Connect API telah diaktifkan:
- Buat akun layanan
apigee-watcher
. Apigee Watcher adalah akun layanan baru yang diperkenalkan di v1.3. {i>Firewall<i} menjalankan sinkronisasi untuk perubahan tingkat organisasi dan menerapkan perubahan tersebut untuk mengonfigurasi traffic masuk Istio.Dari direktori hybrid utama Anda:
./tools/create-service-account apigee-watcher ./service-accounts
- Tetapkan peran Agen Runtime Apigee ke akun layanan Watcher:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/apigee.runtimeAgent
Dengan
PROJECT_ID
adalah ID project Google Cloud Anda. Jika layanan Anda alamat email akun Anda berbeda dari pola ini, ganti dengan yang sesuai.Output harus menyertakan daftar semua akun layanan dan perannya, termasuk:
... - members: - serviceAccount:apigee-watcher@hybrid13rc5.iam.gserviceaccount.com role: roles/apigee.runtimeAgent ...
- Rencanakan grup lingkungan Anda untuk pemilihan rute.
Apigee Hybrid 1.3 mengelola perutean jalur dasar dengan grup lingkungan, bukan
routingRules
. Jika Anda menggunakanroutingRules
dalam sistem hybrid konfigurasi, grup lingkungan desain untuk mereplikasi {i>routing<i} Anda.Anda harus membuat setidaknya satu grup lingkungan.
Lihat Tentang grup lingkungan.
- Perbarui file penggantian:
- Buat salinan file penggantian Anda.
- Update stanza gcp dan k8sCluster.
Properti konfigurasi berikut telah diganti dalam versi hybrid 1.3:
gcpRegion
diganti dengangcp:region
gcpProjectID
diganti dengangcp:projectID
gcpProjectIDRuntime
diganti dengangcp:gcpProjectIDRuntime
k8sClusterName
diganti dengank8s:clusterName
k8sClusterRegion
diganti dengank8s:clusterRegion
Misalnya, ganti struktur berikut:
gcpRegion: gcp region gcpProjectID: gcp project ID gcpProjectIDRuntime: gcp project ID k8sClusterName: name k8sClusterRegion: region
with:
gcp: projectID: gcp project ID region: gcp region gcpProjectIDRuntime: gcp project ID # optional. This is only required if you # want logger/metrics data to be sent in # different gcp project. k8sCluster: name: gcp project ID region: gcp region
- Jika Anda belum memiliki ID instance unik di file penggantian, tambahkan ID:
# unique identifier for this installation. 63 chars length limit instanceID: ID
Dengan ID adalah ID unik untuk penginstalan hybrid ini, seperti "
my-hybrid-131-installation
" atau "acmecorp-hybrid-131
". - Tambahkan akun layanan Watcher (
apigee-watcher
) ke file yang diganti:# Note: the SA should have the "Apigee Runtime Agent" role watcher: serviceAccountPath: "service account file"
- Tambahkan akun layanan Metrik (
apigee-metrics
) ke file penggantian:metrics: serviceAccountPath: "service account file"
- Perbarui stanza
virtualhosts:
untuk menggantiroutingRules
dengan {i>environment group<i}.-name:
Ganti nama dengan nama grup lingkungan Anda. Anda dapat memiliki beberapa entri nama, satu untuk setiap grup lingkungan.hostAliases:[]
Hapus baris ini.- Simpan (atau tambahkan) entri
sslCertPath:
dansslKeyPath:
. - Hapus semua entri
routingRules
.
Contoh:
virtualhosts: - name: default hostAliases: - "*.acme.com" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key routingRules: - paths: - /foo - /bar - env: my-environment
Menjadi:
virtualhosts: - name: example-env-group sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key
- Perbarui stanza
mart
danconnectAgent:
.- Di bagian
mart:
, hapushostAlias:
,sslCertPath:
, dansslKeyPath:
entri. - Tambahkan stanza
connectAgent:
. - Di bagian
connectAgent:
, tambahkan entriserviceAccountPath:
dan berikan jalur ke file akun layanan yang memiliki peran Agen Apigee Connect yang ditetapkan (biasanya akun layanan MART).
Contoh:
mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key
Menjadi:
mart: serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json connectAgent: serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json
- Di bagian
Mengupgrade Istio dan cert-manager
Apigee Hybrid versi 1.3 memerlukan cert-manager v0.14.2 untuk mengelola dan memverifikasi sertifikat dan Distribusi Istio yang disediakan dengan Anthos Service Mesh (ASM) versi 1.5.7 (atau yang lebih baru) untuk membuat dan mengelola di gateway masuknya runtime.
Mengupgrade Istio 1.4.6 ke ASM 1.5.7 (atau yang lebih baru)
- Untuk meminimalkan periode nonaktif, deployment Istio dan HPA harus memiliki minimal dua replika.
Jalankan perintah berikut untuk menentukan jumlah replika:
kubectl -n istio-system get deployments # list of deployments
kubectl -n istio-system get hpa # list of hpa
- Edit setiap deployment yang hanya memiliki satu replika dan tingkatkan
replicas:
menjadi2
atau lebih:kubectl -n istio-system edit deployment name
Contoh:
spec: progressDeadlineSeconds: 600 replicas: 2
- Edit setiap HPA yang hanya memiliki satu replika dan tingkatkan
minReplicas:
menjadi2
atau lebih:kubectl -n istio-system edit hpa name
Contoh:
spec: maxReplicas: 5 minReplicas: 2
- Download dan instal ASM dengan mengikuti petunjuk penginstalan di Mendownload dan menginstal ASM.
- Setelah penginstalan, jalankan perintah versi untuk memastikan Anda telah menginstal 1.5.x dengan benar:
./bin/istioctl version client version: 1.5.8-asm.0 apigee-mart-ingressgateway version: citadel version: 1.4.6 galley version: 1.4.6 ingressgateway version: 1.5.8-asm.0 pilot version: 1.4.6 policy version: 1.4.6 sidecar-injector version: 1.4.6 telemetry version: 1.4.6 pilot version: 1.5.8-asm.0 data plane version: 1.4.6 (1 proxies), 1.5.8-asm.0 (2 proxies)
Upgrade pengelola sertifikat
- Hapus deployment cert-manager saat ini:
kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
- Verifikasi versi Kubernetes Anda:
kubectl version
- Jalankan perintah berikut untuk menginstal cert-manager dari Jetstack:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.14.2/cert-manager.yaml
Menginstal runtime hybrid
- Simpan nomor versi terbaru dalam variabel:
export VERSION=$(curl -s \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/current-version.txt?ignoreCache=1)
- Pastikan variabel telah diisi dengan nomor versi. Jika Anda ingin menggunakan
, Anda dapat menyimpannya dalam variabel lingkungan. Contoh:
echo $VERSION 1.3.6
Download paket rilis untuk sistem operasi Anda:
Mac 64 bit:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_mac_64.tar.gz
Linux 64 bit:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_linux_64.tar.gz
Mac 32 bit:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_mac_32.tar.gz
Linux 32 bit:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_linux_32.tar.gz
- Ganti nama direktori
apigeectl/
Anda saat ini menjadi nama direktori cadangan. Contoh:mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/
-
Ekstrak konten file gzip yang didownload ke direktori hybrid base Anda. Contoh:
tar xvzf filename.tar.gz -C hybrid-base-directory
cd
ke direktori dasar.-
Konten {i>tar<i} secara default diperluas ke direktori dengan versi dan platform di nama. Misalnya:
./apigeectl_1.0.0-f7b96a8_linux_64
. Mengganti nama direktori tersebut keapigeectl
:mv apigeectl_1.0.0-f7b96a8_linux_64 apigeectl
- Hapus tugas
apigee-resources-install
dariapigee-system
:kubectl -n apigee-system delete job apigee-resources-install
- Hapus CRD lama:
kubectl delete crd apigeetelemetries.apigee.cloud.google.com
- Perbarui stanza
cassandra:
di file penggantian dengan perintahexternalSeedHost
. Properti ini akan membantu memastikan campuran baru Anda penginstalan versi 1.3.6 akan menggunakan cluster Kubernetes yang sama dengan penginstalan versi 1.2. Ini adalah langkah satu kali yang diperlukan hanya untuk upgrade dari hybrid versi 1.2 ke versi 1.3.6 (atau yang lebih baru).- Menemukan salah satu alamat IP Cassandra yang ada di cluster Kubernetes yang sama dengan
Anda meng-upgrade instalasi 1.2.0.
kubectl -n namespace get pods -o wide
Dengan namespace adalah namespace hybrid Apigee Anda.
Catat alamat IP node Cassandra. Contoh:
kubectl -n apigee get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE apigee-cassandra-0 1/1 Running 0 33d 10.68.8.24 gke-example-cluster-rc5-apigee-data-c8bf1234-09kc apigee-cassandra-1 1/1 Running 0 16d 10.68.8.33 gke-example-cluster-rc5-apigee-data-c9221ee7-10kc apigee-cassandra-2 1/1 Running 0 23h 10.68.9.11 gke-example-cluster-rc5-apigee-data-d123e456-11kc
- Tambahkan nilai untuk properti
externalSeedHost
:cassandra: externalSeedHost: Cassandra_node_IP
Dengan Cassandra_node_IP adalah IP node cassandra (
10.68.8.24
dalam contoh sebelumnya).
- Menemukan salah satu alamat IP Cassandra yang ada di cluster Kubernetes yang sama dengan
Anda meng-upgrade instalasi 1.2.0.
- Di direktori
apigeectl/
baru, jalankanapigeectl init
,apigeectl apply
, danapigeectl check-ready
:- Inisialisasi hibrida 1.3.6:
apigeectl init -f overrides_1.3.yaml
Dengan overrides_1.3.yaml adalah file override.yaml yang Anda edit.
- Pada hybrid versi 1.3, sintaksis flag
--dry-run
bergantung pada versikubectl
yang Anda jalankan. Periksa versikubectl
:gcloud version
- Periksa error pada uji coba:
kubectl
versi 1.17 dan yang lebih lama:apigeectl apply -f overrides_1.3.yaml --dry-run=true
kubectl
versi 1.18 dan yang lebih baru:apigeectl apply -f overrides_1.3.yaml --dry-run=client
- Terapkan penggantian. Pilih dan ikuti petunjuk untuk produksi
atau lingkungan demo/eksperimental, tergantung pada penginstalan Anda.
Produksi
Untuk lingkungan produksi, Anda harus mengupgrade setiap komponen hybrid satu per satu, dan memeriksa status komponen yang telah di-upgrade sebelum melanjutkan ke komponen berikutnya.
- Terapkan penggantian untuk mengupgrade Cassandra:
apigeectl apply -f overrides_1.3.yaml --datastore
- Penyelesaian pemeriksaan:
kubectl -n namespace get pods
Dengan namespace adalah namespace hybrid Apigee Anda.
Lanjutkan ke langkah berikutnya hanya saat pod sudah siap.
- Terapkan penggantian untuk mengupgrade komponen Telemetry dan periksa penyelesaian:
apigeectl apply -f overrides_1.3.yaml --telemetry
kubectl -n namespace get pods
- Terapkan penggantian untuk mengupgrade komponen tingkat organisasi (MART, Watcher, dan Apigee
Hubungkan) dan periksa penyelesaian:
apigeectl apply -f overrides_1.3.yaml --org
kubectl -n namespace get pods
- Terapkan penggantian untuk mengupgrade lingkungan. Anda memiliki dua pilihan:
- Terapkan penggantian ke satu lingkungan dalam satu waktu dan periksa penyelesaiannya. Berulang
langkah ini untuk setiap lingkungan:
apigeectl apply -f overrides_1.3.yaml --env env_name
kubectl -n namespace get pods
Dengan env_name adalah nama lingkungan yang Anda upgrade.
- Terapkan penggantian ke semua lingkungan sekaligus dan periksa apakah sudah selesai:
apigeectl apply -f overrides_1.3.yaml --all-envs
kubectl -n namespace get pods
- Terapkan penggantian ke satu lingkungan dalam satu waktu dan periksa penyelesaiannya. Berulang
langkah ini untuk setiap lingkungan:
Demo/Eksperimental
Di sebagian besar lingkungan demo atau eksperimental, Anda dapat menerapkan penggantian ke semua komponen sekaligus. Jika lingkungan demo/eksperimental Anda besar dan kompleks atau sangat mirip dengan lingkungan produksi, sebaiknya gunakan petunjuk untuk mengupgrade lingkungan produksi
apigeectl apply -f overrides_1.3.yaml
- Periksa statusnya:
apigeectl check-ready -f overrides_1.3.yaml
Untuk petunjuk lebih lanjut, lihat Penyiapan Hybrid GKE - Langkah 5: Instal hybrid di GKE.
- Terapkan penggantian untuk mengupgrade Cassandra:
- Setelah Anda menyiapkan dan menjalankan konfigurasi hybrid 1.3, pastikan bahwa semua node Cassandra
(lama dan baru) adalah bagian dari gugus Cassandra yang sama. Jalankan perintah berikut di salah satu
Node Cassandra:
kubectl -n namespace get pods
kubectl -n namespace exec old Cassandra pod -- nodetool status
Dalam contoh {i>output<i} berikut, 10.68.8.24 berasal dari versi 1.2.0 dan merupakan {i>node<i} IP yang Anda digunakan sebagai
externalSeedHost
. 10.68.7.11 berasal dari versi 1.3.6:Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.68.8.24 379.41 KiB 256 50.8% 11bbd43b-af64-464b-a96d-0d6dd0521de1 ra-1 UN 10.68.7.11 1.35 MiB 256 49.2% 0b4d9e08-f353-413a-b4a9-7d18a8d07e58 ra-1
Jika keduanya tidak berada di klaster yang sama, periksa Nilai
externalSeedHost
. - Setelah semua pod aktif dan berjalan, hapus
externalSeedHost
dari file pengganti dan jalankanapigeectl apply
lagi dengan--datastore
opsi:apigeectl apply --datastore -f overrides_1.3.6.yaml
Pembersihan
Setelah Anda memverifikasi bahwa semua pod aktif dan responsif, endpoint ASM valid untuk penginstalan baru, Anda dapat menghapus:
- Resource Hybrid 1.2.
- Instance Cassandra lama
- Referensi Istio 1.4.6.
Hapus resource Hybrid 1.2.0
- Hapus detail perutean virtualhost 1.2.0:
$APIGEECTL_HOME-v1.2/apigeectl delete -s virtualhost -f 1.2.0_overrides.yaml
Dengan $APIGEECTL_HOME-v1.2 adalah direktori tempat Anda mencadangkan
apigeectl
direktori versi 1.2. - Jika endpoint masih berfungsi seperti yang diharapkan dan Anda telah memverifikasi semua komponen 1.3.0
bekerja, jalankan perintah berikut untuk menghapus resource hybrid 1.2.0:
$APIGEECTL_HOME-v1.2/apigeectl delete -c "mart,connect-agent,synchronizer,runtime,udca,metrics,logger" \ -f 1.2.0_overrides.yaml
Menonaktifkan instance Cassandra lama
cd
ke dalam direktoriapigeectl
yang baru diinstal.- Jalankan skrip
tools/cas_cleanup.sh
.Skrip ini menonaktifkan pod Cassandra lama dari cincin Cassandra, menghapus STS lama, dan menghapus PVC.
bash cas_cleanup.sh Apigee namespace
Menghapus resource Istio versi 1.4.6
- Jalankan perintah berikut untuk menghapus referensi Istio v.1.4.6 terbaru:
kubectl delete all -n istio-system --selector \ 'app in (apigee-mart-istio-ingressgateway, galley, security, istio-nodeagent, istio-mixer, sidecarInjectorWebhook, istio-mixer)'
- Jalankan perintah berikut untuk menghapus tugas lama dari penginstalan Istio 1.4.6:
kubectl -n istio-system delete job istio-init-crd-10-1.4.6
kubectl -n istio-system delete job istio-init-crd-11-1.4.6
kubectl -n istio-system delete job istio-init-crd-14-1.4.6
Selamat! Anda berhasil mengupgrade ke Apigee Hybrid versi 1.3.6.
- Inisialisasi hibrida 1.3.6: