#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