您的位置 首页 k8s

k8s 中Secret 类型(generic-tls)

Kubernetes 中的 Secret 主要根据其用途和数据格式进行分类。虽然底层存储机制相同(都是 Base64 编码的键值对),但 Kubernetes 通过不同的类型(Type)来区分它们的语义。

类型 (Type) 用途 典型场景
Opaque 通用存储 数据库密码、自定义配置、Basic Auth 文件
kubernetes.io/tls 存储证书 Ingress 配置 HTTPS
kubernetes.io/dockerconfigjson 存储镜像仓库凭据 拉取私有镜像
kubernetes.io/service-account-token 存储 API 访问令牌 Pod 访问 Kubernetes API

在实际工作中,Opaque 和 kubernetes.io/tls 是使用频率最高的两种。对于大多数自定义应用,使用 Opaque 就足够了,因为它最灵活,不需要遵循特定的键名规范。

 

(1)Opaque(通用类)

这是最常见、最基础的 Secret 类型,也是 kubectl create secret generic 命令默认创建的类型。
  • 用途:存储用户自定义的任意数据,比如密码、API 密钥、配置文件等。
  • 特点:Kubernetes 对其内容不做任何解释或校验,完全由用户决定里面存什么。
  • 示例:存储数据库密码、Redis 密钥、或者你之前提到的 Nginx Basic Auth 文件
kubectl create secret generic basic-auth --from-file=auth

 

案例:

nginx-ingress-BasicAuth 代理 : 连接

(2)TLS/SSL 类

这类 Secret 专门用于处理 HTTPS 加密。
  • kubernetes.io/tls
    • 用途:存储 TLS/SSL 证书和私钥。
    • 场景:这是配置 Ingress(如 Nginx Ingress)实现 HTTPS 访问时最常用的类型。通常包含两个键:tls.crt(证书)和 tls.key(私钥)。
    • 创建命令
        kubectl create secret tls my-tls-secret --cert=path/to/cert.pem --key=path/to/key.pem
        

案例:

nginx-ingress-https 代理 案例 : 连接

 

(3)服务账户凭据类

这类 Secret 用于 Kubernetes 内部组件之间的身份认证,通常与 ServiceAccount 关联。
  • kubernetes.io/service-account-token
    • 用途:包含用于访问 Kubernetes API Server 的令牌(Token)。当 Pod 被创建时,Kubernetes 会自动将默认的 ServiceAccount Token 挂载到 Pod 中,以便 Pod 内的应用能够安全地调用 API。
  • kubernetes.io/dockercfg 和 kubernetes.io/dockerconfigjson
    • 用途:用于存储 Docker Registry 的登录凭据(.dockercfg 或 config.json 格式)。
    • 场景:当你需要从私有镜像仓库(如 Harbor、阿里云 ACR、Docker Hub 私有库)拉取镜像时,需要创建这种类型的 Secret,并在 Pod 的 imagePullSecrets 中引用它。

(4)其他特定用途类

这些类型通常用于特定的云提供商或特定的 Kubernetes 功能。
  • bootstrap.kubernetes.io/token
    • 用于节点引导(Bootstrap)过程中的临时令牌。
  • kubernetes.io/basic-auth
    • 专门用于存储 HTTP 基本身份验证的凭据(用户名和密码)。虽然它存在,但在实际使用中,大家更习惯用通用的 Opaque 类型来存储 Basic Auth 文件(如你之前的 auth 文件),因为 Ingress 控制器通常只关心文件内容,而不关心 Secret 的类型。
  • kubernetes.io/ssh-auth
    • 用于存储 SSH 身份验证所需的私钥。

 

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章