《OpenShift 4.x HOL教程汇总》
说明:本文已经在OpenShift 4.8环境中验证

《OpenShift 4 - DevSecOps Workshop 系列视频 》

注意:本 Workshop 依赖的 Quay Operator 已经不再支持 Quay 3.3,因此将无法完成 Workshop 的安装过程。可以先以以上视频了解 Workshop 相关场景。

文章目录

  • DevSecOps Workshop 说明
  • 运行环境要求
  • 配置 OpenShift 中的环境
    • 安装DevSecOps Operator
    • 创建访问“registry.redhat.io”的Secret对象(可选)
    • 根据 DevSecOps Operator 创建 DevSecOps Workshop 环境
    • 访问Workshop环境
  • 配置客户端环境
    • 安装Tekton客户端
    • 安装其他工具
    • 设置环境变量
  • 参考

DevSecOps Workshop 说明

本Workshop使用Tekton作为CI/CD的引擎实现如下DevSecOps的应用发布流程。

运行环境要求

OpenShift 集群,计算节点内存32G,配置有Storage。

配置 OpenShift 中的环境

注意:本节特殊说明外其他全部内容都是用OpenShift集群管理员进行操作。

安装DevSecOps Operator

  1. 用集群管理员创建一个新项目“devsecops”。
$ oc new-project devsecops
  1. 执行以下命令在本地的marketplace注册DevSecOps Operator。
$ oc apply -f - << EOF
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:name: redhatgov-operatorsnamespace: openshift-marketplace
spec:sourceType: grpcimage: quay.io/redhatgov/operator-catalog:latestdisplayName: Red Hat NAPS Community Operatorspublisher: RedHatGov
EOF
  1. 注册完,可在OpenShift控制台的OperatorHub中查找到“DevSecOps Operator”。
  2. 将“DevSecOps Operator”安装到“devsecops”项目中。
  3. 完成后可以在“安装的Operators”菜单中看到“DevSecOps Operator”。

创建访问“registry.redhat.io”的Secret对象(可选)

如果OpenShift中未配能访问的“registry.redhat.io”的pull-secret,这需要根据本节向OpenShift添加能访问“registry.redhat.io”的pull-secret。

  1. 登录“https://access.redhat.com/terms-based-registry/”,点击“New Service Account”按钮。
  2. 提供“Name”和“Description”信息,然后点击“CREATE”。
  3. 进入“OpenShift Secret”栏目,点击“Step 1 Download Secret”中的“view its contents”链接,然后复制“data”区域内容。
  4. 根据复制的“data”内容执行以下命令,在“devsecops”项目中创建secret对象。
