Pythonkubernetes
模块提供了两种列出秘密的方法:
list_namespaced_secret
list_secret_for_all_namespaces
我想列出运行容器的命名空间的秘密。
该list_secret_all_for_namespaces
方法不合适,因为它尝试在集群范围内列出机密,而我不需要或不想要该级别的访问权限。
该list_namespaced_secret
方法需要显式的命名空间名称。我可以将其作为我的 Python 代码的参数提供......
apiVersion: v1
kind: Pod
metadata:
name: example
namespace: my-sandbox
spec:
containers:
- command:
- /path/to/my-python-code.py
arguments:
- my-sandbox
Run Code Online (Sandbox Code Playgroud)
...但这很笨拙,因为这意味着每次将 pod 清单部署到新的命名空间时都需要修改。
有没有办法通过API获取当前的命名空间名称?
如果您可以在 pod 的清单中使用fieldRef
来设置 env 变量。
apiVersion: v1
kind: Pod
metadata:
name: dapi-envars-fieldref
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "sh", "-c"]
args:
- while true; do
echo -en '\n';
printenv
sleep 10;
done;
env:
- name: MY_POD_NAMESPACE # <----this
valueFrom:
fieldRef:
fieldPath: metadata.namespace
restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)
您可以读取 env 变量并使用list_namespaced_secret
.
from kubernetes import client, config
import os
config.load_kube_config()
v1 = client.CoreV1Api()
k = v1.list_namespaced_secret(str(os.environ.get("MY_POD_NAMESPACE")))
for i in k.items:
print(i.metadata.name)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2387 次 |
最近记录: |