Linux高级---configmap和secret

这篇具有很好参考价值的文章主要介绍了Linux高级---configmap和secret。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、ConfigMap

Linux高级---configmap和secret

1、介绍

ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。

ConfigMap 将你的环境配置信息和 容器镜像 解耦,便于应用配置的修改。

注意:

ConfigMap 并不提供保密或者加密功能。 如果你想存储的数据是机密的,请使用 Secret, 或者使用其他第三方工具来保证你的数据的私密性,而不是用 ConfigMap。

使用

你可以使用四种方式来使用 ConfigMap 配置 Pod 中的容器:

  1. 在容器命令和参数内
  2. 容器的环境变量
  3. 在只读卷里面添加一个文件,让应用来读取
  4. 编写代码在 Pod 中运行,使用 Kubernetes API 来读取 ConfigMap

这些不同的方法适用于不同的数据使用方式。 对前三个方法,kubelet 使用 ConfigMap 中的数据在 Pod 中启动容器。第四种方法意味着你必须编写代码才能读取 ConfigMap 和它的数据。

2、创建configmap

[root@master demo]# vi configMap.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
        name: test-config
    data:
        username: zhangsan
        password: yuanke
        username: lisi

[root@master demo]# kubectl create -f configMap.yaml
configmap/test-config created
[root@master demo]# vi configMap.yaml
[root@master demo]# kubectl get configMaps
NAME          DATA   AGE
test-config   2      45s
[root@master demo]# kubectl describe configmaps test-config
Name:         test-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
password:
----
yuanke
username:
----
lisi
Events:  <none>

3、使用configmap

vim test-configMap-env-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-configmap-env-pod
spec:
  containers:
     - name: test-container
       image: radial/busyboxplus
       imagePullPolicy: IfNotPresent
       command: ["/bin/sh","-c","sleep 1000000"]
       envFrom:
       - configMapRef:
            name: test-config
[root@master demo]# kubectl create -f test-configMap-env-pod.yaml
pod/test-configmap-env-pod created
[root@master demo]# kubectl get pod
NAME                                  READY   STATUS      RESTARTS   AGE
test-configmap-env-pod                1/1     Running     0          42s
[root@master demo]# kubectl exec -it test-configmap-env-pod -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=test-configmap-env-pod
TERM=xterm
username=lisi
password=yuanke

4、引入环境变量的另一种方式

apiVersion: v1
kind: Pod
metadata:
  name: test-configmap-env-pod
spec:
  containers:
     - name: test-container
       image: radial/busyboxplus
       imagePullPolicy: IfNotPresent
       command: ["/bin/sh","-c","echo ${MYSQLUSER} ${MYSQLPASSWD};sleep 1000000"]
       env:
       - name: MYSQLUSER
         valueFrom:
            configMapKeyRef:
               name: test-config
               key: username
       - name: MYSQLPASSWD
         valueFrom:
            configMapKeyRef:
               name: test-config
               key: password
[root@master demo]# kubectl create -f test-configMap-env-pod.yaml
pod/test-configmap-env-pod created
[root@master demo]# kubectl get pod
NAME                                  READY   STATUS      RESTARTS   AGE
test-configmap-env-pod                1/1     Running     0          5s
[root@master demo]# kubectl exec -it test-configmap-env-pod -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=test-configmap-env-pod
TERM=xterm
MYSQLUSER=lisi
MYSQLPASSWD=yuanke

二、Secret

1、介绍

Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 使用 Secret 意味着你不需要在应用程序代码中包含机密数据。

由于创建 Secret 可以独立于使用它们的 Pod, 因此在创建、查看和编辑 Pod 的工作流程中暴露 Secret(及其数据)的风险较小。 Kubernetes 和在集群中运行的应用程序也可以对 Secret 采取额外的预防措施, 例如避免将机密数据写入非易失性存储。

Secret 类似于 ConfigMap 但专门用于保存机密数据。

注意:

