在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

kubernetes中Secret如何使用

124次阅读
没有评论

共计 4167 个字符,预计需要花费 11 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 kubernetes 中 Secret 如何使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一:简介
Secret 可以作为数据卷被挂载,或作为环境变量暴露出来以供 pod 中的容器使用。它们也可以被系统的其他部分使用,而不直接暴露在 pod 内。例如,它们可以保存凭据,系统的其他部分应该用它来代表您与外部系统进行交互。

Secret 举例:

apiVersion: v1

kind: Secret

metadata:

 name: mysecret

type: Opaque

data:

 username: YWRtaW4=

 password: MWYyZDFlMmU2N2Rm

二:在 Pod 中使用 Secret 文件

1. 创建一个 secret 或者使用已有的 secret。多个 pod 可以引用同一个 secret。

2. 修改您的 pod 的定义在 spec.volumes[] 下增加一个 volume。可以给这个 volume 随意命名,它的 spec.volumes[].secret.secretName 必须等于 secret 对象的名字。

3. 将 spec.containers[].volumeMounts[] 加到需要用到该 secret 的容器中。指定 spec.containers[].volumeMounts[].readOnly = true 和 spec.containers[].volumeMounts[].mountPath 为您想要该 secret 出现的尚未使用的目录。

4. 修改您的镜像并且/或者命令行让程序从该目录下寻找文件。Secret 的 data 映射中的每一个键都成为了 mountPath 下的一个文件名。

apiVersion: v1

kind: Pod

metadata:

 name: mypod

spec:

 containers:

 – name: mypod

 image: redis

 volumeMounts:

 – name: foo

 mountPath: /etc/foo

 readOnly: true

 volumes:

 – name: foo

 secret:

 secretName: mysecret

您想要用的每个 secret 都需要在 spec.volumes 中指明。如果 pod 中有多个容器,每个容器都需要自己的 volumeMounts 配置块,但是每个 secret 只需要一个 spec.volumes。
您可以打包多个文件到一个 secret 中,或者使用的多个 secret,怎样方便就怎样来.

三:向特性路径映射 secret 密钥

我们还可以控制 Secret key 映射在 volume 中的路径。您可以使用 spec.volumes[].secret.items 字段修改每个 key 的目标路径:

apiVersion: v1

kind: Pod

metadata:

 name: mypod

spec:

 containers:

 – name: mypod

 image: redis

 volumeMounts:

 – name: foo

 mountPath: /etc/foo

 readOnly: true

 volumes:

 – name: foo

 secret:

 secretName: mysecret

 items:

 – key: username

 path: my-group/my-username

1.username secret 存储在 /etc/foo/my-group/my-username 文件中而不是 /etc/foo/username 中。
2.password secret 没有被影射

如果使用了 spec.volumes[].secret.items,只有在 items 中指定的 key 被影射。要使用 secret 中所有的 key,所有这些都必须列在 items 字段中。所有列出的密钥必须存在于相应的 secret 中。否则,不会创建卷。

四:Secret 文件权限
您还可以指定 secret 将拥有的权限模式位文件。如果不指定,默认使用 0644。您可以为整个保密卷指定默认模式,如果需要,可以覆盖每个密钥。

apiVersion: v1

kind: Pod

metadata:

 name: mypod

spec:

 containers:

 – name: mypod

 image: redis

 volumeMounts:

 – name: foo

 mountPath: /etc/foo

 volumes:

 – name: foo

 secret:

 secretName: mysecret

 defaultMode: 256

然后,secret 将被挂载到 /etc/foo 目录,所有通过该 secret volume 挂载创建的文件的权限都是 0400。
请注意,JSON 规范不支持八进制符号,因此使用 256 值作为 0400 权限。如果您使用 yaml 而不是 json 作为 pod,则可以使用八进制符号以更自然的方式指定权限。

五:从 Volume 中消费 secret 值
在挂载的 secret volume 的容器内,secret key 将作为文件,并且 secret 的值使用 base-64 解码并存储在这些文件中。这是在上面的示例容器内执行的命令的结果:

$ ls /etc/foo/

username

password

$ cat /etc/foo/username

admin

$ cat /etc/foo/password

1f2d1e2e67df

六:挂载的 secret 被自动更新
当已经在 volume 中消被消费的 secret 被更新时,被映射的 key 也将被更新。Kubelet 在周期性同步时检查被挂载的 secret 是不是最新的。但是,它正在使用其基于本地 ttl 的缓存来获取当前的 secret 值。结果是,当 secret 被更新的时刻到将新的 secret 映射到 pod 的时刻的总延迟可以与 kubelet 中的 secret 缓存的 kubelet sync period + ttl 一样长。

七:Secret 作为环境变量
1. 创建一个 secret 或者使用一个已存在的 secret。多个 pod 可以引用同一个 secret。
2. 在每个容器中修改您想要使用 secret key 的 Pod 定义,为要使用的每个 secret key 添加一个环境变量。消费 secret key 的环境变量应填充 secret 的名称,并键入 env[x].valueFrom.secretKeyRef。
3. 修改镜像或者命令行,以便程序在指定的环境变量中查找值。

