Versione GA privata: utilizza un gestore dei certificati personalizzato con Apigee hybridQuesta funzionalità è offerta come versione GA privata per la versione ibrida di Apigee 1.13. |
---|
Questa funzionalità ti offre la possibilità di installare un gestore dei certificati personalizzato per Apigee Hybrid con una configurazione modificata relativa al controllo dell'accesso basato sui ruoli (RBAC) che utilizza autorizzazioni restrittive.
Prima di iniziare
Prima di procedere con i passaggi di installazione, scarica il grafico Helm utilizzando i seguenti comandi:
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
Configurazione di cert-manager personalizzato
La configurazione di un gestore dei certificati personalizzato richiede i seguenti passaggi:
- Nuova installazione di un cert-manager personalizzato
- Eseguire l'upgrade a cert-manager personalizzato
Installazione da zero di un cert-manager personalizzato
Per eseguire una nuova installazione di un cert-manager personalizzato da utilizzare con Apigee hybrid, completa i seguenti passaggi:
- Installa i CRD utilizzando
kubectl
con i seguenti comandi: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
- Installa il componente cert-manager utilizzando il grafico Helm.
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
Successivamente, quando la nuova versione del grafico sarà disponibile, potrai eseguirne l'upgrade con
helm upgrade
:helm upgrade CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
Esegui l'upgrade a cert-manager personalizzato
Per eseguire la migrazione da un cert-manager non personalizzato esistente a una versione personalizzata, segui i passaggi riportati di seguito. Nel cluster può essere eseguito un solo cert-manager alla volta.
- Disattiva gli webhook esistenti e aggiorna il deployment in modo che non abbia repliche per una migrazione senza problemi:
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
- Installa i CRD:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERION}/cert-manager.crds.yaml
- Installa il certificato personalizzato:
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
- Al termine dell'installazione, puoi eliminare cert-manager installato in precedenza.
Installazione o upgrade di Apigee hybrid con un gestore dei certificati personalizzato
L'installazione o l'upgrade di un ambiente ibrida con un cert-manager personalizzato richiede le seguenti modifiche alle procedure di installazione o upgrade.
Modifiche all'installazione di Apigee hybrid
Quando installi Apigee Hybrid 1.13 o versioni successive con un gestore dei certificati personalizzato, apporta la seguente modifica al file overrides.yaml
prima di installare i componenti di Apigee Hybrid nel Passaggio 10: installa Apigee Hybrid utilizzando Helm.
Aggiorna il file overrides.yaml
per comunicare all'operatore dove trovare le risorse correlate a cert-manager e per consentirgli di utilizzare l'emittente di cert-manager personalizzato.
certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
Modifiche alla procedura di upgrade di Apigee hybrid
Quando esegui l'upgrade di Apigee hybrid alla versione 1.13 o successiva con un gestore dei certificati personalizzato, apporta le seguenti modifiche dopo i passaggi descritti in Prepararsi all'upgrade dei grafici Helm e prima di installare i grafici Helm di Apigee hybrid:
- Apporta le seguenti modifiche al file
overrides.yaml
per comunicare all'operatore dove trovare le risorse correlate a cert-manager e per consentirgli di utilizzare ClusterIssuer di cert-manager personalizzato.certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
- Copia il secret apigee-ca esistente dallo spazio dei nomi cert-manager allo spazio dei nomi apigee:
kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
- Modifica il file
apigee-ca.yaml
per rimuovere il parametro dello spazio dei nomi che lo identifica comecert-manager
. - Applica il segreto
apigee-ca
allo spazio dei nomi apigee conkubectl apply
:kubectl -n APIGEE_NAMESPACE apply -f apigee-ca.yaml
Eseguire il rollback di un upgrade di Apigee hybrid
Se devi eseguire il rollback a una versione precedente di Apigee Hybrid, segui le istruzioni riportate in Eseguire il rollback a una versione precedente.
Eseguire il rollback e la disinstallazione di cert-manager personalizzato
Esegui il rollback di cert-manager personalizzato
Per eseguire il rollback del gestore dei certificati personalizzato, svolgi i seguenti passaggi:
- Disinstalla la release Helm utilizzando il seguente comando:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Installa il normale cert-manager (non personalizzato) utilizzando il metodo che preferisci. Assicurati di utilizzare la versione CRD corrispondente. Ad esempio, se utilizzi il metodo kubectl per installare cert-manager, verranno aggiornati i CRD a una versione corrispondente, poiché il payload includerà anche i CRD. Assicurati che il metodo di installazione impiegato includa i CRD.
Disinstalla il gestore dei certificati personalizzato
Per disinstallare il gestore dei certificati personalizzato:
- Disinstalla la release Helm utilizzando il seguente comando:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Elimina i CRD con i seguenti comandi:
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)
Il grafico Helm supporta le sostituzioni in base alle esigenze, consentendoti di utilizzare un file di sostituzioni in base alle esigenze durante la procedura di installazione o di upgrade.
Per evitare confusione, ti consigliamo di utilizzare un nome file come cert-manager-overrides.yaml
.
Consulta la documentazione di cert-manager per tutte le configurazioni di override di cert-manager supportate.
Configurazioni comuni di cert-manager
Gli esempi riportati di seguito mostrano come eseguire alcune configurazioni comuni di cert-manager in Apigee hybrid.
Sostituire le immagini
Di seguito è riportato un esempio di sostituzione delle immagini con imagepullsecrets
se devi ospitare l'immagine in privato.
# 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 e affinità nodo
Nell'installazione di Apigee Hybrid, devi utilizzare nodi separati per i pod Cassandra e altri pod. Se vuoi eseguire cert-manager nel pool di nodi non correlato a Cassandra, puoi utilizzare l'affinità dei nodi:
# 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
Tolleranza
Puoi anche fornire tolleranze, come mostrato nell'esempio seguente:
# 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: []