金鱼哥RHCA回忆录:DO280OpenShift访问控制--加密和ConfigMap

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 第五章 DO280OpenShift访问控制--加密和ConfigMap
🎹 个人简介:大家好,我是 金鱼哥,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。

[user@demo ~]$ oc create secret generic secret_name \
--from-literal=key1=secret1 \
--from-literal=key2=secret2    #用secret data创建secret对象
[user@demo ~]$ 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。

[user@demo ~]$ 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:

  1. 以授权用户身份登录到web控制台。
  2. 创建或选择一个项目来承载secret。
  3. 导航到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密钥。

[user@demo ~]$ oc create configmap special-config \
--from-literal=serverAddress=172.20.30.40
[user@demo ~]$ 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对象:

  1. 以授权用户身份登录到web控制台。
  2. 创建或选择一个项目来承载ConfigMap。
  3. 导航到资源→配置映射。

在这里插入图片描述


📜课本练习

📑环境准备

[student@workstation ~]$ lab install-prepare setup
[student@workstation ~]$ cd /home/student/do280-ansible
[student@workstation do280-ansible]$ ./install.sh

提示:若已经拥有一个完整环境,可不执行。


📑本练习准备

[student@workstation ~]$ lab secure-secrets setup

📑创建项目

[student@workstation ~]$ oc login -u developer -p redhat https://master.lab.example.com
[student@workstation ~]$ oc new-project secure-secrets
[student@workstation ~]$ cd /home/student/DO280/labs/secure-secrets/
[student@workstation 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

[student@workstation 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


[student@workstation 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

📑创建应用

[student@workstation secure-secrets]$ oc new-app --file=mysql-ephemeral.yml
[student@workstation 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
[student@workstation secure-secrets]$ oc get pods
NAME            READY     STATUS    RESTARTS   AGE
mysql-1-r5rgn   1/1       Running   0          12s

📑端口转发

[student@workstation secure-secrets]$ cd
[student@workstation ~]$ oc port-forward mysql-1-r5rgn 3306:3306
Forwarding from 127.0.0.1:3306 -> 3306

提示:验证完成之前forward不要关闭。


📑确认验证

[student@workstation ~]$ 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)]>

📑清除实验

[student@workstation ~]$ oc delete project secure-secrets

💡总结

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第五章 DO280OpenShift访问控制--加密和ConfigMap 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾 红帽认证专栏系列:
RHCSA专栏: 戏说 RHCSA 认证
RHCE专栏: 戏说 RHCE 认证
此文章收录在RHCA专栏: RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

目录
相关文章
|
运维 安全 关系型数据库
金鱼哥RHCA回忆录:DO280OpenShift访问控制--security policy和章节实验
第五章 DO280OpenShift访问控制--security policy和章节实验
160 0
金鱼哥RHCA回忆录:DO280OpenShift访问控制--security policy和章节实验
|
存储 运维 Kubernetes
金鱼哥RHCA回忆录:DO280OpenShift访问控制--管理项目和账户
第五章 DO280OpenShift访问控制--管理项目和账户
240 0
金鱼哥RHCA回忆录:DO280OpenShift访问控制--管理项目和账户
|
关系型数据库 Shell Linux
ACL(访问控制列表)权限管理
一、ACL权限 二、rwx权限 三、mask权限 四、ACL备份和恢复
|
1月前
|
网络协议 网络安全 网络性能优化
网络技术基础(14)——ACL访问控制列表
【3月更文挑战第3天】刚加完班又去南京出差了,实在是太忙了。。。。
|
8月前
|
网络安全 数据安全/隐私保护
访问控制列表与SSH结合使用,为网络设备保驾护航,提高安全性
访问控制列表与SSH结合使用,为网络设备保驾护航,提高安全性
94 0
访问控制列表与SSH结合使用,为网络设备保驾护航,提高安全性
|
安全 网络虚拟化 数据安全/隐私保护
华为ensp模拟器 配置ACL访问控制列表
华为ensp模拟器,模拟配置acl访问规则,配置acl访问规则的详细解释和操作。
华为ensp模拟器 配置ACL访问控制列表
|
10月前
|
安全 网络协议 网络安全
访问控制列表(ACL)
访问控制列表(ACL)
193 0
|
安全 网络协议 网络安全
IT知识百科:什么是访问控制列表ACL?
IT知识百科:什么是访问控制列表ACL?
401 0
|
数据安全/隐私保护
访问控制列表 扩展ACL+命名ACL+实战小实验
访问控制列表 扩展ACL+命名ACL+实战小实验
访问控制列表 扩展ACL+命名ACL+实战小实验
|
数据安全/隐私保护 网络架构
网络工程之标准访问控制列表配置
这次我们来讲述大学网络工程之思科路由器标准访问控制列表配置
99 4
网络工程之标准访问控制列表配置