Linux高级---configmap和secret

news2024/10/6 18:30:12

文章目录

    • 一、ConfigMap
      • 1、介绍
      • 2、创建configmap
      • 3、使用configmap
      • 4、引入环境变量的另一种方式
    • 二、Secret
      • 1、介绍
      • 2、创建secret
      • 3、使用secret
      • 4、引入环境变量的另一种方式

一、ConfigMap

在这里插入图片描述

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/575117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python指定日期处理方法,从入门到实践

Python指定日期处理方法&#xff0c;从入门到实践 Python是一种高级编程语言&#xff0c;因其简单易学和功能强大而深受开发者喜爱。在日常工作中&#xff0c;我们经常需要对日期进行处理和计算。Python提供了丰富的日期和时间处理库&#xff0c;因此我们可以轻松地进行日期处…

el-table分页保留勾选的数据

1、目标效果 代码全部写在下方App.vue中&#xff0c;复制粘贴即可运行 目前选中了5条数据 点击下方切换分页&#xff0c;选中的数据消失了 2、原理 &#xff08;1&#xff09;el-table复选框&#xff0c;用一个变量数组selectedRow:[ ] 监听选择了哪些数据 <el-table-colu…

【Python】Requests库基本使用

知识目录 一、写在前面✨二、Requests库三、接口调用四、总结撒花&#x1f60a; 一、写在前面✨ 大家好&#xff01;我是初心&#xff0c;希望我们一路走来能坚守初心&#xff01; 今天跟大家分享的文章是 Python中Requests库在爬虫和自动化中的使用 &#xff0c;希望能帮助到…

这10种神级性能优化手段

引言&#xff1a;取与舍 软件设计开发某种意义上是“取”与“舍”的艺术。 关于性能方面&#xff0c;就像建筑设计成抗震9度需要额外的成本一样&#xff0c;高性能软件系统也意味着更高的实现成本&#xff0c;有时候与其他质量属性甚至会冲突&#xff0c;比如安全性、可扩展性…

Scikit-LLM:将大语言模型整合进Sklearn的工作流

我们以前介绍过Pandas和ChaGPT整合&#xff0c;这样可以不了解Pandas的情况下对DataFrame进行操作。现在又有人开源了Scikit-LLM&#xff0c;它结合了强大的语言模型&#xff0c;如ChatGPT和scikit-learn。但这个并不是让我们自动化scikit-learn&#xff0c;而是将scikit-learn…

数据库系统的结构

数据库模式基本概念 1.型与值 型&#xff1a;对某一类数据的结构和属性的说明。值&#xff1a;型的具体赋值。 2.模式和实例 模式&#xff1a; 数据库中全体数据的逻辑结构和特征的描述。简单来说就是数据的定义和描述。模式是元数据&#xff0c;数据是变化的&#xff0c;模…

chatgpt赋能python:用Python扫码——提高SEO的新方法

用Python扫码——提高SEO的新方法 作为一种快捷方便的支付方式&#xff0c;扫码支付已经得到广泛的应用。而越来越多的企业也开始将其应用于营销推广中。但除了付款和兑换优惠券之外&#xff0c;扫码还有一个很实用的用途——SEO。 什么是扫码SEO&#xff1f; 扫码SEO是一种…

全面理解链表数据结构:各种节点操作、做题技巧,易错点分析与题目清单(C++代码示例,不断更新)

什么是链表 链表是一种线性数据结构&#xff0c;它包含的元素并不是物理上连续的&#xff0c;而是通过指针进行连接。链表中的每个元素通常由一个节点表示&#xff0c;每个节点包含一个数据元素和一个或多个链接&#xff08;指针&#xff09;。 链表的主要类型包括&#xff1a;…

全志V3S嵌入式驱动开发(系统image创建和烧入)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面几篇文章&#xff0c;我们说到了怎么下载编译器、怎么编译uboot、怎么编译kernel和根文件系统。这样一步一步下来&#xff0c;虽然繁琐&#x…

chatgpt赋能python:Python按列排序详解

