volume 方式使用 Secret - 每天5分钟玩转 Docker 容器技术(157)

Pod 可以通过 Volume 或者环境变量的方式使用 Secret,今天先学习 Volume 方式。

Pod 的配置文件如下所示:

① 定义 volume foo,来源为 secret mysecret

② 将 foo mount 到容器路径 /etc/foo,可指定读写权限为 readOnly

创建 Pod 并在容器中读取 Secret:

可以看到,Kubernetes 会在指定的路径 /etc/foo 下为每条敏感数据创建一个文件,文件名就是数据条目的 Key,这里是 /etc/foo/username 和 /etc/foo/password,Value 则以明文存放在文件中。

我们也可以自定义存放数据的文件名,比如将配置文件改为:

这时数据将分别存放在 /etc/foo/my-group/my-username 和 /etc/foo/my-group/my-password 中。

以 Volume 方式使用的 Secret 支持动态更新:Secret 更新后,容器中的数据也会更新。

将 password 更新为 abcdef,base64 编码为 YWJjZGVm

更新 Secret。

几秒钟或,新的 password 会同步到容器。

以上是通过 Volume 使用 Secret,下节我们会学习通过环境变量使用 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

原文地址:http://blog.51cto.com/cloudman/2105602

时间: 2024-10-29 14:00:16

volume 方式使用 Secret - 每天5分钟玩转 Docker 容器技术(157)的相关文章

通过案例学习 Secret - 每天5分钟玩转 Docker 容器技术(110)

在下面的例子中,我们会部署一个 WordPress 应用,WordPress 是流行的开源博客系统. 我们将创建一个 MySQL service,将密码保存到 secret 中.我们还会创建一个 WordPress service,它将使用 secret 连接 MySQL.这个例子将展示如何用 secret 避免在 image 中存放敏感信息,或者在命令行中直接传递敏感数据. 实验步骤如下: 创建 secret 创建 secret 存放 MySQL 的管理员密码. openssl rand -b

查看 Secret - 每天5分钟玩转 Docker 容器技术(156)

可以通过 kubectl get secret 查看存在的 secret. 显示有两个数据条目,kubectl describe secret 查看条目的 Key: 如果还想查看 Value,可以用 kubectl edit secret mysecret: 然后通过 base64 将 Value 反编码: 下节学习如何在 Pod 中使用 Secret. 书籍: 1.<每天5分钟玩转Kubernetes>https://item.jd.com/26225745440.html 2.<每天

Data Volume 之 bind mount - 每天5分钟玩转 Docker 容器技术(39)

storage driver 和 data volume 是容器存放数据的两种方式,上一节我们学习了 storage driver,本节开始讨论 Data Volume. Data Volume 本质上是 Docker Host 文件系统中的目录或文件,能够直接被 mount 到容器的文件系统中.Data Volume 有以下特点: Data Volume 是目录或文件,而非没有格式化的磁盘(块设备). 容器可以读写 volume 中的数据. volume 数据可以被永久的保存,即使使用它的容器

volume 生命周期管理 - 每天5分钟玩转 Docker 容器技术(44)

Data Volume 中存放的是重要的应用数据,如何管理 volume 对应用至关重要.前面我们主要关注的是 volume 的创建.共享和使用,本节将讨论如何备份.恢复.迁移和销毁 volume. 备份 因为 volume 实际上是 host 文件系统中的目录和文件,所以 volume 的备份实际上是对文件系统的备份. 还记得前面我们是如何搭建本地 Registry 的吗? 所有的本地镜像都存在 host 的 /myregistry 目录中,我们要做的就是定期备份这个目录. 恢复 volume

用 volume container 共享数据 - 每天5分钟玩转 Docker 容器技术(42)

volume container 是专门为其他容器提供 volume 的容器.它提供的卷可以是 bind mount,也可以是 docker managed volume.下面我们创建一个 volume container: 我们将容器命名为 vc_data(vc 是 volume container 的缩写).注意这里执行的是 docker create 命令,这是因为 volume container 的作用只是提供数据,它本身不需要处于运行状态.容器 mount 了两个 volume: b

Secret 的使用场景 - 每天5分钟玩转 Docker 容器技术(109)

我们可以用 secret 管理任何敏感数据.这些敏感数据是容器在运行时需要的,同时我们不又想将这些数据保存到镜像中. secret 可用于管理: 用户名和密码. TLS 证书. SSH 秘钥. 其他小于 500 KB 的数据. secret 只能在 swarm service 中使用.普通容器想使用 secret,可以将其包装成副本数为 1 的 service. 这里我们再举一个使用 secret 的典型场景. 数据中心有三套 swarm 环境,分别用于开发.测试和生产.对于同一个应用,在不同的

k8s 创建资源的两种方式 - 每天5分钟玩转 Docker 容器技术(124)

命令 vs 配置文件 Kubernetes 支持两种方式创建资源: 1. 用 kubectl 命令直接创建,比如: kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2 在命令行中通过参数指定资源的属性. 2. 通过配置文件和 kubectl apply 创建,要完成前面同样的工作,可执行命令: kubectl apply -f nginx.yml nginx.yml 的内容为: 资源的属性写在配置文件中,文件格式为 YAML

hostPath Volume - 每天5分钟玩转 Docker 容器技术(148)

hostPath Volume 的作用是将 Docker Host 文件系统中已经存在的目录 mount 给 Pod 的容器.大部分应用都不会使用 hostPath Volume,因为这实际上增加了 Pod 与节点的耦合,限制了 Pod 的使用.不过那些需要访问 Kubernetes 或 Docker 内部数据(配置文件和二进制库)的应用则需要使用 hostPath. 比如 kube-apiserver 和 kube-controller-manager 就是这样的应用,通过 kubectl e

用 k8s 管理机密信息 - 每天5分钟玩转 Docker 容器技术(155)

应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 Secret. Secret 会以密文的方式存储数据,避免了直接在配置文件中保存敏感信息.Secret 会以 Volume 的形式被 mount 到 Pod,容器可通过文件的方式使用 Secret 中的敏感数据:此外,容器也可以环境变量的方式使用这些数据. Secret 可通过命令行或 YAML 创建.比如希望 Secret 中包含如下信息: 用