• 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。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    例如,允许一个运行在指定服务帐户下的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
    
    • 1
    • 2

    要使用前面的secret作为MySQL数据库pod的数据库管理员密码,请定义环境变量,并引用secret名称和密码。

    env:
      - name: MYSQL_ROOT_PASSWORD
        valueFrom:
          secretKeyRef:
           key: username
           name: demo-secret
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    📑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
    ……
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在配置映射的pod定义中填充环境变量APISERVER。

    env:
      - name: APISERVER
          valueFrom:	
            configMapKeyRef:
              name: special-config
              key: serverAddress
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    📑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
    
    • 1
    • 2
    • 3

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


    📑本练习准备

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

    📑创建项目

    [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
    …………
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    模板解读:

    该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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    📑创建应用

    [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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    📑端口转发

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

    提示:验证完成之前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)]>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    📑清除实验

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

    💡总结

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

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

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

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

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

  • 相关阅读:
    基于xlsx的B+树索引实现
    分布式 PostgreSQL 集群(Citus)官方教程 - 迁移现有应用程序
    嬴彻科技日: 发布《自动驾驶卡车量产白皮书》分享从量产走向无人技术路线
    Bootstrap --》Bootstrap的安装与使用
    R语言使用原生包(基础导入包、graphics)中的boxplot函数可视化箱图(box plot)
    npm插件安装插件失败问题解决办法
    PyQt,PySide-槽函数被执行了两次
    揭秘一线大厂Redis面试高频考点(3万字长文、吐血整理)
    html css制作正六边形
    影像组学特征提取代码错误
  • 原文地址:https://blog.csdn.net/qq_41765918/article/details/125391508