IBM Cloud Docs
Red Hat OpenShift on IBM Cloud 上的可缩放 Web 应用程序

Red Hat OpenShift on IBM Cloud 上的可缩放 Web 应用程序

本教程可能会发生成本。 使用“成本估算器”根据您的预计使用量生成成本估算。

本教程将指导您如何从远程 Git 存储库将应用程序部署到 Red Hat OpenShift on IBM Cloud 集群,在路径上公开应用程序,监视环境运行状况以及扩展应用程序。 此外,您将了解如何使用专用容器注册表,从专用 Git 存储库部署应用程序以及将定制域绑定到应用程序。

通过 Red Hat OpenShift on IBM Cloud,您可以使用随 OpenShift Container Platform一起安装的工作程序节点来创建 Kubernetes 集群。 有关 OpenShift Container Platform 架构的更多信息,请参阅 Red Hat OpenShift 文档。 您将获得集群的所有 受管服务的优点

目标

  • 将 Web 应用程序部署到 Red Hat OpenShift on IBM Cloud 集群。
  • 绑定定制域。
  • 监视集群的日志和运行状况。
  • 缩放 Red Hat OpenShift on IBM Cloud pod。

架构*" caption-side="bottom"}{: caption="*

  1. 开发者使用来自远程 Git 存储库的代码来部署 Web 应用程序。 (可选) 开发者还可以将代码推送到 IBM Cloud上的专用 Git 存储库。
  2. 根据代码构建容器映像。
  3. 该映像将推送到集群随附的本地容器注册表或 IBM Cloud Container Registry中的名称空间。
  4. 通过拉取镜像,将应用程序部署到 Red Hat OpenShift on IBM Cloud 集群。
  5. 用户通过公共路径访问应用程序。

准备工作

本教程需要:

  • IBM Cloud CLI,
    • IBM Cloud Kubernetes Service 插件 (kubernetes-service),
    • (可选) Container Registry 插件 (container-registry)
  • Docker 发动机
  • oc,用于与 Red Hat OpenShift on IBM Cloud进行交互,
  • git 以克隆源代码存储库,
  • (可选) 使用 SSH 密钥配置的 IBM Cloud GitLab。 检查 此处的文档Generate an SSH key pairAdd an SSH key to your GitLab account 部分下的指示信息

您将在 教程入门 指南中找到有关为您的操作环境下载和安装这些工具的指示信息。

要避免安装这些工具,可以从 IBM Cloud 控制台使用 Cloud Shell。 使用 oc version 以确保 Red Hat OpenShift on IBM Cloud CLI 的版本与集群版本 (4.13.x) 匹配。如果它们不匹配,请遵循 这些指示信息 来安装匹配的版本。

此外,请确保 设置注册表名称空间

创建 Red Hat OpenShift on IBM Cloud 集群

通过 Red Hat OpenShift on IBM Cloud,您可以快速安全地在 Kubernetes 集群上容器化和部署企业工作负载。Red Hat OpenShift on IBM Cloud 集群基于 Kubernetes 容器编排构建,可为开发生命周期操作提供一致性和灵活性。

在此部分中,您将在具有两个 (2) 工作程序节点的一个 (1) 专区中供应 Red Hat OpenShift on IBM Cloud 集群:

  1. IBM Cloud® 目录 创建 Red Hat OpenShift on IBM Cloud 集群。
  2. 基础架构 下,选择 VPC经典
    • 对于 Red Hat OpenShift on IBM Cloud 上的 VPC 基础架构,您需要在创建群集之前创建一个 VPC 和一个子网。 创建或使用现有 VPC,请牢记以下需求:
      • 一个可用于本教程的子网,请记下子网的区域和名称。
      • 公共网关已连接到子网,有关更多详细信息,请参阅 创建 VPC 集群
  3. 位置下,
    • 对于 VPC 基础结构上的 Red Hat OpenShift on IBM Cloud
      • 取消选中不适用的区域和子网。
      • 在期望的区域中验证期望的子网名称,如果不存在,请单击编辑画笔以选择期望的子网名称
    • 对于经典基础架构上的 Red Hat OpenShift on IBM Cloud:
      • 选择资源组
      • 选择 地理位置
      • 选择 单个区域 作为 可用性
      • 选择工人区
      • 有关更多详细信息,请参阅 创建经典集群 指示信息。
  4. OpenShift V 设置为 4.13.x (注: 如果选择使用 4.15.xx 及更高版本,那么需要关闭 出站流量保护)。
  5. 选择 OpenShift Container Platform (OCP) 许可证
  6. 工人游泳池下、
    • 选择 4 vCPUs 16GB 内存 作为类型模板。
    • 针对本教程选择 2 每个数据中心的工作程序节点 (如果选择了经典基础架构: 保留 加密本地磁盘)。
  7. 集群详细信息下:
    • 群集名称设置为 myopenshiftcluster
    • 选择 资源组 (如果选择了 VPC 基础结构)。
  8. 单击 创建 以供应 Red Hat OpenShift on IBM Cloud 集群。

记下上面选择的资源组。 此同一资源组将用于此实验室中的所有资源。

配置 CLI

在此步骤中,您将配置 oc 以指向新创建的集群。 Red Hat OpenShift on IBM Cloud Container Platform CLI 提供用于管理应用程序的命令以及与系统各组件交互的低级工具。 该 CLI 可通过 oc 命令使用。

  1. 集群就绪后,单击 OpenShift Web 控制台 以打开控制台。
  2. 在 Web 控制台上,从页面右上角的下拉菜单中,单击 复制登录命令,然后单击 显示令牌 链接。
  3. 复制使用此令牌登录下找到的文本。
  4. 使用 oc login 命令登录后,运行下面的命令查看群集中的所有命名空间。
    oc get ns
    

创建新的 Red Hat OpenShift on IBM Cloud 应用程序

在此部分中,您将创建 Red Hat OpenShift on IBM Cloud 项目,然后从 GitHub 存储库部署应用程序。 此应用程序的代码是一个简单的 Node.js 登录页面和两个 API 端点以开始使用。 您始终可以根据自己的探索需求来扩展此应用程序。

创建项目

Kubernetes 名称空间提供了限定集群中资源作用域的机制。 在 Red Hat OpenShift on IBM Cloud 中,项目是具有附加注释的 Kubernetes 名称空间。

  1. 定义名为 MYPROJECT 的环境变量,并通过将 <your-initials> 替换为您自己的缩写来设置应用程序名称:
    export MYPROJECT=<your-initials>-openshiftapp
    
  2. 创建新项目。
    oc new-project $MYPROJECT
    
    使用上述命令创建项目后,您将自动切换到该项目以及在该项目上下文中运行的所有命令。 如果需要在稍后阶段切换项目或返回到该项目,请使用 oc project $MYPROJECT 命令。

部署应用程序

通过 oc new-app 命令,可以从本地或远程 Git 存储库中的源代码创建应用程序。

  1. 使用 docker 构建策略创建应用程序,以从存储库中的 Dockerfile 构建容器映像。 您正在将应用程序名称设置为项目名称以实现简单性。

    oc new-app https://github.com/IBM-Cloud/openshift-node-app --name=$MYPROJECT --strategy=docker --as-deployment-config
    

    如果在创建新应用程序时源存储库的根目录或指定上下文目录中存在 Jenkins 文件,那么 Red Hat OpenShift on IBM Cloud 将生成 pipeline 构建策略。 否则,将生成 source 构建策略。 您始终可以通过设置 --strategy 标志来覆盖构建策略。

  2. 要检查构建器容器映像创建并推送到内部 Red Hat OpenShift on IBM Cloud Container Registry (OCR),请运行以下命令。

    oc logs -f buildconfig/$MYPROJECT
    

    您的集群通过内部 Red Hat OpenShift on IBM Cloud Container Registry 进行设置,这样 Red Hat OpenShift on IBM Cloud 就能在集群内自动构建、部署和管理应用程序生命周期。

  3. 等待构建成功并推送映像。 您可以通过运行以下命令来检查部署和服务的状态。

    oc status
    

通过 IBM 提供的域访问应用程序

