k8s-secret与configmap

Secret

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

创建方式

使用键值对

kubectl create secret generic mysecret --from-literal=username=test --from-literal=password=123456
secret/mysecret created

##generic         从本地 file, directory 或者 literal value 创建一个 secret
##--from-literal 对应一个键值对 。 

查看

 kubectl get secrets 
NAME                  TYPE                                  DATA   AGE
default-token-hvq4p   kubernetes.io/service-account-token   3      18d
mysecret              Opaque                                2      69s

查看详细

kubectl describe secrets mysecret 
Name:         mysecret
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
password:  6 bytes
username:  4 bytes

文件方式

mkdir secrets
cd secrets/
echo -n test>username
echo -n 123456 > password

kubectl create secret generic mysecret1 --from-file=username --from-file=password 
secret/mysecret1 created

##--from-file 指定文件

查看

kubectl describe secrets mysecret1
Name:         mysecret1
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
password:  6 bytes
username:  4 bytes

yaml文件

kubectl create secret generic mysecret3 --from-literal=username=test --from-literal=password=123456 --dry-run -o yaml > mysecret.yml

cat mysecret.yml 
apiVersion: v1
data:
  password: YWJj
  username: dGVzdA==
kind: Secret
metadata:
  creationTimestamp: null
  name: mysecret3

运行

Pod通过volume的方式使用secret

vim mypod.yml


apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: busybox
    args:
    - /bin/sh
    - -c
    - sleep 300000000
    volumeMounts:
    - mountPath: /etc/aa
      name: aa
      readOnly: true
  volumes:				##定义volume的名字为aa   使用下面指定的secret
  - name: aa
    secret:
      secretName: mysecret3

运行

kubectl apply -f mypod.yml
pod/mypod created

进入pod查看

kubectl exec -it mypod sh

/ # cd /etc/aa

cat username 
test

cat password 
123456

动态更新

修改mysecret文件

echo    -n   abc |base64
YWJj

vim mysecret.yml

apiVersion: v1
data:
  password: YWJj
  username: dGVzdA==
kind: Secret
metadata:
  creationTimestamp: null
  name: mysecret3

再次运行

kubectl apply -f mysecret.yml 
secret/mysecret3 configured

进入pod查看

kubectl exec -it mypod sh

/ # cd /etc/aa/

cat password 
abc

Pod通过环境变量的方式使用secret

vim msec.yml

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: busybox
    args:
    - /bin/sh
    - -c
    - sleep 30000000000
    env:
    - name: myuser
      valueFrom:
        secretKeyRef:
          name: mysecret3
          key: username
    - name: mypas
      valueFrom:
        secretKeyRef:
          name: mysecret3
          key: password

运行

kubectl apply -f msec.yml 
pod/mypod created

进入pod查看

kubectl exec -it mypod sh

echo $myuser
test

echo $mypas
abc

环境变量的方式不支持动态更新,但是读取很方便

Configmap

Secret主要保存的是一些密码 等加密的信息,像一些配置文件则可以用configmap

创建方式

创建方式与secret很像

键值对

kubectl create configmap myconmap --from-literal=test=1 --from-literal=test1=2

文件

echo -n 1 > test
echo -n 2 > test1

kubectl create configmap myconmap1 --from-file=test --from-file=test1

cat <<EOF> envp.txt
test=1
test1=2
EOF
kubectl create configmap myconmap2 --from-env-file=envp.txt

yaml

kubectl create configmap myconmap2 --from-env-file=envp.txt  --dry-run -o yaml > myconmap.yml


cat myconmap.yml

apiVersion: v1
data:
  test: "1"
  test1: "2"
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: myconmap2

运行

kubectl apply -f myconmap.yml	

查看

kubectl get configmaps
NAME        DATA   AGE
myconmap    2      2d
myconmap1   2      47h
myconmap2   2      47h

Pod通过volume使用configmap

vim myconf.yml


apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: busybox
    args:
    - /bin/sh
    - -c
    - sleep 300000000000
    volumeMounts:
    - mountPath: /etc/aa
      name: aa
      readOnly: true
  volumes:
    - name: aa
      configMap:
        name: myconmap2

运行

kubectl apply -f myconf.yml 
pod/mypod created

进入pod查看

kubectl exec -it mypod sh

/ # cd /etc/

cat test
1

cat test1
2

Pod通过环境变量使用configmap

vim myconf1.yml 

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: busybox
    args:
    - /bin/sh
    - -c
    - sleep 300000000000
    env:
    - name: myuser
      valueFrom:
        configMapKeyRef:
          name: myconmap2
          key: test
    - name: mypas
      valueFrom:
        configMapKeyRef:
          name: myconmap2
          key: test1

运行

kubectl apply -f myconf1.yml 
pod/mypod created

进入pod查看

kubectl exec -it mypod sh

/ # echo $myuser
1

echo $mypas
2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值