当前位置:网站首页>DO280OpenShift访问控制--加密和ConfigMap
DO280OpenShift访问控制--加密和ConfigMap
2022-06-24 19:47:00 【IT民工金鱼哥】
个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
个人资质:CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL
格言:努力不一定成功,但要想成功就必须努力支持我:可点赞、可收藏️、可留言
文章目录
管理加密信息
secret特性
Secret对象类型提供了一种机制来保存敏感信息,如密码、OCP客户端配置文件、Docker配置文件和私有仓库凭据。Secrets将敏感内容与Pod解耦。可以使用Volume插件将Secrets挂载到容器上,或者系统可以使用Secrets代表pod执行操作。
Secrets的主要特征包括:
- Secrets data可以独立于其定义引用。
- Secrets data Volume由临时文件存储支持。
- 可以在名称空间中共享Secrets data。
创建Secrets
在依赖于该Secrets的pod之前创建一个Secrets。
[[email protected] ~]$ oc create secret generic secret_name \
--from-literal=key1=secret1 \
--from-literal=key2=secret2 #用secret data创建secret对象
[[email protected] ~]$ oc secrets add --for=mount serviceaccount/serviceaccount-name \
secret/secret_name #更新pod的服务帐户,允许引用该secrets。
例如,允许一个运行在指定服务帐户下的pod挂载一个secrets
创建一个pod,该pod使用环境变量或数据卷作为文件的方式使用该secret,通常使用模板完成。
使用secret暴露Pod
secrets可以作为数据卷挂载,也可以作为环境变量以便供pod中的容器使用。
例如,要向pod公开一个secrets,首先创建一个secrets并将username和password以k/v形式配置,然后将键名分配给pod的YAML文件env定义。
示例:创建名为demo-secret的secrets,它定义用户名和密码为username/demo-user。
[[email protected] ~]$ oc create secret generic demo-secret \
--from-literal=username=demo-user
要使用前面的secret作为MySQL数据库pod的数据库管理员密码,请定义环境变量,并引用secret名称和密码。
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: username
name: demo-secret
web端管理secret
从web控制台管理secret:
以授权用户身份登录到web控制台。
创建或选择一个项目来承载secret。
导航到resource——>secrets。

Secret使用场景
- password和user names
敏感信息(如password和user name)可以存储在一个secret中,该secret被挂载为容器中的数据卷。数据显示为位于容器的数据卷目录中的文件中的内容。然后,应用程序(如数据库)可以使用这些secret对用户进行身份验证。
- 传输层安全性(TLS)和密钥对
通过让集群将签名证书和密钥对生成到项目名称空间中的secret中,可以实现对服务的通信的保护。证书和密钥对使用PEM格式存储以类似tls.crt和tls.key的格式存储在secret的pod中。
ConfigMap对象
ConfigMap概述
ConfigMaps对象类似于secret,但其设计目的是支持处理不包含敏感信息的字符串。ConfigMap对象持有配置数据的键值对,这些配置数据可以在pods中使用,或者用于存储系统组件(如控制器)的配置数据。
ConfigMap对象提供了将配置数据注入容器的机制。ConfigMap存储精细的粒度信息,比如单个属性,或者详细信息,比如整个配置文件或JSON 集合。
CLI创建ConfigMap
可以使用–from-literal选项从CLI创建ConfigMap对象。
示例:创建一个ConfigMap对象,该对象将IP地址172.20.30.40分配给名为serverAddress的ConfigMap密钥。
[[email protected] ~]$ oc create configmap special-config \
--from-literal=serverAddress=172.20.30.40
[[email protected] ~]$ oc get configmaps special-config -o yaml #查看configMap
apiVersion: v1
data:
key1: serverAddress=172.20.30.40
kind: ConfigMap
metadata:
creationTimestamp: 2017-07-10T17:13:31Z
name: special-config
……
在配置映射的pod定义中填充环境变量APISERVER。
env:
- name: APISERVER
valueFrom:
configMapKeyRef:
name: special-config
key: serverAddress
web管理ConfigMap
从web控制台管理ConfigMap对象:
以授权用户身份登录到web控制台。
创建或选择一个项目来承载ConfigMap。
导航到资源→配置映射。