$ oc apply -f - << EOF
apiVersion: v1
kind: Secret
metadata:name: devsecops-workshop-pull-secretnamespace: devsecops
data:.dockerconfigjson: eyJhdXRocyI6eyJyZWdpc3RyeS5yZWRoYXQuaW8iOnsiYXV0aCI6Ik1URXdNRGt4TUROOFpHVjJjMlZqYjNCekxYZHZjbXR6YUc5d09tVjVTbWhpUjJOcFQybEtVMVY2VlhoTmFVbzVMbVY1U25wa1YwbHBUMmxKTTA0eVNYaFpiVVY2VGxSUk5FOUVVVEJOZWtVeFQxUlplazFxYkcxWlYxSnBXVzFGTkU5VVpHdFBRMG81TG5OTWVVODRRa1UyZVVKeGFsVjBjMGhYVVZRd1pEQTFjWHBQUnpkWGIyRktTVU10TW1wbGFrUTVZaTE0Tm5wNlJsZGlNMFJzUWxGV1UzSktZbUo1VURoUFJHNVFWRVI1VlRGV2VEZG5Ta1JRUWw5dWNWRkxRMU0yZVV0bkxXRklPSHA1V1RCRFkxQkJORWw2TlhOQlkyb3hWV2w1ZUZKWVEyUjVWWEJJUW1sZlFUbFhkMUJUZWxodGVrWldNa0ZUTFhsZlREZFdWbWs0UlZwME5sSk1aWFJZZVdack1YSkNaWGw1U0ZCVVJIbGlhM3BNYkhCME16TlBUa3QyWW1KWE9WOVZhRWs0Vm5GT1FVOVVVazFuWkZSYU5FUklTRTVrYmt0QldGSjVha0UwU1dKR2EySlNiMWxrYmxaWFNUTjRMVkZxTVUxSGJtSnNSV1JqUTB0VlVEWnVXV2hWZFVaNlFYY3RaMk5zVDE4MWFFcEJjMEpZWlVSdGRYbFBTMDV6TjJrNVNFMW1RbDltV1ZRM1MzTjJObTFIVVVsQk1tMXhlRVJTT0ROc2VVMTBXVlYxYTBacE0zcG1TaloyTFVNMGFFMVJUa05mUVVSUlNqSXpkR051YzI1UExXcGlRbFZPZUdKaE1EZEtha0pNU1VkNVdHbExhMTl2YVZkbVRUTkRhRzlOTlY5dFRucHBUazlqYVhWR2FYRm5WblZPVFU0MkxXRldSVk5PVEU0eFYyYzRRMEpTUjNsNVZWOWZiRWh4ZVVOSlNEbFlkbWRxYnpoVmJsWnhWVUpRU0RKUE9XTXpPVWd6WkVndE0wOHhhVlZJVDNkTVVGTldNMjF1YTNreWMzUjVVRVJLWDIxVmJXaDJlRGRPWjBOR2NVVlZiVVpDZFdWTmEyVmFiV1p2WWxoTFNsSmpXa3hsY1RSNWRGOWpjVTB0VjJKWGQzbDRaMXA0Y0c0MWQxaDVNVEl0UjJOek5qSnBNekY2VUVJMGRFSnhSR05hVVhrelRtTkpZMFoxVDJVNFdWUldMVUk0YjA1RVNrTXpOVXRaVjNadldGTTBVRWx3TUU5b01qbEZTSEJIZDFkTWVXbEhibXBRUm5FM1NpMXlNMUZLVW1aRE9XSjFRMGxSV2tGVFpuSnlNalZRTWtwSlFrNDNRUzFrVFRrd1RERnRZbGd3VWtSNExXSkVPWHA0TTFCb1ptSjRTVTFqIn19fQ==
type: kubernetes.io/dockerconfigjson
EOF

根据 DevSecOps Operator 创建 DevSecOps Workshop 环境

  1. 进入“DevSecOps Operator”,根据以下 2 个 YAML 之一创建一个“DevSecOpsWorkshop”实例。这里我们可以指定自动创建 3 个用户可以使用 workshop,用户名将分别为“user1”、“user2”、“user3”,默认密码都将是“openshift”。
apiVersion: redhatgov.io/v1alpha1
kind: DevSecOpsWorkshop
metadata:namespace: devsecopsname: devsecopsworkshop
spec:devsecopsworkshop:workshopUsers:numberOfUsers: 3

或者

apiVersion: redhatgov.io/v1alpha1
kind: DevSecOpsWorkshop
metadata:namespace: devsecopsname: devsecopsworkshop
spec:devsecopsworkshop:pullSecret:name: devsecops-workshop-pull-secretnamespace: devsecopsworkshopUsers:numberOfUsers: 3
  1. 在“安装的 Operators”查看安装好的Operator,包括:codeready、gitea、sonar、quay、nexus。
  2. 实例创建完可以在“开发者”视图中的“拓扑”中看到以下部署好的资源,包括:codeready、gitea、sonar、quay、nexus、rocket-chart等环境。
  3. 在部署名为quayecosystem-quay的Pod时候,缺省可能会报以下错误(在Pod的日志中):
...
connect() to unix:/tmp/gunicorn_web.sock failed (2: No such file or directory) while connecting to upstream...
...

这是由于Quay使用LimitRange有可能和OpenShift环境有抵触,可以执行以下命令删除以下名为devsecops-core-resource-limits的LimitRange。

$ oc delete limitrange devsecops-core-resource-limits -n devsecops

访问Workshop环境

  1. 使用“user1、user2…”用户登录OpenShift(这些用户的密码全是“openshift”),然后查看“devsecops”项目中生成的Route资源。