要访问应用程序,需要创建一个路由。 路径用于向外界公布您的服务。

  1. 在终端中运行以下命令创建路由。

    oc expose service/$MYPROJECT
    
  2. 您可以通过 IBM 提供的域访问应用程序。 运行以下命令获取 URL。

    oc get route/$MYPROJECT
    
  3. 复制 HOST/PORT 值下的主机名值,并将 URL 粘贴到浏览器中,在 http://<hostname> 上查看应用程序的运行情况。 请确保URL使用 http

  4. 设置指向主机名的环境变量。

    export HOST=<hostname>
    

保护 IBM 提供的缺省域路径

  1. 要创建使用 Red Hat OpenShift on IBM Cloud 的缺省证书加密的安全 HTTPS 路径,可以使用 create route 命令。
    oc create route edge $MYPROJECT-https --service=$MYPROJECT --port=3000
    
  2. 要获取 HTTPS 主机 URL,请运行 oc get routes。 在浏览器中复制并粘贴路由 $MYPROJECT-https 旁带有 HTTPS (https://<HOST>) 的 URL。 这次,您URL使用 https

监视应用程序

在此部分中,您将了解如何监视应用程序的运行状况和性能。 OpenShift Container Platform 随附预先配置的自我更新监视和警报堆栈。

  1. 在终端中运行带有URL命令,以生成负载。 该命令将无休止地向应用程序发送请求。
    while sleep 1; do curl --max-time 2 -s http://$HOST/load/50; done
    
  2. OpenShift Web 控制台中,切换到“管理员”视图。
  3. 观察下,选择 度量
  4. 在表达式框中,输入以下表达式,将 <MYPROJECT> 替换为项目名称,然后单击 运行查询 以在图形中查看容器 CPU 总使用率 (以秒计)。
    sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace="<MYPROJECT>"}) by (container)
    
  5. 观察下,选择 仪表板
  6. 单击 仪表板 下拉列表,然后选择 Kubernetes /计算资源/名称空间 (工作负载)
  7. 名称空间 更改为项目。
  8. 时间范围 设置为 最近 5 分钟
  9. 检查 CPU 和内存使用情况。
  10. 使用 control+C 停止上述脚本。
  11. 要进行日志记录,可以使用内置的 oc logs 命令。 检查 查看资源的日志 以了解 oc logs 的使用情况。

您还可以供应并使用 IBM Cloud Logs 和 IBM Cloud Monitoring 服务来对 Red Hat OpenShift on IBM Cloud 应用程序进行日志记录和监视。 按照 此链接 中提到的说明设置日志和监控附加组件,以监控群集健康状况。

缩放应用程序

在本节中,您将学习如何手动和自动扩展应用程序。

手动缩放

  1. 您可以使用 oc scale 命令来实现手动缩放 pod。 该命令为部署配置或复制控制器设置新的大小
    oc scale dc/$MYPROJECT --replicas=2
    
  2. 运行 oc get pods 命令即可看到新 pod 正在调配。
  3. 重新运行 监视 步骤以查看更新的度量。

自动缩放

您可以使用水平 pod 自动缩放器 (HPA) 来指定 Red Hat OpenShift on IBM Cloud 应如何根据从属于该 dcrc 的 pod 收集的度量值自动增加或减少部署配置 (dc) 或复制控制器 (rc) 的规模。

  1. 首先需要在集群中运行的 pod 上设置资源限制,然后才能为 pod 设置自动缩放。 限制允许您选择 pod 的最小和最大 CPU 和内存使用量。 您可以使用 oc set resources 命令在容器上设置限制和请求。
    oc set resources dc/$MYPROJECT --limits=cpu=250m,memory=512Mi --requests=cpu=100m,memory=256Mi
    
    要进行验证,请运行 oc describe dc/$MYPROJECT 并查找 LimitsRequests
  2. 要创建自动缩放器,您需要对自动缩放器可以设置的 Pod 数量和所有 Pod 的目标平均 CPU 利用率 (表示为所请求 CPU 的百分比) 运行具有下限 (min) 和上限 (max) 的 oc autoscale 命令。 对于测试,让我们将 --cpu-percent 设置为 5%。
    oc autoscale dc/$MYPROJECT \
     --min=1 \
     --max=5 \
     --cpu-percent=5
    
  3. 重新运行 监视 步骤以在应用程序上生成负载。
  4. 您可以通过运行 oc get pods --watch 命令或在 Web 控制台中查看应用程序来查看正在供应的新 pod。
  5. 除去自动缩放器:
    oc delete hpa/$MYPROJECT
    

