转:https://www.jianshu.com/p/530b3642c642

本章节展示了如何把密码秘钥等敏感数据安全的注入到Pod里面。

转换安全数据成base-64表示

假设你有两个秘密数据:一个用户名my-app和一个密码39528$vdg7Jb。首先使用Base64-encoding转换用户名和密码用base-64来表示。下面是一个用Linux转换的例子:

echo -n 'my-app' | base64
echo -n '39528$vdg7Jb' | base64

输出展示了用户名转换以后的字符串是bXktYXBw,密码转换以后是Mzk1MjgkdmRnN0pi。

创建一个Secret

下面是一个配置文件创建一个Secret来保存用户名和密码:

apiVersion: v1
kind: Secret
metadata:
name: test-secret
data:
username: bXktYXBwCg==
password: Mzk1MjgkdmRnN0piCg==

1.创建Secret

kubectl create -f secret.yaml

注意:如果你想跳过Base64转码的步骤,可以使用kubectl create secret命令创建Secret:

 kubectl create secret generic test-secret --from-literal=username='my-app',password='39528$vdg7Jb'

2.查看Secret的详细信息:

kubectl get secret test-secret

输出:

NAME          TYPE      DATA      AGE
test-secret Opaque 2 1m

3.查看更多详细信息:

 kubectl describe secret test-secret

输出:

 Name:       test-secret
Namespace: default
Labels: <none>
Annotations: <none> Type: Opaque Data
====
password: 13 bytes
username: 7 bytes

创建一个Pod通过卷访问秘密数据

下面是一个配置文件可以用来创建一个Pod:

apiVersion: v1
kind: Pod
metadata:
name: secret-test-pod
spec:
containers:
- name: test-container
image: nginx
volumeMounts:
# name must match the volume name below
- name: secret-volume
mountPath: /etc/secret-volume
# The secret data is exposed to Containers in the Pod through a Volume.
volumes:
- name: secret-volume
secret:
secretName: test-secret

1.创建Pod:

kubectl create -f secret-pod.yaml

2.验证Pod是否运行:

kubectl get pod secret-test-pod

输出:

NAME              READY     STATUS    RESTARTS   AGE
secret-test-pod 1/1 Running 0 42m

3.使用shell进入到pod运行的容器里面:

kubectl exec -it secret-test-pod -- /bin/bash

4.这个秘密数据公开在容器/etc/secret-volume目录里面通过卷挂载的方式。进入这个目录,并查看这个数据:

root@secret-test-pod:/# cd /etc/secret-volume

5.在shell里面查看/etc/secret-volume目录下的文件:

root@secret-test-pod:/etc/secret-volume# ls

输出展示了两个文件,每一个都对应相应的秘密数据:

password username

输出是用户名和密码:

 my-app
39528$vdg7Jb

创建Pod通过环境变量访问秘密数据

下面是一个创建Pod的配置文件:

apiVersion: v1
kind: Pod
metadata:
name: secret-envars-test-pod
spec:
containers:
- name: envars-test-container
image: nginx
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: test-secret
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: test-secret
key: password

1.创建Pod:

kubectl create -f secret-envars-pod.yaml

2.验证Pod是否已经运行:

kubectl get pod secret-envars-test-pod

输出:

NAME                     READY     STATUS    RESTARTS   AGE
secret-envars-test-pod 1/1 Running 0 4m

3.用shell进入Pod运行的容器里面:

kubectl exec -it secret-envars-test-pod -- /bin/bash

4.在shell里面展示环境变量:

root@secret-envars-test-pod:/# printenv

输出包含用户名和密码:

 ...
SECRET_USERNAME=my-app
...
SECRET_PASSWORD=39528$vdg7Jb

作者:YiQinGuo
链接:https://www.jianshu.com/p/530b3642c642
來源:简书