默认情况下,Kubernetes Secret 未加密地存储在 API 服务器的底层数据存储(etcd)中。 任何拥有 API 访问权限的人都可以检索或修改 Secret,任何有权访问 etcd 的人也可以。 此外,任何有权限在命名空间中创建 Pod 的人都可以使用该访问权限读取该命名空间中的任何 Secret; 这包括间接访问,例如创建 Deployment 的能力。

为了安全地使用 Secret,请至少执行以下步骤:

  1. 为 Secret 启用静态加密。
  2. 以最小特权访问 Secret 并启用或配置 RBAC 规则。
  3. 限制 Secret 对特定容器的访问。
  4. 考虑使用外部 Secret 存储驱动。

Secret 的使用

Pod 可以用三种方式之一来使用 Secret:

  • 作为挂载到一个或多个容器上的卷 中的文件。
  • 作为容器的环境变量。
  • 由 kubelet 在为 Pod 拉取镜像时使用。

2、创建secret

您也可以先以 json 或 yaml 格式在文件中创建一个 secret 对象,然后创建该对象。

每一项必须是 base64 编码:

$ echo -n "admin" | base64
YWRtaW4=
$ echo -n "1f2d1e2e67df" | base64
MWYyZDFlMmU2N2Rm

解密:

echo 'YWRtaW4=' | base64 --decode
返回admin

vim secret-env.yaml

apiVersion: v1
kind: Secret
metadata:
  name: mysecret-env
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm
[root@master demo]# kubectl create -f secret-env.yaml
secret/mysecret-env created
[root@master demo]# kubectl get secrets
NAME                  TYPE                                  DATA   AGE
default-token-mp2h9   kubernetes.io/service-account-token   3      21d
mysecret-env          Opaque                                2      10s
tls-secret            kubernetes.io/tls                     2      23h

3、使用secret

vim secret-pod-env1.yaml

apiVersion: v1
kind: Pod
metadata:
  name: envfrom-secret
spec:
  containers:
     - name: test-nginx
       image: nginx
       envFrom:
       - secretRef:
            name: mysecret-env
[root@master secret]# kubectl apply -f secret-pod-env1.yaml 
pod/envfrom-secret created
[root@master secret]# kubectl get pod 
NAME                                READY   STATUS    RESTARTS   AGE
envfrom-secret                      1/1     Running   0          16s
[root@master secret]# kubectl exec -it envfrom-secret -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=envfrom-secret
TERM=xterm
password=1f2d1e2e67df
username=admin

4、引入环境变量的另一种方式

vim secret-pod-env2.yaml文章来源地址https://www.toymoban.com/news/detail-461830.html

apiVersion: v1
kind: Pod
metadata:
  name: test-secret-env-pod
spec:
  containers:
     - name: test-container
       image: radial/busyboxplus
       imagePullPolicy: IfNotPresent
       command: ["/bin/sh","-c","echo ${MYSQLUSER} ${MYSQLPASSWD};sleep 1000000"]
       env:
       - name: MYSQLUSER
         valueFrom:
            secretKeyRef:
               name: mysecret-env
               key: username
       - name: MYSQLPASSWD
         valueFrom:
            secretKeyRef:
               name: mysecret-env
               key: password
[root@master secret]# kubectl apply -f secret-pod-env2.yaml 
pod/test-secret-env-pod created
[root@master secret]# kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
test-secret-env-pod                 1/1     Running   0          5s
[root@master secret]# kubectl exec -it test-secret-env-pod -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=test-secret-env-pod
TERM=xterm
MYSQLUSER=admin
MYSQLPASSWD=1f2d1e2e67df

