Panduan Pengguna:
Pratinjau prosedur instalasi dan administrasi baru untuk Apigee hybrid v1.8.
Dalam dokumen ini:
- Pratinjau
- Ringkasan
- Prasyarat
- Instalasi Apigee Hybrid Dasar
- Instalasi Apigee Hybrid yang Disesuaikan
- Unduh file pengaturan
- Buat namespace
- Menggunakan image Docker dari repositori pribadi (opsional)
- Mengonfigurasi imagePullSecrets (opsional)
- Mengonfigurasi proxy penerusan (opsional)
- Menentukan sertifikat TLS masuk
- Perbarui penyebaran ingress
- Mengonfigurasi akun layanan Google Cloud kustom
- Menggunakan identitas beban kerja
- Edit resource yamls
- Buat sumber daya inisialisasi dan pengontrol
- Berikan izin kepada akun layanan Synchronizer untuk berinteraksi dengan Control Plane
- Buat komponen bidang data Apigee
- Tunggu hingga sumber daya mulai berjalan
- Kustomisasi instalasi untuk cert-manager di namespace kustom
- Kustomisasi dan Komponen
- Konsep
- Memahami naskah
- Struktur Folder Pengaturan Apigee Hybrid
- Menyimpan kunci akun layanan di vault eksternal
- Upgrade Apigee Hybrid
- Pembatalan APIGEE Hybrid
- Pembersihan
- Menghapus lingkungan
- Instalasi Multi Instans
Pratinjau
Dokumen ini ditujukan untuk persona operator Apigee (pengguna yang menginstal/mengelola/mengadministrasikan penginstalan Apigee Hybrid). Pengalaman dalam menginstal Apigee hybrid pada salah satu platform Kubernetes yang didukung merupakan prasyarat untuk mengikuti petunjuk dalam dokumen ini. Disarankan Anda membuat organisasi Apigee evaluasi untuk mencoba langkah-langkah di bawah ini.
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 Apigee hybrid 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 instalasi baru
Apigee mengubah proses penginstalan Apigee Hybrid karena alasan berikut:
- Metode baru untuk menginstal Apigee hybrid dapat diintegrasikan dengan alat CI/CD Kubernetes yang sudah ada seperti Argo, Flux, atau Anthos Config Management yang tidak menggunakan
overrides.yamlberkas konfigurasi. - Apigee hibrida telah menyediakan
apigeectl, sebuah alat pembuatan templat khusus yang menghasilkan manifest Kubernetes (antara lain) untuk menginstal dan mengelola Apigee hybrid di klaster Kubernetes. Proses penginstalan dan pengelolaan baru memberikan pengalaman yang serupa dengan yang diberikan oleh vendor software lainnya. - Proses baru ini memungkinkan instalasi dasar dengan cepat melalui pembuatan akun layanan secara otomatis dengan izin yang diperlukan, sertifikat TLS, pengisian otomatis pengaturan default, dan elemen dasar penting lainnya.
Prasyarat
Sebelum menggunakan penginstalan pratinjau ini, Anda harus memenuhi prasyarat berikut:
Versi pratinjau
Pratinjau ini dimaksudkan untuk berfungsi dengan Apigee hybrid versi 1.8.x. Versi Apigee hybrid yang lebih baru tidak didukung.
Penyiapan Apigee Hybrid
Sebelum melanjutkan instalasi Apigee Hybrid, Anda diharapkan telah menyelesaikan petunjuk berikut yang tercantum di bagian-bagian dokumentasi berikut:
- Pengaturan Proyek dan Organisasi
- Gambaran Umum mengenai 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 perlu mengunduh dan mengkonfigurasi alat-alat berikut di workstation Anda:
curldockerdiperlukan untuk menjalankan skripapigee-hybrid-setup.sh. Ikuti petunjuk di Dapatkan Docker untuk menginstal Docker.envsubstseharusnya tersedia di sebagian besar sistem berbasis Linux/UNIX. Untuk MacOS dan sistem lainnya, ikuti petunjuk di repositori ini.jqharus diinstal. Unduh jq.kptDownload kpt.kubectlversi 1.23 atau lebih baru. Lihat Instal 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 Anda memasukkannya.
APIGEE_NAMESPACE: Namespace Apigee Anda. Secara default nilainya adalahapigee. Namun, Anda dapat menggunakan namespace yang berbeda.CLUSTER_NAME: Nama klaster tempat Anda menginstal Apigee hybrid. Ini adalah klaster yang Anda buat di Langkah 1: Membuat KlasterCLUSTER_LOCATION: Region cluster Anda. Prosedur dalam panduan ini mengasumsikan Anda menggunakan klaster regional. Jika Anda menggunakan klaster zonal, lihat petunjuk di Langkah 1: Membuat KlasterENV_GROUP: Nama grup lingkungan untuk instalasi Apigee hybrid Anda. Ini adalah grup lingkungan yang Anda buat di Langkah 3: Membuat grup lingkungan. Anda dapat membuat beberapa grup lingkungan.ENV_NAME: Nama grup lingkungan untuk instalasi Apigee hybrid Anda. Ini adalah grup lingkungan yang Anda buat di Langkah 3: Membuat 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 mengunduh penginstal, misalnya:/myhybrid/apigee-hybrid-install/. Ini adalah direktori akar untuk struktur file yang didokumentasikan dalam Struktur Folder Pengaturan Apigee Hybrid.INSTANCE_DIR: Direktori untuk instance Apigee hybrid tertentu. Secara default, instance pertama diberi namainstance-1. Direktori instance adalah subdirektori dari${INSTALL_DIR}/overlays/instances/. Anda dapat menentukan nama apa pun untuk instance hybrid Anda. Lihat Instalasi Multi Instans.ORG_NAME: Nama organisasi hybrid Apigee Anda. Ini harus sama dengan ID proyek Google Cloud Anda. Lihat: Langkah 2: Buat organisasi.
Instalasi dasar Apigee hybrid
Untuk menginstal Apigee Hybrid dengan cepat tanpa kustomisasi yang rumit, Anda dapat menggunakan prosedur dua langkah berikut.
- Lingkungan tunggal
- Kelompok lingkungan tunggal
- Satu akun layanan Google Cloud dibuat dan digunakan untuk semua komponen individual.
- Nilai default untuk semua kunci enkripsi dan kata sandi.
Unduh file instalasi
Unduh dan siapkan file pengaturan dengan mengkloning repositori GitHub di https://github.com/apigee/apigee-hybrid-install/releases/tag/preview-1:
Buat clone repositori:
git clone https://github.com/apigee/apigee-hybrid-install.gitMasuk ke direktori tempat repositori yang telah di-clone berada:
cd apigee-hybrid-installBuat cabang dari tag preview-1:
git branch preview-1 preview-1 git checkout preview-1Jadikan skrip pengaturan dapat dieksekusi:
chmod +x ./tools/apigee-hybrid-setup.shRepositori yang dikloning akan memiliki struktur yang menyerupai struktur yang dijelaskan dalam Struktur Folder Pengaturan Apigee Hybrid:
Menjalankan penyiapan
Jalankan skrip shell apigee-hybrid-setup.sh yang terletak di dalam folder tools/.
./tools/apigee-hybrid-setup.sh --cluster-name $CLUSTER_NAME --cluster-region $CLUSTER_LOCATION --org $ORG_NAME --setup-all
Jika Anda menemukan kesalahan, coba jalankan skrip untuk kedua kalinya.
Opsi tambahan yang mungkin ingin Anda gunakan adalah:
--env $ENV_NAMEmenentukan nama lingkungan Apigee.--envgroup $ENV_GROUPmenentukan grup lingkungan.--ingress-domain $HOSTNAMEmenentukan nama host yang Anda berikan untuk grup lingkungan Anda.--gcp-project-id $PROJECT_IDmenentukan ID project Google Cloud Anda.
Untuk opsi lainnya, lihat Memahami skrip.
Segala kesalahan selama eksekusi akan dicetak ke output standar.
Setelah skrip berhasil dijalankan, Anda telah menyelesaikan instalasi hybrid dasar. Anda dapat menguji penginstalan dengan membuat proxy contoh seperti yang dijelaskan dalam Membuat dan men-deploy proxy API baru.
Instalasi Apigee Hybrid yang disesuaikan
Bagi pengguna tingkat lanjut yang menginginkan kontrol lebih detail atas instalasi, Anda dapat mengikuti urutan langkah-langkah berikut (untuk banyak langkah yang diberikan di bawah ini, Anda dapat memilih untuk melakukan langkah tersebut secara manual, atau menggunakan skrip shell untuk mengotomatiskan langkah individual tersebut):
Unduh file instalasi
Unduh dan siapkan file instalasi:
Kloning repositori GitHub di
https://github.com/apigee/apigee-hybrid-install/Repositori yang dikloning akan memiliki struktur yang menyerupai struktur yang dijelaskan dalam Struktur Folder Pengaturan Apigee Hybrid:
cdke direktoriapigee-hybrid-install/Jadikan skrip pengaturan dapat dieksekusi:
chmod +x ./tools/apigee-hybrid-setup.sh
Buat namespace
Buat namespace Kubernetes di klaster Anda yang akan berisi semua komponen klaster Apigee.
kubectl create namespace apigee
Jika Anda memilih nama lain untuk namespace, maka Anda dapat memilih salah satu dari tiga opsi di bawah ini:
- (Disarankan) Gunakan
--namespace={YOUR_NAMESPACE_NAME}saat mengisi nilai terlebih dahulu di Edit resource yamls. Jalankan dua perintah berikut:
Gunakan
kptuntuk 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 kptGunakan
seduntuk 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 sumber daya secara manual satu per satu agar dibuat di namespace pilihan Anda.
Menggunakan image Docker dari repositori pribadi (opsional)
Anda dapat memilih untuk tidak menggunakan gambar yang dihosting secara publik, dan dapat menggunakan gambar dari repositori pribadi Anda sendiri:
- Langkah pertama adalah mendorong semua gambar ke repositori pribadi Anda, yang dapat dilakukan dengan mengikuti langkah-langkah di apigee-pull-push | Apigee X. Secara default, gambar diberi tag dengan versi Apigee Hybrid yang sesuai, dan sebaiknya Anda tidak mengedit tag ini. Kami juga menyarankan agar Anda tidak mengedit nama gambar sehingga jalur gambar akhir dapat dibuat seperti yang dijelaskan di Image Hub.
Atur nilai field
imageHubyang ada di dalam file apigee-hybrid-config.yaml ke path host repositori pribadi. (Lihat Hub Gambar untuk mengetahui detailnya).imageHub: "your.private.repo/apigee/hybrid"
Ini akan memastikan bahwa semua komponen Apigee hybrid menggunakan image dari repositori pribadi Anda.
Selain itu, Anda mungkin juga ingin menggunakan image privat untuk controller dan Apigee ingress gateway, yang mana Anda harus mengedit file apigee-controller-deployment.yaml dan apigee-ingressgateway-manager-deployment.yaml dan mengganti semua field image dengan image dari repositori privatnya.
Mengonfigurasi imagePullSecrets (opsional)
- Buat kubernetes secret yang berisi kredensial untuk melakukan otentikasi dengan repositori pribadi. Lihat Mengambil Gambar dari Registri Pribadi untuk memahami cara membuat rahasia tersebut.
- Setelah secret dibuat, yang perlu dilakukan hanyalah merujuk ke secret tersebut, yang dapat dilakukan dengan mengedit file apigee-hybrid-config.yaml dan mengatur nilai field
imagePullSecretke nama secret yang telah dibuat sebelumnya, serta mengaktifkan komponenimagePullSecretdi filekustomization.yamlyang sesuai.
Jika Anda menentukan imagePullSecrets di kedua tempat tersebut, yang ada di dalam file apigee-controller-manager.yaml akan diutamakan.
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 masuk
Menggunakan skrip
./tools/apigee-hybrid-setup.sh --create-ingress-tls-certs
Lihat - Memahami skrip untuk detail selengkapnya tentang flag ini.
Manual
Anda diharapkan menyediakan sertifikat TLS yang akan digunakan untuk gateway ingress Istio. Anda dapat:
- menggunakan sertifikat yang ditandatangani oleh otoritas yang dikenal 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 dihasilkan menggunakan (dengan asumsi DOMAINtelah diatur dengan benar dan harus sesuai dengan nama host yang ditetapkan di envgroup Anda):
openssl req -nodes -new -x509 -keyout ./tls.key -out ./tls.crt -subj '/CN='$DOMAIN'' -days 3650
Ini akan membuat dua file bernama tls.key dan tls.crt.
Kemudian, Anda perlu membuat rahasia 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 rahasia menggunakan kubectl create:
kubectl create secret tls {ORG_NAME}-{ENV_GROUP_NAME} \
--cert="tls.crt" \
--key="tls.key" \
-n {$APIGEE_NAMESPACE}
Perbarui penyebaran ingress
Untuk membuat/mengubah deployment ingress, Anda harus mengubah 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 bidang layanan ingress
ingressGateways:
- name: "prod-1"
serviceSpec:
annotations:
{KEY}: ${VALUE}
loadBalancerIP: ${IP}
B. Ubah replika Min/Max
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 defaultnya adalah apigee.
Lihat Memahami skrip untuk detail selengkapnya tentang flag.
Manual
Kunci akun layanan Google Cloud perlu disimpan sebagai rahasia di dalam klaster. File YAML rahasia tersebut harus memiliki struktur sebagai 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 yang berbeda untuk rahasia tersebut, tetapi Anda harus melakukan perubahan yang sesuai pada komponen tempat nama rahasia 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 identitas workload
Salah satu dari Mengonfigurasi akun layanan Google Cloud kustom atau Menggunakan identitas workload wajib dilakukan.
Prasyarat
Sebelum menggunakan identitas beban kerja, pastikan klaster GKE Anda telah mengaktifkan dukungan tersebut. Lihat Memperbarui Node Pool | Apigee X untuk mengetahui detailnya.
Mengaktifkan identitas beban kerja
Lihat bagian Identitas Beban Kerja di bawah Kustomisasi dan Komponen untuk detail tentang cara mengaktifkan identitas beban kerja sebelum instalasi.
Edit YAML resource
Beberapa bagian dalam file YAML komponen memerlukan nama organisasi, lingkungan, dan grup lingkungan yang benar agar selalu ada. 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
Buat sumber daya inisialisasi dan pengontrol.
#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 bawah Aktifkan akses sinkronisasi. Jika tidak, pengaktifan akses untuk sinkronisasi akan gagal.
Buat komponen bidang data Apigee
Jika Anda telah mengubah nama salah satu sumber daya pada langkah-langkah sebelumnya, Anda perlu melakukan perubahan yang sesuai pada file YAML lain tempat sumber daya 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 memasang 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
Kustomisasi instalasi untuk cert-manager di namespace kustom.
Sesuaikan namespace tempat cert-manager berjalan dengan prosedur berikut.
Jika cert-manager diinstal di klaster Anda dalam namespace selain cert-manager, Anda perlu memperbarui namespace yang digunakan untuk membuat sertifikat root Apigee.
- Edit file customization.yaml untuk pembuatan sertifikat:
$INSTALL_DIR/overlays/initialization/certificates/kustomize.yaml Tambahkan yang berikut ini di akhir file.
- patch: |- - op: replace path: /metadata/namespace value: "gk-cert-manager" target: group: cert-manager.io version: v1 kind: Certificate name: apigee-root-certificateSimpan 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-file ini berisi 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 memberikan komentar (atau menghapus komentar) pada baris tertentu dalam file kustomization.yaml.
Sebagai contoh, berikut 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 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 diberi komentar, yang berarti kita belum mengaktifkan logger uGoogle Cloud secara default. Untuk mengaktifkannya, Anda cukup menghapus tanda komentar pada baris tersebut seperti ini:
components:
- ./components/logger
Demikian pula, untuk menonaktifkan metrik, Anda dapat mengomentari baris ./components/metrics:
...
components:
...
# - ./components/metrics
…
Bagian-bagian berikut akan membahas berbagai komponen tersebut, kapan komponen tersebut dapat digunakan, dan bagaimana cara mengkonfigurasinya.
OpenShift
Untuk pengguna yang ingin menginstal Apigee Hybrid di cluster OpenShift, Anda mungkin perlu mengaktifkan beberapa komponen/resource sebelum melakukan penginstalan. (Ini diperlukan jika Anda tidak menggunakan skrip untuk melakukan penginstalan). File-file yang perlu dimodifikasi adalah:
overlays/initialization/openshift/kustomization.yaml. Di bagianresources:, hapus tanda komentar:# - ../../../bases/initialization/openshift/overlays/instances/{INSTANCE_NAME}/datastore/kustomization.yamlHapus komentar:# - ./components/openshift-sccdan hapus tanda komentar pada kolom "
components:" jika masih diberi tanda komentar.overlays/instances/{INSTANCE_NAME}/telemetry/kustomization.yamlHapus tanda komentar:# - ./components/openshift-sccdan hapus tanda komentar pada kolom "
components:" jika masih diberi tanda komentar.
Anda kemudian dapat melanjutkan dengan langkah-langkah instalasi.
imagepullsecret
Komponen ini dapat diaktifkan jika Anda memiliki gambar yang tersimpan di repositori pribadi Anda. 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 petunjuknya. Lihat Mengambil Gambar dari Registri Pribadi | Kubernetes di dokumentasi Kubernetes untuk informasi lebih lanjut.
Tersedia dalam:
overlays/controllers/apigee-controlleroverlays/controllers/istiodoverlays/instances/{INSTANCE_NAME}/datastoreoverlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}overlays/instances/{INSTANCE_NAME}/organizationoverlays/instances/{INSTANCE_NAME}/redisoverlays/instances/{INSTANCE_NAME}/telemetry
Mengaktifkan:
Batalkan komentar baris "./components/imagepullsecret/" di file kustomization.yaml masing-masing jika diperlukan.
Perubahan yang akan dilakukan:
- komponen/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 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 untuk menjadwalkan pod untuk sumber daya Apigee pada node tertentu. Lihat Menugaskan Pod ke Node | Kubernetes untuk informasi tambahan.
Tersedia dalam:
overlays/controllers/apigee-controlleroverlays/controllers/istiodoverlays/instances/{INSTANCE_NAME}/datastoreoverlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}overlays/instances/{INSTANCE_NAME}/organizationoverlays/instances/{INSTANCE_NAME}/redisoverlays/instances/{INSTANCE_NAME}/telemetry
Mengaktifkan:
Hapus tanda komentar pada baris "./components/nodeselector" di file kustomization.yaml yang bersangkutan jika diperlukan.
Perubahan yang perlu dilakukan:
- components/nodeselector/patch.yaml
- OPSIONAL Ubah nilai label pemilih node dari
apigee-runtimeatauapigee-datake nilai yang diinginkan.
- OPSIONAL Ubah nilai label pemilih node dari
Penggunaan:
- Jika 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. Identitas beban kerja adalah salah satu bentuk pemberian izin kepada pod (dan kontainer di dalamnya). Referensi berguna untuk membaca lebih lanjut tentang hal ini meliputi: - 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}/datastoreoverlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}overlays/instances/{INSTANCE_NAME}/organizationoverlays/instances/{INSTANCE_NAME}/redisoverlays/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}.iam.gserviceaccount.com
di mana: - ${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 perlu 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 membuat beberapa akun layanan Google Cloud untuk komponen individual, Anda perlu 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 bersangkutan jika diperlukan. Perlu dicatat bahwa dalam telemetri, kami memiliki add-on identitas beban kerja terpisah untuk komponen metrics dan logger yang dapat diaktifkan secara individual.
Penggunaan:
- Jika Anda belum menginstal hybrid, Anda cukup mengaktifkan workload-identity seperti yang disebutkan di bagian sebelumnya dan melanjutkan instalasi yang kemudian akan secara otomatis menggunakan workload-identity.
Jika Anda sudah memasang Apigee Hybrid, Anda perlu 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 mengkonfigurasi proxy untuk setiap komponen Apigee secara individual.
Tersedia dalam:
overlays/instances/{INSTANCE_NAME}/datastoreoverlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}overlays/instances/{INSTANCE_NAME}/organizationoverlays/instances/{INSTANCE_NAME}/telemetry
Mengaktifkan:
Hapus tanda komentar pada baris "./components/http-proxy/" di file kustomization.yaml yang bersangkutan jika diperlukan.
Perubahan yang perlu dilakukan:
- components/http-proxy/patch.yaml Parameter berikut dapat dikonfigurasi di bawah
spec.httpForwardProxyscheme: WAJIB Salah satu dariHTTPatauHTTPShost: WAJIB Alamat host proxy Andaport: WAJIB Nomor portusername: OPSIONAL Nama pengguna yang terkait dengan proxy Andapassword: OPSIONAL Kata sandi untuk mengakses proxy
Penggunaan:
- Jika belum menginstal Apigee Hybrid, Anda dapat melanjutkan langkah-langkah penginstalan dan perubahan ini akan diterapkan dalam proses tersebut
Jika Anda sudah memasang Apigee Hybrid, Anda perlu menerapkan perubahan baru ini menggunakan:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
pencatat dan metrik
Anda dapat mengaktifkan atau menonaktifkan logger atau metrik secara individual di dalam overlay/instance/{INSTANCE_NAME}/telemetry. Secara default, logger dinonaktifkan dan metrik diaktifkan. Untuk mengaktifkan atau menonaktifkannya, cukup hapus atau tambahkan komentar pada barisnya di telemetry/kustomization.yaml
gcs-backup dan gcs-restore
Komponen kustomize ini dapat digunakan untuk melakukan pencadangan dan pemulihan basis data Cassandra ke Google Cloud Storage.
Tersedia dalam:
overlays/instances/{INSTANCE_NAME}/datastore
Prasyarat:
Unduh kunci akun layanan Google Cloud untuk akun yang memiliki peran Administrator Objek Penyimpanan.
- Jika Anda menggunakan skrip untuk melakukan instalasi dan tidak menggunakan workload-identities, Anda dapat menggunakan kembali kunci yang diunduh yang tersedia di folder service-accounts yang dibuat oleh skrip tersebut.
Anda juga dapat menggunakan skrip create-service-account.sh untuk membuat akun layanan baru dan mengunduh kuncinya:
./tools/create-service-accounts=.sh --env prod --profile apigee‑cassandra
Setelah kunci diunduh, 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. Ini biasanya akan menjadi apigee kecuali jika diubah secara eksplisit selama instalasi.
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 tanda komentar pada baris "./components/gcs-backup" dalam file datastore kustomization.yaml.
- Jika Anda ingin memulihkan cadangan, hapus tanda komentar pada baris "./components/gcs-restore" di file kustomization.yaml datastore.
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.
- komponen/gcs-backup/cron-patch.yaml
- WAJIB Ubah spec.schedule untuk menentukan frekuensi pencadangan. Kolom ini menerima format jadwal Crontab standar. Deskripsi sesuai 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 sesuai dengan dbStorageBucket yang dijelaskan di sini.
- OPSIONAL Ubah nilai HTTP_PROXY_URL agar mengarah ke proxy yang telah dikonfigurasi. Formatnya bisa seperti 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 Anda 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 sesuai dengan dbStorageBucket yang dijelaskan di sini.
- komponen/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 dijelaskan di sini.
- OPSIONAL Ubah nilai HTTP_PROXY_URL agar mengarah ke proxy yang telah dikonfigurasi.
Formatnya bisa seperti 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 informasi latar belakang tentang memulihkan cadangan, lihat Memulihkan cadangan | Apigee X | Google Cloud
- Buat kluster Kubernetes baru dengan namespace baru tempat untuk memulihkan deployment runtime hybrid. Anda tidak dapat menggunakan cluster dan namespace yang sama dengan yang Anda gunakan untuk instalasi hybrid awal.
Instal Hybrid ke dalam klaster baru dengan pengaturan yang telah dikonfigurasi di atas, ditambah pengaturan lain yang Anda inginkan:
- Anda dapat menggunakan instalasi Dasar dan instalasi hibrida di namespace baru:
./tools/apigee-hybrid-setup.sh \ --cluster-name $CLUSTER_NAME \ --cluster-region $CLUSTER_LOCATION \ --namespace ${NEW_APIGEE_NAMESPACE}- Atau ikuti Instalasi Apigee Hybrid yang Disesuaikan untuk mengkonfigurasi semuanya sesuai pilihan Anda.
Setelah pemulihan selesai, semua sumber daya di namespace lama dapat dihapus dan dialihkan ke namespace baru.
Untuk informasi selengkapnya, lihat Memulihkan cadangan.
non-gcs-backup dan non-gcs-restore
Komponen kustomize ini dapat digunakan untuk melakukan pencadangan dan pemulihan basis data 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 dimanfaatkan.
Berdasarkan langkah-langkah di atas, Anda perlu menggunakan kunci privat SSH yang tersedia dalam file "ssh_key" yang dihasilkan dengan mengikuti langkah-langkah sebelumnya. Selanjutnya, kita akan membuat secret Kubernetes dengan nama apigee-cassandra-backup-and-restore-gcp-sa-key yang berisi kunci privat 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 privat SSH
- ${APIGEE_NAMESPACE} - Namespace Kubernetes tempat komponen Apigee diinstal. Ini biasanya akan menjadi apigee kecuali jika diubah secara eksplisit selama instalasi.
Alternatifnya, Anda dapat menggunakan file templat 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 kustomization.yaml datastore. - Jika Anda ingin memulihkan cadangan, hapus tanda komentar pada baris "
./components/non-gcs-restore" di file kustomization.yaml datastore.
Modifikasi hanya untuk pencadangan
- components/non-gcs-backup/apigee-datastore-patch.yaml
- WAJIB Mengubah nilai BACKUP_SERVER_IP. Deskripsi cocok dengan BACKUP_SERVER_IP yang dijelaskan di sini.
- WAJIB Ubah nilai BACKUP_STORAGE_DIR. Deskripsi sesuai 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 sesuai dengan BACKUP_SERVER_IP dijelaskan di sini.
- WAJIB Ubah nilai BACKUP_STORAGE_DIR. Deskripsi sesuai dengan BACKUP_STORAGE_DIR yang dijelaskan di sini.
- OPSIONAL Ubah nilai HTTP_PROXY_URL agar mengarah ke proxy yang telah 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_IP. Deskripsi sesuai denganBACKUP_SERVER_IPdijelaskan di sini. - WAJIB Ubah nilai BACKUP_STORAGE_DIR. Deskripsi cocok dengan
BACKUP_STORAGE_DIRyang dijelaskan di sini.
- WAJIB Ubah nilai
- components/non-gcs-restore/job-patch.yaml
- WAJIB Ubah nilai variabel lingkungan
BACKUP_SNAPSHOT_TIMESTAMP. Deskripsi sesuai denganrestore:snapshotTimestampdijelaskan di sini. - WAJIB Ubah nilai
BACKUP_SERVER_IP. Deskripsi cocok denganBACKUP_SERVER_IPyang dijelaskan di sini. - WAJIB Ubah nilai
BACKUP_STORAGE_DIR. Deskripsi sesuai denganBACKUP_STORAGE_DIRdijelaskan di sini. - OPSIONAL Ubah nilai
HTTP_PROXY_URLagar mengarah ke proxy yang dikonfigurasi. Formatnya bisa seperti 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 gambaran umum tentang pemulihan cadangan, lihat Gambaran umum pemulihan Cassandra.
- Buat kluster Kubernetes baru dengan namespace baru tempat untuk memulihkan deployment runtime hybrid. Anda tidak dapat menggunakan cluster dan namespace yang sama dengan yang Anda gunakan untuk instalasi hybrid awal.
Instal Hybrid ke dalam klaster baru dengan pengaturan yang telah dikonfigurasi di atas, ditambah pengaturan lain yang Anda inginkan: Anda dapat menggunakan instalasi Dasar dan instal hybrid di namespace baru:
./tools/apigee-hybrid-setup.sh \ --cluster-name $CLUSTER_NAME \ --cluster-region $CLUSTER_LOCATION \ --namespace ${NEW_APIGEE_NAMESPACE}Atau ikuti Instalasi Apigee Hybrid yang Disesuaikan untuk mengkonfigurasi semuanya sesuai pilihan Anda.
Setelah pemulihan selesai, semua resource di namespace lama dapat dihapus dan dialihkan ke namespace baru.
Untuk informasi selengkapnya, lihat Menjadwalkan pencadangan pada server jarak jauh.
http-client
Untuk petunjuk, lihat Aktifkan klien HTTP | Apigee.
Tersedia dalam:
- overlays/instances/${INSTANCE_NAME}/route-config/${ENV_GROUP}
Mengaktifkan:
Hapus tanda komentar pada baris "./components/http-client" di file route-config/${ENV_GROUP}/kustomization.yaml yang bersangkutan.
Perubahan yang perlu dilakukan:
- Tidak ada modifikasi wajib yang diperlukan.
Penggunaan:
- Jika belum menginstal Apigee Hybrid, Anda dapat melanjutkan langkah-langkah penginstalan dan perubahan ini akan diterapkan dalam proses tersebut
Jika Anda sudah memasang Apigee Hybrid, Anda perlu 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" di file route-config/${ENV_GROUP}/kustomization.yaml yang bersangkutan.
Perubahan yang akan dilakukan:
- components/non-sni-client/apigee-route.yaml
- WAJIB
credentialNameDeskripsi cocok dengancredential_nameyang dijelaskan di sini.
- WAJIB
Penggunaan:
- Jika belum menginstal Apigee Hybrid, Anda dapat melanjutkan langkah-langkah penginstalan dan perubahan ini akan diterapkan dalam proses tersebut
Jika Anda sudah memasang Apigee Hybrid, Anda perlu menerapkan perubahan baru ini menggunakan:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
http-and-non-sni-client
Untuk petunjuk, lihat Aktifkan dukungan untuk klien non-SNI dan HTTP | Apigee.
Mengaktifkan:
Hapus tanda komentar pada baris "./components/http-and-non-sni-client" dalam file route-config/${ENV_GROUP}/kustomization.yaml yang sesuai
Perubahan yang perlu dilakukan:
- components/http-and-non-sni-client/apigee-route.yaml
- WAJIB
credentialNameDeskripsi cocok dengancredential_nameyang dijelaskan di sini.
- WAJIB
Penggunaan:
- Jika belum menginstal Apigee Hybrid, Anda dapat melanjutkan langkah-langkah penginstalan dan perubahan ini akan diterapkan dalam proses tersebut
Jika Anda sudah memasang Apigee Hybrid, Anda perlu 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" di file datastore/kustomization.yaml
Perubahan yang perlu dilakukan:
components/multi-region/cassandra-data-replication.yaml
- WAJIB DIISI
source.regionNama 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 DIISI
komponen/multi-wilayah/patch.yaml
- WAJIB
spec.components.properties.multiRegionSeedHostAlamat 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 apigeeOutput 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 informasi selengkapnya, lihat Prasyarat untuk GKE di "Penyebaran multi-wilayah pada 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.
- Baik klaster baru maupun klaster yang sudah ada perlu menggunakan sertifikat TLS yang sama untuk memastikan komunikasi yang tepat antara pod Cassandra. Jadi, kita perlu menyalin rahasia
apigee-root-certificatedari 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_CONTEXTdengan SOURCE_CLUSTER_CONTEXT adalah nama konteks cluster kubernetes sumber.
Simpan rahasia sertifikat root dalam sebuah file:
kubectl get secret/apigee-root-certificate -n cert-manager -o yaml > apigee-root-certificate.yamlAlihkan konteks cluster ke cluster baru tempat Anda menginstal Apigee Hybrid.
kubectl config use-context ${NEW_CLUSTER_CONTEXT}Buat root secret di cluster baru:
kubectl -n cert-manager apply -f apigee-root-certificate.yamlNonaktifkan pembuatan sertifikat root baru. Hal ini akan memastikan bahwa kita tidak membuat
apigee-root-certificatebaru dan akhirnya menimpa yang kita buat pada langkah sebelumnya.Hapus tanda komentar baris berikut dalam file
overlays/initialization/certificates/kustomization.yaml:# components: # - ./components/disable-apigee-root-certificate-generationLanjutkan dengan sisa instalasi Apigee Hybrid menggunakan Instalasi Apigee Hybrid Dasar atau Instalasi Apigee Hybrid yang Disesuaikan. Misalnya, setelah mengikuti Penginstalan Apigee Hybrid Dasar, Anda dapat menjalankan:
./tools/apigee-hybrid-setup.sh --cluster-name $CLUSTER_NAME --cluster-region $CLUSTER_LOCATIONVerifikasi 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} statusVerifikasi 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: Penyebaran multi-wilayah.
Menghapus baris-baris berikut dari
components/multi-region/patch.yaml:properties: multiRegionSeedHost: {IP_ADDRESS} # To be modified. REQUIREDTerapkan perubahan:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
Konsep
Pusat Gambar
Citra kontainer Docker umumnya ditentukan dalam format:
${REGISTRY_HOST_PATH}/${IMAGE_NAME}:${IMAGE_TAG}
atau yang menggunakan ringkasan (digest) 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 Image Hub adalah gcr.io/apigee-release/hybrid/.
(Gambar yang menggunakan DIGEST perlu diatur secara individual di setiap subkomponen)
Apigee membangun jalur gambar akhir dengan menggabungkan nilai-nilai berikut:
- "Image Hub" yang dapat ditimpa di apigee-hybrid-config.yaml (lihat bagian Menggunakan image docker dari repositori pribadi untuk langkah-langkah detail tentang cara menimpa Image Hub).
- Nilai
IMAGE_TAGdiperoleh dari fieldversion, yang terdapat di dalam file yaml untuk masing-masing komponen (misalnya, apigee-organization.yaml). Apigee memberi tag pada gambar dengan versi Apigee Hybrid - artinyaIMAGE_TAGadalah 1.8 untuk versi Apigee Hybrid 1.8. IMAGE_NAMEditentukan secara implisit dari nama container tempat image akan digunakan. Misalnya, untuk kontainerapigee-runtime,IMAGE_NAMEakan menjadi apigee-runtime.
Dengan demikian, contoh lengkap dari jalur gambar adalah gcr.io/apigee-release/hybrid/apigee-runtime:1.8.0
Dengan cara ini, jalur gambar akhir akan dibuat, yang kemudian akan digunakan di dalam setiap kontainer di pod masing-masing.
Akun layanan Google Cloud
Akun layanan Google Cloud adalah akun yang digunakan oleh aplikasi untuk melakukan panggilan resmi ke API Google. Kunci akun layanan Google Cloud dapat didownload, lalu digunakan untuk tujuan autentikasi. Apigee mengharapkan pengguna untuk menyediakan kunci akun layanan dengan membuat secret. Berikut adalah nama-nama komponen dan nama default dari secret tempat ia mencari kunci akun layanan:
| Komponen | Subkomponen | Nama rahasia Kubernetes default yang berisi kunci akun layanan. |
|---|---|---|
| organisasi | ||
| connectAgent | apigee-connect-agent-gcp-sa-key-${ORG_NAME} |
|
| pengintai | apigee-watcher-gcp-sa-key-${ORG_NAME} |
|
| pasar | 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 menyediakan identitas untuk pod di klaster Anda. Secara default, controller Apigee akan membuatnya untuk Anda. Namun, jika Anda ingin mengganti pembuatan tersebut (misalnya, saat Anda menggunakan Identitas Beban Kerja), maka Anda dapat melakukannya dengan menentukan bidang podServiceAccountName di berbagai subkomponen.
Daftar komponen dan subkomponennya masing-masing di mana akun layanan Kubernetes dapat ditentukan bersama dengan nama default akun layanan k8s saat Anda mengaktifkan patch identitas beban kerja untuk komponen tersebut.
| Komponen | Subkomponen | Nama default (tersedia saat Anda mengaktifkan patch identitas beban kerja) |
|---|---|---|
| organisasi | ||
| connectAgent | apigee-connect-agent-svc-account-${ORG_NAME} |
|
| pengintai | apigee-watcher-svc-account-${ORG_NAME} |
|
| pasar | 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 dengan struktur folder yang Anda gunakan)
- Menyalin file
apigee-environment.yamldari lingkungan yang sudah ada ke folder baru. - Jika Anda ingin membuat akun layanan dan kunci enkripsi baru untuk lingkungan baru, salin
secrets.yamlke 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 direferensikan dengan benar dalam yaml.
- Menerapkan
yamls:
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, sekarang datastore Apigee dapat dihapus secara paksa menggunakan perintah berikut, terlepas dari status klaster saat ini.
Hapus
apigeedsdi namespaceapigee:Kubectl delete -n apigee apigeeds defaultJika langkah ini terhenti, Anda dapat keluar dari langkah tersebut menggunakan CTRL + C.
Edit
apigeedsbaru:Kubectl edit -n apigee apigeeds defaultTambahkan/perbarui kolom forceDelete di spesifikasi apigee datastore.
spec: forceDelete: trueSimpan file dan keluar.
Sekarang tunggu hingga datastore dihapus. Proses penghapusan semua sumber daya Cassandra mungkin membutuhkan waktu beberapa menit.
Memahami skrip
Skrip apigee-hybrid-setup.sh melakukan beberapa validasi dasar dan membantu mengotomatiskan langkah-langkah yang seharusnya Anda lakukan jika Anda menginginkan kustomisasi yang lebih detail seperti yang didokumentasikan dalam Instalasi Apigee Hybrid yang Disesuaikan. Meskipun dengan instalasi yang disesuaikan, Anda masih dapat menggunakan skrip tersebut sebagian untuk membantu tugas-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:
--namespaceSecara default, skrip menginstal semua komponen di namespaceapigee. Anda dapat mengubah perilaku ini dengan menentukan nama namespace menggunakan flag ini.--orgDigunakan untuk memberikan nama organisasi Apigee. Jika tidak ditentukan, secara default akan ditetapkan ke project Google Cloud yang saat ini dipilih digcloud--envgroupDigunakan 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.--envDigunakan untuk memberikan nama lingkungan di dalam organisasi Anda. Jika tidak ditentukan, akan dilakukan upaya untuk menanyakan API bidang kontrol untuk menentukan nama lingkungan. Jika beberapa lingkungan ditemukan atau lingkungan bukan bagian dari grup lingkungan, error akan ditampilkan dan skrip akan keluar.--cluster-nameNama klaster Kubernetes.--cluster-regionWilayah tempat klaster Kubernetes berada--gcp-project-idID project Google Cloud tempat cluster Kubernetes berada--ingress-domainMenentukan nama host/nama domain yang akan digunakan untuk menghasilkan sertifikat TLS yang ditandatangani sendiri untuk istio ingress-gateway. Jika tidak ada yang ditentukan, upaya dilakukan untuk menentukan nilai dengan mengkueri API bidang kontrol untuk mendapatkan nilai dari envgroup. Jika ada beberapa masalah saat menentukan envgroup atau ada beberapa nama host yang dikonfigurasi untuk envgroup, error akan ditampilkan dan skrip akan keluar.--generate-internal-tls-certsPerintah ini akan membuat secret Kubernetes bernama apigee-ca yang berisi pasangan kunci dan sertifikat yang dibuat oleh kami.--create-ingress-tls-certsIni akan menghasilkan rahasia bernama{ORG_NAME}-{ENV_GROUP_NAME}(diperoleh dari nama org dan envgroup) di dalam namespace istio-system yang akan berisi pasangan sertifikat dan kunci yang akan digunakan untuk komunikasi TLS. Nama domain yang digunakan untuk menghasilkan sertifikat ini berasal dari nilai yang terdapat dalam konfigurasi envgroup. Jika terjadi konflik (seperti ketika kami menemukan beberapa domain), pesan kesalahan yang sesuai akan ditampilkan.--create-gcp-sa-and-secretsMembuat satu akun layanan Google Cloud di project cloud Google Cloud, mengunduh kunci, dan kemudian membuat Secret Kubernetes yang berisi kunci tersebut. Nama-nama rahasia tersebut dapat ditemukan di akun layanan Google Cloud.--fill-valuesMengganti nilai org, env, envgroup, dan nama lainnya di mana pun diperlukan dalam berbagai YAML.--apply-configurationTindakan ini akan membuat penerbit sertifikat, definisi resource kustom, webhook, peran, dan resource pengontrol. Sumber daya akan dibuat dalam urutan yang benar dan perintah akan diblokir sampai semuanya berfungsi dengan baik.-- rename-directoriesGanti nama lingkungan dan grup lingkungan menjadi nama lingkungan dan grup lingkungan yang benar.--verboseMenampilkan output detail untuk debugging.--helpMenampilkan informasi penggunaan.--setup-allTindakan 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 dari file-file di atas dapat ditemukan di tag preview-1 pada repositori GitHub di: https://github.com/apigee/apigee-hybrid-install/releases/tag/preview-1.
Folder di atas berisi manifest Kubernetes untuk runtime Apigee hybrid dan menggunakan Kustomize untuk manajemen konfigurasi. Manifest diatur berdasarkan konsep Kustomize bases & overlay. Folder bases berisi konfigurasi minimal yang dibutuhkan untuk setiap komponen Apigee. Folder overlay berisi beberapa fitur tambahan(konfigurasi) yang didefinisikan sebagai komponen. Sebuah komponen dapat ditambahkan dengan menghapus tanda komentar pada referensi komponen di kustomization.yaml.
Contoh : Untuk mengaktifkan gcs-backup untuk apigee datastore, komponen gcs-backup telah diaktifkan (dihapus tanda komentar) pada customization.yaml di bawah ini.
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
Nilai apa pun yang memerlukan penyesuaian harus diatur dalam file patch.yaml yang sesuai untuk gcs-backup.
Pada file di bawah ini, nilai CLOUD_STORAGE_BUCKET_PATH harus diatur 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 pada komponen di file kustomization.yaml komponen apigee. Selain itu, sesuai persyaratan, nilai-nilai yang sesuai untuk kolom-kolom dalam file patch.yaml komponen perlu diatur dengan tepat.
Penjelasan singkat mengenai folder dan file:
dasar
Folder ini berisi template dengan konfigurasi minimal yang dibutuhkan oleh setiap komponen Apigee. Tidak perlu melakukan modifikasi pada manifest di folder ini.
lapisan
Folder ini berisi templat komponen kustomize untuk konfigurasi tambahan.
inisialisasi
namespaces.yaml
Namespace tempat komponen data plane Apigee akan diinstal. Nama namespace default adalah apigee
sertifikat
Berisi sumber daya 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.
kredit
Contains the definition of all the CRDs which are used by Apigee.
webhook
Berisi ValidatingWebhookConfiguration dan MutatingWebhookConfiguration yang akan digunakan untuk melakukan validasi pada sumber daya kustom.
ingress
Berisi konfigurasi yang berlaku untuk semua POD Ingress. Misalnya, Modifikasi header umum, pemeriksaan kesehatan, dll.
OpenShift
Berisi definisi openshift SecurityContextConstraints.
Pengontrol
pengontrol apigee
apigee-hybrid-config.yaml
Berisi ConfigMap yang diberikan sebagai input di 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 privat untuk controller, 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 instalasi ASM/Istio lainnya di dalam klaster.
apigee-ingressgateway-manager-deployment-patch.yaml
Berisi layanan dan penerapan Istiod. Ini adalah istiod privat yang hanya digunakan untuk kasus penggunaan Apigee.
instances/{instanceName}
datastore
apigee-datastore.yaml
Berisi sumber daya kustom ApigeeDatastore yang mengelola Cassandra.
secrets.yaml
Berisi kredensial default untuk penyimpanan data.
redis
apigee-redis.yaml
Berisi sumber daya kustom ApigeeRedis yang mengelola Redis.
secrets.yaml
Berisi kredensial default untuk datastore.
organisasi
apigee-organization.yaml
Berisi sumber daya kustom ApigeeOrganization yang mengelola subkomponen lain seperti connectAgent, watcherAndSynchronizer, MART, UDCA, dan Ingress.
secrets.yaml
Berisi Secret yang dirujuk dalam apigee-organization.yaml. Beberapa kode rahasia dikomentari karena dihasilkan oleh skrip. Jika Anda menonaktifkan pembuatannya, Anda perlu membuatnya secara manual.
lingkungan
Berisi seluruh 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 kode rahasia dikomentari karena dihasilkan oleh skrip. Jika Anda menonaktifkan pembuatannya, Anda perlu membuatnya 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 Anda menonaktifkan pembuatannya, Anda perlu membuatnya secara manual.
konfigurasi rute
grup lingkungan pengembang
apigee-route-config.yaml
Berisi sumber daya kustom ApigeeRouteConfig.
secrets.yaml
Berisi Secret yang dirujuk dalam apigee-route-config.yaml. Bagian tersebut dikomentari karena dihasilkan secara otomatis oleh skrip apigee-hybrid-setup.sh dan tetap ada untuk memberikan contoh seperti apa seharusnya secret tersebut jika Anda membuatnya secara manual.
diagnostik
diagnostic-collector.yaml
Sumber daya yang akan digunakan untuk memulai penerapan diagnostik.
alat
apigee-hybrid-setup.sh
apigee-create-service-account.sh
dump-kubernetes.sh
apigee-pull-push.sh
Menyimpan kunci akun layanan di brankas eksternal
Vault (oleh Hashicorp) adalah sistem manajemen rahasia populer yang memiliki beberapa integrasi dengan penyimpanan rahasia yang disediakan oleh Google, Azure, AWS, dan lainnya. Hashicorp Vault memungkinkan Anda untuk mengambil rahasia dari sumber eksternal dan kemudian menggunakannya di dalam sumber daya Kubernetes. Ada beberapa cara yang dapat digunakan untuk mendapatkan rahasia melalui Vault. 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 secret yang disediakan oleh Vault.
- Kami akan menggunakan Helm untuk menginstal sumber daya terkait Vault di klaster Anda. Ikuti langkah-langkah di Menginstal Helm tentang cara mengatur helm di sistem Anda.
Ikuti langkah-langkah di Instal Helm chart Vault, yaitu:
Menambahkan repositori Hashicorp ke helm
helm repo add hashicorp https://helm.releases.hashicorp.comPerbarui repositori helm
helm repo updateMenginstal Vault
helm install vault hashicorp/vault \ --set "server.dev.enabled=true" \ --set "injector.enabled=false" \ --set "csi.enabled=true"
Sekarang kita akan menyimpan rahasia itu di dalam Brankas.
Dapatkan akses shell ke dalam pod pengembangan vault.
kubectl exec -it vault-0 -- /bin/sh ```Dalam contoh ini, kita akan menggunakan mesin rahasia key/value untuk menyimpan data.
vault kv put secret/runtime-gcp-sa-key key="${BASE_64_ENCODED_KEY}"Untuk memverifikasi bahwa kunci telah berhasil disimpan, gunakan:
vault kv get secret/runtime-gcp-sa-key
Siapkan otentikasi untuk memungkinkan pod runtime mengambil kunci. Seperti yang dibahas dalam Akun layanan Kubernetes, akun layanan Kubernetes memberikan identitas kepada pod dan memungkinkan mereka untuk melakukan otentikasi dengan sistem lain.
Dapatkan akses shell ke dalam pod pengembangan vault.
kubectl exec -it vault-0 -- /bin/shAktifkan metode otentikasi Kubernetes
vault auth enable kubernetesMenulis 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=trueBuat kebijakan otentikasi
vault policy write apigee-runtime-app - <<EOF path "secret/data/runtime-gcp-sa-key" { capabilities = ["read"] } EOFKaitkan 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 berasumsi bahwa akun layanan berada di dalam namespace apigee. Jika Anda memiliki namespace lain untuk menginstal Apigee, Anda akan menggunakan nama tersebut.
Keluar dari cangkang di dalam brankas-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-driverBuat
SecretProviderClasssumber daya kubernetes yang merujuk pada rahasia yang Anda buat di dalam vault.cat > 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" EOFTerapkan
yamlkubectl apply -f spc-vault.yamlBuat akun layanan kubernetes yang telah kita tetapkan izinnya pada langkah (4.e)
kubectl create serviceaccount -n ${APIGEE_NAMESPACE} apigee-runtime-saUbah file apigee-environment.yaml untuk lingkungan tersebut dan tambahkan baris-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
Peningkatan Apigee Hybrid
Anda seharusnya telah menyelesaikan semua persyaratan yang disebutkan dalam Prasyarat. Selain itu, disarankan untuk melakukan restart bergulir pada semua komponen untuk memeriksa apakah klaster dalam keadaan sehat. Urutan restartnya adalah Cassandra, Redis, ApigeeOrganization, dan ApigeeEnvironment.
Buat Cadangan
Buat salinan cadangan dari konfigurasi campuran saat ini. Cadangan data akan diperlukan jika Anda perlu mengembalikan pembaruan ke versi sebelumnya.
tar -czvf apigee-hybrid-install.v-X.Y.Z.tar.gz $HYBRID_INSTALL_BASE_DIRBuat cadangan basis data Cassandra. Cadangan Cassandra merupakan langkah penting untuk perlindungan terhadap skenario bencana.
Perbarui platform Kubernetes Anda jika diperlukan.
Langkah ini tidak selalu diperlukan, tetapi Anda perlu memperbarui platform Kubernetes Anda seperti Kubernetes, OpenShift, dan komponen seperti cert-manager, Cassandra, dll. jika versi tersebut tidak lagi didukung oleh versi Apigee Hybrid yang lebih baru. Dokumentasi akan berisi versi yang didukung dari platform dan komponen.
Unduh file instalasi
Unduh repositori dan ganti folder bases dan tools di konfigurasi campuran apigee yang ada dengan yang lebih baru:
Kloning repositori GitHub dengan tag preview-1 di
https://github.com/apigee/apigee-hybrid-install/releases/tag/preview-1Repositori yang dikloning akan memiliki struktur yang menyerupai struktur yang dijelaskan dalam Struktur Folder Pengaturan Apigee Hybrid:
Ganti folder inisialisasi, alat, dan pengontrol di konfigurasi campuran Apigee yang sudah 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 selalu diperlukan, tetapi Anda perlu membuat akun layanan baru atau memperbarui izin akun layanan yang sudah ada jika diperlukan. Panduan peningkatan akan memberikan detail tentang akun layanan mana yang perlu dimodifikasi atau dibuat dan peran apa yang perlu ditambahkan.
Jika Anda perlu mengubah izin akun layanan yang sudah ada, gunakan perintah
gcloudyang 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.iam.gserviceaccount.com" \ --role="roles/$NEW_ROLE"Jika versi Apigee Hybrid yang lebih baru mungkin memerlukan akun layanan tambahan untuk komponen baru / yang sudah ada, maka Anda perlu membuatnya. Anda dapat menggunakan skrip
apigee-create-service-account.shyang disertakan dalam folder alat untuk membuat akun layanan baru. Karena skrip akan diperbarui sebagai bagian dari langkah 4, maka skrip tersebut akan berisi detail dan profil baru yang dibutuhkan untuk akun layanan baru yang perlu dibuat.Nama akun layanan yang baru dibuat harus dirujuk dalam CR komponen yang bersangkutan.
./tools/create-service-account --env prod --profile apigee-component
Pengontrol peningkatan
Ubah kolom versi untuk komponen yang tercantum dalam ${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 pada kolom versi harus diperbarui 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 langkah-langkah yang sama seperti yang diberikan di Buat sumber daya inisialisasi dan pengontrol dalam alur kerja instalasi Apigee Hybrid. Anda dapat menggunakan skrip atau mengikuti langkah-langkah manual yang disediakan untuk memperbarui sumber daya inisialisasi dan pengontrol.
Perbarui komponen Apigee Kubernetes
Anda perlu melakukan perubahan berikut: - Jika terjadi perubahan arsitektur atau penambahan field baru atau penghapusan field lama, Anda harus memodifikasi CR dengan perubahan yang sesuai berdasarkan 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-produksi, Anda dapat menerapkan semua perubahan pada komponen Apigee secara bersamaan.
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}
Pembalikan Hibrida Apigee
Memulihkan apigee-hybrid-setup
Pindah ke direktori yang berisi versi sebelumnya dari konfigurasi campuran apigee. Jika tidak tersedia, pulihkan dari file zip yang dibuat pada langkah 1[link] selama peningkatan apigee hybrid.
Mengembalikan komponen Kubernetes ke versi sebelumnya
Terapkan perubahan untuk CR Apigee
kubectl apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}Pengontrol pengembalian
Ikuti langkah-langkah yang sama seperti yang diberikan buat sumber daya inisialisasi dan pengontrol dalam alur kerja instalasi Apigee Hybrid. Anda dapat menggunakan skrip atau mengikuti langkah-langkah manual yang diberikan untuk mengembalikan sumber daya inisialisasi dan pengontrol.
Pembersihan
Anda perlu membersihkan semua sumber daya tambahan baru yang dibuat selama peningkatan, 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:
Dapatkan nama lingkungan CR. Hal ini dapat dilakukan dengan mendapatkan semua lingkungan:
kubectl get env -n ${APIGEE_NAMESPACE}Simpan nama sumber daya di variabel lingkungan
APIGEE_ENV.Hapus kunci enkripsi lingkungan. Sebagai contoh, jika Anda belum mengubah nama kunci enkripsi, maka Anda dapat menghapusnya dengan menggunakan:
kubectl delete secret -n ${APIGEE_NAMESPACE} $APIGEE_ENV-encryption-keysHapus 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 sumber daya kustom lingkungan Apigee:
kubectl -n ${APIGEE_NAMESPACE} delete env $APIGEE_ENV
Menghapus konfigurasi campuran
Berikut adalah langkah-langkah untuk menghapus semua sumber daya yang terkait dengan Apigee Hybrid dari klaster Kubernetes Anda:
Anda perlu menghapus pekerjaan pengaturan pengguna Apigee dan pengaturan 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_NAMELangkah ini hanya diperlukan jika Anda belum mengandalkan nama default untuk rahasia akun layanan Kubernetes, rahasia akun layanan Google Cloud, dll. Jika Anda telah mengandalkan nama default, maka nama tersebut akan dihapus pada langkah berikutnya; jika tidak, Anda perlu 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}')Dalam kasus OpenShift, Anda perlu menghapus scc (Security Context Constraints) yang dibuat selama instalasi 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/certificatesJalankan perintah di bawah untuk menghapus namespace apigee
kubectl delete -f ${INSTALL_DIR}/overlays/initialization/namespace.yamlAtau, gunakan perintah:
kubectl delete $APIGEE_NAMESPACE
Penginstalan Multi-Instance
Penyiapan multi-instance mengacu pada konfigurasi campuran yang dapat mencakup beberapa region atau dalam region yang sama. Apigee merekomendasikan untuk mengatur konfigurasi instance kedua dalam struktur direktori terpisah karena konfigurasi lingkungan (replika,dll.) selalu berbeda antara instance satu dengan instance lainnya. Konfigurasi setiap instance terpisah dan diatur secara independen dalam struktur folder 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 ini, Anda dapat membuat salinan direktori instance1 yang disebut instance2 dan memodifikasi 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 mengkonfigurasi 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 informasi tentang mengkonfigurasi IP load balancer untuk instance lainnya.
Atur konteks kubectl ke kluster asli sebelum mengambil nama seed.
kubectl config use-context original-cluster-nameJalankan perintah kubectl berikut untuk mengidentifikasi alamat host awal untuk Cassandra di region saat ini.
kubectl get pods -o wide -n apigee -l app=apigee-cassandraSalah satu IP Pod yang dikembalikan dari perintah sebelumnya dapat dianggap sebagai host seed multi-region.
Pada instance ke-2, konfigurasikan nilai multiRegionSeedHost di apigee datastore CR di bawah ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/apigee-datastore.yaml
Siapkan instance baru.
Tetapkan konteks ke cluster yang ada
kubectl config use-context existing-cluster-nameEkspor rahasia apigee-ca ke dalam sebuah file.
kubectl -n cert-manager get secret apigee-root-certificate -o yaml > apigee-root-certificate.yamlTetapkan konteks ke nama cluster region baru:
kubectl config use-context NEW_CLUSTER_NAMEImpor secret ke cluster baru
kubectl -n cert-manager apply -f apigee-root-certificate.yamlInstal hybrid di instance (region) baru dengan mengikuti langkah-langkah yang diuraikan dalam Buat sumber daya inisialisasi dan controller.
Siapkan Cassandra di semua pod di pusat data baru. Dapatkan apigeeorg dari klaster dengan perintah berikut:
kubectl get apigeeorg -n apigee -o json | jq ".items[].metadata.name"Buat file resource kustom (YAML) replikasi data cassandra. File dapat memiliki nama apa pun. Dalam contoh berikut, file akan memiliki nama datareplication.yaml. Berkas tersebut harus berisi hal-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_REGIONDengan:
- 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 yang dihasilkan 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.yamlVerifikasi status pembangunan ulang menggunakan perintah berikut.
kubectl -n apigee get apigeeds -o json | jq ".items[].status.cassandraDataReplication"Hasilnya akan terlihat seperti ini:
{ "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, periksa ukuran data menggunakan perintah nodetool status:
kubectl logs apigee-cassandra-default-0 -f -n apigeeLihat datastore/secrets.yaml untuk JMX_user dan JMX_password
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u JMX_user -pw JMX_password statusHapus
multiRegionSeedHostdari CR datastore apigee dan jalankan perintah di bawah ini untuk menerapkan perubahan.kubectl apply k apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastorePeriksa status cluster Cassandra
Perintah berikut berguna untuk melihat apakah pengaturan klaster 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 statusDatacenter: 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 pada konfigurasi campuran Apigee Hybrid multi Region
- Pada contoh berikut, terdapat 2 wilayah -
us-east1danus-west1. - Di wilayah
us-west1, datastore apigee dihapus menggunakan penghapusan paksa. - Di wilayah
us-east1, Cassandra masih aktif dan berjalan. Verifikasi bahwa
apigeedstelah dihapus menggunakan perintahkubectl get apigeeds -n apigee No resources found in apigee namespace.Ubah konteks kubectl ke wilayah lain tempat klaster Cassandra masih aktif dan berjalan (di sini
us-east1).Verifikasi bahwa penyimpanan data dalam keadaan berjalan.
kubectl get apigeeds -n apigee NAME STATE AGE default running 23hEksekusi ke salah satu pod cassandra di wilayah up (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 berfungsi di region yang dihapus (di sini
us-west1)apigee@apigee-cassandra-default-0:~$ nodetool -u ${APIGEE_JMX_USER} -pw ${APIGEE_JMX_PASSWORD} statusDatacenter: 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-1Hapus semua node di wilayah 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-612384bed9f5Verifikasi bahwa tidak ada node dari wilayah yang dihapus (di sini
us-west1) yang tersisaapigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD statusDatacenter: 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-1Setelah selesai, hapus tugas pengaturan pengguna di wilayah atas (di sini
us-east1). Tugas akan dibuat ulang secara otomatis dalam beberapa detik.kubectl get jobs -n apigeeNAME COMPLETIONS DURATION AGE apigee-cassandra-schema-setup-apigee--0d2504c 0/1 5m54s 5m54s apigee-cassandra-user-setup--apigee--0d2504c 0/1 7s 7skubectl delete job apigee-cassandra-user-setup--apigee--0d2504cTunggu hingga proses pengaturan pengguna selesai.
kubectl get jobs -n apigeeNAME COMPLETIONS DURATION AGE apigee-cassandra-schema-setup-apigee--0d2504c 1/1 5m54s 5m54s apigee-cassandra-user-setup--apigee--0d2504c 1/1 7m 7mVerifikasi bahwa keyspace tidak memiliki region yang dihapus.
Buat pod debugging Cassandra.
Masuk 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:Verifikasi bahwa wilayah
us-west1telah dihapus dari semua keyspace.ddl_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)