Menggunakan cert-manager kustom

GA Pribadi: Menggunakan pengelola sertifikat kustom dengan Apigee Hybrid

Fitur ini ditawarkan sebagai GA pribadi untuk Apigee hybrid versi 1.13.

Fitur ini memberi Anda opsi untuk menginstal pengelola sertifikat kustom untuk Apigee hybrid dengan konfigurasi terkait kontrol akses berbasis peran (RBAC) yang diubah menggunakan izin yang membatasi.

Sebelum memulai

Sebelum melanjutkan ke langkah-langkah penginstalan, download diagram Helm menggunakan perintah berikut:

export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CERT_MANAGER_VERSION=v1.14.5
helm pull $CHART_REPO/apigee-cert-manager --version $CERT_MANAGER_VERSION --untar

Menyiapkan cert-manager kustom

Penyiapan cert-manager kustom memerlukan langkah-langkah berikut:

  1. Penginstalan baru cert-manager kustom
  2. Mengupgrade ke cert-manager kustom

Penginstalan baru cert-manager kustom

Untuk melakukan penginstalan ulang cert-manager kustom agar dapat digunakan dengan Apigee hybrid, selesaikan langkah-langkah berikut:

  1. Instal CRD menggunakan kubectl dengan perintah berikut:
    export CERT_MANAGER_VERSION=v1.14.5
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.crds.yaml
    
  2. Instal komponen cert-manager menggunakan diagram Helm.
    helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \
      --namespace APIGEE_NAMESPACE

    Selanjutnya, saat versi baru diagram 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 cert-manager yang dapat berjalan di cluster pada waktu tertentu.

  1. Nonaktifkan webhook yang ada dan perbarui deployment agar memiliki 0 replika untuk migrasi yang lancar:
      kubectl delete validatingwebhookconfiguration cert-manager-webhook
      kubectl delete mutatingwebhookconfiguration cert-manager-webhook
    
        # set the replicas to 0
    
      kubectl scale deployment cert-manager -n cert-manager --replicas=0
      kubectl scale deployment cert-manager-cainjector -n cert-manager --replicas=0
      kubectl scale deployment cert-manager-webhook -n cert-manager --replicas=0
  2. Instal CRD:
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERION}/cert-manager.crds.yaml
  3. Instal cert-manager kustom:
    helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \
      --namespace APIGEE_NAMESPACE
  4. 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 pengelola sertifikat kustom memerlukan perubahan berikut pada prosedur penginstalan atau upgrade.

Perubahan pada penginstalan Apigee Hybrid

Saat menginstal Apigee hybrid v1.13 atau yang lebih baru dengan pengelola cert-cert kustom, buat perubahan berikut di file overrides.yaml sebelum menginstal komponen Apigee hybrid di Langkah 10: Menginstal Apigee hybrid Menggunakan Helm.

Perbarui file overrides.yaml untuk memberi tahu operator tempat menemukan resource terkait cert-manager dan memungkinkan operator menggunakan Issuer cert-manager kustom.

certManager:
  namespace: APIGEE_NAMESPACE

ao:
  certManagerCAIssuerEnabled: true

Perubahan pada proses upgrade hybrid Apigee

Saat mengupgrade Apigee hybrid ke v1.13 atau yang lebih tinggi dengan pengelola cert-cert kustom, lakukan perubahan berikut setelah langkah-langkah di Mempersiapkan upgrade diagram Helm dan sebelum Menginstal diagram Helm Apigee hybrid:

  1. Buat perubahan berikut dalam file overrides.yaml untuk memberi tahu operator tempat menemukan resource terkait cert-manager dan memungkinkan operator menggunakan ClusterIssuer cert-manager kustom.
    certManager:
      namespace: APIGEE_NAMESPACE
    
    ao:
      certManagerCAIssuerEnabled: true
    
  2. 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
    
  3. Edit file apigee-ca.yaml untuk menghapus parameter namespace yang mengidentifikasi namespace sebagai cert-manager.
  4. Terapkan secret apigee-ca ke namespace apigee Anda dengan kubectl 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:

  1. Uninstal rilis Helm menggunakan perintah berikut:
    helm uninstall CERT_MANAGER_RELEASE_NAME
  2. 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 mengupdate 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:

  1. Uninstal rilis Helm menggunakan perintah berikut:
    helm uninstall CERT_MANAGER_RELEASE_NAME
  2. Hapus CRD dengan perintah berikut:
    export CERT_MANAGER_VERSION=v1.14.5
    kubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.crds.yaml

Infrastructure as Code (overrides.yaml)

Diagram Helm mendukung penggantian sesuai kebutuhan, sehingga Anda dapat menggunakan file penggantian sesuai kebutuhan selama proses penginstalan atau upgrade. Untuk menghindari kebingungan, 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 penggantian image beserta 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 pada 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: []