Как использовать secret в Kubernetes

#kubernetes

#kubernetes

Вопрос:

У меня есть файл YAML, который объявляет секреты как таковые:

 # api version, kind, etc declared
data: 
   MYSQL_ROOT_PASSWORD: dGhpc2lzYXRlc3R0aGluZy4K
   MYSQL_HOST: bXlzcWwtc2VydmljZQo=
 

и это для секретов, объявленных в файле yaml следующим образом:

 # api version, kind, etc declared
- name: MYSQL_ROOT_PASSWORD
           valueFrom:
             secretKeyRef:
               name: mysecret
               key: MYSQL_ROOT_PASSWORD

- name: MYSQL_HOST
           valueFrom:
             secretKeyRef:
               name: mysecret
               key: MYSQL_HOST
 

Я хочу иметь возможность получить доступ к этому из файла Python, где к ним был получен такой доступ до того, как они были превращены в секреты:

 DATABASES = {
   'default': {
       'HOST': os.environ.get('MYSQL_HOST'),
       'PASSWORD': os.environ.get('MYSQL_ROOT_PASSWORD'),
   }
}
 

Я пробовал это:

 host = ""
password = ""

def decode() {
    config.load_kube_config()
    v1 = client.CoreV1Api()
    host = v1.read_namespaced_secret("MYSQL_HOST", "default")
    password = v1.read_namespaced_secret("MYSQL_ROOT_PASSWORD", "default")
    host = base64.b64decode(host.strip().split()[1].translate(None, '}''))
    password = base64.b64decode(password.strip().split()[1].translate(None, '}''))
}
 

и передайте переменные, подобные таким:

 DATABASES = {
   'default': {
       'HOST': host,
       'PASSWORD': password,
   }
}
 

но это не работает. Как бы я это сделал?

Комментарии:

1. Прежде чем перейти к python, если вы войдете в контейнер и выполните «env», увидите ли вы переменные среды и ее содержимое?

2. @Jxadro как бы я это сделал?

3. В вашем пространстве имен, «kubectl get pods», обратите внимание на ваш идентификатор модуля, kubectl exec -ti <ваш идентификатор модуля> — /bin/bash

4. Затем просто выполните «env»

5. @Jxadro написано, что MYSQL_ROOT_PASSWORD: <установлен на ключ ‘MYSQL_ROOT_PASSWORD’ в секретном ‘mysecret’> Необязательно: false MYSQL_HOST: <установлен на ключ ‘MYSQL_HOST’ в секретном ‘mysecret’> Необязательно: false