第十二章 存储之 Secret

Posted liuqizhong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十二章 存储之 Secret相关的知识,希望对你有一定的参考价值。

1Secret 存在意义

Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec中。Secret 可以以 Volume 或者环境变量的方式使用

2Secret 有三种类型

① Service Account:用来访问 Kubernetes API,由 Kubernetes 自动创建,并且会自动挂载到 Pod /run/secrets/kubernetes.io/serviceaccount目录中

② Opaquebase64编码格式的Secret,用来存储密码、密钥等

③ kubernetes.io/dockerconfigjson:用来存储私有 docker registry 的认证信息

3Service Account

Service Account 用来访问 Kubernetes API,由 Kubernetes 自动创建,并且会自动挂载到 Pod/run/secrets/kubernetes.io/serviceaccount目录中

 技术图片

4Opaque Secret

Ⅰ、创建说明

Opaque 类型的数据是一个 map 类型,要求 value base64 编码格式:

$ echo-n"admin" | base64

YWRtaW4=

 

$ echo-n"1f2d1e2e67df" | base64

MWYyZDFlMmU2N2Rm

 

解密

 技术图片

secrets.yml

 

apiVersion: v1

kind: Secret

metadata:

name: mysecret

type: Opaque

data:

 password: MWYyZDFlMmU2N2Rm

 username: YWRtaW4=

 

II、使用方式

1)、将 Secret 挂载到 Volume

apiVersion: v1

kind: Pod

metadata:

 labels:

 name: seret-test

 name: seret-test

spec:

 volumes:

 - name: secrets

 secret:

 secretName: mysecret

containers:

- image: hub.atguigu.com/library/myapp:v1

 name: db

 volumeMounts:

 - name: secrets

 mountPath: "

readOnly: true

 

2)、将 Secret 导出到环境变量中

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

 name: pod-deployment

spec:

 replicas: 2

 template:

 metadata:

 labels:

 app: pod-deployment

spec:

 containers:

 - name: pod-1

image: hub.atguigu.com/library/myapp:v1

ports:

- containerPort: 80

 env:

 - name: TEST_USER

 valueFrom:

 secretKeyRef:

 name: mysecret

 key: username

- name: TEST_PASSWORD

 valueFrom:

 secretKeyRef:

 name: mysecret

key: password 

5kubernetes.io/dockerconfigjson

使用 Kuberctl 创建 docker registry 认证的 secret

$ kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAILsecret "myregistrykey" created.

 

在创建 Pod 的时候,通过imagePullSecrets来引用刚创建的 `myregistrykey

apiVersion: v1

kind: Pod

metadata:

name: foo

spec:

 containers:

 - name: foo

image: roc/awangyang:v1

 imagePullSecrets:

- name: myregistrykey

以上是关于第十二章 存储之 Secret的主要内容,如果未能解决你的问题,请参考以下文章

操作系统概念笔记——第十二章:大容量存储器结构的结构

第十二章-语义分析之语法糖去除

构造之法第十十二章

《构建之法》第十十二章学习总结

进击的Python第十二章:mysql介绍与简单操作,sqlachemy介绍与简单应用

第十二章 视频播放器开发之控制播放