Aller au contenu

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.

  1. La configuration "trackbone" external_secrets_operator crée (dans le namespace du même nom) les Secret "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.

  2. La configuration "trackbone" external_secrets_operator_config crée une source de secret ClusterSecretStore de type Kubernetes (pas Vault).

  3. Elle crée deux ClusterExternalSecret "quay-internal"/"quay-external" dans le namespace external-secrets-operator.

  4. Ils provoquent la création par l'opérateur ESO d'objets ExternalSecret dans tous les namespaces.

  5. Les Secret standard Kubernetes "docker-registry-external-fe"/"docker-registry-internal-fe" sont alors provisionnés pour être utilisé par les Pod.

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-....