GA privata: utilizza un cert-manager personalizzato con Apigee hybridQuesta funzionalità viene offerta come GA privata per la versione ibrida 1.13 di Apigee. |
|---|
Questa funzionalità ti offre la possibilità di installare un cert-manager personalizzato per Apigee Hybrid con una configurazione modificata del controllo dell'accesso basato sui ruoli (RBAC) utilizzando 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-chartsexport CERT_MANAGER_VERSION=v1.14.5helm pull $CHART_REPO/apigee-cert-manager --version $CERT_MANAGER_VERSION --untar
Configurazione di cert-manager personalizzato
La configurazione di un cert-manager personalizzato richiede i seguenti passaggi:
- Installazione pulita di un cert-manager personalizzato
- Eseguire l'upgrade a cert-manager personalizzato
Installazione pulita 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 le CRD utilizzando
kubectlcon i seguenti comandi: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 - 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 questi passaggi. Può essere eseguito un solo cert-manager nel cluster alla volta.
- Disattiva i webhook esistenti e aggiorna il deployment in modo che abbia 0 repliche per una migrazione senza interruzioni:
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 - Installa i CRD:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERION}/cert-manager.crds.yaml - Installa cert-manager 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 cert-manager personalizzato
L'installazione o l'upgrade di ibrido 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 v1.13 o versioni successive con un gestore di 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 consentire all'operatore di utilizzare l'emittente personalizzata di cert-manager.
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 successive con un gestore di certificati personalizzato, apporta le seguenti modifiche dopo i passaggi descritti in Preparati per l'upgrade dei grafici Helm e prima di Installare i grafici Helm di Apigee hybrid:
- Apporta le seguenti modifiche al file
overrides.yamlper comunicare all'operatore dove trovare le risorse correlate a cert-manager e consentire all'operatore di utilizzare ClusterIssuer personalizzato di cert-manager.certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
- Copia il secret apigee-ca esistente dallo spazio dei nomi cert-manager al tuo spazio dei nomi Apigee:
kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
- Modifica il file
apigee-ca.yamlper rimuovere il parametro dello spazio dei nomi che lo identifica comecert-manager. - Applica il secret
apigee-caallo 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 disinstallare cert-manager personalizzato
Esegui il rollback di cert-manager personalizzato
Per eseguire il rollback di cert-manager personalizzato, segui questi passaggi:
- Disinstalla la release Helm utilizzando il seguente comando:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Installa cert-manager normale (non personalizzato) utilizzando il tuo metodo preferito. Assicurati di utilizzare la versione CRD corrispondente. Ad esempio, se utilizzi il metodo kubectl per installare cert-manager, gli aggiornamenti delle CRD a una versione corrispondente, poiché il payload includerà anche le CRD. Assicurati che il metodo di installazione che utilizzi includa i CRD.
Disinstalla cert-manager personalizzato
Per disinstallare cert-manager personalizzato:
- Disinstalla la release Helm utilizzando il seguente comando:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Elimina le CRD con i seguenti comandi:
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 (override.yaml)
Il grafico Helm supporta gli override in base alle esigenze, consentendoti di utilizzare un file di override in base alle esigenze durante il processo di installazione o 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 seguenti mostrano come eseguire alcune configurazioni comuni di cert-manager in Apigee hybrid.
Sostituisci immagini
Di seguito è riportato un esempio di override delle immagini insieme a 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
Tolleranze
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: []