Python按列排序详解 在数据处理中&#xff0c;按列排序是一个非常常见的操作。Python作为一门流行的编程语言&#xff0c;针对按列排序操作也提供了丰富的工具和库。本篇文章将介绍Python按列排序的方法和实例&#xff0c;并为读者提供一些有用的技巧。 为什么要按列排序&…

chatgpt赋能python:Python扫描二维码:优化SEO的有效方法

Python扫描二维码&#xff1a;优化SEO的有效方法 在当今数字化时代&#xff0c;二维码是一种无处不在的技术&#xff0c;用于链接到网站&#xff0c;推广产品等等。然而&#xff0c;很少有人意识到&#xff0c;优化二维码可以提高网站的搜索引擎优化&#xff08;SEO&#xff0…

MySQL运维篇(一)

一.日志 1.1 错误日志 错误日志是 MySQL 中最重要的日志之一&#xff0c;它记录了当 mysqld 启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时&#xff0c;建议首先查看此日志。 错误日志是默认开启的…

GaussDB内存过载分析

问题现象 数据库进程内存占比较高 长时间占比较高 观察监控平台内存占用的变化曲线&#xff0c;无论当前数据库是否有业务在运行&#xff0c;数据库进程内存占总机器内存的比例长时间处于较高状态&#xff0c;且不下降。执行作业期间占比较高 数据库进程在没有业务执行时&…

chatgpt赋能python:Python文件操作-查找指定内容

Python 文件操作 - 查找指定内容 在日常开发和数据处理中&#xff0c;我们经常需要查找文件中指定的内容。Python 提供了简单而强大的文件操作函数和模块&#xff0c;使得文件查找操作变得简单和高效。本文将介绍如何使用 Python 查找指定内容的方法。 搜索整个文件 最基本的…

2023年最好的10+个WordPress表格插件

WordPress表格插件可让您简洁明了地呈现数据。借助交互式表格&#xff0c;访问者可以根据自己的喜好轻松查看、过滤和排序您的数据&#xff0c;从而提升您网站的用户体验。 但是&#xff0c;询问任何尝试从头开始构建表格的站点所有者&#xff0c;他们会报告说体验可能是一个挑…

Rust每日一练(Leetday0012) 首末位置、插入位置、有效数独

目录 34. 查找元素的首末位置 Find-first-and-last-position-of-element-in-sorted-array &#x1f31f;&#x1f31f; 35. 搜索插入位置 Search Insert Position &#x1f31f; 36. 有效的数独 Valid Sudoku &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏…

【Python】csv与json,哪个才是你的数据之选?

知识目录 一、写在前面✨二、读写csv文件2.1 什么是CSV文件2.2 csv文件的优点2.3 应用 三、读取json文件3.1 json介绍3.2 例题 四、总结撒花&#x1f60a; 一、写在前面✨ 大家好&#xff01;我是初心&#xff0c;希望我们一路走来能坚守初心&#xff01; 今天跟大家分享的文…

C语言函数大全-- y 开头的函数

C语言函数大全 y 开头的函数1. yperror1.1 函数说明1.2 演示示例 2. yp_match2.1 函数说明2.2 演示示例 3. y0【零阶第二类贝塞尔函数】3.1 函数说明3.2 演示示例3.3 运行结果 4. y1【一阶第二类贝塞尔函数】4.1 函数说明4.2 演示示例4.3 运行结果 5. yn【n 阶第二类贝塞尔函数…

chatgpt赋能python:Python捕获多个异常:提高程序的健壮性

Python 捕获多个异常&#xff1a;提高程序的健壮性 在编写Python程序时&#xff0c;我们经常会遇到各种异常情况。如果没有适当的异常处理机制&#xff0c;程序就会因为异常而崩溃。为了提高程序的健壮性&#xff0c;我们需要对可能出现的异常情况进行处理。在Python中&#x…

Linux及其常用命令

学习 遇见狂神说 为什么Linux这么重要&#xff1f;一些目录的常识Linux常用命令目录管理文件属性文件内容链接Vim编辑器账号管理用户组管理 为什么Linux这么重要&#xff1f; 因为在企业级开发中&#xff0c;我们的操作对象都是服务器&#xff0c;不是自己的Windows主机了。这…