私人 GA:搭配 Apigee Hybrid 使用自訂的 cert-manager這項功能提供 Apigee hybrid 1.13 版本的私人 GA。 |
---|
這項功能可讓您為 Apigee hybrid 安裝自訂的 cert-manager,並使用受限權限套用經修改的角色型存取權控管 (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,請按照下列步驟操作:
重新安裝自訂 cert-manager
如要為 Apigee hybrid 安裝全新的自訂 cert-manager,請完成下列步驟:
- 使用
kubectl
搭配下列指令安裝 CRD: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
- 使用 Helm 資訊套件安裝 cert-manager 元件。
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。
- 停用現有的 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
- 安裝 CRD:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERION}/cert-manager.crds.yaml
- 安裝自訂 cert-manager:
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
- 安裝完成後,您可以刪除先前安裝的 cert-manager。
使用自訂 cert-manager 安裝或升級 Apigee Hybrid
使用自訂憑證管理工具安裝或升級混合型應用程式時,需要在安裝或升級程序中進行以下變更。
Apigee Hybrid 安裝作業異動
使用自訂 cert-cert 管理工具安裝 Apigee hybrid 1.13 以上版本時,請在步驟 10:使用 Helm 安裝 Apigee hybrid 中前,在 overrides.yaml
檔案中進行以下變更。
請更新 overrides.yaml
檔案,通知操作員 cert-manager 相關資源的位置,並讓操作員使用自訂 cert-manager 的發布者。
certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
Apigee Hybrid 升級程序異動
使用自訂 cert-cert 管理工具將 Apigee hybrid 升級至 1.13 以上版本時,請在準備升級 Helm 圖表的步驟之後,並在安裝 Apigee hybrid Helm 圖表之前進行下列變更:
- 請在
overrides.yaml
檔案中進行下列變更,通知操作員 cert-manager 相關資源的位置,並讓操作員能夠使用自訂 cert-manager 的 ClusterIssuer。certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
- 將現有的 apigee-ca 密鑰從 cert-manager 命名空間複製到 apigee 命名空間:
kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
- 編輯
apigee-ca.yaml
檔案,移除將命名空間標示為cert-manager
的命名空間參數。 - 使用
kubectl apply
將apigee-ca
密鑰套用至 Apigee 命名空間:kubectl -n APIGEE_NAMESPACE apply -f apigee-ca.yaml
將 Apigee Hybrid 升級作業復原
如果您需要將 Apigee hybrid 還原至舊版,請按照「還原至舊版」中的指示操作。
回溯及解除安裝自訂 cert-manager
回復自訂 cert-manager
如要回復自訂的 cert-manager,請按照下列步驟操作:
- 使用下列指令解除安裝 Helm 版本:
helm uninstall CERT_MANAGER_RELEASE_NAME
- 使用您偏好的方法安裝一般 (非自訂) cert-manager。請務必使用對應的 CRD 版本。 舉例來說,如果您使用 kubectl 方法安裝 cert-manager,則會將 CRD 更新為對應版本,因為酬載也會包含 CRD。請確認所用的安裝方法包含 CRD。
解除安裝自訂 cert-manager
如要解除安裝自訂 cert-manager,請按照下列步驟操作:
- 使用下列指令解除安裝 Helm 版本:
helm uninstall CERT_MANAGER_RELEASE_NAME
- 使用下列指令刪除 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 設定
以下範例說明如何在 Apigee hybrid 中完成一些常見的 cert-manager 設定。
覆寫圖片
以下範例說明如何覆寫圖片,並搭配 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 和節點相依性
在 Apigee Hybrid 安裝作業中,您必須為 Cassandra 和其他 Pod 使用不同的節點。如果您想在與 Cassandra 無關的節點集區中執行 cert-manager,可以使用節點相依性:
# 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
容許條件
您也可以提供容忍度,如以下範例所示:
# 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: []