|
Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado. |
|
Esta es documentación inédita para Admission Controller 1.34-dev. |
Instalación de ArgoCD
Si estás utilizando ArgoCD para gestionar tus recursos de Kubernetes, puede que desees instalar SUSE Security Admission Controller utilizando ArgoCD. Esto es posible, pero hay ciertas consideraciones. Desde la versión Admission Controller v1.17.0, la dependencia cert-manager ha sido eliminada. Hay un nuevo reconciliador de certificados que renueva automáticamente los certificados. Esto significa que el controlador Admission Controller se encarga de crear y renovar los certificados por ti. Esto incluye tanto la CA raíz como todos los certificados de webhook.
La creación inicial de la CA raíz y del certificado de webhook se realiza durante la instalación del chart de Helm utilizando las funciones de Helm disponibles. Así que, durante el renderizado del chart de Helm, la instalación verifica si los certificados ya están creados, y si no, los crea.
Esto plantea un problema al usar ArgoCD, ya que utiliza Helm únicamente para renderizar las plantillas, con toda la gestión del ciclo de vida de los recursos a cargo de ArgoCD. Cada vez que ArgoCD renderiza el chart de Helm para comprobar que la aplicación del clúster no se desvía de la definición del chart, intenta crear los certificados de nuevo. Como resultado, marca los secretos que almacenan los certificados y la configuración del webhook como no sincronizados.
Para resolver este problema, es necesario configurar la aplicación ArgoCD para ignorar:
-
el campo
dataen los secretos -
el campo
caBundleen elMutatingWebhookConfiguration -
ValidatingWebhookConfigurationrecursos.
Lo haces añadiendo el campo ignoreDifferences en la aplicación de ArgoCD:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: kubewarden-crds
namespace: argocd
spec:
project: default
source:
repoURL: https://charts.kubewarden.io
chart: kubewarden-crds
targetRevision: 1.13.0
destination:
server: https://kubernetes.default.svc
namespace: kubewarden-system
syncPolicy:
automated:
prune: true
selfHeal: true
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: kubewarden-controller
namespace: argocd
spec:
project: default
source:
repoURL: https://charts.kubewarden.io
chart: kubewarden-controller
targetRevision: 4.1.0
destination:
server: https://kubernetes.default.svc
namespace: kubewarden-system
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions: # Sync options which modifies sync behavior
# When syncing changes, respect fields ignored by the ignoreDifferences configuration
- RespectIgnoreDifferences=true
# ignoreDifferences is the important configuration to avoid ArgoCD marking
# the secrets and # webhook configurations as unsynchronized
ignoreDifferences:
- group: ""
kind: "Secret"
name: kubewarden-ca
namespace: kubewarden-system
jsonPointers:
- /data
- group: ""
kind: "Secret"
name: kubewarden-webhook-server-cert
namespace: kubewarden-system
jsonPointers:
- /data
- group: ""
kind: "Secret"
name: kubewarden-audit-scanner-client-cert
namespace: kubewarden-system
jsonPointers:
- /data
- group: "admissionregistration.k8s.io"
kind: "MutatingWebhookConfiguration"
jqPathExpressions:
- '.webhooks[]?.clientConfig.caBundle'
- group: "admissionregistration.k8s.io"
kind: "ValidatingWebhookConfiguration"
jqPathExpressions:
- '.webhooks[]?.clientConfig.caBundle'
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: kubewarden-defaults
namespace: argocd
spec:
project: default
source:
repoURL: https://charts.kubewarden.io
chart: kubewarden-defaults
targetRevision: 2.8.0
destination:
server: https://kubernetes.default.svc
namespace: kubewarden-system
syncPolicy:
automated:
prune: true
selfHeal: true
|
En el ejemplo, el aspecto clave es la configuración del |