08 Kubernetes应用配置管理

news/2024/11/30 9:39:40/

课件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在 Kubernetes 中,secret 是一种用于存储敏感信息的对象。Kubernetes 支持以下三种类型的 secret:

  1. Opaque:这是默认的 secret 类型,可以用于存储任何类型的数据,包括字符串、二进制数据等。

  2. Service Account:这种类型的 secret 是自动生成的,用于存储与 service account 相关的信息,例如 API token 等。

  3. TLS:这种类型的 secret 用于存储 TLS 证书和私钥,用于加密通信。

这三种类型的 secret 在使用方式和配置上略有不同,但都提供了将敏感信息存储在 Kubernetes 集群中的方便方式,同时也提供了一些安全性措施来确保这些信息不会被未授权的人员访问或泄露。

在这里插入图片描述
在这里插入图片描述
Pod可以使用Secret存储和访问敏感信息,例如密码、密钥和证书等。以下是两种Pod使用Secret的方式:

  1. Volume方式:

在Pod的定义中声明一个volume,并将Secret挂载到该volume中。然后,可以将该volume挂载到容器中的特定路径。以下是一个使用Volume方式的Pod示例:

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imagevolumeMounts:- name: secret-volumemountPath: /etc/my-secretreadOnly: truevolumes:- name: secret-volumesecret:secretName: my-secret

在上面的示例中,Pod声明了一个名为secret-volume的volume,并使用my-secret Secret将其填充。然后,该volume被挂载到容器的/etc/my-secret路径上。

  1. Environment Variable方式:

可以将Secret的值作为环境变量注入到容器中。在Pod的定义中,使用env字段声明一个或多个环境变量,并使用valueFrom字段从Secret中获取值。以下是一个使用Environment Variable方式的Pod示例:

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imageenv:- name: DB_PASSWORDvalueFrom:secretKeyRef:name: my-secretkey: db-password

在上面的示例中,Pod声明了一个名为DB_PASSWORD的环境变量,并使用my-secret Secret的db-password键从中获取值。容器可以使用$DB_PASSWORD引用该环境变量。

需要注意的是,Secret中的数据是以Base64编码的形式存储的。因此,在使用Secret之前,需要将其进行解码。
在这里插入图片描述
为Secret设置RBAC可以确保只有具有特定权限的用户或实体才能访问该Secret。以下是为Secret设置RBAC的步骤:

  1. 创建一个命名空间(如果您还没有创建):
kubectl create namespace <namespace-name>
  1. 创建一个ServiceAccount:
kubectl create sa <service-account-name> -n <namespace-name>
  1. 创建一个Role或ClusterRole:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:name: <role-name>namespace: <namespace-name>
rules:
- apiGroups: [""]resources: ["secrets"]verbs: ["get", "watch", "list"]
  1. 将Role或ClusterRole绑定到ServiceAccount:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: <role-binding-name>namespace: <namespace-name>
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: <role-name>
subjects:
- kind: ServiceAccountname: <service-account-name>namespace: <namespace-name>
  1. 将Secret注入到Pod中:
apiVersion: v1
kind: Pod
metadata:name: <pod-name>
spec:serviceAccountName: <service-account-name>containers:- name: <container-name>image: <image-name>volumeMounts:- name: <volume-name>mountPath: <mount-path>volumes:- name: <volume-name>secret:secretName: <secret-name>

请注意,这些步骤中的名称需要替换为您自己的名称。此外,您可以根据需要更改Role或ClusterRole的规则,以便控制对Secret的访问权限。
在这里插入图片描述
在这里插入图片描述

自测题

在这里插入图片描述
是的,Pod只能使用相同命名空间(namespace)中的ConfigMap。这是因为Kubernetes中的命名空间提供了一种隔离资源的方式,使得不同的应用程序或团队可以在同一集群中共享资源,同时保持彼此的独立性。

当创建ConfigMap时,可以指定其所属的命名空间。如果未指定命名空间,则默认为创建ConfigMap的命名空间。同样,当创建Pod时,如果未指定命名空间,则默认为创建Pod的命名空间。

