secrets的类型

Kubernetes里Secret的类型(type)主要有以下几种:

一、Opaque(不透明的Secret)

Opaque是默认的Secret类型,表示任意数据都可以用base64编码存储进去。

示例:

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque                # 类型名称
data:
  username: dXNlcm5hbWU=    # base64编码后的字符串("username")
  password: cGFzc3dvcmQ=    # base64编码后的字符串("password")

二、kubernetes.io/service-account-token(Service Account令牌)

自动由Kubernetes创建,用于标识Pod访问Kubernetes API。

示例(一般由Kubernetes自动创建):

apiVersion: v1
kind: Secret
metadata:
  name: default-token-xxxxx
  namespace: default
  annotations:
    kubernetes.io/service-account.name: default
type: kubernetes.io/service-account-token   # 特殊类型
data:
  ca.crt: <base64证书数据>
  namespace: ZGVmYXVsdA==                   # "default"
  token: ZXlKaGJHY2lPaUpJVXp...             # JWT token数据

三、kubernetes.io/dockercfg 和 kubernetes.io/dockerconfigjson(Docker Registry凭证)

用于验证Docker镜像仓库,支持Pod从私有Docker仓库拉取镜像。

示例:

apiVersion: v1
kind: Secret
metadata:
  name: docker-registry-secret
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: eyJhdXRocyI6IHsidXJsIjp7ImF1dGgiOiJiYXNlNjR1c2VycGFzcyJ9fX0=
# .dockerconfigjson的值是Docker认证凭证JSON经过base64编码

(原始JSON格式示例)

{
  "auths": {
    "https://index.docker.io/v1/": {
      "username": "myuser",
      "password": "mypassword",
      "auth": "bXl1c2VyOm15cGFzc3dvcmQ="
    }
  }
}

四、kubernetes.io/basic-auth 和 kubernetes.io/ssh-auth (基本或SSH认证信息)

可用于存储SSH密钥文件或用户名密码认证信息。

基本认证示例:

apiVersion: v1
kind: Secret
metadata:
  name: basic-auth-secret
type: kubernetes.io/basic-auth
data:
  username: <base64 用户名>
  password: <base64 密码>

SSH认证示例:

apiVersion: v1
kind: Secret
metadata:
  name: ssh-auth-secret
type: kubernetes.io/ssh-auth
data:
  ssh-privatekey: <base64编码后的私钥>

五、kubernetes.io/tls(存储TLS证书私钥)

用于存储HTTPS/TLS通信密钥与证书。

示例:

apiVersion: v1
kind: Secret
metadata:
  name: tls-secret
type: kubernetes.io/tls
data:
  tls.crt: <base64编码的证书内容(cert)>
  tls.key: <base64编码的私钥内容(private key)>

总结:

  • Opaque 类型:一般用途,存储任意敏感数据。
  • service-account-token 类型:Kubernetes自动管理的,标识Pod与Kubernetes API交互权限。
  • dockerconfigjson/docker-cfg 类型:存储Docker镜像仓库认证凭证。
  • basic-auth 和 ssh-auth 类型:存放基本认证或SSH认证的敏感信息。
  • tls 类型:用于存储TLS证书和密钥相关信息,便于Ingress或负载均衡器配置使用。

以上是K8s中主要的Secret类型及对应示例,实际中根据具体需求选择正确的Secret类型使用。

posted on 2025-05-23 15:18  Leo-Yide  阅读(61)  评论(0)    收藏  举报