Kubernetes的Secret对象的使用

Secret可以把想要访问的加密数据,存放到Etcd中,然后Pod可以通过的Volume的方式,访问到Secret保存的信息 ,每当数据修改的时候,Pod挂载的Secret文件也会被修改,特别适合用来存放账户密码

一、创建Secret对象

1. 通过文件创建

生成两个文件,分别是username.txt和password.txt

echo "chenqionghe" > ./username.txt
echo "111111" > ./password.txt

创建

kubectl create secret generic user --from-file=./username.txt
kubectl create secret generic pass --from-file=./password.txt

2. 通过yaml创建

注意:值必须是base64转码

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  user:  Y2hlbnFpb25naGUK
  pass: MTExMTExCg==

创建

kubectl apply -f mysecret.yaml

二、获取secret对象

[email protected]:/home/ubuntu/project-volume# kubectl get secrets
NAME TYPE DATA AGE
default-token-gqfrx kubernetes.io/service-account-token 3 20d
mysecret Opaque 2 1m
pass Opaque 1 6m
user Opaque 1 6m

三、通过pod使用secret示例

这里指定了volume是projected类型,引用的是secret的user和pass,挂载路径为/projected-volume

apiVersion: v1
kind: Pod
metadata:
  name: test-projected-volume
spec:
  containers:
  - name: test-secret-volume
    image: busybox
    args:
    - sleep
    - "86400"
    volumeMounts:
    - name: mysql-cred
      mountPath: "/projected-volume"
      readOnly: true
  volumes:
  - name: mysql-cred
    projected:
      sources:
      - secret:
          name: user
      - secret:
          name: pass

执行创建

kubectl apply -f test-projected-volume.yaml

查看pod已经创建出来

[email protected]:/home/ubuntu/project-volume# kubectl get pod
NAME READY STATUS RESTARTS AGE
test-projected-volume 1/1 Running 0 5m

再进入pod内查看,看到文件已经存在,并且内容和设置的一样

[email protected]:/home/ubuntu/project-volume# kubectl exec -it test-projected-volume -- /bin/sh
/ # ls /projected-volume/
password.txt username.txt
/ # cat /projected-volume/username.txt
chenqionghe

然后我们修改一下username的secret文件,将chenqionghe修改为cqh(对应的base编码为Y3FoCg==)

kubectl edit secret user

修改内容如下

apiVersion: v1
data:
  username.txt: Y3FoCg==
kind: Secret
metadata:
  creationTimestamp: 2019-09-27T09:14:00Z
  name: user
  namespace: default
  resourceVersion: "2108808"
  selfLink: /api/v1/namespaces/default/secrets/user
  uid: 24566f8f-e107-11e9-8c22-f242c645cfec
type: Opaque

再次查看pod中挂载的文件,已经发生变化

[email protected]:/home/ubuntu# kubectl exec -it test-projected-volume -- cat /projected-volume/username.txt
cqh

原文地址:https://www.cnblogs.com/chenqionghe/p/11601049.html

时间: 2024-10-10 19:01:09

Kubernetes的Secret对象的使用的相关文章

kubernetes之secret

Secret解决了密码.token.密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中.Secret可以以Volume或者环境变量的方式使用. Secret类型: Opaque:base64编码格式的Secret,用来存储密码.密钥等:但数据也通过base64 –decode解码得到原始数据,所有加密性很弱. kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证信息. kubernetes.io/servic

kubernetes的 secret 存储配置

kubernetes的 secret 存储配置 标签(空格分隔): kubernetes系列 一: kubernetes的 secret 存储配置 一: kubernetes的 secret 存储配置 1.1 Secret 存在意义 Secret 解决了密码.token.密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec 中.Secret 可以以 Volume 或者环境变量的方式使用 Secret 有三种类型: 1. Service Account :用来访问 Ku

Kubernetes的Secret

Secret介绍Secret解决了密码.token.密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中.Secret可以以Volume或者环境变量的方式使用. Secret类型目前Secret的类型有3种: (1)Opaque(default):任意字符串,base64编码格式的Secret,用来存储密码.密钥等:(2)kubernetes.io/service-account-token:作用于ServiceAccount,就是kubernetes的Service

Kubernetes Ingress API 对象

Ingress 它是什么 如何暴露您Kubernetes集群内部 "应用服务" 并向外(互联网)提供访问服务!!! 通常情况下集群内部Service和Pod仅可在集群内部网络中通过IP地址访问.所有到达边界路由器的流量或被丢弃或被转发到其它地方.(Ingress 的存在即是完成以上之目的) 不直接使用Ingress资源,也可有多种方法暴露Service. 使用 Service.Type=LoadBalancer 使用 Service.Type=NodePort 有几个是废弃的 未定义I

Kubernetes的Deployment对象使用

一.什么是Deployment对象 明明ReplicaSet已经可以控制pod的数量了,为什么还需要Deployment? 简单的说,Deployment控制ReplicaSet的多个版本,ReplicaSet控制Pod个数 Deploymen实际上一个两层控制器,遵循一种滚动更新的方式来实升级现有的容器,这个能力的实现,依赖的就是ReplicaSet这个对象 当我们修改了Deployment对象后,Deployment控制器会使用修改后的模板,创建一个新的ReplicaSet对象,这时候有两个

Kubernetes Secret

Secret介绍 参考文档 Secret的主要作用是保管私密数据,比如密码,OAuth Tokens,SSH Key等信息.这些私密信息放在Secret对象中比直接放在Pod或Docker Image中更加安全,也更方便管理. Secret一旦被创建,则可以通过以下三种方式来使用: 在创建Pod时,通过为pod指定Service Account来自动使用该Secret,主要用于API Server鉴权的过程 通过挂载Secret到Pod来使用它 Docker镜像下载时使用,通过指定Pod的spc

Kubernetes对象

Kubernetes对象 在之前的文章已经讲到了很多Kubernets对象,包括pod,service,deployment等等.Kubernets对象是一种持久化,表示集群状态的实体.它是一种声明式的意图的记录,一般使用yaml文件描述对象,它使用Kubernetes对象来表示集群的状态,通过API/kubectl管理Kubernetes对象. name和uid 在Kubernetes对象模型中,使用了name和uid作为对象的唯一标识,其中name在同一种对象中是唯一的,在不同类型对象可以是

Kubernetes Harbor等资源--secret和ServiceAccount配置

Kubernetes Harbor等资源--secret和ServiceAccount配置 ![]来啦,老弟########## 用途 secret对象类型主要目的是保存和处理敏感信息/私密数据.将这些信息放在secret对象中比 直接放在pod或docker image中更安全,也更方便使用.在一个已经创建好的secrets对象有两种方式被pod对象使用,其一,在container中的volume对象里以file的形式被使用,其二,在pull images时被kubelet使用. ######

Kubernetes中的Secret配置

  Secret 概览 Secret 是一种包含少量敏感信息例如密码.token 或 key 的对象.这样的信息可能会被放在 Pod spec 中或者镜像中:将其放在一个 secret 对象中可以更好地控制它的用途,并降低意外暴露的风险. 用户可以创建 secret,同时系统也创建了一些 secret. 要使用 secret,pod 需要引用 secret.Pod 可以用两种方式使用 secret:作为 volume中的文件被挂载到 pod 中的一个或者多个容器里,或者当 kubelet 为 p