k8s学习--Secret详细解释与应用

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Secret 支持四种类型:- **Opaque Secrets**:存储任意类型机密数据,需自行加密。- **Service Account Token Secrets**:自动管理 API 访问令牌。- **Docker Registry Secrets**:存储 Docker 私有仓库认证信息。- **TLS Secrets**:存储 TLS 证书和私钥,用于加密通信。

Secret

什么是Secret?

类似与ConfigMap 区别在于
ConfigMap存储明文
Secret存储密文

ConfigMap可以用作配置文件管理,
Secret用于密码、密钥、token等敏感数据配置管理

Secret特性

1非敏感数据:专门用于存储非敏感的配置信息。

2.多种数据源:数据可以从命令行、文件、目录等多种来源创建。

3.动态更新:更新 ConfigMap 后,Pod 可以动态加载新的配置信息(需要应用支持热加载)

Secret四种类型及其特点

Opaque Secrets(不透明Secrets):

Opaque Secrets是最通用的Secret类型,可以存储任意类型的机密数据,如用户名/密码、API密钥等。
数据以Base64编码的形式存储,并且要求用户自行对数据进行加密。


Service Account Token Secrets(服务账户令牌Secrets):

这种类型的Secret由Kubernetes自动生成和管理,用于存储与Service Account相关的API访问令牌。
这些Secrets默认会挂载到Pod中,以便允许Pod内的应用程序使用与Service Account相关的API访问令牌进行安全通信。


Docker Registry Secrets(Docker注册表Secrets):

用于存储访问Docker私有注册表所需的认证信息,如用户名、密码和邮箱。
这些Secrets通常用于在Kubernetes中拉取私有Docker镜像时进行身份验证。


TLS Secrets(TLS证书Secrets):

用于存储TLS证书和私钥,以便在TLS终止、HTTPS等情况下使用。
这些Secrets可用于在Kubernetes Ingress或Service中配置SSL/TLS终止,从而实现加密通信。

Secret应用案例

(1)将明文密码进行base64编码

Opaque类型密码需要进行base64编码

[root@master ~]# echo -n 123 | base64
MTIz

假设密码为123,得到的编码为MTIz

(2)编写创建secret的YAML文件

[root@master ~]# vim secret-mysql.yml

apiVersion: v1
kind: Secret
metadata:
  name: secret-mysql
data:
  password: MTIz

[root@master ~]# kubectl apply -f secret-mysql.yml

Secret的两种使用方式

(1)通过环境变量的方式传递给pod

编写pod的YAML文件使用Secret

[root@master ~]# vim pod-mysql-secret.yml
apiVersion: v1
kind: Pod
metadata:
  name: pod-mysql-secret1
spec:
  containers:
  - name: mysql
    image: mysql:5.7
    env:
      - name: MYSQL_ROOT_PASSWORD
        valueFrom:
          secretKeyRef:
            name: secret-mysql
            key: password
[root@master ~]# kubectl apply -f pod-mysql-secret.yml

等一会,因为本地没有,所以要下载mysql镜像

进入pod内,用传递的密码登录

[root@master ~]# kubectl exec -it pod-mysql-secret1 -- bash
[root@master ~]# kubectl exec -it pod-mysql-secret1 -- bash
root@pod-mysql-secret1:/# mysql -uroot -p123

登录成功即可

(2)通过volume的方式挂载到pod内(建议使用)

编写pod的YAML文件使用Secret
[root@master ~]# vim pod-mysql-secret2.yml

apiVersion: v1
kind: Pod
metadata:
  name: pod-mysql-secret2
spec:
  containers:
  - name: busybox
    image: busybox
    args:
    - /bin/sh
    - -c
    - sleep 10000
    volumeMounts:
    - name: vol-secret
      mountPath: "/opt/passwd"
      readOnly: true
  volumes:
  - name: vol-secret
    secret:
      secretName: secret-mysql

验证:

[root@master ~]# kubectl exec pod-mysql-secret2 -- cat /opt/passwd/password
123

热更新:

[root@master ~]# echo -n 123456 | base64
MTIzNDU2
[root@master ~]# kubectl edit secrets secret-mysql

pod-mysql-secret2已更新

[root@master ~]# kubectl exec pod-mysql-secret2 -- cat /opt/passwd/password
123456

pod-mysql-secret1未更新

[root@master ~]# kubectl exec -it pod-mysql-secret1 -- bash
root@pod-mysql-secret1:/# mysql -uroot -p123456

完成
有问题请指出,全天在

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
2月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
356 180
|
2天前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
|
2天前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
13天前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
|
4天前
|
运维 分布式计算 Kubernetes
ACK One多集群Service帮助大批量应用跨集群无缝迁移
ACK One多集群Service可以帮助您,在无需关注服务间的依赖,和最小化迁移风险的前提下,完成跨集群无缝迁移大批量应用。
|
2月前
|
存储 监控 对象存储
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。
|
3月前
|
人工智能 Kubernetes 安全
赋能加速AI应用交付,F5 BIG-IP Next for Kubernetes方案解读
赋能加速AI应用交付,F5 BIG-IP Next for Kubernetes方案解读
87 13
|
3月前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
4月前
|
Kubernetes 监控 安全
容器化技术:Docker与Kubernetes的实战应用
容器化技术:Docker与Kubernetes的实战应用

热门文章

最新文章