博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kubernetes视频教程笔记 (22)-存储-Secret
阅读量:2037 次
发布时间:2019-04-28

本文共 2302 字,大约阅读时间需要 7 分钟。

 

一、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 的认证信息

 

二、Service Account

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

$ kubectl run nginx --image nginxdeployment "nginx" created$ kubectl get podsNAME READY STATUS RESTARTS AGEnginx-3137573019-md1u2 1/1 Running 0 13s$ kubectl exec nginx-3137573019-md1u2 ls /run/secrets/kubernetes.io/serviceaccountca.crtnamespacetoken

 

 

 

三、Opaque Secret

Ⅰ、创建说明

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

$ echo -n "admin" | base64YWRtaW4=$ echo -n "1f2d1e2e67df" | base64MWYyZDFlMmU2N2Rm

 

 

 

 

 

 

 

secrets.yml

apiVersion: v1kind: Secretmetadata: name: mysecrettype: Opaquedata: password: MWYyZDFlMmU2N2Rm username: YWRtaW4=

 

 

 

 

 

 

 

 

Ⅱ、使用方式

1、将 Secret 挂载到 Volume 中

apiVersion: v1kind: Podmetadata: labels:  name: seret-test name: seret-testspec: 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/v1beta1kind: Deploymentmetadata: name: pod-deploymentspec: 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

 

 

 

 

 

 

 

四、kubernetes.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: v1kind: Podmetadata: name: foospec: containers:  - name: foo    image: roc/awangyang:v1 imagePullSecrets:  - name: myregistrykey

 

 

 

重启

 

 

 

 

 

 

内容来自

转载地址:http://mlkof.baihongyu.com/

你可能感兴趣的文章
mac下设置环境变量以及使用CVS命令行
查看>>
mac下iOS项目使用cvs做版本控制
查看>>
大陆台湾计算机术语比对
查看>>
APNS消息推送完整讲解
查看>>
iOS网络通信http之NSURLConnection
查看>>
iOS获取当前连接wifi名
查看>>
灰常给力的大数据地图展示库
查看>>
总结iOS开发当中一些特别注意的问题
查看>>
iPhone程序开发 KVO/KVC实现机理分析
查看>>
CoreData中存任意类型的数据
查看>>
iOS 多线程 锁 互斥 同步
查看>>
UIDevice的一些实用的Category
查看>>
iOS使用NSURLConnection发送同步和异步HTTP Request
查看>>
键值编码
查看>>
iGson
查看>>
Android中layout过程详解 (结合Android 4.0.4 最新源码)
查看>>
iOS已发布应用中对异常信息捕获和处理
查看>>
dispatch_once创建单例模式
查看>>
ios程序中捕获异常退出信息,并提交服务器
查看>>
45本免费的JavaScript书籍资源
查看>>