https://www.kubernetes.org.cn/secret

secret 主要解决密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中

Secret可以以Volume或者环境变量的方式使用(共两种方式)

Secret有三种类型:

  • Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中;
  • Opaque:base64编码格式的Secret,用来存储密码、密钥等;
  • kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证信息;

实验 (Opaque)

第一步:加密用户及密码

╭─root@node1 ~
╰─➤ echo "123" | base64
MTIzCg==
╭─root@node1 ~
╰─➤ echo "node1" | base64
bm9kZTEK

第二步:编写secret的yml文件

apiVersion: v1
kind: Secret
metadata:
name: mysecret
data:
hostname: bm9kZTEK
password: MTIzCg==

第三步:执行secret文件

╭─root@node1 ~
╰─➤ kubectl apply -f secret.yml
secret/mysecret created

第四步:查看

╭─root@node1 ~
╰─➤ kubectl get secret
NAME TYPE DATA AGE
default-token-ngn4n kubernetes.io/service-account-token 3 10d
mysecret Opaque 2 2m4s
╭─root@node1 ~
╰─➤ kubectl describe secret mysecret
Name: mysecret
Namespace: default
Labels: <none>
Annotations:
Type: Opaque Data
====
hostname: 6 bytes
password: 4 bytes

第五步:获取加密数据

╭─root@node1 ~
╰─➤ kubectl edit secret mysecret # Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
hostname: bm9kZTEK # 加密数据
password: MTIzCg== # 加密数据
kind: Secret
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","data":{"hostname":"bm9kZTEK","password":"MTIzCg=="},"kind":"Secret","metadata":{"annotations":{},"name":"mysecret","namespace":"default"}}
creationTimestamp: "2019-08-30T08:00:24Z"
name: mysecret
namespace: default
resourceVersion: "244709"
selfLink: /api/v1/namespaces/default/secrets/mysecret
uid: f8a21f4c-18ce-4b13-814a-c20ee5efbe23
type: Opaque

第六步:解码

╭─root@node1 ~
╰─➤ echo "MTIzCg==" | base64 --decode
123
╭─root@node1 ~
╰─➤ echo "bm9kZTEK" | base64 --decode
node1

使用secret

以volume的形式挂载到pod

第一步:编写pod的yml文件

apiVersion: v1
kind: Pod
metadata:
name: pod-secret
spec:
containers:
- name: busybox
image: busybox
imagePullPolicy: IfNotPresent
command: ["/bin/sh","-c","touch test;sleep 60000"]
volumeMounts:
- name: du
mountPath: /tmp
volumes:
- name: du
secret:
secretName: mysecret

第二步:执行

╭─root@node1 ~
╰─➤ kubectl apply -f busybox-secret.yml
pod/pod-secret created

第三步:进入pod查看

╭─root@node1 ~
╰─➤ kubectl exec -it pod-secret /bin/sh
/ # ls
bin dev etc home proc root sys test tmp usr var
/ # cd tmp
/tmp # ls
hostname password
/tmp # cat hostname
node1
/tmp # cat password
123
/tmp #

第四步:动态更新密码

1、生成新密码

╭─root@node1 ~
╰─➤ echo 1234 | base64
MTIzNAo=

2、修改secret文件

apiVersion: v1
kind: Secret
metadata:
name: mysecret
data:
hostname: bm9kZTEK
password: MTIzNAo=

3、重新执行secret的yml文件

╭─root@node1 ~
╰─➤ kubectl apply -f secret.yml
secret/mysecret configured

第五步:查看密码

╭─root@node1 ~
╰─➤ kubectl exec -it pod-secret /bin/sh
/ # cd tmp
/tmp # ls
hostname password
/tmp # cat password
1234

以环境变量的方式使用secret

第一步:编写yml文件

apiVersion: v1
kind: Pod
metadata:
name: pod-mysql
spec:
containers:
- name: mysql
image: mysql
imagePullPolicy: IfNotPresent
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysecret
key: password

第二步:执行

╭─root@node1 ~
╰─➤ kubectl apply -f mysql-secret.yml
pod/pod-mysql created

第三步:查看

╭─root@node1 ~
╰─➤ kubectl get pod
NAME READY STATUS RESTARTS AGE
pod-mysql 1/1 Running 0 8s
╭─root@node1 ~
╰─➤ kubectl exec -it pod-mysql bash
root@pod-mysql:/# env
...
MYSQL_ROOT_PASSWORD=1234
...
root@pod-mysql:/#

