Panduan Pengguna Pratinjau:
Pratinjau prosedur penginstalan dan administrasi baru untuk Apigee Hybrid v1.8.
Dalam dokumen ini:
- Pratinjau
- Ringkasan
- Prasyarat
- Penginstalan Apigee Hybrid Dasar
- Penginstalan Apigee Hybrid yang disesuaikan
- Download file penyiapan
- Buat namespace
- Menggunakan image Docker dari repositori pribadi (opsional)
- Mengonfigurasi imagePullSecrets (opsional)
- Mengonfigurasi proxy penerusan (opsional)
- Menentukan sertifikat TLS ingress
- Perbarui deployment ingress
- Mengonfigurasi akun layanan Google Cloud kustom
- Menggunakan workload identity
- Edit YAML resource
- Membuat resource dan pengontrol inisialisasi
- Memberikan izin ke akun layanan Synchronizer untuk berinteraksi dengan Bidang Kontrol
- Membuat komponen bidang data Apigee
- Menunggu resource dimulai
- Menyesuaikan penginstalan cert-manager di namespace kustom
- Kustomisasi dan Komponen
- Konsep
- Memahami skrip
- Struktur Folder Penyiapan Apigee Hybrid
- Menyimpan kunci akun layanan di vault eksternal
- Upgrade Apigee Hybrid
- Rollback Apigee Hybrid
- Pembersihan
- Menghapus lingkungan
- Penginstalan Multi-Instance
Pratinjau
Dokumen ini ditujukan untuk persona operator Apigee (pengguna yang menginstal/mengelola/mengadministrasikan penginstalan Apigee Hybrid). Pengalaman dalam menginstal Apigee Hybrid di salah satu platform Kubernetes yang didukung adalah prasyarat untuk mengikuti petunjuk dalam dokumen ini. Sebaiknya Anda membuat org Apigee evaluasi untuk mencoba langkah-langkah di bawah.
Masukan
Kirim masukan tentang proses ini ke Apigee-hybrid-install-preview@google.com.
Ringkasan
Pengalaman penginstalan Apigee Hybrid yang baru menginstal komponen Apigee menggunakan kubectl dan mengintegrasikan penginstalan dan pengelolaan Apigee Hybrid dengan alat orkestrasi konfigurasi Kubernetes seperti Kustomize. Validasi dan visibilitas yang ditingkatkan pada komponen yang diinstal memberikan kemampuan proses debug yang lebih baik dan meningkatkan proses penginstalan secara keseluruhan.
Skrip penginstalan, apigee-hybrid-setup.sh
, menyediakan alat yang mudah untuk penginstalan dasar. Anda dapat menggunakannya untuk membuat penginstalan hybrid, lalu mengubahnya agar sesuai dengan kebutuhan Anda menggunakan kubectl
, atau Anda dapat membuat penginstalan hybrid dari awal menggunakan kubectl
.
Semua properti konfigurasi hybrid Apigee disimpan dalam file yaml, satu untuk setiap komponen utama. Hal ini memungkinkan kontrol yang jauh lebih terperinci atas penginstalan hybrid Anda di lingkungan Kubernetes. Anda dapat menemukan file konfigurasi dan skrip penginstalan di repositori di GitHub.
Perubahan dalam proses penginstalan baru
Apigee mengubah proses penginstalan Apigee Hybrid karena alasan berikut:
- Metode baru untuk menginstal Apigee Hybrid dapat diintegrasikan dengan alat CI/CD Kubernetes yang ada seperti Argo, Flux, atau Anthos Config Management yang tidak menggunakan file konfigurasi
overrides.yaml
. - Apigee hybrid telah menyediakan
apigeectl
, alat pembuatan template kustom yang menghasilkan manifes Kubernetes (di antara hal-hal lain) untuk menginstal dan mengelola Apigee hybrid di cluster Kubernetes. Proses penginstalan dan pengelolaan baru memberikan pengalaman yang serupa dengan yang diberikan oleh vendor software lainnya. - Proses baru ini memungkinkan penginstalan dasar dengan cepat dengan membuat akun layanan secara otomatis dengan izin yang diperlukan, sertifikat TLS, mengisi default sebelumnya, dan elemen dasar lainnya yang diperlukan.
Prasyarat
Sebelum menggunakan penginstalan pratinjau ini, Anda harus memenuhi prasyarat berikut:
Versi pratinjau
Pratinjau ini ditujukan untuk bekerja dengan Apigee Hybrid versi 1.8.x. Versi Apigee hybrid yang lebih baru tidak didukung.
Penyiapan Apigee Hybrid
Sebelum melanjutkan penginstalan Apigee Hybrid yang sebenarnya, Anda diharapkan telah menyelesaikan petunjuk berikut yang tercantum di bagian dokumentasi berikut:
- Penyiapan Project dan Org
- Ringkasan prasyarat untuk menginstal Apigee Hybrid.
- Langkah 1: Aktifkan API
- Langkah 2: Buat organisasi
- Langkah 3: Buat lingkungan dan grup lingkungan
- Penyiapan runtime hybrid
Alat
Selain itu, Anda harus mendownload dan mengonfigurasi alat berikut di workstation Anda:
curl
docker
diperlukan untuk menjalankan skripapigee-hybrid-setup.sh
. Ikuti petunjuk di Get Docker untuk menginstal Docker.envsubst
harus tersedia di sebagian besar sistem berbasis Linux/UNIX. Untuk MacOS dan sistem lainnya, ikuti petunjuk di repo ini.jq
harus diinstal. Download jq.kpt
Download kpt.kubectl
versi 1.23 atau yang lebih baru. Lihat Menginstal Alat: kubectl di dokumentasi Kubernetes.
Variabel umum yang digunakan dalam panduan ini
Panduan ini menggunakan variabel lingkungan berikut dalam beberapa langkah. Anda dapat menentukannya di command line atau dengan skrip, atau Anda dapat mengganti teks dalam perintah saat memasukkannya.
APIGEE_NAMESPACE
: Namespace Apigee Anda. Secara default, nilainya adalahapigee
. Namun, Anda dapat menggunakan namespace yang berbeda.CLUSTER_NAME
: Nama cluster tempat Anda menginstal Apigee Hybrid. Ini adalah cluster yang Anda buat di Langkah 1: Buat ClusterCLUSTER_LOCATION
: Region cluster Anda. Prosedur dalam panduan ini mengasumsikan Anda menggunakan cluster regional. Jika Anda menggunakan cluster zona, lihat petunjuk di Langkah 1: Buat ClusterENV_GROUP
: Nama grup lingkungan untuk penginstalan Apigee Hybrid. Ini adalah grup lingkungan yang Anda buat di Langkah 3: Buat grup lingkungan. Anda dapat membuat beberapa grup lingkungan.ENV_NAME
: Nama grup lingkungan untuk penginstalan Apigee Hybrid. Ini adalah grup lingkungan yang Anda buat di Langkah 3: Buat grup lingkungan. Anda dapat membuat beberapa grup lingkungan.INSTALL_DIR
: Direktori tempat Anda menginstal Apigee Hybrid. Secara default, ini adalah subdirektoriapigee-hybrid-install/
dari direktori tempat Anda mendownload penginstal, misalnya:/myhybrid/apigee-hybrid-install/
. Ini adalah direktori root untuk struktur file yang didokumentasikan dalam Struktur Folder Penyiapan Apigee Hybrid.INSTANCE_DIR
: Direktori untuk instance Apigee Hybrid tertentu. Secara default, instance pertama diberi namainstance-1
. Dir instance adalah subdirektori${INSTALL_DIR}/overlays/instances/
. Anda dapat menentukan nama apa pun untuk instance hybrid Anda. Lihat Penginstalan Multi-Instance.ORG_NAME
: Nama organisasi Apigee Hybrid Anda. Ini harus sama dengan project ID Google Cloud Anda. Lihat: Langkah 2: Buat organisasi.
Penginstalan Apigee Hybrid dasar
Untuk menginstal Apigee Hybrid dengan cepat tanpa penyesuaian berat, Anda dapat menggunakan prosedur dua langkah berikut.
- Satu lingkungan
- Satu grup lingkungan
- Satu akun layanan Google Cloud dibuat dan digunakan untuk semua komponen individual
- Nilai default untuk semua kunci dan sandi enkripsi.
Mendownload file penyiapan
Download dan siapkan file penyiapan dengan meng-clone repositori GitHub di https://github.com/apigee/apigee-hybrid-install/releases/tag/preview-1
:
Meng-cloning repository
git clone https://github.com/apigee/apigee-hybrid-install.git
Buka direktori untuk repositori yang di-clone:
cd apigee-hybrid-install
Buat cabang dari tag preview-1:
git branch preview-1 preview-1 git checkout preview-1
Jadikan skrip penyiapan sebagai file yang dapat dieksekusi:
chmod +x ./tools/apigee-hybrid-setup.sh
Repositori yang di-clone akan memiliki struktur yang menyerupai yang dijelaskan dalam Struktur Folder Penyiapan Apigee Hybrid:
Menjalankan penyiapan
Jalankan skrip shell apigee-hybrid-setup.sh
yang ada di dalam folder tools/
.
./tools/apigee-hybrid-setup.sh --cluster-name $CLUSTER_NAME --cluster-region $CLUSTER_LOCATION --org $ORG_NAME --setup-all
Jika Anda mengalami error, coba jalankan skrip untuk kedua kalinya.
Opsi tambahan yang dapat Anda gunakan adalah:
--env $ENV_NAME
menentukan nama lingkungan Apigee.--envgroup $ENV_GROUP
menentukan grup lingkungan.--ingress-domain $HOSTNAME
menentukan nama host yang Anda berikan untuk grup lingkungan.--gcp-project-id $PROJECT_ID
menentukan ID project Google Cloud Anda.
Untuk opsi lainnya, lihat Memahami skrip.
Setiap error selama eksekusi akan dicetak ke output standar.
Setelah skrip berhasil diselesaikan, Anda akan menyelesaikan penginstalan hybrid dasar. Anda dapat menguji penginstalan dengan membuat proxy sampel seperti yang dijelaskan dalam Membuat dan men-deploy proxy API baru.
Penginstalan Apigee Hybrid yang disesuaikan
Untuk pengguna yang lebih mahir yang menginginkan kontrol terperinci atas penginstalan, Anda dapat mengikuti urutan langkah-langkah berikut (untuk banyak langkah yang diberikan di bawah, Anda dapat memilih untuk melakukan langkah tersebut secara manual, atau menggunakan skrip shell untuk mengotomatiskan setiap langkah):
Mendownload file penyiapan
Download dan siapkan file penyiapan:
Clone repositori GitHub di
https://github.com/apigee/apigee-hybrid-install/
Repositori yang di-clone akan memiliki struktur yang menyerupai yang dijelaskan dalam Struktur Folder Penyiapan Apigee Hybrid:
cd
ke direktoriapigee-hybrid-install/
Jadikan skrip penyiapan sebagai file yang dapat dieksekusi:
chmod +x ./tools/apigee-hybrid-setup.sh
Buat namespace
Buat namespace kubernetes di cluster Anda yang akan berisi semua komponen cluster Apigee.
kubectl create namespace apigee
Jika Anda memilih nama lain untuk namespace, Anda dapat memilih salah satu dari tiga opsi di bawah:
- (Direkomendasikan) Gunakan
--namespace={YOUR_NAMESPACE_NAME}
saat mengisi nilai otomatis di Edit resource yamls. Jalankan dua perintah berikut:
Gunakan
kpt
untuk menentukan namespace Apigee:kpt fn eval "${INSTALL_DIR}/overlays/" \ --image gcr.io/kpt-fn/apply-setters:v0.2.0 -- \ APIGEE_NAMESPACE="${APIGEE_NAMESPACE}" # This is for replacing the namespace in istio discoveryAddress which cannot be # achieved with kpt
Gunakan
sed
untuk mengganti namespace di istio discoveryAddress:sed -i -E -e "s/(discoveryAddress: apigee-ingressgateway-manager\.).*(\.svc:15012)/\1${APIGEE_NAMESPACE}\2/" "${INSTALL_DIR}/overlays/controllers/istiod/apigee-istio-mesh-config.yaml"
Sebagai alternatif, Anda dapat mengubah resource satu per satu secara manual agar dibuat di namespace pilihan Anda.
Menggunakan image Docker dari repositori pribadi (opsional)
Anda dapat memilih untuk tidak menggunakan image yang dihosting secara publik, dan dapat menggunakan image dari repositori pribadi Anda sendiri:
- Langkah pertama adalah mengirim semua gambar ke repo pribadi Anda, yang dapat dilakukan dengan mengikuti langkah-langkah di apigee-pull-push | Apigee X. Secara default, image diberi tag dengan versi Apigee Hybrid yang sesuai, dan sebaiknya Anda tidak mengedit tag ini. Sebaiknya Anda juga tidak mengedit nama gambar agar jalur gambar akhir dapat dibuat seperti yang dijelaskan di Hub Gambar.
Tetapkan nilai kolom
imageHub
yang ada di dalam file apigee-hybrid-config.yaml ke jalur host repo pribadi. (Lihat Hub Gambar untuk mengetahui detailnya).imageHub: "your.private.repo/apigee/hybrid"
Tindakan ini akan memastikan bahwa semua komponen hybrid Apigee menggunakan image dari repo pribadi Anda.
Selain itu, Anda mungkin juga ingin menggunakan image pribadi untuk pengontrol dan gateway ingress Apigee. Untuk itu, Anda harus mengedit file apigee-controller-deployment.yaml dan apigee-ingressgateway-manager-deployment.yaml, lalu mengganti semua kolom image
dengan image dari repo pribadi.
Mengonfigurasi imagePullSecrets (opsional)
- Buat secret Kubernetes yang berisi kredensial untuk mengautentikasi dengan repositori pribadi. Lihat Menarik Image dari Registry Pribadi untuk memahami cara membuat secret.
- Setelah secret dibuat, yang perlu dilakukan adalah merujuk ke secret tersebut, yang dapat dilakukan dengan mengedit file apigee-hybrid-config.yaml dan menyetel nilai kolom
imagePullSecret
ke nama secret yang dibuat sebelumnya, serta mengaktifkan komponenimagePullSecret
dalam filekustomization.yaml
yang sesuai.
Jika Anda menentukan imagePullSecrets
di kedua tempat, imagePullSecrets
yang ada di dalam file apigee-controller-manager.yaml akan diprioritaskan.
Mengonfigurasi proxy teruskan (opsional)
Proxy penerusan dapat dikonfigurasi dengan menambahkan kolom forwardProxy
ke file apigee-hybrid-config.yaml
. Contoh:
forwardProxy: |
scheme: HTTP
host: 10.12.0.47
port: 3128
Menentukan sertifikat TLS ingress
Menggunakan skrip
./tools/apigee-hybrid-setup.sh --create-ingress-tls-certs
Lihat - Memahami skrip untuk mengetahui detail selengkapnya tentang tanda ini.
Manual
Anda diharapkan untuk menyediakan sertifikat TLS yang akan digunakan untuk gateway ingress Istio. Anda dapat:
- menggunakan sertifikat yang ditandatangani oleh otoritas tepercaya menggunakan langkah-langkah yang disebutkan dalam Mendapatkan sertifikat TLS: Contoh | Apigee X
- atau membuat sertifikat yang ditandatangani sendiri.
Di sini, kita akan menggunakan sertifikat yang ditandatangani sendiri sebagai contoh. Sertifikat yang ditandatangani sendiri dapat dibuat menggunakan (dengan asumsi DOMAIN
telah disetel dengan benar dan harus cocok dengan nama host yang ditetapkan di envgroup Anda):
openssl req -nodes -new -x509 -keyout ./tls.key -out ./tls.crt -subj '/CN='$DOMAIN'' -days 3650
Tindakan ini akan membuat dua file bernama tls.key
dan tls.crt
.
Kemudian, Anda perlu membuat secret dengan format berikut. Anda dapat menggunakan kubectl create
atau kubectl apply
seperti yang dijelaskan dalam Menggunakan pasangan kunci/sertifikat kustom untuk otoritas penandatanganan sertifikat (opsional):
apiVersion: v1
kind: Secret
metadata:
name: "{ORG_NAME}-{ENV_GROUP_NAME}"
namespace: {$APIGEE_NAMESPACE}
type: Opaque
data:
cert: |
{BASE64_ENCODED_TLS_CRT}
key: |
{BASE64_ENCODED_TLS_KEY}
---
Contoh pembuatan secret menggunakan kubectl create
:
kubectl create secret tls {ORG_NAME}-{ENV_GROUP_NAME} \
--cert="tls.crt" \
--key="tls.key" \
-n {$APIGEE_NAMESPACE}
Memperbarui deployment ingress
Untuk membuat/memodifikasi deployment ingress, Anda perlu memodifikasi kolom spec.components.ingressGateways
di Resource Kustom ApigeeOrganization di bases/initialization/crds/customresourcedefinition-apigeeorganizations.apigee.cloud.google.com.yaml
.
Secara default, kami membuat satu deployment ingress dengan parameter default(nilai default akan ditampilkan dalam dokumen referensi CR ):
ingressGateways:
- name: "prod-1"
Contoh:
A. Mengganti kolom layanan ingress
ingressGateways:
- name: "prod-1"
serviceSpec:
annotations:
{KEY}: ${VALUE}
loadBalancerIP: ${IP}
B. Mengubah replika Min/Maks
ingressGateways:
- name: "prod-1"
autoScaler:
minReplicas: 4
maxReplicas: 10
C. Menambahkan Deployment Ingress baru
ingressGateways:
- name: "prod-1"
- name: "prod-2"
Mengonfigurasi akun layanan Google Cloud kustom
Menggunakan skrip
./tools/apigee-hybrid-setup.sh --create-gcp-sa-and-secrets --namespace APIGEE_NAMESPACE
Dengan APIGEE_NAMESPACE adalah namespace kustom Anda. Namespace default adalah apigee
.
Lihat Memahami skrip untuk mengetahui detail selengkapnya tentang flag.
Manual
Kunci akun layanan Google Cloud harus disimpan sebagai rahasia di cluster. Secret yaml harus memiliki struktur berikut:
apiVersion: v1
kind: Secret
metadata:
name: "{NAME}"
namespace: {APIGEE_NAMESPACE}
type: Opaque
data:
client_secret.json: |
{BASE64_ENCODED_SA_KEY}
Untuk mengetahui detail selengkapnya tentang semua akun layanan yang diperlukan dan nama rahasia, lihat bagian Akun layanan Google Cloud.
Anda bebas memilih nama lain untuk secret, tetapi Anda harus membuat perubahan yang sesuai di komponen tempat nama secret tersebut digunakan. Misalnya, jika Anda memutuskan untuk mengubah nama rahasia akun layanan runtime dari apigee-runtime-svc-account-${ORG_NAME}-${ENV_NAME}
menjadi my-runtime-svc
, Anda harus melakukan perubahan yang sesuai di apigee-environment.yaml
untuk lingkungan tersebut
Menggunakan workload identity
Salah satu dari Mengonfigurasi akun layanan Google Cloud kustom atau Menggunakan identitas workload wajib dilakukan.
Prasyarat
Sebelum menggunakan identitas workload, pastikan cluster GKE Anda telah mengaktifkan dukungan. Lihat Memperbarui Node Pool | Apigee X untuk mengetahui detailnya.
Mengaktifkan workload identity
Lihat bagian Workload identity di bagian Kustomize and Components untuk mengetahui detail cara mengaktifkan workload identity sebelum penginstalan.
Edit YAML resource
Beberapa tempat di YAML komponen memerlukan nama organisasi, lingkungan, dan grup lingkungan yang benar. Anda dapat menetapkan nilai ini secara manual, atau menggunakan skrip shell untuk mengisi nilai ini secara otomatis.
Menggunakan skrip
./tools/apigee-hybrid-setup.sh --fill-values
Membuat resource dan pengontrol inisialisasi
#Additional steps for openshift
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/openshift
//apigee datastore
kubectl apply -f ${INSTANCE_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/components/openshift-scc/scc.yaml
//telemetry
kubectl apply -f ${INSTANCE_DIR}/overlays/instances/${INSTANCE_DIR}/telemetry/components/openshift-scc/scc.yaml
#Create Apigee initialization kubernetes resources
kubectl apply -f ${INSTALL_DIR}/overlays/initialization/namespace.yaml
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/certificates
kubectl apply --server-side --force-conflicts -k ${INSTALL_DIR}/overlays/initialization/crds
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/webhooks
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/rbac
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/ingress
# Create controller config and controller
kubectl apply -k ${INSTALL_DIR}/overlays/controllers
# Wait for the controllers to be available
kubectl wait deployment/apigee-controller-manager deployment/apigee-ingressgateway-manager -n "${APIGEE_NAMESPACE}" --for=condition=available --timeout=2m
# Create the datastore and redis secrets first and then the rest of the secrets.
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/secrets.yaml
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/redis/secrets.yaml
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/environments/${ENV_NAME}/secrets.yaml
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/organization/secrets.yaml
Memberikan izin ke akun layanan Synchronizer untuk berinteraksi dengan Bidang Kontrol
Ikuti langkah-langkah di Langkah 8: Aktifkan akses Synchronizer,
dengan mengganti nama akun layanan, baik apigee-non-prod
maupun apigee-synchronizer
, dengan
apigee-all-sa
, nama akun layanan yang dibuat oleh proses penginstalan baru.
★ Penting: Pastikan untuk mengubah nama akun layanan dalam petunjuk di bagian Aktifkan akses penyinkron. Jika tidak, pengaktifan akses untuk penyinkron akan gagal.
Membuat komponen bidang data Apigee
Jika Anda telah mengubah nama salah satu resource pada langkah sebelumnya, Anda harus melakukan perubahan yang sesuai di file YAML lain tempat resource tersebut dirujuk. Setelah selesai, gunakan perintah dalam contoh berikut:
# Create the rest of the resources.
kubectl apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}
untuk menginstal semua komponen.
Tunggu hingga resource dimulai
kubectl wait "apigeedatastore/default" \
"apigeeredis/default" \
"apigeeenvironment/${ORG_NAME}-${ENV_NAME}" \
"apigeeorganization/${ORG_NAME}" \
"apigeetelemetry/apigee-telemetry" \
-n "${APIGEE_NAMESPACE}" --for="jsonpath=.status.state=running" --timeout=15m
Menyesuaikan penginstalan untuk cert-manager di namespace kustom
Sesuaikan namespace tempat cert-manager berjalan dengan prosedur berikut.
Jika cert-manager diinstal di cluster Anda dalam namespace selain cert-manager, Anda harus memperbarui namespace yang digunakan untuk membuat sertifikat root Apigee.
- Edit file customization.yaml untuk pembuatan sertifikat:
$INSTALL_DIR/overlays/initialization/certificates/kustomize.yaml
Tambahkan kode berikut ke bagian akhir file.
- patch: |- - op: replace path: /metadata/namespace value: "gk-cert-manager" target: group: cert-manager.io version: v1 kind: Certificate name: apigee-root-certificate
Simpan file.
Kustomize dan Komponen
Ringkasan
Penginstalan Hybrid baru mewarisi ideologi Kustomize dalam menyusun yaml dalam bentuk Dasar dan Overlay
- Dasar adalah file yang disediakan oleh Apigee, yang mungkin berubah di antara setiap rilis Hybrid baru. Anda tidak diharapkan untuk mengubah file ini. File ini menyimpan beberapa nilai default yang disediakan oleh Apigee. Semua file di folder
bases/
tingkat teratas berisi Basis ini Overlay menyimpan konfigurasi pengguna dan berfungsi sebagai cara untuk mengubah nilai default yang ditentukan dalam Basis. Semua file di folder
overlays/
tingkat teratas berisi Overlay ini
Cara menggunakan Komponen
Subfolder dalam direktori overlays/
tingkat teratas telah disusun sedemikian rupa sehingga Anda dapat mengaktifkan (atau menonaktifkan) fitur tambahan tertentu dengan memberi komentar (atau menghapus komentar) pada baris tertentu dalam file kustomization.yaml
.
Misalnya, seperti inilah tampilan struktur folder overlays/instances/{INSTANCE_NAME}/telemetry
:
telemetry
├── components
│ ├── http-proxy
│ ├── imagepullsecret
│ ├── logger
│ ├── metrics
│ ├── nodeselector
│ ├── openshift-scc
│ ├── workload-identity-logger
│ └── workload-identity-metrics
├── apigee-telemetry.yaml
└── kustomization.yaml
Berikut adalah tampilan default file telemetry/kustomization.yaml
:
resources:
- apigee-telemetry.yaml
components:
- ./components/metrics
# - ./components/workload-identity-metrics
# - ./components/logger
# - ./components/workload-identity-logger
# - ./components/http-proxy
# - ./components/nodeselector/
# - ./components/imagepullsecret
# - ./components/openshift-scc
Kita dapat melihat bahwa ./components/logger
telah dikomentari, yang berarti kita belum mengaktifkan pencatat uGoogle Cloud secara default. Untuk mengaktifkannya, Anda cukup menghapus komentar pada baris tersebut seperti berikut:
components:
- ./components/logger
Demikian pula, untuk menonaktifkan metrik, Anda dapat mengomentari baris ./components/metrics
:
...
components:
...
# - ./components/metrics
…
Bagian berikut akan membahas semua berbagai komponen tersebut, kapan komponen tersebut dapat digunakan, dan cara mengonfigurasinya.
OpenShift
Untuk pengguna yang ingin menginstal Apigee Hybrid di cluster OpenShift
, Anda mungkin perlu mengaktifkan beberapa komponen/resource sebelum melakukan penginstalan. (Langkah ini diperlukan jika Anda tidak menggunakan skrip untuk melakukan penginstalan). File yang perlu diubah adalah:
overlays/initialization/openshift/kustomization.yaml
. Di bagianresources:
, hapus komentar:# - ../../../bases/initialization/openshift/
overlays/instances/{INSTANCE_NAME}/datastore/kustomization.yaml
Hapus tanda komentar:# - ./components/openshift-scc
dan hapus komentar pada kolom "
components:
" jika masih diberi komentar.overlays/instances/{INSTANCE_NAME}/telemetry/kustomization.yaml
Hapus tanda komentar:# - ./components/openshift-scc
dan hapus komentar pada kolom "
components:
" jika masih diberi komentar.
Kemudian, Anda dapat melanjutkan dengan langkah-langkah penginstalan.
imagepullsecret
Komponen ini dapat diaktifkan jika Anda memiliki gambar yang disimpan di repositori pribadi. Untuk menarik image dari repositori pribadi, Anda dapat membuat secret Kubernetes yang akan memiliki detail autentikasi Anda dan kemudian dapat mereferensikan secret ini di dalamnya. Lihat Mengonfigurasi imagePullSecrets (opsional) untuk mengetahui petunjuknya. Lihat Menarik Image dari Registry Pribadi | Kubernetes dalam dokumentasi Kubernetes untuk mengetahui informasi selengkapnya.
Tersedia dalam:
overlays/controllers/apigee-controller
overlays/controllers/istiod
overlays/instances/{INSTANCE_NAME}/datastore
overlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}
overlays/instances/{INSTANCE_NAME}/organization
overlays/instances/{INSTANCE_NAME}/redis
overlays/instances/{INSTANCE_NAME}/telemetry
Mengaktifkan:
Batalkan komentar baris "./components/imagepullsecret/
" di file kustomization.yaml
masing-masing jika diperlukan.
Modifikasi yang akan dilakukan:
- components/imagepullsecret/patch.yaml
- WAJIB Tambahkan nama rahasia yang relevan ke daftar di
spec.template.spec.imagePullSecrets
- WAJIB Tambahkan nama rahasia yang relevan ke daftar di
Penggunaan:
- Jika Anda belum menginstal Apigee Hybrid, Anda dapat melanjutkan langkah-langkah penginstalan dan perubahan ini akan diterapkan dalam proses tersebut
Jika sudah menginstal Apigee Hybrid, Anda harus menerapkan perubahan baru ini menggunakan:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
nodeselector
Komponen ini memungkinkan Anda menjadwalkan pod untuk resource Apigee di node tertentu. Lihat Menetapkan Pod ke Node | Kubernetes untuk informasi tambahan.
Tersedia dalam:
overlays/controllers/apigee-controller
overlays/controllers/istiod
overlays/instances/{INSTANCE_NAME}/datastore
overlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}
overlays/instances/{INSTANCE_NAME}/organization
overlays/instances/{INSTANCE_NAME}/redis
overlays/instances/{INSTANCE_NAME}/telemetry
Mengaktifkan:
Batalkan komentar baris "./components/nodeselector
" di file kustomization.yaml
masing-masing jika diperlukan.
Modifikasi yang akan dilakukan:
- components/nodeselector/patch.yaml
- OPSIONAL Ubah nilai label pemilih node dari
apigee-runtime
atauapigee-data
menjadi nilai yang diinginkan.
- OPSIONAL Ubah nilai label pemilih node dari
Penggunaan:
- Jika Anda belum menginstal Apigee Hybrid, Anda dapat melanjutkan langkah-langkah penginstalan dan perubahan ini akan diterapkan dalam proses tersebut
Jika sudah menginstal Apigee Hybrid, Anda harus menerapkan perubahan baru ini menggunakan:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
workload-identity
Berbagai penampung dalam ekosistem Apigee Hybrid memerlukan izin untuk melakukan panggilan API tertentu ke Bidang Kontrol / Bidang Pengelolaan Apigee. Workload identity adalah salah satu cara untuk memberikan izin ini kepada pod (dan container di dalamnya). Referensi berguna untuk membaca lebih lanjut tentang hal ini mencakup: - Memperkenalkan Workload Identity: Autentikasi yang lebih baik untuk aplikasi GKE Anda | Blog Google Cloud - Menggunakan Workload Identity | Dokumentasi Kubernetes Engine | Google Cloud
Tersedia dalam:
overlays/instances/{INSTANCE_NAME}/datastore
overlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}
overlays/instances/{INSTANCE_NAME}/organization
overlays/instances/{INSTANCE_NAME}/redis
overlays/instances/{INSTANCE_NAME}/telemetry
Prasyarat:
Sebelum dapat menggunakan identitas beban kerja, Anda harus memberikan izin yang relevan dalam project Google Cloud menggunakan:
gcloud iam service-accounts add-iam-policy-binding \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:${ORG_NAME}.svc.id.goog[${APIGEE_NAMESPACE}/${KSA_NAME}]" \
${GSA_NAME}@${ORG_NAME}.
where:
- ${ORG_NAME} - Nama Organisasi Apigee Anda.
- ${APIGEE_NAMESPACE} - Namespace Kubernetes tempat komponen Apigee telah diinstal. Nilai ini biasanya apigee
kecuali jika diubah secara eksplisit oleh pengguna selama penginstalan
- ${KSA_NAME} - Nama namespace kubernetes. Anda harus menjalankan perintah ini untuk setiap akun layanan Kubernetes yang disebutkan dalam Akun layanan Kubernetes
- ${GSA_NAME} - Nama akun layanan Google Cloud. Jika Anda tidak melakukan perubahan apa pun selama penginstalan, nilai ini akan menjadi apigee-all-sa
. Jika Anda menyiapkan beberapa akun layanan Google Cloud untuk setiap komponen, Anda harus mencocokkan KSA_NAME dengan GSA_NAME yang sesuai. Anda dapat membandingkan tabel di akun layanan Google Cloud dengan akun layanan Kubernetes untuk menemukan padanannya.
Mengaktifkan:
Hapus tanda komentar pada baris ./components/workload-identity
di file kustomization.yaml
yang sesuai jika diperlukan. Perhatikan bahwa dalam telemetri, kami memiliki add-on identitas workload terpisah untuk komponen metrics
dan logger
yang dapat diaktifkan satu per satu.
Penggunaan:
- Jika Anda belum menginstal hybrid, Anda cukup mengaktifkan workload-identity seperti yang disebutkan di bagian sebelumnya dan melanjutkan penginstalan yang kemudian akan otomatis menggunakan workload-identity.
Jika sudah menginstal Apigee Hybrid, Anda harus menerapkan perubahan baru ini menggunakan:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
http-proxy
Anda dapat mengonfigurasi server proxy di setiap komponen berikut sehingga traffic untuk komponen tersebut melewati proxy http yang dikonfigurasi untuk komponen tersebut. Anda dapat mengonfigurasi proxy untuk setiap komponen Apigee secara terpisah.
Tersedia dalam:
overlays/instances/{INSTANCE_NAME}/datastore
overlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}
overlays/instances/{INSTANCE_NAME}/organization
overlays/instances/{INSTANCE_NAME}/telemetry
Mengaktifkan:
Batalkan komentar baris "./components/http-proxy/
" di file kustomization.yaml
masing-masing jika diperlukan.
Modifikasi yang akan dilakukan:
- components/http-proxy/patch.yaml
Parameter berikut dapat dikonfigurasi di bagian
spec.httpForwardProxy
scheme
: WAJIB Salah satu dariHTTP
atauHTTPS
host
: WAJIB Alamat Host proxy Andaport
: WAJIB Nomor portusername
: OPSIONAL Nama pengguna yang terkait dengan proxy Andapassword
: OPSIONAL Sandi untuk mengakses proxy
Penggunaan:
- Jika Anda belum menginstal Apigee Hybrid, Anda dapat melanjutkan langkah-langkah penginstalan dan perubahan ini akan diterapkan dalam proses tersebut
Jika sudah menginstal Apigee Hybrid, Anda harus menerapkan perubahan baru ini menggunakan:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
logger dan metrik
Anda dapat mengaktifkan atau menonaktifkan logger atau metrik satu per satu dalam overlay/instance/{INSTANCE_NAME}/telemetry. Secara default, logger dinonaktifkan dan metrik diaktifkan. Untuk mengaktifkan atau menonaktifkannya, cukup hapus atau tambahkan tanda komentar pada barisnya di telemetry/kustomization.yaml
gcs-backup dan gcs-restore
Komponen kustomisasi ini dapat digunakan untuk melakukan pencadangan dan pemulihan database cassandra ke Google Cloud Storage.
Tersedia dalam:
overlays/instances/{INSTANCE_NAME}/datastore
Prasyarat:
Download kunci akun layanan Google Cloud untuk akun yang memiliki peran Storage Object Admin.
- Jika Anda menggunakan skrip untuk melakukan penginstalan dan tidak menggunakan workload identity, Anda dapat menggunakan kembali kunci yang didownload yang tersedia di folder service-accounts yang dibuat oleh skrip.
Anda juga dapat menggunakan skrip create-service-account.sh untuk membuat akun layanan baru dan mendownload kuncinya:
./tools/create-service-accounts=.sh --env prod --profile apigee‑cassandra
Setelah kunci didownload, Anda perlu membuat secret Kubernetes dengan nama apigee-cassandra-backup-and-restore-gcp-sa-key yang dapat dilakukan menggunakan perintah:
kubectl create secret generic "apigee-cassandra-backup-and-restore-gcp-sa-key" \ --from-file="dbbackup_key.json=${PATH_TO_SA_KEY}" \ -n "${APIGEE_NAMESPACE}"
Dengan:
- ${PATH_TO_SA_KEY} - Jalur ke file yang berisi kunci akun layanan.
- ${APIGEE_NAMESPACE} - Namespace Kubernetes tempat komponen Apigee diinstal. Biasanya ini adalah apigee, kecuali jika diubah secara eksplisit selama penginstalan
Atau, Anda dapat menggunakan file template templates/secret-apigee-cassandra-backup-and-restore-gcp-sa-key.yaml untuk membuat secret ini.
Mengaktifkan:
- Jika Anda ingin mengaktifkan pencadangan, hapus komentar pada baris "./components/gcs-backup" di file datastore kustomization.yaml.
- Jika Anda ingin memulihkan cadangan, hapus komentar pada baris "./components/gcs-restore" dalam file datastore kustomization.yaml.
Modifikasi hanya untuk pencadangan
- components/gcs-backup/apigee-datastore-patch.yaml
- WAJIB Ubah nilai variabel lingkungan DATABASE_STORAGE_BUCKET yang akan berbentuk gs://BUCKET_NAME dan mengarah ke bucket Google Cloud Storage tempat data perlu dicadangkan. Deskripsi cocok dengan dbStorageBucket yang dijelaskan di sini.
- components/gcs-backup/cron-patch.yaml
- WAJIB Ubah spec.schedule untuk menentukan frekuensi pencadangan. Kolom menerima format jadwal Crontab standar. Deskripsi cocok dengan jadwal yang dijelaskan di sini.
- WAJIB Ubah nilai variabel lingkungan DATABASE_STORAGE_BUCKET yang akan berbentuk gs://BUCKET_NAME dan mengarah ke bucket Google Cloud Storage tempat data perlu dicadangkan. Deskripsi cocok dengan dbStorageBucket yang dijelaskan di sini.
- OPSIONAL Ubah nilai HTTP_PROXY_URL untuk mengarah ke proxy yang dikonfigurasi. Formatnya dapat berupa sebagai berikut:
http://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
https://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS>:${HOST_PORT}
Melakukan Pencadangan
Anda dapat melakukan pencadangan dengan perintah berikut:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
Untuk menerapkan perubahan dan mengaktifkan pencadangan:
Modifikasi hanya untuk pemulihan
- components/gcs-restore/apigee-datastore-patch.yaml
- WAJIB Ubah nilai variabel lingkungan DATABASE_STORAGE_BUCKET yang akan berbentuk gs://BUCKET_NAME dan mengarah ke bucket Google Cloud Storage tempat data perlu dicadangkan. Deskripsi cocok dengan dbStorageBucket yang dijelaskan di sini.
- components/gcs-restore/job-patch.yaml
- WAJIB Ubah nilai variabel lingkungan DATABASE_STORAGE_BUCKET yang akan berbentuk gs://BUCKET_NAME dan mengarah ke bucket Google Cloud Storage tempat data perlu dicadangkan.
- WAJIB Ubah nilai variabel lingkungan BACKUP_SNAPSHOT_TIMESTAMP. Deskripsi cocok dengan restore:snapshotTimestamp yang dijelaskan di sini.
- OPSIONAL Ubah nilai HTTP_PROXY_URL untuk mengarah ke proxy yang dikonfigurasi.
Formatnya dapat berupa sebagai berikut:
http://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
https://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
Melakukan pemulihan:
Untuk mengetahui informasi latar belakang tentang memulihkan cadangan, lihat Memulihkan cadangan | Apigee X | Google Cloud
- Buat cluster Kubernetes baru dengan namespace baru untuk memulihkan deployment runtime hybrid. Anda tidak dapat menggunakan cluster dan namespace yang sama dengan yang Anda gunakan untuk penginstalan hybrid asli.
Instal Hybrid ke cluster baru dengan setelan yang dikonfigurasi di atas selain setelan lain yang Anda inginkan:
- Anda dapat menggunakan penginstalan Dasar dan penginstalan hibrida di namespace baru:
./tools/apigee-hybrid-setup.sh \ --cluster-name $CLUSTER_NAME \ --cluster-region $CLUSTER_LOCATION \ --namespace ${NEW_APIGEE_NAMESPACE}
- Atau, ikuti penginstalan Apigee Hybrid yang Disesuaikan untuk mengonfigurasi semuanya sesuai pilihan Anda.
Setelah pemulihan selesai, semua resource di namespace lama dapat dihapus dan dialihkan ke namespace baru.
Untuk mengetahui informasi selengkapnya, lihat Memulihkan cadangan.
non-gcs-backup dan non-gcs-restore
Komponen kustomisasi ini dapat digunakan untuk melakukan pencadangan dan pemulihan database cassandra ke Google Cloud Storage.
Tersedia dalam:
overlays/instances/{INSTANCE_NAME}/datastore
Prasyarat:
- Langkah-langkah dari dokumentasi yang sudah ada untuk Menyiapkan server dan SSH dapat digunakan.
Dari langkah-langkah di atas, Anda harus menggunakan kunci pribadi SSH yang tersedia dalam file "ssh_key" yang dibuat dengan mengikuti langkah-langkah sebelumnya. Kemudian, kita akan membuat secret Kubernetes dengan nama apigee-cassandra-backup-and-restore-gcp-sa-key yang berisi Kunci Pribadi SSH ini.
Secret Kubernetes dapat dibuat menggunakan perintah berikut:
kubectl create secret generic "apigee-cassandra-backup-and-restore-key-file" \ --from-file="key=${PATH_TO_SSH_PRIVATE_KEY}" \ -n "${APIGEE_NAMESPACE}"
Dengan:
- ${PATH_TO_SSH_PRIVATE_KEY} - Jalur ke file yang berisi kunci pribadi SSH
- ${APIGEE_NAMESPACE} - Namespace Kubernetes tempat komponen Apigee telah diinstal. Biasanya ini adalah apigee, kecuali jika diubah secara eksplisit selama penginstalan
Atau, Anda dapat menggunakan file template templates/secret-apigee-cassandra-backup-and-restore-key-file.yaml untuk membuat secret ini.
Mengaktifkan:
- Jika Anda ingin mengaktifkan pencadangan, hapus tanda komentar pada baris "
./components/non-gcs-backup
" di file datastore kustomisasi.yaml. - Jika Anda ingin memulihkan cadangan, hapus komentar pada baris "
./components/non-gcs-restore
" di file datastore kustomization.yaml.
Modifikasi hanya untuk pencadangan
- components/non-gcs-backup/apigee-datastore-patch.yaml
- WAJIB Ubah nilai BACKUP_SERVER_IP. Deskripsi cocok dengan BACKUP_SERVER_IP yang dijelaskan di sini.
- WAJIB Ubah nilai BACKUP_STORAGE_DIR. Deskripsi cocok dengan BACKUP_STORAGE_DIR yang dijelaskan di sini.
- components/non-gcs-backup/cron-patch.yaml
- WAJIB Ubah spec.schedule untuk menentukan frekuensi pencadangan. Kolom menerima format jadwal Crontab standar. Deskripsi cocok dengan jadwal yang dijelaskan di sini.
- WAJIB Ubah nilai BACKUP_SERVER_IP. Deskripsi cocok dengan BACKUP_SERVER_IP yang dijelaskan di sini.
- WAJIB Ubah nilai BACKUP_STORAGE_DIR. Deskripsi cocok dengan BACKUP_STORAGE_DIR yang dijelaskan di sini.
- OPSIONAL Ubah nilai HTTP_PROXY_URL untuk mengarah ke proxy yang dikonfigurasi. Formatnya dapat berupa sebagai berikut:
http://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
https://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
Melakukan Pencadangan
Anda dapat melakukan pencadangan dengan perintah berikut:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
Untuk menerapkan perubahan dan mengaktifkan pencadangan:
Modifikasi hanya untuk pencadangan
- components/non-gcs-restore/apigee-datastore-patch.yaml
- WAJIB Ubah nilai
BACKUP_SERVER_I
P. Deskripsi cocok denganBACKUP_SERVER_IP
yang dijelaskan di sini. - WAJIB Ubah nilai BACKUP_STORAGE_DIR. Deskripsi cocok dengan
BACKUP_STORAGE_DIR
yang dijelaskan di sini.
- WAJIB Ubah nilai
- components/non-gcs-restore/job-patch.yaml
- WAJIB Ubah nilai variabel lingkungan
BACKUP_SNAPSHOT_TIMESTAMP
. Deskripsi cocok denganrestore:snapshotTimestamp
yang dijelaskan di sini. - WAJIB Ubah nilai
BACKUP_SERVER_IP
. Deskripsi cocok denganBACKUP_SERVER_IP
yang dijelaskan di sini. - WAJIB Ubah nilai
BACKUP_STORAGE_DIR
. Deskripsi cocok denganBACKUP_STORAGE_DIR
yang dijelaskan di sini. - OPSIONAL Ubah nilai
HTTP_PROXY_URL
agar mengarah ke proxy yang dikonfigurasi. Formatnya dapat berupa sebagai berikut:http://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
https://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
- WAJIB Ubah nilai variabel lingkungan
Melakukan pemulihan:
Untuk ringkasan tentang pemulihan cadangan, lihat Ringkasan pemulihan Cassandra.
- Buat cluster Kubernetes baru dengan namespace baru untuk memulihkan deployment runtime hybrid. Anda tidak dapat menggunakan cluster dan namespace yang sama dengan yang Anda gunakan untuk penginstalan hybrid asli.
Instal Hybrid ke cluster baru dengan setelan yang dikonfigurasi di atas selain setelan lain yang Anda inginkan: Anda dapat menggunakan penginstalan Dasar dan menginstal hybrid di namespace baru:
./tools/apigee-hybrid-setup.sh \ --cluster-name $CLUSTER_NAME \ --cluster-region $CLUSTER_LOCATION \ --namespace ${NEW_APIGEE_NAMESPACE}
Atau, ikuti penginstalan Apigee Hybrid yang Disesuaikan untuk mengonfigurasi semuanya sesuai pilihan Anda.
Setelah pemulihan selesai, semua resource di namespace lama dapat dihapus dan dialihkan ke namespace baru.
Untuk mengetahui informasi selengkapnya, lihat Menjadwalkan pencadangan di server jarak jauh.
http-client
Untuk mengetahui petunjuknya, lihat Mengaktifkan klien HTTP | Apigee.
Tersedia dalam:
- overlays/instances/${INSTANCE_NAME}/route-config/${ENV_GROUP}
Mengaktifkan:
Hapus tanda komentar pada baris "./components/http-client
" dalam file route-config/${ENV_GROUP}/kustomization.yaml
yang sesuai
Modifikasi yang akan dilakukan:
- Tidak ada modifikasi wajib yang diperlukan.
Penggunaan:
- Jika Anda belum menginstal Apigee Hybrid, Anda dapat melanjutkan langkah-langkah penginstalan dan perubahan ini akan diterapkan dalam proses tersebut
Jika sudah menginstal Apigee Hybrid, Anda harus menerapkan perubahan baru ini menggunakan:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
non-sni-client
Setara dengan Cara mengonfigurasi klien non-SNI | Apigee yang sudah ada.
Tersedia dalam:
- overlays/instances/${INSTANCE_NAME}/route-config/${ENV_GROUP}
Mengaktifkan:
Hapus tanda komentar pada baris "./components/non-sni-client
" dalam file route-config/${ENV_GROUP}/kustomization.yaml
yang sesuai
Modifikasi yang akan dilakukan:
- components/non-sni-client/apigee-route.yaml
- WAJIB
credentialName
Deskripsi cocok dengancredential_name
yang dijelaskan di sini.
- WAJIB
Penggunaan:
- Jika Anda belum menginstal Apigee Hybrid, Anda dapat melanjutkan langkah-langkah penginstalan dan perubahan ini akan diterapkan dalam proses tersebut
Jika sudah menginstal Apigee Hybrid, Anda harus menerapkan perubahan baru ini menggunakan:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
http-and-non-sni-client
Untuk mengetahui petunjuknya, lihat Mengaktifkan dukungan untuk klien HTTP dan non-SNI | Apigee.
Mengaktifkan:
Hapus tanda komentar pada baris "./components/http-and-non-sni-client
" dalam file route-config/${ENV_GROUP}/kustomization.yaml
yang sesuai
Modifikasi yang akan dilakukan:
- components/http-and-non-sni-client/apigee-route.yaml
- WAJIB
credentialName
Deskripsi cocok dengancredential_name
yang dijelaskan di sini.
- WAJIB
Penggunaan:
- Jika Anda belum menginstal Apigee Hybrid, Anda dapat melanjutkan langkah-langkah penginstalan dan perubahan ini akan diterapkan dalam proses tersebut
Jika sudah menginstal Apigee Hybrid, Anda harus menerapkan perubahan baru ini menggunakan:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
multi-region
Komponen ini dapat digunakan saat mengonfigurasi deployment Cassandra multi-region. Untuk mengetahui informasi selengkapnya, lihat Deployment multi-region di GKE dan GKE on-prem
Mengaktifkan:
Hapus tanda komentar pada baris "./components/multi-region
" dalam file datastore/kustomization.yaml
Modifikasi yang akan dilakukan:
components/multi-region/cassandra-data-replication.yaml
- WAJIB
source.region
Nama pusat data Cassandra sumber yang akan digunakan untuk mereplikasi data dari. Dapat diidentifikasi dengan menggunakan perintah berikut di cluster sumber:
kubectl get apigeedatastore -n ${APIGEE_NAMESPACE} -o=jsonpath='{.items[*].spec.components.cassandra.properties.datacenter}'
- WAJIB
components/multi-region/patch.yaml
- WAJIB
spec.components.properties.multiRegionSeedHost
IP Pod dari salah satu pod cassandra sumber. Kita dapat menggunakan:
kubectl get pods -n ${APIGEE_NAMESPACE} -o wide
- Untuk mencantumkan semua pod dan mendapatkan IP pod cassandra, gunakan perintah berikut:
kubectl get pods -o wide -n apigee
Output Anda akan terlihat seperti berikut:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE apigee-cassandra-default-0 1/1 Running 0 5d 10.0.0.11 gke-k8s-dc-2-default-pool-a2206492-p55d apigee-cassandra-default-1 1/1 Running 0 5d 10.0.2.4 gke-k8s-dc-2-default-pool-e9daaab3-tjmz apigee-cassandra-default-2 1/1 Running 0 5d 10.0.3.5 gke-k8s-dc-2-default-pool-e589awq3-kjch
- WAJIB
Untuk mengetahui informasi selengkapnya, lihat Prasyarat untuk GKE di "Deployment multi-region di GKE, GKE on-prem, dan AKS":
Penggunaan:
Penggunaan komponen ini sebagian besar masuk akal saat Anda menyiapkan Apigee Hybrid di cluster baru dan Anda sudah memiliki penyiapan Apigee Hybrid lain yang berfungsi.
- Cluster baru dan yang sudah ada harus menggunakan sertifikat TLS yang sama untuk memastikan komunikasi yang tepat antara pod Cassandra. Jadi, kita perlu menyalin rahasia
apigee-root-certificate
dari cluster yang ada dan menggunakannya di cluster yang lebih baru juga: Jalankan:
kubectl config get-contexts
- Untuk mendapatkan daftar semua konteks kubernetes, lalu jalankan
kubectl config use-context SOURCE_CLUSTER_CONTEXT
dengan SOURCE_CLUSTER_CONTEXT adalah nama konteks cluster kubernetes sumber.
Simpan secret sertifikat root dalam file:
kubectl get secret/apigee-root-certificate -n cert-manager -o yaml > apigee-root-certificate.yaml
Alihkan konteks cluster ke cluster baru tempat Anda menginstal Apigee Hybrid.
kubectl config use-context ${NEW_CLUSTER_CONTEXT}
Buat rahasia root di cluster baru:
kubectl -n cert-manager apply -f apigee-root-certificate.yaml
Nonaktifkan pembuatan sertifikat root baru. Hal ini akan memastikan bahwa kita tidak membuat
apigee-root-certificate
baru dan akhirnya menimpaapigee-root-certificate
yang kita buat pada langkah sebelumnya.Batalkan komentar baris berikut dalam file
overlays/initialization/certificates/kustomization.yaml
:# components: # - ./components/disable-apigee-root-certificate-generation
Lanjutkan penginstalan Apigee Hybrid lainnya menggunakan Penginstalan Apigee Hybrid Dasar atau Penginstalan Apigee Hybrid yang Disesuaikan. Misalnya, setelah mengikuti Penginstalan Dasar Apigee Hybrid, Anda dapat menjalankan:
./tools/apigee-hybrid-setup.sh --cluster-name $CLUSTER_NAME --cluster-region $CLUSTER_LOCATION
Verifikasi status pembangunan ulang menggunakan perintah berikut.
kubectl -n ${APIGEE_NAMESPACE} get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
Verifikasi proses pembangunan ulang dari log. Selain itu, verifikasi ukuran data menggunakan perintah status nodetool:
kubectl logs apigee-cassandra-default-0 -f -n ${APIGEE_NAMESPACE} kubectl exec apigee-cassandra-default-0 -n ${APIGEE_NAMESPACE} -- nodetool -u ${JMX_USER} -pw ${JMX_PASSWORD} status
Verifikasi status pembangunan ulang menggunakan perintah berikut.
kubectl -n apigee get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
Hasilnya akan terlihat seperti:
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 }
Lihat juga: Deployment multi-region.
Menghapus baris berikut dari
components/multi-region/patch.yaml
:properties: multiRegionSeedHost: {IP_ADDRESS} # To be modified. REQUIRED
Terapkan perubahan:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
Konsep
Hub Gambar
Image container Docker umumnya ditentukan dalam format:
${REGISTRY_HOST_PATH}/${IMAGE_NAME}:${IMAGE_TAG}
atau yang menggunakan ringkasan terlihat seperti:
${REGISTRY_HOST_PATH}/${IMAGE_NAME}@${DIGEST}
Apigee menggunakan konsep "Image Hub", yang dalam format di atas mengacu pada ${REGISTRY_HOST_PATH}
. Nilai default Hub Gambar adalah gcr.io/apigee-release/hybrid/
.
(Gambar yang menggunakan DIGEST harus disetel satu per satu di setiap subkomponen)
Apigee membuat jalur gambar akhir dengan menggabungkan nilai berikut:
- "Image Hub" yang dapat diganti di apigee-hybrid-config.yaml (lihat bagian Menggunakan image Docker dari repositori pribadi untuk mengetahui langkah-langkah mendetail tentang cara mengganti Image Hub).
- Nilai
IMAGE_TAG
diperoleh dari kolomversion
, yang ada di dalam file YAML untuk setiap komponen (misalnya, apigee-organization.yaml). Apigee memberi tag pada image dengan versi Apigee Hybrid - artinyaIMAGE_TAG
adalah 1.8 untuk Apigee Hybrid versi 1.8 IMAGE_NAME
ditentukan secara implisit dari nama container tempat image akan digunakan. Misalnya, untuk penampungapigee-runtime
,IMAGE_NAME
akan menjadi apigee-runtime.
Jadi, contoh lengkap jalur gambar adalah gcr.io/apigee-release/hybrid/apigee-runtime:1.8.0
Dengan cara ini, jalur image akhir dibuat, yang kemudian akan digunakan di dalam setiap container di pod masing-masing.
Akun layanan Google Cloud
Akun layanan Google Cloud adalah akun yang digunakan oleh aplikasi untuk melakukan panggilan yang diotorisasi ke Google API. Kunci akun layanan Google Cloud dapat didownload, lalu digunakan untuk tujuan autentikasi. Apigee mengharapkan pengguna memberikan kunci akun layanan dengan membuat secret. Berikut adalah nama komponen dan nama default secret tempat komponen mencari kunci akun layanan:
Komponen | Subkomponen | Nama secret Kubernetes default yang berisi kunci akun layanan |
---|---|---|
organisasi | ||
connectAgent | apigee-connect-agent-gcp-sa-key-${ORG_NAME} |
|
penonton | apigee-watcher-gcp-sa-key-${ORG_NAME} |
|
mart | apigee-mart-gcp-sa-key-${ORG_NAME} |
|
udca | apigee-udca-gcp-sa-key-${ORG_NAME} |
|
ingressGateways | T/A | |
environment | ||
runtime | apigee-runtime-gcp-sa-key-${ORG_NAME}-${ENV_NAME} |
|
udca | apigee-udca-gcp-sa-key-${ORG_NAME}-${ENV_NAME} |
|
sinkronisasi | apigee-synchronizer-gcp-sa-key-${ORG_NAME}-${ENV_NAME} |
|
telemetri | ||
metrik | apigee-metrics-gcp-sa-key |
|
containerLogs | apigee-logger-gcp-sa-key |
Akun layanan Kubernetes
Akun layanan Kubernetes memberikan identitas ke pod di cluster Anda. Secara default, pengontrol Apigee membuat resource ini untuk Anda. Namun, jika Anda ingin mengganti pembuatan (misalnya, saat Anda menggunakan Workload Identity), Anda dapat melakukannya dengan menentukan kolom podServiceAccountName
di berbagai subkomponen.
Daftar komponen dan subkomponennya masing-masing tempat akun layanan Kubernetes dapat ditentukan beserta nama default akun layanan k8s saat Anda mengaktifkan patch workload identity untuk komponen tersebut.
Komponen | Subkomponen | Nama default (tersedia saat Anda mengaktifkan patch workload identity) |
---|---|---|
organisasi | ||
connectAgent | apigee-connect-agent-svc-account-${ORG_NAME} |
|
penonton | apigee-watcher-svc-account-${ORG_NAME} |
|
mart | apigee-mart-svc-account-${ORG_NAME} |
|
udca | apigee-udca-svc-account-${ORG_NAME} |
|
environment | ||
sinkronisasi | apigee-synchronizer-svc-account-${ORG_NAME}-${ENV_NAME} |
|
udca | apigee-udca-svc-account-${ORG_NAME}-${ENV_NAME} |
|
runtime | apigee-runtime-svc-account-${ORG_NAME}-${ENV_NAME} |
|
datastore | ||
cassandra | apigee-datastore-svc-account |
|
telemetri | ||
metricsApp | apigee-metricsApp-svc-account |
|
metricsProxy | apigee-metricsProxy-svc-account |
|
metricsAdapter | apigee-metricsAdapter-svc-account |
|
containerLogs | apigee-container-logs-svc-account |
Workload Identity
Dengan identitas workload, pod (yang menggunakan akun layanan Kubernetes) yang berjalan di GKE dapat langsung mengautentikasi dengan Google Cloud API tanpa memerlukan kunci akun layanan Google Cloud.
Menambahkan lingkungan baru
.
├── ...
├── instances/instance1/components
│ ├── ...
│ ├── environments
│ │ ├── dev
│ │ │ └── apigee-environment.yaml
│ │ │ └── secrets.yaml
│ │ └── new-env-name (new)
│ │ └── apigee-environment.yaml (new)
│ │ └── secrets.yaml (new)
└── ...
Menambahkan lingkungan baru semudah:
- Membuat folder baru di dalam direktori environments (atau sesuai struktur folder Anda)
- Menyalin file
apigee-environment.yaml
dari lingkungan yang ada ke folder baru. - Jika Anda ingin membuat akun layanan dan kunci enkripsi baru untuk lingkungan baru, salin
secrets.yaml
ke folder baru dan ganti nama rahasia dengan tepat untuk membedakannya dari lingkungan yang ada lainnya (biasanya dilakukan dengan menambahkan nama lingkungan sebagai akhiran) - Melakukan perubahan yang sesuai pada
apigee-environment.yaml
, seperti:- Mengubah nama lingkungan
- Jika akun layanan dan kunci enkripsi baru akan dibuat, akun layanan dan kunci enkripsi tersebut harus dirujuk dengan benar dalam yaml.
- Menerapkan
yaml
:
kubectl apply -f components/environments/new-env-name/secrets.yaml
kubectl apply -f components/environments/new-env-name/apigee-environment.yaml
Menggunakan penghapusan paksa di Apigee Datastore
Jika penghapusan datastore tidak berjalan karena alasan apa pun, datastore Apigee kini dapat dihapus secara paksa menggunakan perintah berikut, terlepas dari status cluster saat ini.
Hapus
apigeeds
di namespaceapigee
:Kubectl delete -n apigee apigeeds default
Jika langkah ini terhenti, Anda dapat keluar dari langkah tersebut menggunakan CTRL + C.
Mengedit
apigeeds
baru:Kubectl edit -n apigee apigeeds default
Menambahkan/memperbarui kolom forceDelete dalam spesifikasi datastore Apigee
spec: forceDelete: true
Simpan file dan keluar.
Sekarang tunggu hingga datastore dihapus. Mungkin perlu waktu beberapa menit untuk menghapus semua resource cassandra.
Memahami skrip
Skrip apigee-hybrid-setup.sh
melakukan beberapa validasi dasar dan membantu mengotomatiskan langkah-langkah yang harus Anda lakukan jika ingin penyesuaian yang lebih mendetail seperti yang didokumentasikan dalam Penginstalan Apigee Hybrid yang disesuaikan. Meskipun dengan penginstalan yang disesuaikan, Anda masih dapat menggunakan skrip sebagian untuk membantu tugas tertentu.
Anda dapat menjalankan ./tools/apigee-hybrid-setup.sh --help
untuk melihat daftar tanda yang didukung dan mendapatkan bantuan tambahan terkait skrip. Saat ini, tanda berikut didukung:
--namespace
Secara default, skrip menginstal semua komponen di namespaceapigee
. Anda dapat mengubah perilaku ini dengan menentukan nama namespace menggunakan tanda ini.--org
Digunakan untuk memberikan nama organisasi Apigee. Jika tidak ditentukan, secara default akan ditetapkan ke project Google Cloud yang saat ini dipilih digcloud
--envgroup
Digunakan untuk memberikan nama grup lingkungan di dalam organisasi Anda. Jika tidak ditentukan, upaya akan dilakukan untuk membuat kueri API bidang kontrol guna menentukan nama grup lingkungan. Jika beberapa grup lingkungan ditemukan, error akan ditampilkan dan skrip akan keluar.--env
Digunakan untuk memberikan nama lingkungan di dalam organisasi Anda. Jika tidak ditentukan, upaya akan dilakukan untuk membuat kueri API panel kontrol guna menentukan nama lingkungan. Jika beberapa lingkungan ditemukan atau lingkungan bukan bagian dari grup lingkungan, error akan ditampilkan dan skrip akan keluar.--cluster-name
Nama cluster Kubernetes.--cluster-region
Region tempat cluster kubernetes berada--gcp-project-id
ID project Google Cloud tempat cluster Kubernetes berada--ingress-domain
Menentukan nama host/nama domain yang akan digunakan untuk membuat sertifikat TLS yang ditandatangani sendiri untuk istio ingress-gateway. Jika tidak ada yang ditentukan, upaya dilakukan untuk menentukan nilai dengan mengkueri API panel kontrol untuk mendapatkan nilai dari envgroup. Jika ada beberapa masalah dalam menentukan envgroup atau ada beberapa nama host yang dikonfigurasi untuk envgroup, error akan ditampilkan dan skrip akan keluar.--generate-internal-tls-certs
Ini akan membuat secret Kubernetes bernama apigee-ca yang berisi pasangan kunci dan sertifikat yang dibuat oleh kami.--create-ingress-tls-certs
Perintah ini akan membuat secret bernama{ORG_NAME}-{ENV_GROUP_NAME}
(berasal dari nama org dan envgroup) di dalam namespace istio-system yang akan berisi pasangan kunci dan sertifikat yang akan digunakan untuk komunikasi TLS. Nama domain yang digunakan untuk membuat sertifikat ini berasal dari nilai yang ditemukan dalam konfigurasi envgroup. Jika terjadi konflik (seperti saat kami menemukan beberapa domain), pesan error yang sesuai akan ditampilkan.--create-gcp-sa-and-secrets
Membuat satu akun layanan Google Cloud di project Google Cloud, mendownload kunci, lalu membuat secret Kubernetes yang berisi kunci. Nama secret dapat ditemukan di akun layanan Google Cloud.--fill-values
Mengganti nilai org, env, envgroup, dan nama lainnya di mana pun diperlukan dalam berbagai YAML.--apply-configuration
Tindakan ini akan membuat penerbit sertifikat, definisi resource kustom, webhook, peran, dan resource pengontrol. Resource akan dibuat dalam urutan yang benar dan perintah akan diblokir hingga semuanya berfungsi dengan baik.-- rename-directories
Ganti nama lingkungan dan grup lingkungan menjadi nama lingkungan dan grup lingkungan yang benar.--verbose
Menampilkan output mendetail untuk proses debug.--help
Menampilkan informasi penggunaan.--setup-all
Tindakan ini akan menjalankan semua tugas yang dapat dilakukan oleh skrip ini
Struktur Folder Penyiapan Apigee Hybrid
Folder apigee-hybrid-setup
memiliki struktur hierarkis berikut secara default:
.
├── bases
│ ├── controllers
│ │ ├── apigee-controller
│ │ │ ├── apigee-controller-deployment.yaml
│ │ │ └── kustomization.yaml
│ │ └── apigee-ingressgateway-manager
│ │ ├── apigee-ingressgateway-manager-deployment.yaml
│ │ └── kustomization.yaml
│ ├── datastore
│ │ └── backup-and-restore
│ │ ├── backup
│ │ │ ├── cronjob.yaml
│ │ │ └── kustomization.yaml
│ │ ├── common
│ │ │ ├── kustomization.yaml
│ │ │ ├── rbac.yaml
│ │ │ └── tls-certificate.yaml
│ │ └── restore
│ │ ├── job.yaml
│ │ └── kustomization.yaml
│ └── initialization
│ ├── certificates
│ │ ├── certificates-and-issuers.yaml
│ │ └── kustomization.yaml
│ ├── crds
│ │ ├── customresourcedefinition-apigeedatastores.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeedeployments.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeenvironments.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeorganizations.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeredis.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeerouteconfigs.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeroutes.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeetelemetries.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-cassandradatareplications.apigee.cloud.google.com.yaml
│ │ └── kustomization.yaml
│ ├── openshift
│ │ ├── kustomization.yaml
│ │ └── scc.yaml
│ ├── rbac
│ │ ├── apigee-controller
│ │ │ ├── kustomization.yaml
│ │ │ └── rbac.yaml
│ │ └── apigee-embedded-ingress-controller
│ │ ├── cluster-role-bindings.yaml
│ │ ├── cluster-roles.yaml
│ │ ├── kustomization.yaml
│ │ └── service-account.yaml
│ └── webhooks
│ ├── kustomization.yaml
│ ├── mutatingwebhookconfiguration.yaml
│ └── validatingwebhookconfiguration.yaml
├── CONTRIBUTING.md
├── docs
│ └── api_references
│ ├── v1alpha1.md
│ └── v1alpha2.md
├── kokoro
│ ├── build.sh
│ ├── common.cfg
│ ├── continuous.cfg
│ ├── presubmit.cfg
│ └── release.cfg
├── LICENSE
├── overlays
│ ├── controllers
│ │ ├── apigee-controller
│ │ │ ├── apigee-hybrid-config.yaml
│ │ │ ├── components
│ │ │ │ ├── imagepullsecret
│ │ │ │ │ ├── kustomization.yaml
│ │ │ │ │ └── patch.yaml
│ │ │ │ └── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── kustomization.yaml
│ │ ├── apigee-ingressgateway-manager
│ │ │ ├── apigee-ingressgateway-manager-deployment-patch.yaml
│ │ │ ├── apigee-istio-mesh-config.yaml
│ │ │ ├── components
│ │ │ │ ├── imagepullsecret
│ │ │ │ │ ├── kustomization.yaml
│ │ │ │ │ └── patch.yaml
│ │ │ │ └── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ ├── initialization
│ │ ├── certificates
│ │ │ ├── apigee-ingressgateway-manager-certificate-patch.yaml
│ │ │ ├── apigee-serving-cert-patch.yaml
│ │ │ ├── components
│ │ │ │ └── disable-apigee-root-certificate-generation
│ │ │ │ └── kustomization.yaml
│ │ │ └── kustomization.yaml
│ │ ├── crds
│ │ │ └── kustomization.yaml
│ │ ├── ingress
│ │ │ ├── envoyfilter-1.11.yaml
│ │ │ └── kustomization.yaml
│ │ ├── namespace.yaml
│ │ ├── openshift
│ │ │ ├── kustomization.yaml
│ │ │ └── scc.yaml
│ │ ├── rbac
│ │ │ ├── apigee-controller
│ │ │ │ └── kustomization.yaml
│ │ │ ├── apigee-ingressgateway-manager
│ │ │ │ └── kustomization.yaml
│ │ │ └── kustomization.yaml
│ │ └── webhooks
│ │ ├── kustomization.yaml
│ │ ├── mutatingwebhookconfiguration.yaml
│ │ └── validatingwebhookconfiguration.yaml
│ └── instances
│ └── instance1
│ ├── datastore
│ │ ├── apigee-datastore.yaml
│ │ ├── components
│ │ │ ├── gcs-backup
│ │ │ │ ├── apigee-datastore-patch.yaml
│ │ │ │ ├── cron-patch.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── tls-certificate-patch.yaml
│ │ │ ├── gcs-restore
│ │ │ │ ├── apigee-datastore-patch.yaml
│ │ │ │ ├── job-patch.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── tls-certificate-patch.yaml
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── multi-region
│ │ │ │ ├── cassandra-data-replication.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── non-gcs-backup
│ │ │ │ ├── apigee-datastore-patch.yaml
│ │ │ │ ├── cron-patch.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── tls-certificate-patch.yaml
│ │ │ ├── non-gcs-restore
│ │ │ │ ├── apigee-datastore-patch.yaml
│ │ │ │ ├── job-patch.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── tls-certificate-patch.yaml
│ │ │ ├── openshift-scc
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── scc.yaml
│ │ │ └── workload-identity
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── environments
│ │ ├── kustomization.yaml
│ │ └── test
│ │ ├── apigee-environment.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── kustomization.yaml
│ ├── organization
│ │ ├── apigee-organization.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── redis
│ │ ├── apigee-redis.yaml
│ │ ├── components
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── route-config
│ │ ├── kustomization.yaml
│ │ └── test-envgroup
│ │ ├── apigee-route-config.yaml
│ │ ├── components
│ │ │ ├── http-and-non-sni-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ ├── http-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ └── non-sni-client
│ │ │ ├── apigee-route.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ └── telemetry
│ ├── apigee-telemetry.yaml
│ ├── components
│ │ ├── http-proxy
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── imagepullsecret
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── logger
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── metrics
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── nodeselector
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── openshift-scc
│ │ │ ├── kustomization.yaml
│ │ │ └── scc.yaml
│ │ ├── workload-identity-logger
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ └── workload-identity-metrics
│ │ ├── kustomization.yaml
│ │ ├── patch.yaml
│ │ └── service-accounts.yaml
│ └── kustomization.yaml
├── README.md
├── templates
│ ├── certificate-org-envgroup.yaml
│ ├── secret-apigee-cassandra-backup-and-restore-gcp-sa-key.yaml
│ ├── secret-apigee-cassandra-backup-and-restore-key-file.yaml
│ ├── secret-gcp-sa-key.yaml
│ └── secret-ingress-tls-cert-key.yaml
└── tools
├── apigee-hybrid-setup.sh
├── apigee-pull-push.sh
├── common.sh
├── create-service-account.sh
└── dump_kubernetes.sh
Versi file di atas dapat ditemukan di tag preview-1 repositori github di: https://github.com/apigee/apigee-hybrid-install/releases/tag/preview-1.
Folder di atas berisi manifes Kubernetes untuk runtime Apigee Hybrid dan menggunakan Kustomize untuk pengelolaan konfigurasi. Manifes disusun berdasarkan konsep dasar & overlay Kustomize. Folder bases berisi konfigurasi minimum yang diperlukan untuk setiap komponen Apigee. Folder overlay berisi beberapa fitur(konfigurasi) tambahan yang ditentukan sebagai komponen. Komponen dapat diaktifkan dengan menghapus komentar referensi komponen di kustomization.yaml
Contoh : Untuk mengaktifkan gcs-backup
untuk datastore Apigee, komponen gcs-backup
telah di-uncomment di customization.yaml di bawah.
Jalur : ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/kustomization.yaml
namespace: "apigee" # kpt-set: ${APIGEE_NAMESPACE}
resources:
- apigee-datastore.yaml
components:
# - ./components/http-proxy
# - ./components/nodeselector/
# - ./components/imagepullsecret
# - ./components/workload-identity
# - ./components/openshift-scc
- ./components/gcs-backup (uncommented)
# - ./components/gcs-restore
# - ./components/non-gcs-backup
# - ./components/non-gcs-restore
Setiap nilai yang memerlukan penyesuaian harus ditetapkan dalam patch.yaml yang sesuai untuk gcs-backup.
Dalam file di bawah, nilai CLOUD_STORAGE_BUCKET_PATH
harus ditetapkan oleh pengguna
Jalur: $INSTALL_DIR/overlays/instances/$INSTANCE_DIR/datastore/components/gcs-backup/cron-patch.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: apigee-cassandra-backup
namespace: apigee
spec:
schedule: "${YOUR_BACKUP_SCHEDULE_CODE}" # To be modified
jobTemplate:
spec:
template:
spec:
containers:
- name: apigee-cassandra-backup
env:
- name: APIGEE_CLOUDPROVIDER
value: "GCP"
- name: DATABASE_STORAGE_BUCKET
value: "${CLOUD_STORAGE_BUCKET_PATH}" # To be modified. REQUIRED
volumeMounts:
- name: apigee-cassandra-backup
mountPath: /var/secrets/google
volumes:
- name: apigee-cassandra-backup
secret:
secretName: "apigee-cassandra-backup-and-restore-svc-account"
Demikian pula, fitur/konfigurasi apa pun yang memerlukan penyesuaian dapat diaktifkan dengan menghapus komentar komponen di kustomisasi.yaml komponen apigee. Selain itu, sesuai kebutuhan, nilai yang sesuai untuk kolom di patch.yaml komponen harus ditetapkan dengan tepat.
Penjelasan singkat tentang folder dan file:
basis
Folder ini memiliki template dengan konfigurasi minimum yang diperlukan oleh setiap komponen Apigee. Tidak perlu ada modifikasi pada manifes di folder ini.
overlay
Folder ini berisi template komponen kustomize untuk konfigurasi tambahan
inisialisasi
namespaces.yaml
Namespace tempat komponen bidang data Apigee akan diinstal. Nama namespace default adalah apigee
sertifikat
Berisi resource Issuer
dan Certificate
yang digunakan untuk menerbitkan sertifikat ke webhook. Juga berisi Issuer
yang digunakan untuk menerbitkan sertifikat ke berbagai pod untuk komunikasi TLS.
rbac
Berisi Role
, ClusterRole
, RoleBinding
, dan ClusterRoleBinding
yang akan digunakan oleh berbagai komponen.
crds
Contains the definition of all the CRDs which are used by Apigee.
webhook
Berisi ValidatingWebhookConfiguration
danMutatingWebhookConfiguration
yang akan digunakan untuk melakukan validasi pada resource kustom.
masuk
Berisi konfigurasi yang berlaku untuk semua POD Ingress. Mis. Modifikasi header umum, health check, dll.
OpenShift
Berisi definisi SecurityContextConstraints OpenShift.
Pengontrol
apigee-controller
apigee-hybrid-config.yaml
Berisi ConfigMap
yang disediakan sebagai input dalam apigee-controller-manager.yaml. ConfigMap ini berisi konfigurasi seperti imageHub
, imagePullSecrets
, forwardProxy
, dan lain-lain.
apigee-controller-deployment.yaml
Berisi dua Layanan untuk pengontrol dan webhook, serta Deployment untuk pengontrol. Jika Anda ingin menggunakan image pribadi untuk pengontrol, di sinilah Anda perlu melakukan perubahan.
istiod
Apigee-istio-mesh-config.yaml Berisi konfigurasi mesh untuk Istio yang digunakan oleh Apigee. Hal ini tidak berlaku untuk penginstalan ASM/Istio lainnya di cluster.
apigee-ingressgateway-manager-deployment-patch.yaml
Berisi layanan dan deployment Istiod. Istiod ini bersifat pribadi dan hanya digunakan untuk kasus penggunaan Apigee.
instances/{instanceName}
datastore
apigee-datastore.yaml
Berisi resource kustom ApigeeDatastore
yang mengelola cassandra.
secrets.yaml
Berisi kredensial default untuk datastore.
redis
apigee-redis.yaml
Berisi resource kustom ApigeeRedis
yang mengelola redis.
secrets.yaml
Berisi kredensial default untuk datastore.
organisasi
apigee-organization.yaml
Berisi resource kustom ApigeeOrganization
yang mengelola subkomponen lain seperti connectAgent, watcherAndSynchronizer, MART, UDCA, dan Ingress.
secrets.yaml
Berisi Secret
yang dirujuk dalam apigee-organization.yaml. Beberapa secret diberi komentar karena dihasilkan oleh skrip. Jika menonaktifkan pembuatannya, Anda harus membuat
lingkungan
Berisi semua lingkungan di organisasi Anda. Anda harus membuat folder terpisah untuk setiap lingkungan dengan menyalin folder yang sudah diberikan kepada Anda dan mengonfigurasinya sesuai persyaratan.
dev
apigee-environment.yaml
Berisi resource kustom ApigeeEnvironment
yang mengelola subkomponen lain seperti runtime.
secrets.yaml
Berisi Secret
yang dirujuk dalam apigee-environment.yaml. Beberapa secret diberi komentar karena dihasilkan oleh skrip. Jika menonaktifkan
pembuatannya, Anda harus membuat iklan tersebut secara manual
telemetri
apigee-telemetry.yaml
Berisi resource kustom ApigeeTelemetry
.
secrets.yaml
Berisi Secret
yang dirujuk dalam apigee-telemetry.yaml. Beberapa secret diberi komentar karena dihasilkan oleh skrip. Jika menonaktifkan pembuatannya, Anda harus membuat
route-config
dev-envgroup
apigee-route-config.yaml
Berisi resource kustom ApigeeRouteConfig
.
secrets.yaml
Berisi Secret
yang dirujuk dalam apigee-route-config.yaml. Bagian ini dikomentari karena dibuat secara otomatis oleh skrip apigee-hybrid-setup.sh dan disimpan di sana untuk memberikan contoh tampilan rahasia jika Anda membuatnya secara manual.
diagnostik
diagnostic-collector.yaml
Resource yang akan digunakan untuk memunculkan deployment diagnostik
alat
apigee-hybrid-setup.sh
apigee-create-service-account.sh
dump-kubernetes.sh
apigee-pull-push.sh
Menyimpan kunci akun layanan di vault eksternal
Vault (oleh Hashicorp) adalah sistem pengelolaan rahasia populer yang memiliki beberapa integrasi dengan penyimpanan rahasia yang disediakan oleh Google, Azure, AWS, dan lainnya. Hashicorp Vault memungkinkan Anda mengambil secret dari sumber eksternal, lalu menggunakannya dalam resource Kubernetes. Ada beberapa cara untuk menggunakan Vault sebagai sumber secret. Langkah-langkah berikut akan berfungsi sebagai contoh dasar tentang cara menggunakan Penyedia CSI Vault untuk memasang kunci akun layanan Google Cloud yang disimpan di beberapa mesin rahasia yang disediakan oleh Vault.
- Kita akan menggunakan Helm untuk menginstal resource terkait Vault di cluster Anda. Ikuti langkah-langkah di Menginstal Helm tentang cara menyiapkan helm di sistem Anda.
Ikuti langkah-langkah di Menginstal diagram Helm Vault, yaitu:
Menambahkan repositori Hashicorp ke helm
helm repo add hashicorp https://helm.releases.hashicorp.com
Perbarui repositori helm
helm repo update
Menginstal Vault
helm install vault hashicorp/vault \ --set "server.dev.enabled=true" \ --set "injector.enabled=false" \ --set "csi.enabled=true"
Sekarang kita akan menyimpan secret di dalam Vault.
Mendapatkan shell di dalam pod dev vault
kubectl exec -it vault-0 -- /bin/sh ```
Kita akan menggunakan mesin rahasia nilai/kunci untuk menyimpan data dalam contoh ini.
vault kv put secret/runtime-gcp-sa-key key="${BASE_64_ENCODED_KEY}"
Untuk memverifikasi bahwa kunci berhasil disimpan, gunakan:
vault kv get secret/runtime-gcp-sa-key
Siapkan autentikasi untuk mengizinkan pod runtime menarik kunci. Seperti yang dibahas dalam Akun layanan Kubernetes, akun layanan Kubernetes memberikan identitas ke pod dan memungkinkan pod mengautentikasi dengan sistem lain.
Mendapatkan shell di dalam pod dev vault
kubectl exec -it vault-0 -- /bin/sh
Mengaktifkan metode autentikasi kubernetes
vault auth enable kubernetes
Menulis konfigurasi autentikasi
vault write auth/kubernetes/config \ issuer="https://kubernetes.default.svc.cluster.local" \ token_reviewer_jwt="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \ kubernetes_host="https://$KUBERNETES_PORT_443_TCP_ADDR:443" \ kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt \ disable_iss_validation=true
Buat kebijakan autentikasi
vault policy write apigee-runtime-app - <<EOF path "secret/data/runtime-gcp-sa-key" { capabilities = ["read"] } EOF
Ikat kebijakan dengan akun layanan
vault write auth/kubernetes/role/apigee-runtime-role \ bound_service_account_names=apigee-runtime-sa \ bound_service_account_namespaces=${APIGEE_NAMESPACE} \ policies=apigee-runtime-app \ ttl=20m
Di sini, kita mengasumsikan bahwa akun layanan berada di dalam namespace apigee. Jika Anda memiliki namespace lain untuk menginstal Apigee, Anda akan menggunakan nama tersebut.
Keluar dari shell di dalam vault-0
exit
Menginstal driver CSI penyimpanan rahasia
# Add repo to helm helm repo add secrets-store-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/secrets-store-csi-driver/master/charts # Install driver in cluster helm install csi secrets-store-csi-driver/secrets-store-csi-driver
Buat resource kubernetes
SecretProviderClass
yang mereferensikan secret yang Anda buat di dalam vaultcat > spc-vault.yaml <<EOF apiVersion: secrets-store.csi.x-k8s.io/v1alpha1 kind: SecretProviderClass metadata: name: vault-apigee-runtime-gcp-sa-key spec: provider: vault parameters: vaultAddress: "http://vault.default:8200" roleName: "apigee-runtime-role" objects: | - objectName: "client_secret.json" secretPath: "secret/data/runtime-gcp-sa-key" secretKey: "key" EOF
Terapkan
yaml
kubectl apply -f spc-vault.yaml
Buat akun layanan Kubernetes yang telah kita tetapkan izinnya di langkah (4.e)
kubectl create serviceaccount -n ${APIGEE_NAMESPACE} apigee-runtime-sa
Ubah file apigee-environment.yaml untuk lingkungan dan tambahkan baris berikut:
apiVersion: apigee.cloud.google.com/v1alpha2 kind: ApigeeEnvironment # existing content spec: name: {ENV_NAME} organizationRef: {ORG_NAME} components: runtime: # existing content pod containers: - name: apigee-runtime podServiceAccountName: apigee-runtime-sa # existing content volumeMounts: - name: secrets-store-inline mountPath: "/opt/apigee/sa" readOnly: true volumes: - name: secrets-store-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "vault-apigee-runtime-gcp-sa-key"
Terapkan perubahan:
kubectl apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/environments/$ENV_NAME
Upgrade Apigee Hybrid
Anda harus telah menyelesaikan semua persyaratan yang disebutkan dalam Prasyarat. Selain itu, sebaiknya Anda melakukan rolling restart semua komponen untuk memeriksa apakah cluster dalam kondisi baik. Urutan mulai ulang adalah Cassandra, Redis, ApigeeOrganization, dan ApigeeEnvironment.
Buat Cadangan
Buat salinan cadangan konfigurasi hybrid saat ini. Pencadangan akan diperlukan jika Anda perlu mengembalikan upgrade ke versi saat ini.
tar -czvf apigee-hybrid-install.v-X.Y.Z.tar.gz $HYBRID_INSTALL_BASE_DIR
Buat cadangan database Cassandra. Pencadangan Cassandra adalah tindakan perlindungan penting terhadap skenario bencana.
Mengupgrade platform Kubernetes Anda jika diperlukan
Langkah ini tidak diperlukan setiap saat, tetapi Anda harus mengupgrade platform Kubernetes seperti kubernetes, openshift, dan komponen seperti cert-manager, cassandra, dll. ke versi yang lebih baru jika versi tersebut tidak lagi didukung oleh Apigee Hybrid versi yang lebih baru. Dokumentasi akan berisi versi yang didukung dari platform dan komponen.
Mendownload file penyiapan
Download repositori dan ganti folder bases
dan tools
di penyiapan Apigee Hybrid yang ada dengan yang lebih baru:
Clone tag preview-1 repositori GitHub di
https://github.com/apigee/apigee-hybrid-install/releases/tag/preview-1
Repositori yang di-clone akan memiliki struktur yang menyerupai yang dijelaskan dalam Struktur Folder Penyiapan Apigee Hybrid:
mengganti folder inisialisasi, alat, dan pengontrol dalam penyiapan Apigee Hybrid yang ada.
export HYBRID_INSTALL_HOME=PATH_TO_PREVIOUS_HYBRID_INSTALL_DIRECTORY mv -f bases $HYBRID_INSTALL_HOME/bases mv -f tools $HYBRID_INSTALL_HOME/tools
Perbarui izin akun layanan jika diperlukan
Langkah ini juga tidak diperlukan setiap saat, tetapi Anda harus membuat akun layanan baru atau memperbarui izin akun layanan yang ada jika diperlukan. Panduan upgrade akan memberikan detail tentang akun layanan mana yang perlu diubah atau dibuat dan peran apa yang perlu ditambahkan.
Jika Anda perlu mengubah izin akun layanan yang ada, gunakan perintah
gcloud
yang sesuai. Panduan upgrade akan berisi perintah dan peran mendetail yang perlu ditambahkan.gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-component@$PROJECT_ID." \ --role="roles/$NEW_ROLE"
Jika versi Apigee Hybrid yang lebih baru mungkin memerlukan akun layanan tambahan untuk komponen baru / yang ada, Anda perlu membuatnya. Anda dapat menggunakan skrip
apigee-create-service-account.sh
yang dikirim dalam folder alat untuk membuat akun layanan baru. Karena skrip akan diperbarui sebagai bagian dari langkah 4, skrip akan memiliki detail dan profil baru yang diperlukan untuk akun layanan baru yang perlu dibuat.Nama akun layanan yang baru dibuat harus dirujuk di CR komponen yang sesuai.
./tools/create-service-account --env prod --profile apigee-component
Pengontrol upgrade
Ubah kolom versi untuk komponen yang tercantum di ${INSTALL_DIR}/overlays/instances/$INSTANCE_DIR/kustomization.yaml
ke versi hybrid yang relevan.
Berikut adalah contoh file $INSTALL_DIR/overlays/instances/$INSTANCE_DIR/kustomization.yaml. Nilai kolom versi harus diupdate ke versi yang relevan
resources:
- datastore/
- environments/
- organization/
- redis/
- route-config/
- telemetry/
patches:
- target:
group: apigee.cloud.google.com
version: v1alpha1
kind: ApigeeDatastore
patch: |-
- op: add
path: /spec/version
value: 1-6-1 (Modify the version)
- target:
group: apigee.cloud.google.com
version: v1alpha2
kind: ApigeeEnvironment
patch: |-
- op: add
path: /spec/version
value: 1-6-1 (Modify the version)
Ikuti serangkaian langkah yang sama seperti yang diberikan di Membuat resource inisialisasi dan pengontrol dalam alur kerja penginstalan Apigee Hybrid. Anda dapat menggunakan skrip atau mengikuti langkah-langkah manual yang diberikan untuk mengupgrade resource inisialisasi dan pengontrol.
Mengupdate komponen Apigee Kubernetes
Anda harus melakukan perubahan berikut: - Jika ada perubahan arsitektur atau pengenalan kolom baru atau penghentian penggunaan kolom lama, Anda harus mengubah CR dengan perubahan yang sesuai sesuai petunjuk yang diberikan dalam panduan upgrade. - Minimal, Anda perlu memperbarui kolom versi dalam CR (yang akan menunjukkan versi Apigee Hybrid yang diinstal) ke versi Apigee Hybrid yang lebih baru.
Terapkan perubahan untuk CR Apigee. Untuk lingkungan non-prod, Anda dapat menerapkan semua perubahan pada komponen Apigee secara bersamaan
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}
Rollback Apigee Hybrid
Memulihkan apigee-hybrid-setup
Pindah ke direktori yang berisi penyiapan Apigee Hybrid versi sebelumnya. Jika tidak tersedia, pulihkan dari file zip yang dibuat pada langkah 1[link] selama upgrade Apigee Hybrid.
Mengembalikan komponen Kubernetes
Terapkan perubahan untuk CR Apigee
kubectl apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}
Pengontrol rollback
Ikuti serangkaian langkah yang sama yang diberikan buat resource inisialisasi dan pengontrol dalam alur kerja penginstalan Apigee Hybrid. Anda dapat menggunakan skrip atau mengikuti langkah-langkah manual yang diberikan untuk mengembalikan resource inisialisasi dan pengontrol.
Pembersihan
Anda harus membersihkan semua resource tambahan baru yang dibuat selama upgrade seperti komponen baru atau akun layanan yang diperkenalkan dalam versi hybrid yang lebih baru. Semua resource yang perlu dibersihkan dan langkah-langkah untuk membersihkannya akan diberikan dalam panduan upgrade.
Menghapus lingkungan
Berikut adalah langkah-langkah untuk menghapus semua resource yang terkait dengan lingkungan dari cluster kubernetes Anda:
Mendapatkan nama CR lingkungan. Hal ini dapat dilakukan dengan mendapatkan semua lingkungan:
kubectl get env -n ${APIGEE_NAMESPACE}
Simpan nama resource dalam variabel lingkungan
APIGEE_ENV
.Hapus kunci enkripsi lingkungan. Misalnya, jika Anda belum mengubah nama kunci enkripsi, Anda dapat menghapusnya menggunakan:
kubectl delete secret -n ${APIGEE_NAMESPACE} $APIGEE_ENV-encryption-keys
Hapus rahasia akun layanan Google Cloud:
kubectl delete secret -n ${APIGEE_NAMESPACE} $(kubectl get env $APIGEE_ENV -n ${APIGEE_NAMESPACE} -o=jsonpath='{.spec.components.*.appServiceAccountSecretName}')
Hapus akun layanan kubernetes:
kubectl delete secret -n ${APIGEE_NAMESPACE} $(kubectl get env $APIGEE_ENV -n ${APIGEE_NAMESPACE} -o=jsonpath='{.spec.components.*.podServiceAccountName}')
Hapus resource kustom lingkungan Apigee:
kubectl -n ${APIGEE_NAMESPACE} delete env $APIGEE_ENV
Menghapus penyiapan hybrid
Berikut adalah langkah-langkah untuk menghapus semua resource yang terkait dengan Apigee Hybrid dari cluster Kubernetes Anda:
Anda harus menghapus tugas penyiapan pengguna Apigee dan penyiapan skema.
# To list all jobs in ${APIGEE_NAMESPACE} kubectl -n ${APIGEE_NAMESPACE} get jobs # To delete all jobs in ${APIGEE_NAMESPACE} kubectl -n ${APIGEE_NAMESPACE} delete jobs $(kubectl -n ${APIGEE_NAMESPACE} get jobs -o custom-columns=':.metadata.name')
Anda harus menghapus komponen dataplane hybrid Apigee yang di-deploy. Gunakan perintah berikut untuk menghapus semua komponen:
kubectl delete -k ${INSTALL_DIR}/overlays/instances/$INSTANCE_NAME
Langkah ini hanya diperlukan jika Anda tidak mengandalkan nama default untuk secret akun layanan Kubernetes, secret akun layanan Google Cloud, dll. Jika Anda mengandalkan nama default, nama tersebut akan dihapus pada langkah berikutnya. Jika tidak, Anda harus menghapusnya secara manual menggunakan perintah berikut:
kubectl delete secret -n ${APIGEE_NAMESPACE} $(kubectl get ${APIGEE_COMPONENT} ${APIGEE_COMPONENT_NAME} -n ${APIGEE_NAMESPACE} -o=jsonpath='{.spec.components.*.appServiceAccountSecretName}') kubectl delete secret -n ${APIGEE_NAMESPACE} $(kubectl get ${APIGEE_COMPONENT} ${APIGEE_COMPONENT_NAME} -n ${APIGEE_NAMESPACE} -o=jsonpath='{.spec.components.*.podServiceAccountName}')
Jika menggunakan OpenShift, Anda harus menghapus scc (Batasan Konteks Keamanan) yang dibuat selama penginstalan Apigee Hybrid.
kubectl delete scc ${SECURITY_CONTEXT_CONSTRAINTS_NAME}
Jalankan perintah di bawah untuk menghapus peran, rolebinding, CRD, deployment pengontrol, dll.
kubectl delete -k ${INSTALL_DIR}/overlays/initialization/ingress kubectl delete -k ${INSTALL_DIR}/overlays/initialization/rbac kubectl delete -k ${INSTALL_DIR}/overlays/initialization/webhooks kubectl delete -k ${INSTALL_DIR}/overlays/initialization/crds kubectl delete -k ${INSTALL_DIR}/overlays/initialization/certificates
Jalankan perintah di bawah untuk menghapus namespace apigee
kubectl delete -f ${INSTALL_DIR}/overlays/initialization/namespace.yaml
Atau, gunakan perintah:
kubectl delete $APIGEE_NAMESPACE
Penginstalan Multi-Instance
Penyiapan multi-instance mengacu pada penyiapan hybrid yang dapat mencakup beberapa region atau dalam region yang sama. Apigee merekomendasikan pengorganisasian konfigurasi instance ke-2 dalam struktur direktori terpisah karena konfigurasi lingkungan (replika,dll.) selalu berbeda di antara instance. Konfigurasi setiap instance dipisahkan dan diatur secara independen dalam struktur foldernya masing-masing.
Misalnya - Untuk penyiapan Aktif-Pasif dalam skenario multi-region, Anda dapat mengonfigurasi region ke-2 dalam standby aktif dengan ukuran dan konfigurasi yang berbeda.
Dalam struktur folder di bawah, Anda dapat membuat salinan direktori instance1 yang disebut instance2 dan mengubah konfigurasi datastore dan ingress sesuai kebutuhan.
Struktur folder apigee-hybrid-setup
untuk penyiapan multi-instance.]
.
├── bases
│ ├── controllers
│ │ ├── apigee-controller
│ │ │ ├── apigee-controller-deployment.yaml
│ │ │ └── kustomization.yaml
│ │ └── istiod
│ │ ├── apigee-ingressgateway-manager-deployment.yaml
│ │ └── kustomization.yaml
│ └── initialization
│ ├── certificates
│ │ ├── certificates-and-issuers.yaml
│ │ └── kustomization.yaml
│ ├── crds
│ │ ├── customresourcedefinition-apigeedatastores.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeedeployments.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeenvironments.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeorganizations.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeredis.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeerouteconfigs.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeroutes.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeetelemetries.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-cassandradatareplications.apigee.cloud.google.com.yaml
│ │ └── kustomization.yaml
│ ├── ingress
│ │ ├── envoyfilter-1.11.yaml
│ │ └── kustomization.yaml
│ ├── openshift
│ │ ├── kustomization.yaml
│ │ └── scc.yaml
│ ├── rbac
│ │ ├── apigee-controller
│ │ │ ├── kustomization.yaml
│ │ │ └── rbac.yaml
│ │ └── apigee-embedded-ingress-controller
│ │ ├── cluster-role-bindings.yaml
│ │ ├── cluster-roles.yaml
│ │ ├── kustomization.yaml
│ │ └── service-account.yaml
│ └── webhooks
│ ├── kustomization.yaml
│ ├── mutatingwebhookconfiguration.yaml
│ └── validatingwebhookconfiguration.yaml
├── instances
│ └── instance1 (Add the 2nd instance under instances directory similar to instance1)
│ ├── datastore
│ │ ├── apigee-datastore.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── environments
│ │ ├── kustomization.yaml
│ │ └── test
│ │ ├── apigee-environment.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── kustomization.yaml
│ ├── organization
│ │ ├── apigee-organization.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── redis
│ │ ├── apigee-redis.yaml
│ │ ├── components
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── route-config
│ │ ├── kustomization.yaml
│ │ └── test-env-group
│ │ ├── apigee-route-config.yaml
│ │ ├── components
│ │ │ ├── http-and-non-sni-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ ├── http-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ └── non-sni-client
│ │ │ ├── apigee-route.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ └── telemetry
│ ├── apigee-telemetry.yaml
│ ├── components
│ │ ├── http-proxy
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── imagepullsecret
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── logger
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── metrics
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── nodeselector
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── workload-identity-logger
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ └── workload-identity-metrics
│ │ ├── apigee-workload-identities.yaml
│ │ ├── kustomization.yaml
│ │ └── patch.yaml
│ └── kustomization.yaml
├── overlays
│ ├── controllers
│ │ ├── apigee-controller
│ │ │ ├── apigee-hybrid-config.yaml
│ │ │ ├── components
│ │ │ │ ├── imagepullsecret
│ │ │ │ │ ├── kustomization.yaml
│ │ │ │ │ └── patch.yaml
│ │ │ │ └── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── kustomization.yaml
│ │ ├── istiod
│ │ │ ├── apigee-ingressgateway-manager-deployment-patch.yaml
│ │ │ ├── apigee-istio-mesh-config.yaml
│ │ │ ├── components
│ │ │ │ ├── imagepullsecret
│ │ │ │ │ ├── kustomization.yaml
│ │ │ │ │ └── patch.yaml
│ │ │ │ └── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ ├── initialization
│ │ ├── certificates
│ │ │ ├── apigee-ingressgateway-manager-certificate.yaml
│ │ │ └── kustomization.yaml
│ │ ├── crds
│ │ │ └── kustomization.yaml
│ │ ├── ingress
│ │ │ └── kustomization.yaml
│ │ ├── namespace.yaml
│ │ ├── openshift
│ │ │ ├── kustomization.yaml
│ │ │ └── scc.yaml
│ │ ├── rbac
│ │ │ ├── apigee-controller
│ │ │ │ └── kustomization.yaml
│ │ │ ├── apigee-embedded-ingress-controller
│ │ │ │ └── kustomization.yaml
│ │ │ └── kustomization.yaml
│ │ └── webhooks
│ │ ├── kustomization.yaml
│ │ ├── mutatingwebhookconfiguration.yaml
│ │ └── validatingwebhookconfiguration.yaml
│ └── instances
│ └── instance1
│ ├── datastore
│ │ ├── apigee-datastore.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── openshift-scc
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── scc.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── environments
│ │ ├── kustomization.yaml
│ │ └── test
│ │ ├── apigee-environment.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── kustomization.yaml
│ ├── organization
│ │ ├── apigee-organization.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── redis
│ │ ├── apigee-redis.yaml
│ │ ├── components
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── route-config
│ │ ├── kustomization.yaml
│ │ └── test-envgroup
│ │ ├── apigee-route-config.yaml
│ │ ├── components
│ │ │ ├── http-and-non-sni-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ ├── http-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ └── non-sni-client
│ │ │ ├── apigee-route.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ └── telemetry
│ ├── apigee-telemetry.yaml
│ ├── components
│ │ ├── http-proxy
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── imagepullsecret
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── logger
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── metrics
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── nodeselector
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── openshift-scc
│ │ │ ├── kustomization.yaml
│ │ │ └── scc.yaml
│ │ ├── workload-identity-logger
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ └── kustomization.yaml
│ │ └── workload-identity-metrics
│ │ ├── apigee-workload-identities.yaml
│ │ ├── kustomization.yaml
│ │ └── patch.yaml
│ └── kustomization.yaml
├── README.md
├── templates
│ ├── ingress-certificate.yaml
│ ├── ingress-cert-secret.yaml
│ └── service-account-key-secret.yaml
└── tools
├── apigee-hybrid-setup.sh
├── common.sh
├── create-service-account.sh
└── dump_kubernetes.sh
Penyiapan Multi Instance di GKE
Prasyarat
Sebelum mengonfigurasi beberapa instance hybrid, Anda diharapkan telah menyelesaikan prasyarat berikut:
- Menyiapkan cluster Kubernetes di beberapa region(sama atau berbeda) dengan blok CIDR yang berbeda
- Menyiapkan komunikasi lintas region
- Buka port Cassandra 7000 dan 7001 antara cluster Kubernetes di semua region (7000 dapat digunakan sebagai opsi cadangan selama pemecahan masalah). Lihat juga Mengonfigurasi port.
Anda dapat menggunakan alat seperti ntpdate untuk memverifikasi bahwa waktu server disinkronkan.
Mengonfigurasi host awal multi-region
- Buat salinan folder $INSTANCE_NAME dari instance yang ada dan tambahkan di folder instances.
- Ubah nilai kolom namespace jika berbeda dengan namespace instance1.
- Ikuti langkah-langkah yang ditentukan dalam Menentukan sertifikat TLS ingress untuk mengubah konfigurasi ingress untuk instance lainnya.
Lihat Mengelola gateway ingress Apigee untuk mengetahui informasi tentang cara mengonfigurasi IP load balancer untuk instance lainnya
Tetapkan konteks kubectl ke cluster asli sebelum mengambil nama seed
kubectl config use-context original-cluster-name
Jalankan perintah kubectl berikut untuk mengidentifikasi alamat host awal untuk Cassandra di region saat ini.
kubectl get pods -o wide -n apigee -l app=apigee-cassandra
IP Pod mana pun yang ditampilkan dari perintah sebelumnya dapat dianggap sebagai host awal multi-region.
Di instance ke-2, konfigurasi nilai multiRegionSeedHost di CR datastore Apigee di ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/apigee-datastore.yaml
Menyiapkan instance baru
Tetapkan konteks ke cluster yang ada
kubectl config use-context existing-cluster-name
Mengekspor rahasia apigee-ca ke file
kubectl -n cert-manager get secret apigee-root-certificate -o yaml > apigee-root-certificate.yaml
Tetapkan konteks ke nama cluster region baru:
kubectl config use-context NEW_CLUSTER_NAME
Impor secret ke cluster baru
kubectl -n cert-manager apply -f apigee-root-certificate.yaml
Instal hybrid di instance (region) baru dengan mengikuti langkah-langkah yang diuraikan dalam Membuat resource dan pengontrol inisialisasi.
Siapkan Cassandra di semua pod di pusat data baru. Dapatkan apigeeorg dari cluster dengan perintah berikut:
kubectl get apigeeorg -n apigee -o json | jq ".items[].metadata.name"
Buat file resource kustom replikasi data cassandra (YAML). File dapat memiliki nama apa pun. Dalam contoh berikut, file akan memiliki nama datareplication.yaml. File harus berisi hal berikut
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGION
Dengan:
- REGION_EXPANSION adalah nama yang Anda berikan untuk metadata ini. Anda dapat memilih nama seperti "cassandra-data-replication"
- NAMESPACE adalah namespace yang sama yang dipilih untuk instance ke-2. Ini biasanya "apigee".
- APIGEEORG_VALUE adalah nilai output dari perintah kubectl get apigeeorg -n apigee -o json | jq ".items[].metadata.name" pada langkah sebelumnya.
- SOURCE_REGION adalah nilai nilai pusat data cassandra dari status nodetool dari cluster sumber.
Terapkan CassandraDataReplication dengan perintah berikut:
kubectl apply -f datareplication.yaml
Verifikasi status pembangunan ulang menggunakan perintah berikut.
kubectl -n apigee get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
Hasilnya akan terlihat seperti
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 }
Verifikasi proses pembangunan ulang dari log. Selain itu, verifikasi ukuran data menggunakan perintah status nodetool:
kubectl logs apigee-cassandra-default-0 -f -n apigee
Lihat datastore/secrets.yaml untuk JMX_user dan JMX_password
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u JMX_user -pw JMX_password status
Hapus
multiRegionSeedHost
dari CR datastore Apigee dan jalankan perintah di bawah untuk menerapkan perubahankubectl apply k apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastore
Periksa status cluster Cassandra
Perintah berikut berguna untuk melihat apakah penyiapan cluster berhasil di dua pusat data. Perintah ini memeriksa status nodetool untuk kedua region.
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u JMX_user -pw JMX_password status
Datacenter: us-central1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
Pemecahan masalah
Panduan Dukungan, Diagnosis & Pemecahan Masalah
Pembersihan Manual setelah menggunakan forceDelete dalam penyiapan Apigee Hybrid multi-Region
- Dalam contoh berikut, ada 2 region -
us-east1
danus-west1
. - Di region
us-west1
, datastore Apigee dihapus menggunakan penghapusan paksa. - Di region
us-east1
, Cassandra masih aktif dan berjalan. Verifikasi
apigeeds
dihapus menggunakan perintahkubectl get apigeeds -n apigee No resources found in apigee namespace.
Ubah konteks kubectl ke region lain tempat cluster cassandra masih aktif dan berjalan (di sini region
us-east1
).Verifikasi bahwa datastore dalam status berjalan
kubectl get apigeeds -n apigee NAME STATE AGE default running 23h
Jalankan perintah exec ke salah satu pod cassandra di region yang sudah di-upgrade (di sini
us-east1
)kubectl exec -it -n apigee apigee-cassandra-default-0 -- bash apigee@apigee-cassandra-default-0:~$
Periksa status nodetool, yang akan menampilkan semua node yang tidak aktif di region yang dihapus (di sini
us-west1
)apigee@apigee-cassandra-default-0:~$ nodetool -u ${APIGEE_JMX_USER} -pw ${APIGEE_JMX_PASSWORD} status
Datacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.52.0.212 685.01 KiB 256 ? e1aa61e3-4eae-4549-9b58-506d495d87ab ra-1 UN 10.52.0.72 606.75 KiB 256 ? 477dfc03-f93e-40ea-810a-d15769822ad5 ra-1 UN 10.52.0.104 648.3 KiB 256 ? a8854cff-c2e3-4f0c-a342-e692787efcab ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack DN 10.60.0.143 567.06 KiB 256 ? 355d6ace-ab77-42cb-8138-9993bfd62d0e ra-1 DN 10.60.0.40 535.99 KiB 256 ? 4ed2c903-ff56-40fa-a15e-80a3de3cb22d ra-1 DN 10.60.0.17 573.08 KiB 256 ? f9a50d19-c04a-4d0d-a088-612384bed9f5 ra-1
Hapus semua node di region yang dihapus (di sini
us-west1
)apigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD removenode 355d6ace-ab77-42cb-8138-9993bfd62d0e apigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD removenode 4ed2c903-ff56-40fa-a15e-80a3de3cb22d apigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD removenode f9a50d19-c04a-4d0d-a088-612384bed9f5
Pastikan tidak ada node dari region yang dihapus (di sini
us-west1
) yang tersisaapigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD status
Datacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.52.0.212 699.71 KiB 256 ? e1aa61e3-4eae-4549-9b58-506d495d87ab ra-1 UN 10.52.0.72 586.77 KiB 256 ? 477dfc03-f93e-40ea-810a-d15769822ad5 ra-1 UN 10.52.0.104 623.6 KiB 256 ? a8854cff-c2e3-4f0c-a342-e692787efcab ra-1
Setelah selesai, hapus tugas penyiapan pengguna di region up (di sini
us-east1
). Tugas akan dibuat ulang secara otomatis dalam beberapa detik.kubectl get jobs -n apigee
NAME COMPLETIONS DURATION AGE apigee-cassandra-schema-setup-apigee--0d2504c 0/1 5m54s 5m54s apigee-cassandra-user-setup--apigee--0d2504c 0/1 7s 7s
kubectl delete job apigee-cassandra-user-setup--apigee--0d2504c
Tunggu hingga tugas penyiapan pengguna selesai
kubectl get jobs -n apigee
NAME COMPLETIONS DURATION AGE apigee-cassandra-schema-setup-apigee--0d2504c 1/1 5m54s 5m54s apigee-cassandra-user-setup--apigee--0d2504c 1/1 7m 7m
Pastikan keyspace tidak memiliki region yang dihapus.
Buat pod debug cassandra.
Login ke cqlsh di pod debugging menggunakan perintah
apigee@cassandra-debug-client:~$ cqlsh apigee-cassandra-default-0.apigee-cassandra-default.apigee.svc.cluster.local -u ddl_user --ssl Password:
Pastikan region
us-west1
dihapus dari semua keyspaceddl_user@cqlsh> SELECT * FROM system_schema.keyspaces;
keyspace_name | durable_writes | replication ---------------------------+----------------+----------------------------------------------------------------------------------- cache_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} rtc_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system_auth | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} quota_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} kms_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system_distributed | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} perses | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} kvm_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system_traces | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} (11 rows)