OpenShift 4 - DevSecOps Workshop (1) - 安装 Workshop 环境

89 篇文章 3 订阅
76 篇文章 6 订阅

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

OpenShift 4 - DevSecOps Workshop 系列视频

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

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-operators
  namespace: openshift-marketplace
spec:
  sourceType: grpc
  image: quay.io/redhatgov/operator-catalog:latest
  displayName: Red Hat NAPS Community Operators
  publisher: 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-secret
  namespace: 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: devsecops
  name: devsecopsworkshop
spec:
  devsecopsworkshop:
    workshopUsers:
      numberOfUsers: 3

或者

apiVersion: redhatgov.io/v1alpha1
kind: DevSecOpsWorkshop
metadata:
  namespace: devsecops
  name: devsecopsworkshop
spec:
  devsecopsworkshop:
    pullSecret:
      name: devsecops-workshop-pull-secret
      namespace: devsecops
    workshopUsers:
      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控制台中增加了新的状态和菜单。
List item
在这里插入图片描述
通过名为“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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值