到了这里,关于Linux高级---configmap和secret的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8S初级入门系列之四-Namespace/ConfigMap/Secret

         本章节我们继续学习Namespace、ConfigMap、Secret基础概念,了解他们基本用法和操作。NameSpace为命名空间,在同一集群中试下资源隔离。ConfigMap通过key-value的方式实现明文配置数据的保存,Secret与ConfigMap类似,不过是采用密文方式保存。      K8S集群可以通过Namespace创建多

    2024年02月15日
    浏览(50)
  • 轻松掌握K8S使用kubectl操作配置文件挂载ConfigMap和密钥Secret知识点05

    1、挂载应用配置文件配置集ConfigMap 当有许多应用如redis、mysql,希望将它的配置文件挂载出去,以便随时修改,可以用ConfigMap配置集 具体用法查看使用命令行操作里的 3、ConfigMap配置集实战 2、挂载应用配置文件的敏感信息Secret Secret 对象类型用来保存敏感信息,例如使用ya

    2024年02月16日
    浏览(90)
  • kubernetes存储-configmap

    目录 一、字面值创建 二、通过文件创建 三、通过目录创建 四、通过yaml文件创建 五、使用configmap设置环境变量 六、使用conigmap设置命令行参数 七、通过数据卷使用configmap 八、configmap热更新       在Kubernetes中,ConfigMap是一种存储配置数据的对象。它允许将配置数据分离出来

    2024年02月06日
    浏览(41)
  • Kubernetes配置管理 ConfigMap

    kubernetes集群可以使用ConfigMap来实现对容器中应用的配置管理 。 可以把ConfigMap看作是一个挂载到pod中的存储卷 1.2.1 在命令行指定参数创建 通过直接在命令行中指定configmap参数创建,即 --from-literal=key=value ; 1.2.2 在命令行通过多个文件创建 通过指定文件创建,即将一个配置文

    2024年02月09日
    浏览(37)
  • 8、Kubernetes核心技术 - ConfigMap

    目录 一、ConfigMap概述 二、ConfigMap创建 2.1、命令行方式创建 2.2、yaml 文件方式创建 三、ConfigMap查询 四、ConfigMap更新 4.1、kubectl edit方式 4.2、kubectl apply方式 五、ConfigMap使用 5.1、spec.env 【环境变量】 5.2、spec.envFrom 【环境变量】 5.3、指定 items【卷挂载方式】 5.4、不指定 items【

    2024年02月14日
    浏览(87)
  • 【云原生】Kubernetes之ConfigMap

    ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件 ConfigMap 将你的环境配置信息和 容器镜像 解耦,便于应用配置的修改 使用 ConfigMap 来将你的配置数据和应用程序代码分开 比如,假设

    2024年02月15日
    浏览(51)
  • 【kubernetes系列】Kubernetes之configMap

    工作中,在几乎所有的应用开发中,都会涉及到配置文件的变更,比如服务需要配置MySQL、Redis等相关信息。而业务上线一般要经历开发环境、测试环境、预发布环境只到最终的线上环境,每一个环境一般都需要其独立的配置。如果我们不能很好的管理这些配置文件,运维工作

    2024年02月12日
    浏览(43)
  • 【云原生|Kubernetes】11-ConfigMap解析

    ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。 ConfigMap 将你的环境配置信息和 容器镜像 解耦,便于应用配置的修改。 ConfigMap 并不提供保密或者加密功能。 如果你想存储的数据是

    2024年02月12日
    浏览(38)
  • k8s概念-ConfigMap

    回到目录 一般用于去存储 Pod 中应用所需的一些配置信息,或者环境变量,将配置于 Pod 分开,避免应为修改配置导致还需要重新构建 镜像与容器。 1 创建ConfigMap 1.1 将指定目录下所有文件加载到配置文件中 1.2 指定一个或多个文件和key 1.3 命令上手动添加key-value 2 configma

    2024年02月14日
    浏览(36)
  • k8s configmap 详解

    ConfigMap是k8s的一个 配置管理组件 ,可以将配置以key-value的形式传递,通常用来 保存不需要加密的配置信息 ,加密信息则需用到Secret,主要用来应对以下场景: 生成为容器内的环境变量; 设置容器启动命令的启动参数(需设置为环境变量) 以Volume的形式挂载为容器内部的文

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包