apiVersion: v1

kind: Pod

metadata:

 name: secret-env-pod

spec:

 containers:

 – name: mycontainer

 image: redis

 env:

 – name: SECRET_USERNAME

 valueFrom:

 secretKeyRef:

 name: mysecret

 key: username

 – name: SECRET_PASSWORD

 valueFrom:

 secretKeyRef:

 name: mysecret

 key: password

 restartPolicy: Never

八:消费环境变量里的 Secret 值
在一个消耗环境变量 secret 的容器中,secret key 作为包含 secret 数据的 base-64 解码值的常规环境变量。这是从上面的示例在容器内执行的命令的结果:

$ echo $SECRET_USERNAME

admin

$ echo $SECRET_PASSWORD

1f2d1e2e67df

九:使用 imagePullSecret
imagePullSecret 是将包含 Docker(或其他)镜像注册表密码的 secret 传递给 Kubelet 的一种方式,因此可以代表您的 pod 拉取私有镜像。

十:使用 Secret 的限制
1. 验证 secret volume 来源确保指定的对象引用实际上指向一个类型为 Secret 的对象。因此,需要在依赖于它的任何 pod 之前创建一个 secret。
2.Secret API 对象驻留在命名空间中。它们只能由同一命名空间中的 pod 引用。
3. 每个 secret 的大小限制为 1MB。这是为了防止创建非常大的 secret 会耗尽 apiserver 和 kubelet 的内存。然而,创建许多较小的 secret 也可能耗尽内存。更全面得限制 secret 对内存使用的更全面的限制是计划中的功能。
4.Kubelet 仅支持从 API server 获取的 Pod 使用 secret。这包括使用 kubectl 创建的任何 pod,或间接通过 replication controller 创建的 pod。它不包括通过 kubelet –manifest-url 标志,其 –config 标志或其 REST API 创建的 pod(这些不是创建 pod 的常用方法)。
5. 必须先创建 secret,除非将它们标记为可选项,否则必须在将其作为环境变量在 pod 中使用之前创建 secret。对不存在的 secret 的引用将阻止其启动。
6. 通过 secretKeyRef 对不存在于命名的 key 中的 key 进行引用将阻止该启动。
7. 用于通过 envFrom 填充环境变量的 secret,这些环境变量具有被认为是无效环境变量名称的 key 将跳过这些键。该 pod 将被允许启动。将会有一个事件,其原因是 InvalidVariableNames,该消息将包含被跳过的无效键的列表。该示例显示一个 pod,它指的是包含 2 个无效键,1badkey 和 2alsobad 的默认 /mysecret ConfigMap。

十一: Secret 与 Pod 生命周期的联系
通过 API 创建的 Pod 时,不会检查应用的 secret 是否存在。一旦 Pod 被调度,kubelet 就会尝试获取该 secret 的值。如果获取不到该 secret,或者暂时无法与 API server 建立连接,kubelet 将会定期重试。Kubelet 将会报告关于 pod 的事件,并解释它无法启动的原因。一旦获取的 secret,kubelet 将创建并装载一个包含它的卷。在安装所有 pod 的卷之前,都不会启动 pod 的容器。

以上是“kubernetes 中 Secret 如何使用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计4167字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 亚洲av激情无码专区在线下载 | 国产精品欧美亚洲韩国日本不卡 | 午夜网站入口 | 精品人妻无码一区二区三区蜜桃一 | 男人的天堂av社区在线 | 日本系列第_1_页_俺去了 | 中文字幕日韩人妻在线视频 | 国产免费高清在线精品一区 | 日本毛片高清免费视频 | 精品综合久久久久久99 | 中国少妇初尝黑人巨高清 | 精品一区二区三区在线成人 | 国产素人在线 | 奇米一区二区三区四区久久 | 男女真人一级毛片做暖爱 | 亚洲人成网站在线在线 | 久久综合精品国产一区二区三区无 | 国产精品久久久久免费 | 成人区人妻精品一区二区不卡 | 无码一区二区三区av免费 | 亚洲欧洲∨国产一区二区三区 | 亚洲日本在线播放 | 亚洲精品字幕一区二区三区 | 欧美日韩综合视频 | 日韩高清一区二区三区五区七区 | 日韩电影中文字幕在线网站 | 亚洲+自拍+色综合图区一 | 麻豆 美女 丝袜 人妻 中文 | 91网站在线播放 | 黄色特级一级片 | 日韩精品无码人成视频手机 | 亚洲狠狠婷婷综合久久久久图片 | 欧美成人亚洲综合精品欧美激情 | 亚洲人成电影在线 | 伊人久久精品亚洲午夜 | 日本三级在线电影 | 国产一级在线观看视频 | 亚洲熟妇色自偷自拍另类 | 国精产品一区二区三区有限公司 | 在线观看毛片网站 | 国产精品福利视频手机免费观看 |