用 k8s 管理机密信息

摘要:
在应用程序启动过程中,可能需要一些敏感信息,例如访问数据库的用户名、密码或密钥。将此信息直接存储在容器图像中显然是不合适的。Kubernetes提供的解决方案是Secret。Secret将以密文的形式存储数据,避免将敏感信息直接保存在配置文件中。可以从命令行或YAML创建Secret。例如,您希望Secret包含以下信息:用户名admin password 123456创建Secret有四种方法:1.From literal:kubectlcreateseecretgenericmysecret--From literal=username=admin--From litral=password=12346每个--From litral对应一个信息条目。执行kubectlapply创建Secret:在下一节中,我们将学习如何使用这些创建的Secret。

应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥。将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 Secret。

Secret 会以密文的方式存储数据,避免了直接在配置文件中保存敏感信息。Secret 会以 Volume 的形式被 mount 到 Pod,容器可通过文件的方式使用 Secret 中的敏感数据;此外,容器也可以环境变量的方式使用这些数据。

Secret 可通过命令行或 YAML 创建。比如希望 Secret 中包含如下信息:

  1. 用户名 admin

  2. 密码 123456

创建 Secret

有四种方法创建 Secret:

1. 通过 --from-literal

kubectl create secret generic mysecret --from-literal=username=admin --from-literal=password=123456

每个 --from-literal 对应一个信息条目。

2. 通过 --from-file

echo -n admin > ./username
echo -n 123456 > ./password
kubectl create secret generic mysecret --from-file=./username --from-file=./password

每个文件内容对应一个信息条目。

3. 通过 --from-env-file

cat << EOF > env.txt
username=admin
password=123456
EOF
kubectl create secret generic mysecret --from-env-file=env.txt

文件 env.txt 中每行 Key=Value 对应一个信息条目。

4. 通过 YAML 配置文件:

用 k8s 管理机密信息第1张

文件中的敏感数据必须是通过 base64 编码后的结果。

用 k8s 管理机密信息第2张

执行 kubectl apply 创建 Secret:

用 k8s 管理机密信息第3张

下一节我们学习如何使用这些创建好的 Secret。

书籍:

1.《每天5分钟玩转Kubernetes》
https://item.jd.com/26225745440.html

2.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

3.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

用 k8s 管理机密信息第4张

免责声明:文章转载自《用 k8s 管理机密信息》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇pb相关小技巧或用法Linux 配置静态IP下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基于ack k8s集群调度的方案设计

目录 1、概述 2、原生调度原则 2.1 调度流程 2.2 调度策略 3、应用和服务概况 4、阿里云集群概况 4.1 集群概况 4.1 node节点的规划 4.1.1 阿里云ecs介绍 4.1.2 k8s集群节点选型原则 4.1.3 k8s集群节点池设计 5、调度策略的设计 5.1 原生调度类型的取舍 5.2 局部最优解理论 5....

k8s学习笔记之五:volume,PV ,PVC

一,volume Ⅰ、emptyDir(pod消失就消失) 简介:emptyDir Volume是在Pod分配到node时创建的,从他的名称就能看得出来,它的出事内容为空,并且无需指定宿主机上对应的目录文件, 因为这是kubernetes自动分配的一个目录,当Pod从node上移除时,emptyDir中的数据也会被永久删除emptyDir的用途有: 例子1...

gitlabCI/CD部署一个java项目

1、环境准备   1)安装jdk工具 安装yum epel源 [root@k8s-node02 ~]# yum install -y epel-release 安装jdk [root@k8s-node02 ~]# yum install -y java-1.8.0-openjdk 验证jdk [root@k8s-node02 ~]# java -v...

【原创】K8S使用ceph-csi持久化存储之RBD

一、集群和组件版本 K8S集群:1.17.3+Ceph集群:Nautilus(stables)Ceph-CSI:release-v3.1snapshotter-controller:release-2.1Linue kernel:3.10.0-1127.19.1.el7.x86_64 + 镜像版本: docker pull quay.io/k8scsi/c...

k8s的yaml说明

理解k8s里的几个概念 Kubernetes 通过各种 Controller 来管理 Pod 的生命周期。为了满足不同业务场景,Kubernetes 开发了 Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job 等多种 Controller。最常用的 Deployment用来建立Pod,以下是它的步骤 kube...

深入k8s:Pod对象中重要概念及用法

Pod对象基本概念 Pod,实际上是在扮演传统基础设施里“虚拟机”的角色;而容器,则是这个虚拟机里运行的用户程序。 Kubernetes 集群中的 Pod 可被用于以下两个主要用途: 运行单个容器的 Pod。"每个 Pod 一个容器"模型是最常见的 Kubernetes 用例;在这种情况下,可以将 Pod 看作单个容器的包装器,并且 Kubernet...