2.8. S2I 部署
集成的 Source-to-Image (S2I)构建器是在 OpenShift 中部署应用的一种方法。S2I 是一个用于构建可重复生成的 Docker 格式容器镜像的工具。如需更多信息,请参阅 OpenShift Container Platform 的常见术语术语。在开始此过程前,您必须在 AWS 集群上部署 Red Hat OpenShift Service。
2.8.1. 检索您的登录命令 复制链接链接已复制到粘贴板!
流程
运行以下命令,确认您已登录到 ROSA 命令行界面(CLI) (
rosa):rosa whoami如果您登录到命令行界面,请跳至"创建新项目"。如果您没有登录到命令行界面,请继续这个过程。
如果您没有登录 ROSA CLI,在 OpenShift Cluster Manager 中,单击右上角的名称旁边的下箭头,然后选择 Copy Login Command。
- 此时会打开一个新标签页。输入您的用户名和密码,然后选择身份验证方法。
- 点 Display Token
- 将命令复制到"使用此令牌登录"。
在终端中运行复制的命令,登录 CLI。
输入示例
$ oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443输出示例
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>
2.8.2. 创建新项目 复制链接链接已复制到粘贴板!
运行以下命令,通过 CLI 创建新项目:
$ oc new-project ostoy-s2i
2.8.3. 对 OSToy 存储库进行分叉 复制链接链接已复制到粘贴板!
要根据源代码的更改触发自动构建,您必须设置 GitHub Webhook。当您将代码推送到 GitHub 存储库时,webhook 将触发 S2I 构建。要设置 webhook,您必须首先 fork 存储库。
将 <UserName > 替换为本指南中的以下 URL 的 GitHub 用户名。
2.8.4. 使用 S2i 在集群中部署 OSToy 复制链接链接已复制到粘贴板!
流程
向 OpenShift 添加机密。
这个示例模拟
.env文件。文件可轻松直接移到 OpenShift 环境中,甚至可以在机密中重命名。运行以下命令,将 <
UserName> 替换为您的 GitHub 用户名:$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
将 ConfigMap 添加到 OpenShift。
本例模拟 HAProxy 配置文件,该文件通常用于覆盖 OpenShift 应用中的默认配置。可以在 ConfigMap 中重命名文件。
运行以下命令,将 <
UserName> 替换为您的 GitHub 用户名:$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
部署微服务。
您必须部署微服务,以确保服务环境变量可从 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输出示例
--> 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.
检查微服务的状态。
运行以下命令,检查微服务是否已创建并正确运行:
$ oc status输出示例
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等待微服务已被成功部署。您还可以通过 Web UI 对其进行检查。
部署前端 UI。
应用程序依赖于几个环境变量来定义外部设置。
附加 secret 和 ConfigMap 并创建 PersistentVolume:
$ oc new-app https://github.com/<UserName>/ostoy \ --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE输出示例
--> 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.
运行以下命令来更新部署:
$ oc patch deployment ostoy --type=json -p \ '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'设置存活度探测。
创建存活度探测,以确保容器集在应用中出现错误时重新启动。
运行以下命令:
$ oc set probe deployment ostoy --liveness --get-url=http://:8080/health
将 secret、ConfigMap 和持久性卷附加到部署。
运行以下命令来附加 secret:
$ oc set volume deployment ostoy --add \ --secret-name=ostoy-secret \ --mount-path=/var/secret运行以下命令来附加 ConfigMap:
$ oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/config运行以下命令来创建并附加您的持久性卷:
$ oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
将 UI 应用公开为 OpenShift Route。
运行以下命令,将应用程序部署为使用包含的 TLS 通配符证书的 HTTPS 应用程序:
$ oc create route edge --service=ostoy --insecure-policy=Redirect
使用以下方法浏览应用程序:
运行以下命令,使用 OSToy 应用程序打开 Web 浏览器:
$ python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"运行以下命令获取应用程序的路由,并将路由复制并粘贴到您的浏览器中:
$ oc get route