如果您想让Pod使用其他命名空间中的ConfigMap,可以使用Kubernetes中的跨命名空间引用(cross-namespace referencing)。要实现这一点,可以在Pod的定义中使用ConfigMap的完全限定名称(fully qualified name),例如my-configmap.my-namespace,其中my-configmap是ConfigMap的名称,my-namespace是ConfigMap所属的命名空间。

但是,跨命名空间引用通常不是推荐的做法,因为这会破坏命名空间提供的隔离性。相反,建议将相关的ConfigMap和Pod都放在同一命名空间中,以确保资源的隔离和安全。
在这里插入图片描述


http://www.ppmy.cn/news/59008.html

相关文章

sqlserver object_id()函数学习

在SQLServer数据库中&#xff0c;如果查询数据库中是否存在指定名称的索引或者外键约束等&#xff0c;经常会用到object_id(name,type)方法&#xff0c; 语法&#xff1a;object_id(objectname)或object(objectname,type) 作用&#xff1a;该函数会返回指定对象的ID值&#xf…

100种思维模型之蝴蝶效应思维模型-56

“蝴蝶效应 ”说的是&#xff1a;一只南美洲亚马孙河边热带雨林中的蝴蝶&#xff0c;偶尔扇几下翅膀&#xff0c;就有可能在两周后引起美国得克萨斯的一场龙卷风。 原因在于&#xff1a; 蝴蝶翅膀的运动&#xff0c;导致其身边的空气系统发生变化&#xff0c;并引起微弱气流的…

idea好用插件分享——Bito-ChatGPT

文章目录 安装步骤&#xff1a;第一步&#xff1a;打开Setting第二步&#xff1a;选择Plugins&#xff0c;输入Bito&#xff0c;就可以搜索出来了&#xff0c;再点击安装第三步&#xff1a;安装完成回到IDEA主界面&#xff0c;右边区域可以看到Bito图标&#xff0c;点击展开&am…

MySQL数据库——MySQL TRUNCATE:清空表记录

MySQL 提供了 DELETE 和 TRUNCATE 关键字来删除表中的数据。下面主要讲解一下 TRUNCATE 关键字的使用。 TRUNCATE 关键字用于完全清空一个表。其语法格式如下&#xff1a; TRUNCATE [TABLE] 表名 其中&#xff0c;TABLE 关键字可省略。 例 1 新建表 tb_student_course&…

Spring 5 笔记 - 入门与IOC

1. Spring 入门简介 Spring&#xff1a;轻量级、开源的JavaEE框架&#xff0c; 解决企业应用的复杂性。包括IOC和AOP两个核心部分。 IOC&#xff1a; 控制反转&#xff0c;把创建对象和对象之间的调用的过程都交给Spring 进行管理&#xff0c;使耦合度降低。 AOP&#xff1a…

PHP+vue大学生心理健康评价和分析系统8w3ff

本整个大学生心理健康管理系统是按照整体需求来实现各个功能的&#xff0c;它可以通过心理健康测评来检测大学生的心理健康&#xff0c;并且给予预警&#xff0c;还可以预约医生来解决问题。并且&#xff0c;管理员可以查看用户信息&#xff0c;发布一些关于心理健康的文章。该…

【iOS】—— KVO再学习

KVO 文章目录 KVOKVO概念KVO使用步骤注册KVO监听KVO监听实现移除KVO监听 KVO基本用法KVO传值禁止KVO的方法使用注意事项 KVO原理GSKVOInfoGSKVOPathInfoGSKVOObservation为什么要重写class方法呢&#xff1f; GSKVOReplacementGSKVOBaseGSKVOBase小结 源码实现移除观察者总结 K…

5月新书预告

“读书不觉已春深&#xff0c;一寸光阴一寸金。”相信许多小伙伴儿都把这个五一假期安排的满满当当&#xff0c;还有一部分人抱着书本养精蓄锐、精进技能。小编也没闲着&#xff0c;为大家收集了几本精品新书。 《现代软件工程》是《持续交付》的作者David Farley的另一本力作&…