$ oc get route -n devsecops
NAME                                   HOST/PORT                                                                           PATH         SERVICES                               PORT       TERMINATION            WILDCARD
codeready                              codeready-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com                   /            che-host                               8080       edge/Redirect          None
codeready-dashboard                    codeready-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com                   /dashboard   codeready-dashboard                    8080       edge/Redirect          None
devfile-registry                       devfile-registry-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com                         devfile-registry                       8080       edge/Redirect          None
devsecops-workshop-dashboard-spawner   dashboard.apps.cluster-39c8.39c8.sandbox139.opentlc.com                                          devsecops-workshop-dashboard-spawner   8080-tcp   edge/Redirect          None
gitea-server                           gitea-server-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com                             gitea-server                           <all>      edge/Redirect          None
keycloak                               keycloak-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com                                 keycloak                               8080       edge/Redirect          None
nexus                                  nexus-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com                                    nexus                                  8081       edge/Redirect          None
nexus-docker                           nexus-docker-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com                             nexus                                  8082       edge/None              None
plugin-registry                        plugin-registry-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com                          plugin-registry                        8080       edge/Redirect          None
quayecosystem-quay                     quay.apps.cluster-39c8.39c8.sandbox139.opentlc.com                                               quayecosystem-quay                     8080       edge/Redirect          None
quayecosystem-quay-config              quayecosystem-quay-config-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com                quayecosystem-quay-config              8443       passthrough/Redirect   None
rocketchat                             rocketchat-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com                               rocketchat                             3000-tcp   edge/Redirect          None
sonarqube                              sonarqube-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com                                sonarqube                              <all>      edge/Redirect          None
username-distribution                  username-distribution-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com                    username-distribution                  8080-tcp   edge/Redirect          None
  1. 打开名为“DevSecOpsWorkshop”的Route地址。用任意邮箱和“redhatgov”密码登录。
    email:xiaoyliu@redhat.com
    password:redhatgov
  2. 打开上图的“Workshop Dashborad”链接,并根据上图提示用“use1/openshift”登录。
  3. 在“Authorize Access”页面中选择“Allow selected permissions”。
  4. 系统会为登录用户“user1”创建运行环境,并最终显示Workshop控制台。

    这样DevSecOps Workshop的环境就安装好了,下面可以根据Workshop说明进行操作了。
    另外,由于Workshop环境使用RedHat SSO和所有软件进行了单点登录集成,因此可用相同的用户登录OpenShift和所有其他软件。

通过名为“sonarqube”的路由访问SonarQube 控制台

通过名为“nexus”的路由访问Nexus控制台

通过名为“quayecosystem-quay”的路由访问Quay控制台

在安装完Quay后,也会在OpenShift控制台中增加了新的状态和菜单。


通过名为“codeready”的路由访问CodeReady Workspaces控制台

Workshop的RocketChat应用

配置客户端环境

安装Tekton客户端

在“安装的Operators”中进入“Red Hat OpenShift Pipelines”,在“详情”页面下方个根据下图提示下载“tkn”客户端。
或者执行以下命令下载Tekton客户端。

$ curl -L https://github.com/tektoncd/cli/releases/download/v0.20.0/tkn_0.20.0_Linux_x86_64.tar.gz | tar -xzf -
$ sudo mv tkn /usr/bin/

安装其他工具

安装3.x版的yq工具。

$ wget https://github.com/mikefarah/yq/releases/download/3.4.1/yq_linux_386
$ sudo mv yq_linux_386 /usr/bin/yq
$ sudo chmod +x /usr/bin/yq

设置环境变量

设置环境变量。说明:本文中统一使用“user1”用户进行操作。如使用其他用户,请自行修改后文中的相关命令。

$ USER=$(oc whoami)
$ DEV=${USER}-dev
$ CICD=${USER}-cicd
$ STAGE=${USER}-stage
$ GIT_URL=$(oc get route gitea-server -ojsonpath="{.spec.host}" -n devsecops)
$ GIT_REPO=https://${GIT_URL}/${USER}/openshift-tasks.git
$ NEXUS_URL=$(oc get route nexus -ojsonpath={.spec.host} -n devsecops)

