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