(可选) 构建容器映像并将其推送到 Container Registry

在本部分中,您将学习如何使用远程专用 Container Registry 来存储已创建的容器映像。

IBM Cloud Container Registry 提供了由 IBM 托管和管理的具备高可用性、高可扩展性和加密的多租户专用映像注册表。 可以通过设置自己的映像名称空间,然后将容器映像推送到自己的名称空间来使用 IBM Cloud Container Registry。

  1. 要确定 Container Registry URL,请运行:

    ibmcloud cr region
    
  2. 定义一个名为 MYREGISTRY 的环境变量,指向注册表,如

    export MYREGISTRY=us.icr.io
    
  3. 选取其中一个现有注册表名称空间,或创建新的注册表名称空间。 要列出现有名称空间,请使用以下命令:

    ibmcloud cr namespaces
    

    要创建新的名称空间,请运行以下命令:

    ibmcloud cr namespace-add <REGISTRY_NAMESPACE>
    
  4. 定义名为 MYNAMESPACE 的环境变量,并使其指向注册表名称空间:

    export MYNAMESPACE=<REGISTRY_NAMESPACE>
    
  5. 定义指向 IBM Cloud IAM API 密钥的环境变量名称 API_KEY :

    export API_KEY=<YOUR_API_KEY>
    

    要创建 API 密钥,请参阅此 链接

  6. 要自动访问注册表命名空间并将生成的生成器容器映像推送到 Container Registry,请创建一个秘密:

    oc create secret docker-registry push-secret --docker-username=iamapikey --docker-password=$API_KEY --docker-server=$MYREGISTRY
    
  7. 将映像拉取私钥从 default 项目复制并修补到项目:

    oc get secret all-icr-io -n default -o yaml | sed 's/default/'$MYPROJECT'/g' | oc -n $MYPROJECT create -f -
    
  8. 要使图像提取密文生效,需要在 default 服务账户中添加该密文:

    oc secrets link serviceaccount/default secrets/all-icr-io --for=pull
    

克隆样本应用程序

在此部分中,您将克隆随模板文件和 shell 脚本一起提供的 GitHub 存储库,以根据先前创建的环境变量生成 yaml 文件。 生成的文件用于构建容器映像,将该映像推送到专用容器注册表以及部署新应用程序。

  1. 在终端中,运行以下命令以将 GitHub 存储库克隆到您的机器:
    git clone https://github.com/IBM-Cloud/openshift-node-app
    
  2. 更改到应用程序目录:
    cd openshift-node-app
    

更新 BuildConfig 并将构建器映像推送到 Container Registry

在此步骤中,运行脚本以更新 openshift.template.yaml 文件的各个部分,并生成指向 Container Registry 名称空间的新 yaml 文件。

  1. 运行以下 bash 脚本以更新 openshift.template.yaml 文件中的占位符,并生成 openshift_private_registry.yaml 文件。

    ./generate_yaml.sh use_private_registry
    
  2. 从输出运行 export 命令以使用新应用程序名称设置现有 MYPROJECT 环境变量。 运行 echo $MYPROJECT 以查看新的应用程序名称。

  3. (可选) 检查生成的 openshift_private_registry.yaml 文件,以查看是否使用相应的环境变量更新了所有占位符。 下面是要执行快速检查的 3 位置。 您可以跳至下一节

  4. 可选 找到 name 属性设置为项目 ($MYPROJECT) 的 ImageStream 对象,并检查是否更新了 specdockerImageRepository 定义下的占位符 $MYREGISTRY$MYNAMESPACE$MYPROJECT

    -
    apiVersion: image.openshift.io/v1
    kind: ImageStream
    metadata:
      annotations:
        openshift.io/generated-by: OpenShiftNewApp
      creationTimestamp: null
      labels:
        app: $MYPROJECT
        app.kubernetes.io/component: $MYPROJECT
        app.kubernetes.io/instance: $MYPROJECT
      name: $MYPROJECT
    spec:
      dockerImageRepository: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT
      lookupPolicy:
        local: false
    status:
        dockerImageRepository: ""
    

    映像流及其关联标记提供了抽象,用于引用 Red Hat OpenShift on IBM Cloud Container Platform 中的容器映像

  5. 可选 检查 BuildConfig 部分下的 spec,以获取更新后的输出集 DockerImagename 下的占位符。

    spec:
      nodeSelector: null
      output:
        to:
          kind: DockerImage
          name: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest
        pushSecret:
          name: push-secret
    

    构建是将输入参数转换为结果对象的过程。 通常,该过程用于将输入参数或源代码转换为可运行的映像。 BuildConfig 对象是整个构建过程的定义。

  6. 可选 搜索 containers,检查 imagename

    containers:
    - image: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest
      name: $MYPROJECT
    
  7. 如果已更新,请 保存 YAML 文件。