参考

https://github.com/liuxiaoyu-git/devsecops-workshop-dashboard/tree/develop/tekton/workshop/content

OpenShift 4 - DevSecOps Workshop (1) - 安装 Workshop 环境相关推荐

  1. OpenShift 4 - 用 Quay Operator 安装 Quay 环境(4.10 修正)

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.10 环境中验证 由于新版 Quay 需要使用 OpenShift Data Foundation ...

  2. OpenShift / RHEL / DevSecOps 汇总目录

    文章目录 OpenShift / RHEL / DevSecOps 汇总目录 OpenShift 入门 OpenShift 安装 免费线上环境 CRC单机环境 MicroShift Online安装 ...

  3. OpenShift 4 - DevSecOps Workshop (10) - 向Stage环境部署应用镜像

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...

  4. OpenShift 4 - DevSecOps Workshop (9) - 向Dev环境部署应用镜像

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...

  5. OpenShift 4 - DevSecOps (1) - 安装 DevOps 环境

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.10环境中验证 本文创建的环境包含 RHACS.CI/CD Pipeline,Sonarqube,A ...

  6. [OpenShift 4 - DevSecOps Workshop (16) - 使用 VSCode 编辑运行 Tekton Pipeline 资源

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...

  7. OpenShift 4 - DevSecOps Workshop (15) - 利用OpenShift GitOps向多个目标部署应用

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...

  8. OpenShift 4 - DevSecOps Workshop (Jenkins版)

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 DevSecOps Workshop 说明 安装 DevSecOps Wor ...

  9. OpenShift 4 - DevSecOps Workshop (14) - 镜像合规扫描

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...

最新文章

  1. 【 FPGA 】FIR 滤波器之固定分数率重采样滤波器
  2. Mozilla停止对Firefox Hello的支持(采访)
  3. java.io,PrintWriter可以用来创建一个文件并向本文文件写入数据
  4. Electron中 提示:Uncaught ReferenceError: process is not defined
  5. 统计学习方法第二章作业:感知机模型原始形式与对偶形式代码实现
  6. NET 2005 中通过TryParse来检验和转换数据类型。
  7. SpringBoot整合RocketMQ之环境搭建以及Producer发送消息
  8. Linux图片马PHP,php 根据请求生成缩略图片保存到Linux图片服务器的代码
  9. java 内存分析 ibm_IBM内存检测工具(IBM Thread and Monitor Dump Analyzer for Java)
  10. 解决Linux系统中python matplotlib画图的中文显示问题
  11. 第三章:使用email-ext替换Jenkins的默认邮件通知
  12. jacob 详解 语音_JAVA 实现Jacob语音播报
  13. Nginx web服务器搭建
  14. 在ubuntu下安装Dynamips
  15. 小学生python趣味编程-【少儿编程】python趣味编程第二课:写文字
  16. 服务器红帽操作系统安装,怎么安装red hat操作系统
  17. 用cJSON解析心知天气返回的数据包
  18. 计算机考研总共多少分,考研计算机要过多少分
  19. VisualSVN破解
  20. 阿里云无影研发负责人任晋奎:端云技术创新,打造全新用户体验

热门文章

  1. python 个人项目_80个Python练手项目列表,学完立马成大神 牛逼了
  2. linux 使用ssr客户端_webpack5.0+SSR尝鲜【排坑记录】
  3. 乐高小颗粒履带机器人_乐高搭建+乐高编程…快带小朋友来漳州这家培训中心,边玩边学...
  4. python登录验证程序_Python模拟用户登录验证
  5. java 构造器 null_java - 主结尾处的Java构造函数用户输入在构造函数中为Null - 堆栈内存溢出...
  6. 3dmax导出fbx ue4_耗子尾汁马保国—CC3快速相片建模到UE4实时面部,动作捕捉
  7. 甜甜的爱情+美食完美情人节海报,PSD分层模板轻松搞定设计,拿去用!
  8. 让你的原创设计作品展示给世界|设计师的舞台
  9. android 混淆方法名,android – 如何告诉Proguard混淆类名
  10. C++ Protected和Private的区别