课本练习
环境准备
[[email protected] ~]$ lab install-prepare setup
[[email protected] ~]$ cd /home/student/do280-ansible
[[email protected] do280-ansible]$ ./install.sh
提示:若已经拥有一个完整环境,可不执行。
本练习准备
[[email protected] ~]$ lab secure-secrets setup
创建项目
[[email protected] ~]$ oc login -u developer -p redhat https://master.lab.example.com
[[email protected] ~]$ oc new-project secure-secrets
[[email protected] ~]$ cd /home/student/DO280/labs/secure-secrets/
[[email protected] secure-secrets]$ cat mysql-ephemeral.yml
…………
spec:
containers:
- capabilities: {
}
env:
- name: MYSQL_USER
valueFrom:
secretKeyRef:
key: database-user
name: ${
DATABASE_SERVICE_NAME}
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
key: database-password
name: ${
DATABASE_SERVICE_NAME}
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: database-root-password
name: ${
DATABASE_SERVICE_NAME}
- name: MYSQL_DATABASE
value: ${
MYSQL_DATABASE}
…………
- description: The name of the OpenShift Service exposed for the database.
displayName: Database Service Name
name: DATABASE_SERVICE_NAME
required: true
value: mysql
…………
模板解读:
该mysql-ephemeral.yml模板文件,包含openshift项目中的mysql临时模板,pod所需的其他环境变量由模板参数初始化,并具有默认值。
但没有secret定义,后续操作将手动创建模板所需的secret。
根据模板的要求,创建一个包含MySQL容器image使用的凭证的secret,将这个secret命名为mysql。
- 应用程序访问的数据库用户名由database-user定义。
- 数据库用户的密码由database-password定义。
- 数据库管理员密码由database-root-password定义
创建secret
[[email protected] secure-secrets]$ oc create secret generic mysql \
--from-literal='database-user'='mysql' \
--from-literal='database-password'='redhat' \
--from-literal='database-root-password'='do280-admin'
secret "mysql" created
[[email protected] secure-secrets]$ oc get secret mysql -o yaml #确认secret
apiVersion: v1
data:
database-password: cmVkaGF0
database-root-password: ZG8yODAtYWRtaW4=
database-user: bXlzcWw=
kind: Secret
metadata:
creationTimestamp: 2021-03-03T03:40:47Z
name: mysql
namespace: secure-secrets
resourceVersion: "218611"
selfLink: /api/v1/namespaces/secure-secrets/secrets/mysql
uid: 3df1014e-7bd2-11eb-9656-52540000fa0a
type: Opaque
创建应用
[[email protected] secure-secrets]$ oc new-app --file=mysql-ephemeral.yml
[[email protected] secure-secrets]$ oc get pods
NAME READY STATUS RESTARTS AGE
mysql-1-deploy 1/1 Running 0 11s
mysql-1-r5rgn 0/1 ContainerCreating 0 8s
[[email protected] secure-secrets]$ oc get pods
NAME READY STATUS RESTARTS AGE
mysql-1-r5rgn 1/1 Running 0 12s
端口转发
[[email protected] secure-secrets]$ cd
[[email protected] ~]$ oc port-forward mysql-1-r5rgn 3306:3306
Forwarding from 127.0.0.1:3306 -> 3306
提示:验证完成之前forward不要关闭。
确认验证
[[email protected] ~]$ mysql -uroot -pdo280-admin -h127.0.0.1 #新开终端测试MySQL
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.7.16 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sampledb |
| sys |
+--------------------+
5 rows in set (0.00 sec)
MySQL [(none)]>
清除实验
[[email protected] ~]$ oc delete project secure-secrets
总结
RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第五章 DO280OpenShift访问控制–加密和ConfigMap 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。
红帽认证专栏系列:
RHCSA专栏:戏说 RHCSA 认证
RHCE专栏:戏说 RHCE 认证
此文章收录在RHCA专栏:RHCA 回忆录
如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。
如果有对【运维技术】感兴趣,也欢迎关注️️️ 【金鱼哥】️️️,我将会给你带来巨大的【收获与惊喜】!

边栏推荐
- 如何化解35岁危机?华为云数据库首席架构师20年技术经验分享
- 7-2 求解买股票问题
- What good smart home brands in China support homekit?
- Ethernet ARP Protocol
- Leetcode topic [array] -39- combined sum
- Actipro WPF Controls 2022.1.2
- 节奏快?压力大?VR全景客栈带你体验安逸生活
- 基于三维GIS开发的水电工程建设方案
- Ultra vires vulnerability & Logic vulnerability (hot) (VIII)
- Volcano成Spark默认batch调度器
猜你喜欢

中学校园IP网络广播系统解决方案-校园数字IP广播系统方案设计指南

使用网络摄像头进行眼睛注视估计

Tiktok practice ~ project associated unicloud

Today's sleep quality record 79 points

VR全景怎么赚钱?结合市场从两个方面客观分析下

还在用 SimpleDateFormat 做时间格式化?小心项目崩掉

同济、阿里获CVPR最佳学生论文,李飞飞获黄煦涛奖,近6000人线下参会

It's 2022, and you still don't know what performance testing is?
Record a Webflux application memory leak troubleshooting

Sitelock helps you with the top ten common website security risks
随机推荐
Huawei machine learning service speech recognition function enables applications to paint "sound" and color
Is there really something wrong with my behavior?
Latest development of jetpack compose
js监听页面或元素scroll事件,滚动到底部或顶部
使用网络摄像头进行眼睛注视估计
Enterprise data leakage prevention solution sharing
Classic interview questions and answers for embedded engineers
Yyds dry goods counting uses xshell to implement agent function
机器学习自学成才的十条戒律
Today's sleep quality record 79 points
Mirror image of sword finger offer binary tree
Hello C (I) -- basics of C language
国内有哪些好的智能家居品牌支持homekit?
Solution of IP network broadcasting system in Middle School Campus - Design Guide for Campus Digital IP broadcasting system
Understanding openstack network
Yyds dry goods inventory tells us 16 common usage scenarios of redis at one go
Hibernate学习3 - 自定义SQL
抖音實戰~項目關聯UniCloud
What good smart home brands in China support homekit?
Morris遍曆