k8s/python:如何使用 Kubernetes Python 客户端读取机密?

jtl*_*lz2 6 python mongodb kubernetes jupyter-notebook

我想做与这个问题相反的事情:

如何使用 Kubernetes Python 客户端创建秘密?

IE:

如何通过 kubernetes-python API 从 kubernetes 集群读取现有机密?

用例是:我想从 jupyter 笔记本(也在我的集群中运行)向 mongodb(在我的集群中运行)进行身份验证,出于明显的原因,不将 mongodb 身份验证密码保存在 jupyter 笔记本中。

谢谢!

A_S*_*Suh 12

  1. 为 python安装Kubernetes 客户端
  2. 现在你可以揭开秘密了。例如秘密名称 - mysql-pass,命名空间 -default
from kubernetes import client, config
config.load_kube_config()
v1 = client.CoreV1Api()
secret = v1.read_namespaced_secret("mysql-pass", "default")
print(secret)
Run Code Online (Sandbox Code Playgroud)
  1. 如果您需要从秘密中提取解码后的密码
from kubernetes import client, config
import base64
import sys    
config.load_kube_config()
v1 = client.CoreV1Api()
sec = str(v1.read_namespaced_secret("mysql-pass", "default").data)
pas = base64.b64decode(sec.strip().split()[1].translate(None, '}\''))
print(pas)
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助。


Sha*_*anu 8

如果你使用 kubernetes 客户端 api,它会给你一个 dict 数据类型的响应,你可能不需要做吐痰等,你可以这样说,

from kubernetes import client, config
import base64
config.load_kube_config()
v1 = client.CoreV1Api()
sec = v1.read_namespaced_secret("default-token-rsbq7", "default").data
cert = base64.b64decode(sec["ca.crt"])
print(cert)
Run Code Online (Sandbox Code Playgroud)