Kubernetes -- secret (敏感数据管理)的更多相关文章

  1. Kubernetes Secret(机密存储)

    Kubernetes Secret(机密存储) 官方文档:https://kubernetes.io/docs/concepts/configuration/secret/ 加密数据并存放Etcd中, ...

  2. 【kubernetes secret 和 aws ecr helper】kubernetes从docker拉取image,kubernetes docker私服认证(argo docker私服认证),no basic auth credentials错误解决

    aws ecr helper: https://aws.amazon.com/blogs/compute/authenticating-amazon-ecr-repositories-for-dock ...

  3. kubernetes secret 和 serviceaccount删除

    背景 今天通过配置创建了一个serviceaccounts和secret,后面由于某种原因想再次创建发现已存在一个serviceaccounts和rolebindings.rbac.authoriza ...

  4. 【k8s secret token 删掉自动重建】kubernetes secret 和 serviceaccount

    https://stackoverflow.com/questions/54354243/kubernetes-secret-is-persisting-through-deletes

  5. kubernetes Configmap secret的使用

    kubernetes configmap 核心作用是让配置信息和镜像解耦,pod可以使用configmap的数据生成配置文件.如果后端的pod配置文件要改变时,只需要更改下configmap里面的数据 ...

  6. Kubernetes 存储系统 Storage 介绍:PV,PVC,SC

    要求:先了解数据docker容器中数据卷的挂载等知识 参考网址: https://www.cnblogs.com/sanduzxcvbnm/p/13176938.html https://www.cn ...

  7. Kubernetes 配置管理

    ConfigMap(可变配置管理) 对于应用的可变配置在 Kubernetes 中是通过一个 ConfigMap 资源对象来实现的,我们知道许多应用经常会有从配置文件.命令行参数或者环境变量中读取一些 ...

  8. Secret概述

    Secret 概述 Kubernetes Secret 对象可以用来储存敏感信息,例如:密码.OAuth token.ssh 密钥等.如果不使用 Secret,此类信息可能被放置在 Pod 定义中或者 ...

  9. 在Kubernetes中部署GlusterFS+Heketi

    目录 简介 Gluster-Kubernetes 部署 环境准备 下载相关文件 部署glusterfs 部署heketi server端 配置heketi client 简介 在上一篇<独立部署 ...

随机推荐

  1. Command2

    Ctrl^c 强制终止当前命令执行 chmod {ugoa(user/group/other/all)}{+-=(wrx权限增删改)} 文件或目录 权限 对文件 对目录 r 可查看文件内容 可以列出目 ...

  2. 【递归】P1157组合的输出

    题目相关 题目描述 排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且 r ≤n),我们可以简单地将n个元素理解为自然数1,2,-,n从中任取r个数. 现要求你输出所有组合. ...

  3. mysql修改sql_mode为宽松模式

    sql_mode ANSI TRADITIONAL STRICT_TRANS_TABLES sql_mode为空 最宽松的模式, 即使有错误既不会报错也不会有警告️ ANSI 宽松模式,对插入数据进行 ...

  4. 2020DevOps状态报告——变更管理

    如果你的公司还没有走向平台化,现在仍然可以是很大的飞跃.您仍然可以通过解决公司的变更管理流程来加快软件交付.在本章中,我们将研究我们在公司内部所学的变更管理模式.我们将向您展示什么是有效的,什么是无效 ...

  5. 为linux添加一块新硬盘并分区

    一---如何增加一块硬盘1:虚拟机添加硬盘2:分区3:格式化4:挂载5:设置可以自动挂载 1---设置里面 2---分区命令 fdisk /dev/sdb开始分区m显示命令列表p显示磁盘分区 同fdi ...

  6. MySQL sql命令行操作数据库

    数据库命令行操作 命令行操作数据库, [if exists] 可加可不加, 命令行操作一定要加英文分号 ; 结尾 创建数据库 : create database [if not exists] 数据库 ...

  7. 【Spring】XML方式实现(无参构造 有参构造)和注解方式实现 IoC

    文章目录 Spring IoC的实现方式 XML方式实现 通过无参构造方法来创建 1.编写一个User实体类 2.编写我们的spring文件 3.测试类 UserTest.java 4.测试结果 通过 ...

  8. 【Java】面向对象

    重新搞一波 复习巩固 简单记录 慕课网 imooc Java 零基础入门-Java面向对象-面向对象 都是视频课件里的. 文章目录 面向对象 什么是对象 什么是面向对象 类 什么是对象的属性和方法 类 ...

  9. kubernets之服务资源

    一  服务集群内部或者客户端与pod的通信桥梁   kubernets集群的内部pod访问为啥不能使用传统的IP:PORT的形式? pod是短暂的,它们会随时启动或者关闭,原因可能是pod所在的节点下 ...

  10. ctfhub技能树—web前置技能—http协议—请求方式

    打开靶机环境(每次打开都要30金币,好心疼啊) 题目描述为"请求方式" HTTP的请求方式共有八种 1.OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向 ...