2.8. S2I 部署


集成的 Source-to-Image (S2I)构建器是在 OpenShift 中部署应用的一种方法。S2I 是一个用于构建可重复生成的 Docker 格式容器镜像的工具。如需更多信息,请参阅 OpenShift 概念

先决条件

  • ROSA 集群

2.8.1. 检索您的登录命令

流程

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

    rosa whoami
    Copy to Clipboard Toggle word wrap

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

  2. 如果您没有登录命令行界面(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

© 2025 Red Hat