kubernetes 核心技术-配置管理

Secret 存在意义

Secret 解决了密码、 token、 密钥等敏感数据的配置问题, 而不需要把这些敏感数据暴露到镜像或者 Pod Spec 中,而是存到etcd中。 Secret 可以以Volume 或者环境变量的方式使用。如下面是base64编码。
在这里插入图片描述

Secret 有三种类型

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

创建yaml

//secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm

创建secret

加粗样式

以变量的形式挂在到pod容器中

编写yaml

//secret-var.yaml
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: nginx
    image: nginx
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password

创建

在这里插入图片描述

查看

在这里插入图片描述

以volume挂在到容器中

编写yaml

//secret-vol.yaml
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret

创建

在这里插入图片描述

查看

在这里插入图片描述

ConfigMap

作用是存储不加密的数据到etcd中,让pod以变量或者Volume挂在到容器中。一般用于项目中的配置文件。

使用

先删除已经创建的所有pod
在这里插入图片描述

创建配置文件

//redis.properties
redis.host=127.0.0.1
redis.port=6379
redis.password=123456

创建configMap

kubectl create configmap redis-config --from-file=redis.properties

在这里插入图片描述

以volume挂载到pod容器中

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: busybox
      image: busybox
      command: [ "/bin/sh","-c","cat /etc/config/redis.properties" ]
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: redis-config
  restartPolicy: Never

执行

在这里插入图片描述

查看

在这里插入图片描述

以变量形式挂在到pod容器中

(1)先删除历史数据,创建yaml,声明变量信息configmap创建。
在这里插入图片描述

//myconfig.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: myconfig
  namespace: default
data:
  special.level: info
  special.type: hello

创建
在这里插入图片描述

(2)先创建yaml文件,以变量挂载。

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: busybox
      image: busybox
      command: [ "/bin/sh", "-c", "echo $(LEVEL) $(TYPE)" ]
      env:
        - name: LEVEL
          valueFrom:
            configMapKeyRef:
              name: myconfig # 与上面的对应
              key: special.level
        - name: TYPE
          valueFrom:
            configMapKeyRef:
              name: myconfig
              key: special.type
  restartPolicy: Never

查看

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值