שימוש ב-cert-manager מותאם אישית

זמינות כללית פרטית: שימוש ב-cert-manager בהתאמה אישית עם Apigee Hybrid

התכונה הזו מוצעת כ-GA פרטי לגרסה 1.13 של Apigee Hybrid.

התכונה הזו מאפשרת לכם להתקין cert-manager מותאם אישית ל-Apigee hybrid עם הגדרה שקשורה לבקרת גישה מבוססת-תפקידים (RBAC) שעברה שינוי, באמצעות הרשאות מגבילות.

לפני שמתחילים

לפני שממשיכים לשלבי ההתקנה, מורידים את תרשים Helm באמצעות הפקודות הבאות:

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

הגדרת cert-manager בהתאמה אישית

כדי להגדיר cert-manager בהתאמה אישית, צריך לבצע את השלבים הבאים:

  1. התקנה חדשה של cert-manager בהתאמה אישית
  2. שדרוג ל-cert-manager בהתאמה אישית

התקנה חדשה של cert-manager בהתאמה אישית

כדי לבצע התקנה חדשה של cert-manager מותאם אישית לשימוש עם Apigee hybrid, פועלים לפי השלבים הבאים:

  1. מתקינים את ה-CRD באמצעות kubectl עם הפקודות הבאות:
    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. מתקינים את הרכיב cert-manager באמצעות תרשים Helm.
    helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \
      --namespace APIGEE_NAMESPACE

    לאחר מכן, כשהגרסה החדשה של התרשים תהיה זמינה, תוכלו לשדרג אותה באמצעות helm upgrade:

    helm upgrade CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \
      --namespace APIGEE_NAMESPACE

שדרוג ל-cert-manager בהתאמה אישית

כדי לבצע מיגרציה מ-cert-manager קיים שלא מותאם אישית לגרסה מותאמת אישית, פועלים לפי השלבים הבאים. בכל זמן נתון יכול לפעול באשכול רק cert-manager אחד.

  1. משביתים את ה-webhook הקיים ומעדכנים את הפריסה כך שיהיו 0 רפליקות כדי לבצע העברה חלקה:
      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. מתקינים את ה-CRD:
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERION}/cert-manager.crds.yaml
  3. מתקינים את cert-manager בהתאמה אישית:
    helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \
      --namespace APIGEE_NAMESPACE
  4. אחרי שההתקנה מסתיימת, אפשר למחוק את cert-manager שהותקן קודם.

התקנה או שדרוג של Apigee Hybrid עם cert-manager בהתאמה אישית

כדי להתקין או לשדרג את הגרסה ההיברידית עם cert-manager מותאם אישית, צריך לבצע את השינויים הבאים בתהליכי ההתקנה או השדרוג.

שינויים בהתקנה של Apigee Hybrid

כשמתקינים את Apigee Hybrid בגרסה 1.13 ואילך עם מנהל אישורים מותאם אישית, צריך לבצע את השינוי הבא בקובץ overrides.yaml לפני שמתקינים את רכיבי Apigee Hybrid בשלב 10: התקנת Apigee Hybrid באמצעות Helm.

צריך לעדכן את הקובץ overrides.yaml כדי להודיע לאופרטור איפה נמצאים המשאבים שקשורים ל-cert-manager ולאפשר לאופרטור להשתמש ב-Issuer המותאם אישית של cert-manager.

certManager:
  namespace: APIGEE_NAMESPACE

ao:
  certManagerCAIssuerEnabled: true

שינויים בתהליך השדרוג של Apigee Hybrid

כשמשדרגים את Apigee hybrid לגרסה 1.13 ואילך עם מנהל אישורים מותאם אישית, צריך לבצע את השינויים הבאים אחרי השלבים שמפורטים במאמר הכנה לשדרוג של תרשימי Helm ולפני התקנה של תרשימי Helm של Apigee hybrid:

  1. מבצעים את השינויים הבאים בקובץ overrides.yaml כדי להודיע לאופרטור איפה נמצאים המשאבים שקשורים ל-cert-manager, וכדי לאפשר לאופרטור להשתמש ב-ClusterIssuer המותאם אישית של cert-manager.
    certManager:
      namespace: APIGEE_NAMESPACE
    
    ao:
      certManagerCAIssuerEnabled: true
    
  2. מעתיקים את הסוד הקיים apigee-ca ממרחב השמות cert-manager למרחב השמות apigee:
    kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
    
  3. עורכים את קובץ apigee-ca.yaml כדי להסיר את פרמטר מרחב השמות שמזהה את מרחב השמות כ-cert-manager.
  4. מחילים את הסוד apigee-ca על מרחב השמות של Apigee באמצעות kubectl apply:
    kubectl -n APIGEE_NAMESPACE apply -f apigee-ca.yaml

חזרה לגרסה קודמת של Apigee Hybrid

אם אתם צריכים לחזור לגרסה קודמת של Apigee Hybrid, אתם יכולים לפעול לפי ההוראות במאמר חזרה לגרסה קודמת.

החזרה לגרסה קודמת והסרה של cert-manager בהתאמה אישית

חזרה לגרסה הקודמת של cert-manager בהתאמה אישית

כדי לבטל את השינויים ב-cert-manager בהתאמה אישית, מבצעים את השלבים הבאים:

  1. מריצים את הפקודה הבאה כדי להסיר את גרסת Helm:
    helm uninstall CERT_MANAGER_RELEASE_NAME
  2. מתקינים את cert-manager הרגיל (לא מותאם אישית) באמצעות השיטה המועדפת. חשוב להשתמש בגרסה המתאימה של CRD. לדוגמה, אם משתמשים בשיטת kubectl כדי להתקין את cert-manager, המערכת תעדכן את ה-CRD לגרסה תואמת, כי המטען הייעודי יכלול גם CRD. מוודאים ששיטת ההתקנה שבה משתמשים כוללת את ה-CRD.

הסרת cert-manager בהתאמה אישית

כדי להסיר את cert-manager בהתאמה אישית, פועלים לפי השלבים הבאים:

  1. מריצים את הפקודה הבאה כדי להסיר את גרסת Helm:
    helm uninstall CERT_MANAGER_RELEASE_NAME
  2. מוחקים את ה-CRD באמצעות הפקודות הבאות:
    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

תשתית כקוד (overrides.yaml)

תרשים Helm תומך בהחלפות לפי הצורך, ומאפשר לכם להשתמש בקובץ החלפות לפי הצורך במהלך תהליך ההתקנה או השדרוג. כדי למנוע בלבול, מומלץ להשתמש בשם קובץ כמו cert-manager-overrides.yaml.

במסמכי התיעוד של cert-manager מפורטות כל הגדרות ברירת המחדל הנתמכות של cert-manager.

הגדרות נפוצות של cert-manager

בדוגמאות הבאות מוסבר איך לבצע כמה הגדרות נפוצות של cert-manager ב-Apigee hybrid.

החלפת תמונות

הנה דוגמה להחלפת תמונות באמצעות imagepullsecrets אם אתם צריכים לארח את התמונה באופן פרטי.

# 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 ו-Node Affinity

במהלך ההתקנה של Apigee Hybrid, צריך להשתמש בצמתים נפרדים עבור פודים של Cassandra ופודים אחרים. אם רוצים להריץ את cert-manager במאגר הצמתים שלא קשור ל-Cassandra, אפשר להשתמש בהעדפת צמתים:

# 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

Tolerations

אפשר גם לספק סובלנויות, כמו בדוגמה הבאה:

# 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: []