Kubernetes从零到精通(13-Configmap、Secret)

目录

一、简介 

二、ConfigMap

ConfigMap简介

ConfigMap创建示例

ConfigMap使用示例

三、Secret

Secret简介 

 Secret创建示例

 Secret使用示例

Secret类型 

四、ConfigMap与Secret的区别 


一、简介 

       在Kubernetes中,ConfigMap和Secret是两种用于配置和管理应用程序数据的资源类型。它们的主要目的是将配置数据(例如应用的配置文件)或敏感信息(例如密码、密钥等)与应用程序代码分离。这样可以让应用程序的配置更灵活,同时保证安全性,特别是对于敏感数据。

二、ConfigMap

ConfigMap简介

        ConfigMap是一种用于存储非机密的键值对数据的对象,通常用于配置文件、环境变量、命令行参数等。它允许你将配置数据与容器化的应用程序分离,从而让应用在不同的环境中具有更好的灵活性。功能如下:

存储配置信息:你可以将环境相关的配置(例如数据库URL、服务端口等)存储在ConfigMap中,部署应用时将这些配置注入到Pod中。

存储非敏感信息:它用于存储非机密的配置信息,而敏感数据则使用Secret。

        主要的使用方法如下:

通过环境变量

挂载到文件系统

ConfigMap创建示例

        可以通过命令或YAML文件创建ConfigMap。

        通过命令创建ConfigMap:

# 从文件创建ConfigMap
kubectl create configmap my-config --from-file=config-file.conf

# 从多个键值对创建ConfigMap
kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2

        通过YAML文件创建ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  DATABASE_URL: "postgresql://user:password@localhost:5432/db"
  MAX_CONNECTIONS: "100"

ConfigMap使用示例

         ConfigMap可以通过以下方式使用:

        1.作为环境变量:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    env:
    - name: DATABASE_URL
      valueFrom:           #作为环境变量引用
        configMapKeyRef:
          name: my-config
          key: DATABASE_URL

        2.挂载为文件:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    volumeMounts:      #挂载为文件
    - name: config-volume
      mountPath: "/etc/config"
  volumes:     
  - name: config-volume
    configMap:
      name: my-config

三、Secret

Secret简介 

        Secret是一种用于存储和管理敏感信息的Kubernetes对象,例如密码、OAuth令牌、SSH密钥等。与ConfigMap类似,Secret也是存储键值对数据的对象,但它的目标是处理机密数据。Kubernetes中的Secret数据是以base64编码存储的,并可以通过加密增强安全性。功能如下:

存储敏感信息:用于存储密码、访问令牌、密钥等。
更安全的存储方式:Secret可以加密存储,并且与Pod分开管理,避免在配置中直接暴露敏感信息。
使用限制:通过对Secret的访问权限进行控制,避免敏感数据的泄露。

 Secret创建示例

        可以通过命令或YAML文件创建Secret。

        通过命令创建Secret:

# 从字面值创建Secret
kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=secretpassword

# 从文件创建Secret
kubectl create secret generic my-secret --from-file=./username.txt --from-file=./password.txt

        通过YAML文件创建Secret:

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  username: YWRtaW4=       # base64编码的 "admin"
  password: c2VjcmV0cGFzc3dvcmQ=  # base64编码的 "secretpassword"

        注意:Secret中的数据是以base64编码存储的。可以使用echo -n 'your_value' | base64来手动编码数据。 

 Secret使用示例

        Secret可以通过以下方式使用:

        1. 作为环境变量:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    env:
    - name: USERNAME
      valueFrom:
        secretKeyRef:
          name: my-secret
          key: username
    - name: PASSWORD
      valueFrom:
        secretKeyRef:
          name: my-secret
          key: password

        2. 挂载为文件:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/secret"
  volumes:
  - name: secret-volume
    secret:
      secretName: my-secret

Secret类型 

        Kubernetes支持不同类型的Secret,常见的类型包括:

Opaque:默认类型,用户可以存储任意的键值对。

kubernetes.io/service-account-token:用于存储服务账户的令牌。Kubernetes会自动创建并更新这类Secret,开发者通常不需要手动管理。

tls:用于存储TLS证书和密钥。

apiVersion: v1
kind: Secret
metadata:
  name: tls-secret
type: kubernetes.io/tls
data:
  tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCg==  # base64编码的证书内容
  tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkgLS0tLS0K...  # base64编码的私钥内容

ssh-auth等其他类型。

四、ConfigMap与Secret的区别 

特性ConfigMapSecret
用途存储非敏感的配置信息,如环境变量、配置文件等存储敏感信息,如密码、密钥、访问令牌等
数据格式存储纯文本数据以Base64编码的方式存储数据,通常用于敏感数据
安全性数据不加密,可直接查看数据以Base64编码存储,可使用加密机制增强安全性
加密支持不支持加密支持通过Kubernetes中的密钥管理服务(KMS)加密
创建方式可以通过文件或键值对创建可以通过文件或键值对创建,支持多种类型
挂载方式可以挂载为环境变量、文件等可以挂载为环境变量、文件等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炸裂狸花猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值