External Secrets Operator - Opérations#
External Secrets Operator est un opérateur qui permet de provisionner des secrets.
ESO est déployé sur tous les clusters Kubernetes NGOT.
Gestion des secrets de la docker registry Quay#
Pre-requis : Les secrets "docker-registry" sont posés par la pipeline "quay-robots" dans les Vaults Infra : secret/concourse-infra/global/docker-registry-<internal/external/dev>-ro.
-
La configuration "trackbone"
external_secrets_operatorcrée (dans le namespace du même nom) lesSecret"quay-internal" et "quay-external" avec les valeurs présentes dans le Vault. Ils servent à la fois à l'installation d'ESO et comme référence pour les autres namespaces. -
La configuration "trackbone"
external_secrets_operator_configcrée une source de secretClusterSecretStorede type Kubernetes (pas Vault). -
Elle crée deux
ClusterExternalSecret"quay-internal"/"quay-external" dans le namespaceexternal-secrets-operator. -
Ils provoquent la création par l'opérateur ESO d'objets
ExternalSecretdans tous les namespaces. -
Les
Secretstandard Kubernetes "docker-registry-external-fe"/"docker-registry-internal-fe" sont alors provisionnés pour être utilisé par lesPod.
Commandes de diagnostique#
Vérifier la présence des Secret de base : "quay-$ kubectl get Secret -n external-secrets-operator
NAME TYPE DATA AGE
(...)
quay-internal kubernetes.io/dockerconfigjson 1 7d4h
quay-external kubernetes.io/dockerconfigjson 1 7d4h
(...)
S'ils sont absent, rejouer la configuration external_secrets_operator sur la zone kub-...
Vérifier la source de secrets kubernetes locale :
$ kubectl get ClusterSecretStore
NAME AGE STATUS CAPABILITIES READY
k8s 5m47s Valid ReadWrite True
Vérifier les mécanismes de vérification des secrets :
$ kubectl get ClusterExternalSecret
NAME STORE REFRESH INTERVAL READY
quay-external k8s 1h True
quay-internal k8s 1h True
$ kubectl get ExternalSecret -A
NAMESPACE NAME STORETYPE STORE REFRESH INTERVAL STATUS READY
alloy quay-external ClusterSecretStore k8s 10m0s SecretSynced True
alloy quay-internal ClusterSecretStore k8s 10m0s SecretSynced True
atlantis quay-external ClusterSecretStore k8s 10m0s SecretSynced True
atlantis quay-internal ClusterSecretStore k8s 10m0s SecretSynced True
cert-manager quay-external ClusterSecretStore k8s 10m0s SecretSynced True
cert-manager quay-internal ClusterSecretStore k8s 10m0s SecretSynced True
config-sync quay-external ClusterSecretStore k8s 10m0s SecretSynced True
config-sync quay-internal ClusterSecretStore k8s 10m0s SecretSynced True
crowdsecurity quay-external ClusterSecretStore k8s 10m0s SecretSynced True
crowdsecurity quay-internal ClusterSecretStore k8s 10m0s SecretSynced True
(...)
Vérifier la présence des Secret dans chaque namespace :
$ kubectl get Secret -A |grep docker-registry
alloy docker-registry-external-fe kubernetes.io/dockerconfigjson 1 23h
alloy docker-registry-internal-fe kubernetes.io/dockerconfigjson 1 23h
atlantis docker-registry-external-fe kubernetes.io/dockerconfigjson 1 23h
atlantis docker-registry-internal-fe kubernetes.io/dockerconfigjson 1 23h
cert-manager docker-registry-external-fe kubernetes.io/dockerconfigjson 1 23h
cert-manager docker-registry-internal-fe kubernetes.io/dockerconfigjson 1 23h
config-sync docker-registry-external-fe kubernetes.io/dockerconfigjson 1 23h
config-sync docker-registry-internal-fe kubernetes.io/dockerconfigjson 1 23h
crowdsecurity docker-registry-external-fe kubernetes.io/dockerconfigjson 1 23h
crowdsecurity docker-registry-internal-fe kubernetes.io/dockerconfigjson 1 23h
(...)
En cas de problème, faire un describe des objets ou rejouer la configuration external_secrets_operator_config sur la zone kub-....