(转)Kubernetes 配置Pod和容器(十七) 使用Secrets管理安全证书的更多相关文章

  1. kubernetes 查看pod 的容器日志

    1.pod若处于运行状态,则通过kubectl logs 即可 # 查看指定pod的日志 kubectl logs <pod_name> kubectl logs -f <pod_n ...

  2. (译)Kubernetes中的多容器Pod和Pod内容器间通信

    原文:https://www.mirantis.com/blog/multi-container-pods-and-container-communication-in-kubernetes/Pave ...

  3. Kubernetes基石-pod容器

    引用三个问题来叙述Kubernetes的pod容器 1.为什么不直接在一个Docker容器中运行所有的应用进程. 2.为什么pod这种容器中要同时运行多个Docker容器(可以只有一个) 3.为什么k ...

  4. Kubernetes笔记(五):了解Pod(容器组)

    Kubernetes 中, 容器总是以 Pod(容器组)的方式进行调度与运行.因此对 Pod 的理解与掌握是学习 Kubernetes 的基础. 理解 Pod Pod(容器组)是 Kubernetes ...

  5. 基于容器微服务的PaaS云平台设计(二)通过kubernetes实现微服务容器管理

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 上一章描述了基于spring cloud的微服务实例(实 ...

  6. kubernetes中的Pause容器如何理解?

    前几篇文章都是讲的Kubernetes集群和相关组件的部署,但是部署只是入门的第一步,得理解其中的一些知识才行.今天给大家分享下Kubernets的pause容器的作用. Pause容器 全称infr ...

  7. Kubernetes中Pod的健康检查

    本文介绍 Pod 中容器健康检查相关的内容.配置方法以及实验测试,实验环境为 Kubernetes 1.11,搭建方法参考kubeadm安装kubernetes V1.11.1 集群 0. 什么是 C ...

  8. Kubernetes之Pod使用

    一.什么是Podkubernetes中的一切都可以理解为是一种资源对象,pod,rc,service,都可以理解是 一种资源对象.pod的组成示意图如下,由一个叫”pause“的根容器,加上一个或多个 ...

  9. Kubernetes学习之pause容器

    根据代码看到,pause容器运行着一个非常简单的进程,它不执行任何功能,一启动就永远把自己阻塞住了, 它的作用就是扮演PID1的角色,并在子进程称为"孤儿进程"的时候,通过调用wa ...

随机推荐

  1. 远程访问其他主机的Mysql(Ubuntu)

    远程访问其他主机的Mysql 首先:被访问的电脑应该把防火墙关掉, sudo ufw disable 然后去etc/mysql sudo gedit my.cnf 将bind-address注解掉 由 ...

  2. Spring Cloud部署+Mybatis整合

    一:架构简介 Spring Cloud是微服务思想的体现.每个项目单独部署,我只需要知道你服务的name就能直接调用你,而不关心你的ip和端口的变化.当接口服务不可用的时候,我能感知到你无法用了,就不 ...

  3. ML5238电池管理芯片笔记

          根据公司需要开发了以ML5238电池管理芯片+STM8S为核心的电池管理系统.由于前期对BMS系统还是了解甚少,开发起来也遇到了不少困难.再开发管理系统的同时,我也开发了管理系统的上位机, ...

  4. 大数加减(51nod)

    1005 大数加法 给出2个大整数A,B,计算A+B的结果.     输入 第1行:大数A 第2行:大数B (A,B的长度 <= 10000 需注意:A B有可能为负数) 输出 输出A + B ...

  5. HDU 6649 Data Structure Problem(凸包+平衡树)

    首先可以证明,点积最值的点对都是都是在凸包上,套用题解的证明:假设里两个点都不在凸包上, 考虑把一个点换成凸包上的点(不动的那个点), 不管你是要点积最大还是最小, 你都可以把那个不动的点跟原点拉一条 ...

  6. hdu6351 Beautiful Now (全排列+循环节)

    题目传送门 题意: 给你n和k,你每次能交换n的两个位,问最多k次后的最小和最大值 思路: 考虑到n到1e9,所以可以用全排列来暴力,但是我们不能全排列之前的数位, 因为n中的位数可能相等,那样很难计 ...

  7. 游戏服务端pomelo完整安装配置过程

    版权声明:本文为博主原创文章,转载或又一次发表请先与我联系. https://blog.csdn.net/jonahzheng/article/details/27658985 游戏服务端pomelo ...

  8. 垂直口风琴菜单3(jquery)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 数组去重ES6

    原文链接:https://juejin.im/post/5b17a2c251882513e9059231 1,去除简单类型   //ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ...

  10. 如何从mysql备份中提取单张表数据

    1.先提取备份数据中的前50行出来,查看一下备份数据格式    head -50 bakdb.sql > head50.txt        类似下面的数据是我们所需要提取的:        / ...