首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将kubernetes实现的秘密环境变量转化为python?

如何将kubernetes实现的秘密环境变量转化为python?
EN

Stack Overflow用户
提问于 2020-02-21 17:16:46
回答 1查看 5.9K关注 0票数 2

对于我的项目,我需要一个配置文件来连接我的程序到一个数据库。我不想将配置数据(例如用户名和密码)硬编码在文档中,而是将其保存为kubernetes中的安全环境变量。

我用python编程了我的应用程序。python应用程序在docker容器中成功运行。然后我通过kubernetes创建了秘密变量。我编写了一个.yaml文件并指定了所需的容器和图像数据。这是Kubernetes教程:链接到Kubernetes教程

现在,我想访问我在kubernetes中创建的秘密环境变量。但是怎么做呢?

如何使用python读取秘密环境变量?是否必须初始化停靠文件中的环境变量?

PS:我已经尝试过这样的方法了:

代码语言:javascript
运行
复制
import os
print(os.environ['USERNAME'])
EN

回答 1

Stack Overflow用户

发布于 2020-02-21 17:49:07

以下是工作,并应向您证明:

1. Base64编码,例如用户名\密码:

代码语言:javascript
运行
复制
U=$(echo -n "freddie" | base64)
P=$(echo -n "fridays" | base64)

NB主机的环境变量是UP

假设

代码语言:javascript
运行
复制
POD="p"             # Or...
SECRET="s"          # Or...
NAMESPACE="default" # Or...

2.创造秘密:

代码语言:javascript
运行
复制
echo "
apiVersion: v1
kind: Secret
metadata:
  name: ${SECRET}
data:
  u: ${U}
  p: ${P}
" | kubectl apply --filename=- --namespace=${NAMESPACE}

NB秘密的数据包含值up (对应于UP)

产量:

代码语言:javascript
运行
复制
secret/x created

和:

代码语言:javascript
运行
复制
kubectl describe secret/${SECRET} --namespace=${NAMESPACE}

产量:

代码语言:javascript
运行
复制
Name:         ${SECRET}
Namespace:    ${NAMESPACE}
Labels:       <none>
Annotations:  
Type:         Opaque

Data
====
p:  7 bytes
u:  7 bytes

3.将秘密的价值附加到“波德”上:

代码语言:javascript
运行
复制
echo "
apiVersion: v1
kind: Pod
metadata:
  name: ${POD}
spec:
  containers:
  - name: test
    image: python
    command:
    - python3
    - -c
    - \"import os;print(os.environ['USERNAME']);print(os.environ['PASSWORD'])\"
    env:
    - name: USERNAME
      valueFrom:
        secretKeyRef:
          name: ${SECRET}
          key: u
    - name: PASSWORD
      valueFrom:
        secretKeyRef:
          name: ${SECRET}
          key: p
" | kubectl apply --filename=- --namespace=${NAMESPACE}

NB Pod's环境映射秘密的u->USERNAMEp->PASSWORD

NB这些变量名的更改是为了说明这一点;它们可能是相同的

4.审查Pod日志

代码语言:javascript
运行
复制
kubectl logs pod/${POD} --namespace=${NAMESPACE}

收益率(在我的例子中):

代码语言:javascript
运行
复制
freddie
fridays
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60343474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档