前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每日一个云原生小技巧 #70】Kubernetes Secret

【每日一个云原生小技巧 #70】Kubernetes Secret

作者头像
郭旭东
发布2024-01-25 09:49:25
900
发布2024-01-25 09:49:25
举报
文章被收录于专栏:云原生工具箱云原生工具箱

Kubernetes Secret 是 Kubernetes 系统中用来存储和管理敏感信息的一个对象。这些敏感信息可能包括密码、OAuth tokens、SSH 密钥等。使用 Secret 可以更安全地管理敏感数据,因为它们不是以明文存储在 Pod 的定义中或者容器镜像中,而是以加密形式存放在 Kubernetes API 服务器上。

使用场景

  1. 存储凭据:用于存储数据库、外部服务的用户名和密码。
  2. 存储配置信息:如 API 密钥,配置文件等。
  3. TLS 证书:存储 TLS 证书和私钥。
  4. Pod 访问控制:给 Pod 提供访问 Kubernetes API 的权限。

使用技巧

  1. 最小权限原则:确保只有需要访问 Secret 的 Pod 和用户才有权限。
  2. 定期轮换秘钥:定期更新 Secret 中的敏感数据。
  3. 避免直接在 Pod 配置中暴露 Secret:使用环境变量或卷挂载的方式引用 Secret。
  4. 加密 Etcd 数据存储:Kubernetes 存储数据的 Etcd 应该被加密。
  5. 审计和监控:监控对 Secret 的访问和更改,以及确保审计日志的生成。

使用案例

存储数据库凭据

假设你有一个需要连接到 MySQL 数据库的应用程序,你可以创建一个 Secret 来存储数据库的用户名和密码。

创建 Secret使用以下命令创建一个名为 mysql-secret 的 Secret:

代码语言:javascript
复制
apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
type: Opaque
data:
  username: [base64 encoded username]
  password: [base64 encoded password]

其中,[base64 encoded username][base64 encoded password] 分别是经过 base64 编码的用户名和密码。

在 Pod 中使用 Secret在 Pod 定义中,你可以通过环境变量或卷的方式来使用这个 Secret:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: myapp-container
    image: myapp
    env:
      - name: MYSQL_USER
        valueFrom:
          secretKeyRef:
            name: mysql-secret
            key: username
      - name: MYSQL_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysql-secret
            key: password

在这个案例中,Pod myapp-pod 将会从 mysql-secret 中获取数据库用户名和密码,并设置为环境变量 MYSQL_USERMYSQL_PASSWORD

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用场景
  • 使用技巧
  • 使用案例
    • 存储数据库凭据
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档