在 Kubernetes 中,Secret 是一种用于存储敏感信息的资源对象。它可以用于存储密码、API 密钥等敏感信息,并且可以在容器中使用它们,而不必将它们硬编码到应用程序中。
Secret 的类型
Kubernetes 中有两种类型的 Secret:generic 和 TLS。Generic Secret 用于存储任意类型的敏感信息,而 TLS Secret 用于存储 TLS 证书和私钥。
创建 Secret
要创建一个 Secret,可以使用 kubectl 命令或 YAML 文件进行定义。以下是一个示例 YAML 文件:
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: username: dXNlcm5hbWU= password: cGFzc3dvcmQ=
该 YAML 文件定义了一个名为 mysecret 的 Secret,其中包含了一个用户名和密码。注意,数据必须进行 base64 编码。
要使用 kubectl 命令创建 Secret,可以运行以下命令:
kubectl create secret generic mysecret --from-literal=username=myuser --from-literal=password=mypassword
在容器中使用 Secret
要在容器中使用 Secret,可以将其挂载为文件或环境变量。
挂载为文件
要将 Secret 挂载为文件,在 Pod 的 spec 中添加以下内容:
-- -------------------- ---- ------- ----- ----------- - ----- ----------- ------------- - ----- --------------- ---------- ------------- --------- ---- -------- - ----- --------------- ------- ----------- --------
这将在容器的 /etc/mysecret 目录下创建一个名为 username 和 password 的文件,文件内容为 Secret 中的对应值。
挂载为环境变量
要将 Secret 挂载为环境变量,在容器的 spec 中添加以下内容:
-- -------------------- ---- ------- ----- ----------- - ----- ----------- ---- - ----- -------- ---------- ------------- ----- -------- ---- -------- - ----- -------- ---------- ------------- ----- -------- ---- --------
这将在容器中创建两个环境变量:USERNAME 和 PASSWORD,它们的值分别为 Secret 中的 username 和 password。
总结
Kubernetes 中的 Secret 可以用于存储敏感信息,并且可以在容器中使用它们,而不必将它们硬编码到应用程序中。本文介绍了 Secret 的类型、创建方法以及在容器中使用方法,希望能为大家带来帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65d3f749add4f0e0ffc01478