GA Pribadi: Menggunakan cert-manager kustom dengan Apigee HybridFitur ini ditawarkan sebagai GA pribadi untuk Apigee hybrid versi 1.13. |
|---|
Fitur ini memberi Anda opsi untuk menginstal cert-manager kustom untuk Apigee Hybrid dengan konfigurasi terkait role based access control (RBAC) yang diubah menggunakan izin yang ketat.
Sebelum memulai
Sebelum melanjutkan langkah-langkah penginstalan, download diagram Helm menggunakan perintah berikut:
export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-chartsexport CERT_MANAGER_VERSION=v1.14.5helm pull $CHART_REPO/apigee-cert-manager --version $CERT_MANAGER_VERSION --untar
Menyiapkan cert-manager kustom
Menyiapkan cert-manager kustom memerlukan langkah-langkah berikut:
Penginstalan baru cert-manager kustom
Untuk melakukan penginstalan baru cert-manager kustom untuk digunakan dengan Apigee Hybrid, selesaikan langkah-langkah berikut:
- Instal CRD menggunakan
kubectldengan perintah berikut:export CERT_MANAGER_VERSION=v1.14.5kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.crds.yaml - Instal komponen cert-manager menggunakan chart Helm.
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
Selanjutnya, saat versi diagram baru tersedia, Anda dapat mengupgradenya dengan
helm upgrade:helm upgrade CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
Mengupgrade ke cert-manager kustom
Untuk bermigrasi dari cert-manager non-kustom yang ada ke versi kustom, gunakan langkah-langkah berikut. Hanya satu pengelola sertifikat yang dapat berjalan di cluster pada waktu tertentu.
- Nonaktifkan webhook yang ada dan perbarui deployment agar memiliki 0 replika untuk migrasi yang lancar:
kubectl delete validatingwebhookconfiguration cert-manager-webhookkubectl delete mutatingwebhookconfiguration cert-manager-webhook# set the replicas to 0kubectl scale deployment cert-manager -n cert-manager --replicas=0kubectl scale deployment cert-manager-cainjector -n cert-manager --replicas=0kubectl scale deployment cert-manager-webhook -n cert-manager --replicas=0 - Instal CRD:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERION}/cert-manager.crds.yaml - Instal cert-manager kustom:
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
- Setelah penginstalan selesai, Anda dapat menghapus cert-manager yang diinstal sebelumnya.
Menginstal atau mengupgrade Apigee hybrid dengan cert-manager kustom
Menginstal atau mengupgrade hybrid dengan cert-manager kustom memerlukan perubahan berikut pada prosedur penginstalan atau upgrade.
Perubahan pada penginstalan Apigee Hybrid
Saat menginstal Apigee hybrid v1.13 atau yang lebih tinggi dengan pengelola sertifikat kustom, lakukan perubahan berikut pada file overrides.yaml Anda sebelum menginstal komponen Apigee hybrid di Langkah 10: Menginstal Apigee hybrid Menggunakan Helm.
Perbarui file overrides.yaml Anda untuk memberi tahu operator tempat menemukan resource terkait cert-manager dan mengizinkan operator menggunakan Penerbit cert-manager kustom.
certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
Perubahan pada proses upgrade Apigee Hybrid
Saat mengupgrade Apigee hybrid ke v1.13 atau yang lebih tinggi dengan pengelola sertifikat kustom, lakukan perubahan berikut setelah langkah-langkah di Mempersiapkan upgrade diagram Helm dan sebelum Menginstal diagram Helm Apigee hybrid:
- Buat perubahan berikut dalam file
overrides.yamlAnda untuk memberi tahu operator tempat menemukan resource terkait cert-manager dan mengizinkan operator menggunakan ClusterIssuer cert-manager kustom.certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
- Salin secret apigee-ca yang ada dari namespace cert-manager ke namespace apigee Anda:
kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
- Edit file
apigee-ca.yamluntuk menghapus parameter namespace yang mengidentifikasi namespace sebagaicert-manager. - Terapkan secret
apigee-cake namespace apigee Anda dengankubectl apply:kubectl -n APIGEE_NAMESPACE apply -f apigee-ca.yaml
Me-roll back upgrade Apigee Hybrid
Jika Anda perlu melakukan roll back ke versi Apigee hybrid sebelumnya, ikuti petunjuk di Melakukan roll back ke versi sebelumnya.
Mengembalikan dan meng-uninstal cert-manager kustom
Melakukan roll back cert-manager kustom
Untuk melakukan roll back cert-manager kustom, gunakan langkah-langkah berikut:
- Uninstal rilis Helm menggunakan perintah berikut:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Instal cert-manager reguler (non-kustom) menggunakan metode pilihan Anda. Pastikan untuk menggunakan versi CRD yang sesuai. Misalnya, jika Anda menggunakan metode kubectl untuk menginstal cert-manager, metode ini akan memperbarui CRD ke versi yang sesuai, karena payload juga akan menyertakan CRD. Pastikan metode penginstalan yang Anda gunakan menyertakan CRD.
Meng-uninstal cert-manager kustom
Untuk meng-uninstal cert-manager kustom, gunakan langkah-langkah berikut:
- Uninstal rilis Helm menggunakan perintah berikut:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Hapus CRD dengan perintah berikut:
export CERT_MANAGER_VERSION=v1.14.5kubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.crds.yaml
Infrastructure as Code (overrides.yaml)
Helm chart mendukung penggantian sesuai kebutuhan, sehingga Anda dapat menggunakan file penggantian sesuai kebutuhan selama proses penginstalan atau upgrade.
Agar tidak bingung, sebaiknya gunakan nama file seperti cert-manager-overrides.yaml.
Lihat dokumentasi cert-manager untuk semua konfigurasi penggantian cert-manager yang didukung.
Konfigurasi cert-manager umum
Contoh berikut menunjukkan cara menyelesaikan beberapa konfigurasi cert-manager umum di Apigee hybrid.
Mengganti gambar
Berikut adalah contoh mengganti image bersama dengan imagepullsecrets jika Anda perlu menghosting image secara pribadi.
# cert-manager-overrides.yaml
global:
# Reference to one or more secrets to be used when pulling images
# ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
#
# For example:
# imagePullSecrets:
# - name: "image-pull-secret"
imagePullSecrets: []
image:
# Override the image tag to deploy by setting this variable.
# If no value is set, the chart's appVersion will be used.
repository: quay.io/jetstack/cert-manager-controller
webhook:
image:
# without a tag
repository: quay.io/jetstack/cert-manager-webhook
cainjector:
image:
# without a tag
repository: quay.io/jetstack/cert-manager-cainjector
startupapicheck:
image:
# without a tag
repository: quay.io/jetstack/cert-manager-startupapicheck
NodeSelector dan Afinitas Node
Dalam penginstalan Apigee Hybrid, Anda harus menggunakan node terpisah untuk pod Cassandra dan pod lainnya. Jika ingin menjalankan cert-manager di node pool yang tidak terkait dengan Cassandra, Anda dapat menggunakan afinitas node:
# A Kubernetes Affinity, if required; see https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#affinity-v1-core
#
# For example:
# affinity:
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# - key: cloud.google.com/gke-nodepool
# operator: In
# values:
# - master
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: KEY
operator: In
values:
- value for the non-C* node pool
webhook:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: KEY
operator: In
values:
- value for the non-C* node pool
cainjector:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: KEY
operator: In
values:
- value for the non C* node pool
Toleransi
Anda juga dapat memberikan toleransi, seperti yang ditunjukkan dalam contoh berikut:
# A list of Kubernetes Tolerations, if required; see https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#toleration-v1-core # # For example: # tolerations: # - key: node.kubernetes.io/not-ready # operator: Equal # value: master # effect: NoSchedule tolerations: [] webhook: tolerations: [] cainjector: tolerations: [] startupapicheck: tolerations: []