使用 IBM Cloud Container Registry 部署应用程序

在本节中,您将使用生成的 openshift_private_registry.yaml 文件将应用程序部署到群集。 部署后,您将通过创建路径来访问应用程序。

  1. 使用更新的 yaml 创建一个新的 OpenShift 应用程序,同时创建构建配置(bc)、部署配置(dc)、服务(svc)和图像流(is)。

    oc apply -f openshift_private_registry.yaml
    
  2. 要检查生成器容器映像的创建并推送到 Container Registry,请运行下面的命令。

    oc logs -f bc/$PRIVREG
    

    在日志中,如果将容器映像推送到专用容器注册表,那么您应该会看到以下消息。

    Pushing image us.icr.io/mods15/vmac-openshift-app-registry:latest ...
    Getting image source signatures
    Copying blob sha256:9d038e1c7afbe92c29313557c02110e8fb796818ebb78441c68929381103a94b
    Copying blob sha256:61c671f49591a059c9b6728a9f84c16f5b00126470112ee9c9f9e01dbbfcc3ea
    Copying blob sha256:e2787650308235c87eff7d2b88c3ab217e84b74a3fa9696103bd46bb99068c7a
    Copying blob sha256:dcef409117430ed9906a59ad0a3ea0752061fbf8a9e544f4edd77667a25d85ae
    Copying blob sha256:a1f889dd610c6510c7fc091a51c247463f3cc9a7c67bdc397c9632168808f7d2
    Copying blob sha256:bd278801acd18ada10f43b732113a6fffc163011862ea6cde729f8dc59e64222
    Copying blob sha256:2d6c03ed5d15be86cdef7d9c0c9fea40a3f6b89662bca59680d037074f52bb38
    Copying blob sha256:fa2ef7f80d6fc9543f6eb472846931ed1cec2b5f776d1b67bcb1b9942e1a947e
    Copying blob sha256:ff5a4e4d3690ccc931900b63714d326cc53a58e644f8d0a4f06bf8c62f11c5c7
    Copying config sha256:01aa1ebb7be74529867106100c4e699ca2ae87f8242460771527f772e6a3d174
    Writing manifest to image destination
    Storing signatures
    Successfully pushed us.icr.io/mods15/vmac-openshift-app-registry@sha256:6847b889397704b9fb8c3122c84b505c3dc5f99a0669fb69f534d3504eec385d
    Push successful
    
  3. 您可以检查部署和服务的状态。

    oc status
    
  4. 手动导入最新的映像流以确保尽快进行部署。

    oc import-image $PRIVREG
    

    如果部署需要更多时间,那么还可以使用该命令,请参阅此 链接 以获取更多信息。

  5. 公开服务以创建新路由。

    oc expose service/$PRIVREG
    
  6. 您可以通过 IBM 提供的域访问应用程序。 运行以下命令获取 URL。

    oc get route/$PRIVREG
    
  7. 复制 HOST/PORT 值下的主机名值,并将 URL 粘贴到浏览器中,在 http://<hostname> 上查看应用程序的运行情况。 请确保URL使用 http

    您应该会看到同一应用程序在不同的路径上公开,并使用存储在专用容器注册表中的容器映像进行部署。

(可选) 将代码推送到专用 IBM Cloud Git 存储库

