2.8. S2I 部署


集成的 Source-to-Image (S2I)构建器是在 OpenShift 中部署应用的一种方法。S2I 是一个用于构建可重复生成的 Docker 格式容器镜像的工具。如需更多信息,请参阅 OpenShift Container Platform 的常见术语术语。在开始此过程前,您必须在 AWS 集群上部署 Red Hat OpenShift Service。

2.8.1. 检索您的登录命令

流程

  1. 运行以下命令,确认您已登录到 ROSA 命令行界面(CLI) (rosa):

    rosa whoami
    Copy to Clipboard Toggle word wrap

    如果您登录到命令行界面,请跳至"创建新项目"。如果您没有登录到命令行界面,请继续这个过程。

  2. 如果您没有登录 ROSA CLI,在 OpenShift Cluster Manager 中,单击右上角的名称旁边的下箭头,然后选择 Copy Login Command

  3. 此时会打开一个新标签页。输入您的用户名和密码,然后选择身份验证方法。
  4. Display Token
  5. 将命令复制到"使用此令牌登录"。
  6. 在终端中运行复制的命令,登录 CLI。

    输入示例

    $ oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443
    Copy to Clipboard Toggle word wrap

    输出示例

    Logged into "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided.
    
    You don't have any projects. You can try to create a new project, by running
    
    oc new-project <project name>
    Copy to Clipboard Toggle word wrap

2.8.2. 创建新项目

  • 运行以下命令,通过 CLI 创建新项目:

    $ oc new-project ostoy-s2i
    Copy to Clipboard Toggle word wrap

2.8.3. 对 OSToy 存储库进行分叉

要根据源代码的更改触发自动构建,您必须设置 GitHub Webhook。当您将代码推送到 GitHub 存储库时,webhook 将触发 S2I 构建。要设置 webhook,您必须首先 fork 存储库

重要

<UserName > 替换为本指南中的以下 URL 的 GitHub 用户名。

2.8.4. 使用 S2i 在集群中部署 OSToy

流程

  1. 向 OpenShift 添加机密。

    这个示例模拟 .env 文件。文件可轻松直接移到 OpenShift 环境中,甚至可以在机密中重命名。

    • 运行以下命令,将 < UserName&gt; 替换为您的 GitHub 用户名:

      $ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
      Copy to Clipboard Toggle word wrap
  2. 将 ConfigMap 添加到 OpenShift。

    本例模拟 HAProxy 配置文件,该文件通常用于覆盖 OpenShift 应用中的默认配置。可以在 ConfigMap 中重命名文件。

    • 运行以下命令,将 < UserName&gt; 替换为您的 GitHub 用户名:

      $ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
      Copy to Clipboard Toggle word wrap
  3. 部署微服务。

    您必须部署微服务,以确保服务环境变量可从 UI 应用使用。

    --context-dir 构建 Git 存储库中的 微服务 目录中定义的应用。app 标签确保用户界面(UI)应用和微服务都在 OpenShift UI 中分组。

    • 运行以下命令来创建微服务,将 < UserName> 替换为您的 GitHub 用户名:

      $ oc new-app https://github.com/<UserName>/ostoy \
          --context-dir=microservice \
          --name=ostoy-microservice \
          --labels=app=ostoy
      Copy to Clipboard Toggle word wrap

      输出示例

      --> Creating resources with label app=ostoy ...
          imagestream.image.openshift.io "ostoy-microservice" created
          buildconfig.build.openshift.io "ostoy-microservice" created
          deployment.apps "ostoy-microservice" created
          service "ostoy-microservice" created
      --> Success
          Build scheduled, use 'oc logs -f buildconfig/ostoy-microservice' to track its progress.
          Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
           'oc expose service/ostoy-microservice'
          Run 'oc status' to view your app.
      Copy to Clipboard Toggle word wrap

  4. 检查微服务的状态。

    • 运行以下命令,检查微服务是否已创建并正确运行:

      $ oc status
      Copy to Clipboard Toggle word wrap

      输出示例

      In project ostoy-s2i on server https://api.myrosacluster.g14t.p1.openshiftapps.com:6443
      
      svc/ostoy-microservice - 172.30.47.74:8080
        dc/ostoy-microservice deploys istag/ostoy-microservice:latest <-
          bc/ostoy-microservice source builds https://github.com/UserName/ostoy on openshift/nodejs:14-ubi8
          deployment #1 deployed 34 seconds ago - 1 pod
      Copy to Clipboard Toggle word wrap

      等待微服务已被成功部署。您还可以通过 Web UI 对其进行检查。

  5. 部署前端 UI。

    应用程序依赖于几个环境变量来定义外部设置。

    • 附加 secret 和 ConfigMap 并创建 PersistentVolume:

      $ oc new-app https://github.com/<UserName>/ostoy \
          --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE
      Copy to Clipboard Toggle word wrap

      输出示例

      --> Creating resources ...
          imagestream.image.openshift.io "ostoy" created
          buildconfig.build.openshift.io "ostoy" created
          deployment.apps "ostoy" created
          service "ostoy" created
      --> Success
          Build scheduled, use 'oc logs -f buildconfig/ostoy' to track its progress.
          Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
           'oc expose service/ostoy'
          Run 'oc status' to view your app.
      Copy to Clipboard Toggle word wrap

  6. 运行以下命令来更新部署:

    $ oc patch deployment ostoy --type=json -p \
        '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'
    Copy to Clipboard Toggle word wrap
  7. 设置存活度探测。

    创建存活度探测,以确保容器集在应用中出现错误时重新启动。

    • 运行以下命令:

      $ oc set probe deployment ostoy --liveness --get-url=http://:8080/health
      Copy to Clipboard Toggle word wrap
  8. 将 secret、ConfigMap 和持久性卷附加到部署。

    1. 运行以下命令来附加 secret:

      $ oc set volume deployment ostoy --add \
          --secret-name=ostoy-secret \
          --mount-path=/var/secret
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令来附加 ConfigMap:

      $ oc set volume deployment ostoy --add \
          --configmap-name=ostoy-config \
          -m /var/config
      Copy to Clipboard Toggle word wrap
    3. 运行以下命令来创建并附加您的持久性卷:

      $ oc set volume deployment ostoy --add \
          --type=pvc \
          --claim-size=1G \
          -m /var/demo_files
      Copy to Clipboard Toggle word wrap
  9. 将 UI 应用公开为 OpenShift Route。

    • 运行以下命令,将应用程序部署为使用包含的 TLS 通配符证书的 HTTPS 应用程序:

      $ oc create route edge --service=ostoy --insecure-policy=Redirect
      Copy to Clipboard Toggle word wrap
  10. 使用以下方法浏览应用程序:

    • 运行以下命令,使用 OSToy 应用程序打开 Web 浏览器:

      $ python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"
      Copy to Clipboard Toggle word wrap
    • 运行以下命令获取应用程序的路由,并将路由复制并粘贴到您的浏览器中:

      $ oc get route
      Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat