根据运用资源当前的形态,在OpenShift上紧张有几种支配运用的办法:
1. 支配运用镜像:直接支配终极的运用镜像。此过程适宜用在生产环境,由于此时的运用镜像已是经由全面测试验证的,该镜像中包括可运用所须要的所有资源。由于支配过程中不会再动态下载任何运用依赖包,因此可直接在离线环境中支配,支配后可直接运行。
2. 支配运用代码:OpenShift供应了一种称为Source 2 Image(S2I)工具,利用它可以直接以运用代码为源支配运用。在此过程中S2I会自动下载运用所需依赖包,然后编译并打包运用,末了将运用包、运用依赖包和根本镜像打包成运用镜像,这样就可以在OpenShift运行该运用镜像了。

由于可以将运用代码自动经由一系列过程变为可运行的运用镜像,因此此过程非常适宜用在运用开拓测试阶段。尤其是合营开拓工具,可以将运用代码支配到OpenShift上进行测试。
3. 支配运用包:类似支配办法2,只不过S2I工具是从运用包开始支配过程的。
4. 支配Dockerfile资源:OpenShift会先根据Dockerfile定义构建运用容器镜像,然后再将天生的容器镜像推送到内部的Image Registry,OpenShift然后再支配该镜像。
下面我们分别先容上述支配运用的操作过程。
支配运用的支配运用镜像1. 打开浏览器打开OCP_MASTER_URL页面,然后用USER_ID用户登录进入OpenShift掌握台。
2. 在登录后的切换到Developer视图,进入Advanced页面点击Create Project按钮,并在Create Project窗口中填写:
Name: USER-ID-parksmap
3. 点击Create按钮,项目即创建成功。
4. 点击左侧+Add,然后点击Container Image。
5. 在Deploy Image页面中供应以下Image Name,然后回车。
openshiftroadshow/parksmap
6. 在识别出镜像后点击页面下方的Create按钮,OpenShift会开始支配此App Image,稍后页面将显示下图Topology界面。当App Image成功支配后,外圈会变成深蓝色。
7. 将鼠标放在上图parksmap图标的右上方的箭头处(会弹出的Open URL的提示),然后点击箭头。此时会弹出一个新页面显示刚刚支配好的运用。
8. 回到OpenShift掌握台,点击parksmap图标,右侧会滑出干系信息。
9. 点击上图的Pod实例名链接,将显示该Pod的Overveiw页面,见下图(只有安装了OpenShift的Metric功能才能显示出数据)。
10. 进入Logs,查看Pod中容器的日志。
11. 回到Topology页面,查看parksmap运用的Overview,可以通过点击pod右侧的向上线箭头增加pod的数量。
12. 在命令终端中实行以下命令登录OpenShift,然后查看项目中的pod。除了2个正在Running的Pod外,还有一个名为parksmap-1-deploy的Pod,它是专门用来支配运用的,在支配完运用后就变为Completed状态了。
$ oc login OCP_API_URL -u USER-ID -p USER-PW$ oc get podNAME READY STATUS RESTARTS AGEparksmap-1-2w9mf 1/1 Running 0 4h10mparksmap-1-deploy 0/1 Completed 0 4h10mparksmap-1-ph8j2 1/1 Running 0 178m
支配运用代码
1. 通过OpenShift掌握台创建一个新项目USER-ID-cakephp。
2. 点击OpenShift掌握台左侧的+Add,然后在页面右侧点击From Git。
3. 在Import from git页面中,将Git Repo URL栏设为https://github.com/sclorg/cakephp-ex.git。回车后,页面会显示Builder Image区域。
4. Builder Image区域选中php,其它都接管缺省即可,末了点击下方的Create。
5. 依次实行以下命令,通过日志查看构建(Build)运用的情形。可以从Build的日志中看到OpenShift会先从GitHub高下载运用代码,然后根据dockerfile的定义步骤将运用代码和Builder Image打包,在这个过程中会下载运行php运用所依赖的文件包。末了将天生的App Image推送到OpenShift内部的Image Registry。可以通过image-registry.openshift-image-registry.svc:5000/user1-parksmap/cakephp-ex-git访问到该App Image。
$ oc get buildNAME TYPE FROM STATUS STARTED DURATIONcakephp-ex-git-1 Source Git@133cb8b Complete 3 hours ago 1m45s$ oc logs -f build/cakephp-ex-git-1Cloning "https://github.com/sclorg/cakephp-ex.git" ... Commit: 133cb8b0b9a79944b1620acf17fe9f07825e0b68 (Get rid off EOL php version) Author: Petr "Stone" Hracek <phracek@redhat.com> Date: Thu Jan 2 09:48:33 2020 +0100Caching blobs under "/var/cache/blobs".Getting image source signaturesCopying blob sha256:1cd26fbb2b2181a18c41ece85dff8b293e399e50dc3abe227b1940450bf6298bCopying blob sha256:4fbc3bafa3d4400bb97a733c1fe12f2f99bf38b9d5b913d5034f29798739654dCopying blob sha256:707235ac60367dff674607b0be2e18a83daea6dc2c8fb7330dbf7de29baf094bCopying blob sha256:0453406be68523ccc82999f84fffc57af64e00d9be0b75169c642c952b9bf7bc... ...######以下省略N行......Pushing image image-registry.openshift-image-registry.svc:5000/user1-cakephp/cakephp-ex-git:latest ...Getting image source signaturesCopying blob sha256:5fc6b6797fe6bcbd34f4ea77d1d4b4918e49a68d51fa3c2340a7c98837368661Copying blob sha256:0453406be68523ccc82999f84fffc57af64e00d9be0b75169c642c952b9bf7bcCopying blob sha256:4fbc3bafa3d4400bb97a733c1fe12f2f99bf38b9d5b913d5034f29798739654dCopying blob sha256:1cd26fbb2b2181a18c41ece85dff8b293e399e50dc3abe227b1940450bf6298bCopying blob sha256:707235ac60367dff674607b0be2e18a83daea6dc2c8fb7330dbf7de29baf094bCopying blob sha256:34971b2d1eb98e410c2802e6bb3a7f499f9c5bff1b870ed329089ecdb21cf856Copying config sha256:b77051c0a30366462c246e26211394487bb638f0c3648aacaaca553824c056dcWriting manifest to image destinationStoring signaturesSuccessfully pushed image-registry.openshift-image-registry.svc:5000/user1-parksmap/cakephp-ex-git@sha256:a90e60a420a64b30c6382cb3e7685e1023a3242311745a9e38679c742b4ea9dfPush successful
6. 实行以下命令查看支配进度。当为以下状态时解释运用已经支配好。个中cakephp-ex-git-1-build卖力下载运用代码和其依赖的文件,然后将其和Builder Image打包成App Image,而cakephp-ex-git-1-deploy卖力将App Image支配到OpenShift上。
$ oc get podNAME READY STATUS RESTARTS AGEcakephp-ex-git-1-build 0/1 Completed 0 144mcakephp-ex-git-1-deploy 0/1 Completed 0 142mcakephp-ex-git-1-nvmzz 1/1 Running 0 142m
7. 查看访问运用的Route。
$ oc get routeNAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARDcakephp-ex-git cakephp-ex-git-user1-parksmap.apps.cluster-beijing-c70a.beijing-c70a.example.opentlc.com cakephp-ex-git 8080-tcp None
8. 用浏览器打开Route的地址即可访问运用。
支配运用包1. 按顺序实行命令,先创建USER-ID-war项目。
$ oc new-project USER-ID-mywar
2. 以下可以任选一种办法实行:可以直接支配在GitHub上的war(文件名必须是ROOT.war),也可先将war文件下载到本地,然后再支配。
直接支配在GitHub上的ROOT.war,然后查看Build日志。把稳:在Build日志中可以看到将ROOT.war复制到干系目录中,然后天生App Image并推送到OpenShift内部的Registry上。
$ oc new-app --name=mywar jboss-webserver31-tomcat8-openshift:1.2~https://github.com/liuxiaoyu-git/tomcat-war$ oc logs -f bc/mywar。。。STEP 8: RUN /usr/local/s2i/assembleCopying all war artifacts from /tmp/src directory into /opt/webserver/webapps for later deployment...'/tmp/src/ROOT.war' -> '/opt/webserver/webapps/ROOT.war'Copying all war artifacts from /tmp/src/deployments directory into /opt/webserver/webapps for later deployment。。。$ oc expose svc/mywar
先将ROOT.war文件下载到本地,然后在指定Builder Image(jboss-webserver31-tomcat8-openshift:1.2)创建运用,末了再根据ROOT.war开始构建App Image。把稳:在Build日志中可以看到将ROOT.war复制到干系目录中,然后天生App Image并推送到OpenShift内部的Registry上。
$ curl -LO https://raw.githubusercontent.com/liuxiaoyu-git/tomcat-war/master/ROOT.war$ oc new-app --name=mywar jboss-webserver31-tomcat8-openshift:1.2~.$ oc start-build mywar --from-file=ROOT.war$ oc logs -f bc/mywar。。。STEP 8: RUN /usr/local/s2i/assembleCopying all war artifacts from /tmp/src directory into /opt/webserver/webapps for later deployment...'/tmp/src/ROOT.war' -> '/opt/webserver/webapps/ROOT.war'Copying all war artifacts from /tmp/src/deployments directory into /opt/webserver/webapps for later deployment
3. 由于OpenShift不会为通过命令行办法创建的App自动创建Route,因此还需手动根据Service创建Route。然后得到mywar的Route的访问地址,用浏览器访问运用即刻。
$ oc expose svc mywar$ oc get route mywar NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARDmywar mywar-mywar.apps.cluster-beijing-c70a.beijing-c70a.example.opentlc.com mywar 8080-tcp edge None
支配Dockerfile资源
OpenShift可以直接支配Dockerfile资源,实在OpenShift后台须要先根据Dockerfile构建镜像,然后再支配该镜像。
1. 先创建USER-ID-dockerfile项目。
$ oc new-project USER-ID-dockerfile
2. 首先查看Dockerfile内容。
$ curl https://raw.githubusercontent.com/liuxiaoyu-git/openshift-dockerfile-example/master/DockerfileFROM bash:latest CMD ["bash", "-c", "while true; do sleep 3; echo 'Sleep.'; done"]
3. 然后根据Dockerfile创建运行运用。
$ oc new-app --name sleep https://github.com/liuxiaoyu-git/openshift-dockerfile-example.git$ oc logs -f bc/sleep
4. 查看运行sleep的pod,然后查看pod日志确认运行正常。
$ oc get pod -wNAME READY STATUS RESTARTS AGEsleep-1-build 0/1 Completed 0 62ssleep-1-deploy 0/1 Completed 0 30ssleep-1-qpt5z 1/1 Running 0 16s$ oc logs pod/sleep-1-qpt5zSleepSleep...Sleep