在这一步中,您将创建一个私有 IBM Cloud Git 资源库,并推送示例应用程序代码。 您还将学习如何在应用程序更新时自动构建和重新部署。

您需要配置 SSH 密钥才能成功推送,请查看 此处的文档Generate an SSH key pairAdd an SSH key to your GitLab account 部分下的指示信息

  1. 在浏览器中,打开 IBM Cloud Git

    以上链接适用于 us-south 区域。 对于其他区域,请运行 ibmcloud regions,并将 URL 中的 us-south 替换为区域名称。

  2. 单击 新建项目,单击 创建空白项目,然后提供 openshiftapp 作为项目名称。

  3. 可视性级别 设置为 专用

  4. 在“项目配置”下,除去 使用自述文件初始化存储库旁边的复选标记。

  5. 单击创建项目

  6. 遵循 Git 全局设置推送现有 Git 存储库 部分下的指示信息以设置 Git 并推送样本应用程序代码。

  7. 将代码推送到私有仓库后,你就可以在项目中看到示例代码了。

创建 Git 部署令牌

在本节中,您将创建 Git 部署令牌,允许对版本库进行只读访问。

生成部署令牌

  1. 在 Git repo 页面的导航面板中,单击设置 > 存储库
  2. 单击部署令牌旁边的展开
    1. 名称 字段中,输入 foropenshift,然后在 作用域下选择 read_repository。 最后单击 创建部署令牌
    2. 保存生成的用户名密码,以备将来参考。
  3. 在导航面板中,点击 项目概览,然后点击 克隆,复制 克隆与 HTTPS URL。 保存该 URL 以供未来引用。
  4. 定义环境变量,用于本教程稍后使用的用户名、密码和私有 Git 仓库 URL
    export GIT_TOKEN_USERNAME=<PRIVATE_GIT_DEPLOY_TOKEN_USERNAME>
    export GIT_TOKEN_PASSWORD=<PRIVATE_GIT_DEPLOY_TOKEN_PASSWORD>
    export REPO_URL=<PRIVATE_GIT_REPO_URL>
    

使用专用注册表和专用存储库中的代码部署新应用程序

  1. 运行以下 bash 脚本以更新 openshift.template.yaml 文件中的占位符并生成 openshift_private_repository.yaml 文件。

    ./generate_yaml.sh use_private_repository
    
  2. 从输出运行 export 命令以使用新项目名称设置现有 MYPROJECT 环境变量。

  3. 除了专用容器注册表占位符外,该脚本还会将 BuildConfig 规范下的 REPO_URL 替换为您在上述步骤中设置的环境变量。

     source:
       git:
         uri: $REPO_URL
       type: Git
    
  4. 使用更新的 yaml 创建一个新的 openshift 应用程序,同时创建构建配置(bc)、部署配置(dc)、服务(svc)和图像流(is)

    oc apply -f openshift_private_repository.yaml
    
  5. 您可以检查构建器日志。

    oc logs -f bc/$PRIVREPO
    
  6. 您可以使用以下功能检查部署和服务的状态。

    oc status
    
  7. 手动导入最新的映像流以确保尽快进行部署。

    oc import-image $PRIVREPO
    
  8. 公开服务以创建新路由。

    oc expose service/$PRIVREPO
    
  9. 您可以通过 IBM 提供的域访问应用程序。 运行以下命令获取 URL。

    oc get route/$PRIVREPO
    
  10. 复制 HOST/PORT 值下的主机名值,并将 URL 粘贴到浏览器中,在 http://<hostname> 上查看应用程序的运行情况。 请确保URL使用 http

    将使用专用 Git 存储库中的代码以及专用注册表名称空间中的容器映像来部署新应用程序。

更新应用程序并重新部署

在此步骤中,您将自动执行构建和部署过程。 每当更新应用程序并将更改推送到专用存储库时,都会运行新的构建以生成新版本的容器映像。 然后,将自动部署此映像。

  1. 您将创建新的 GitLab Webhook 触发器。 Webhook 触发器允许您通过向 Red Hat OpenShift on IBM Cloud Container Platform API 端点发送请求来触发新构建。可以使用 GitHub、GitLab、Bitbucket 或通用 Webhook 来定义这些触发器。

    oc set triggers bc $PRIVREPO --from-gitlab
    
  2. 要在 GitLab 存储库上添加 Webhook,您需要 URL 和私钥

    • 对于 Webhook GitLab URL:
      oc describe bc/$PRIVREPO | grep -A 1 "GitLab"
      
    • 对于需要在 Webhook URL 中传递的私钥:
      oc get bc/$PRIVREPO -o yaml | grep -A 3 "\- gitlab"
      
    • 在上述命令输出中,用 gitlab 下的秘密值替换 webhook GitLab URL 中的 <secret>
  3. 使用 Git repo HTTPS 链接在浏览器中打开您的私有 git 仓库,然后点击“设置”,再点击 " Webhooks "。

  4. 粘贴 URL,选择 “推送事件作为触发器”,然后点击 “添加网络挂钩”。 您应该会看到 Webhook was created 消息。

  5. 更新映像流的 ImagePolicy,以按预定时间间隔查询 Container Registry 来同步标记和映像元数据。 这将更新 tags 定义。

    oc tag $MYREGISTRY/$MYNAMESPACE/${PRIVREPO}:latest ${PRIVREPO}:latest --scheduled=true
    
  6. 在集成开发环境中打开克隆的版本库,更新本地文件的 h1 标记,并将其更改为。public/index.html 文件的标签,并将其更改为 Congratulations! <insert your name>

  7. 保存并将代码推送到版本库。

     git add public/index.html
    
     git commit -m "Updated with my name"
    
     git push -u origin master
    
  8. 可以使用 oc status 命令来检查构建和部署的进度。 部署成功后,请刷新路径主机地址以查看更新的 Web 应用程序。

    有时,部署可能最长需要 15 分钟才能导入最新的映像流。 您可以等待或使用 oc import-image $PRIVREPO 命令手动导入。 请参阅此 链接 以获取更多信息。

(可选)使用自己的自定义域名

此部分要求您拥有定制域并能够修改该域的 DNS 记录。 您将需要创建指向 IBM提供的域的 CNAME 记录。

用于设置 CNAME 记录的步骤根据 DNS 提供程序而变化。 在域名系统管理/您的域名区域下,添加一个新的 CNAME 记录,将主机(名称) 设置为 openshiftapp 或您喜欢的任何子域名,并将指向设置为 IBM无 HTTP 或 HTTPS域名

使用 HTTP

  1. <HOSTNAME> 替换为您的主机名(如 www.example.com 或 openshiftapp.example.com ),创建一条路由,在主机名上公开服务,这样外部客户就可以通过名称访问该路由。
    oc expose svc/$PRIVREPO --hostname=<HOSTNAME> --name=$PRIVREPO-domain --port=3000
    
  2. 访问您的申请表 http://<HOSTNAME>/

使用 HTTPS

  1. 要创建安全的 HTTPS 路由,您可以使用自己的证书和 CA(如 Let's Encrypt) 提供的密钥文件,也可以通过以下方式订购 Secrets Manager. 使用 create route 命令来传递证书和密钥文件。
    oc create route edge $PRIVREPO-httpsca --service=$PRIVREPO --cert=example.pem --key=example.key --hostname=<www.HOSTNAME> --port=3000
    
    在此,您使用了边缘终止。 要了解其他安全路由和终止类型 (例如,传递和重新加密),请运行 oc create route --help 命令)

除去资源

  • 删除特定于应用程序的所有资源对象:

    oc delete all --selector app=$PRIVREPO
    oc delete all --selector app=$PRIVREG
    oc delete all --selector app=$MYPROJECT
    

    要列出项目中的应用程序名称,请运行 oc get svc | awk '{print $1}'

  • 删除项目:

    oc delete project $MYPROJECT
    
  • 删除应用程序存储库:

    • 在 Git 存储库页面的导航面板中,单击 设置 > 常规
    • 单击 高级旁边的 展开
    • 单击 删除项目 并确认删除项目。
  • 从 Container Registry中删除容器映像:

    • 使用浏览器浏览到 Container Registry 的存储库页面。
    • 选择在本教程中创建的映像,然后将其删除。
  • 删除您创建的集群。

相关内容