《开源容器云OpenShift:构建基于Kubernetes的企业应用云平台》一2.4 部署应用

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介:

本节书摘来自华章出版社《开源容器云OpenShift:构建基于Kubernetes的企业应用云平台》一书中的第2章,第2.4节,作者 陈耿 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.4 部署应用

在前几节中,我们完成了众多关键组件的部署。现在是时候尝试部署一些应用了。本节我们将部署一个CakePHP应用及MySQL数据库。
1)登录OpenShift Web控制台。单击New project按钮。创建一个名为hello-world-php的项目。输入项目名称hello-world-php及项目显示名Hello World PHP。单击Create按钮创建项目,如图2-13所示。
2)在服务目录的过滤器中输入cake,找到cakephp-mysql-example模板,如图2-14所示。

image

3)选取Template后将跳转至Template的参数输入页面。在参数输入页面为Application
Hostname属性赋值php.apps.exmaple.com,如图2-15所示。

image

4)单击模板参数输入页面底部的Create按钮,执行部署,如图2-16所示。
image

5)执行部署后,浏览器将跳转至部署完成页面,如图2-17所示。

image

6)单击确认页面的Continue overview链接,跳转到项目的概览页面。此时Open-Shift会在后台创建相应的对象,并下载相关的容器镜像。MySQL容器一般会较快完成启动,因为CakePHP应用涉及一个镜像构建的过程,即Source to Image。关于这个镜像构建的细节,本书后续再表。单击界面上的view log链接可以查看相关的日志,如图2-18所示。

image

7)稍等片刻后,在CakePHP的构建日志界面,可以看到镜像构建的实时日志输出,如图2-19所示。从日志中可以看到,OpenShift会从GitHub仓库中下载指定的PHP源代码,然后将代码注入一个含PHP运行环境的镜像,最终生成一个包含PHP应用及PHP运行环境的新镜像,并将新的镜像推送到前文部署的内部镜像仓库。

image

Cloning "https://github.com/openshift/cakephp-ex.git" ...
Commit: 701d706b7f2b50ee972d0bf76990042f6c0cda5c (Merge pull request #42 from bparees/recreate)
Author: Ben Parees<bparees@users.noreply.github.com>
Date:   Mon Aug 22 14:44:49 2016 -0400
---> Installing application source...
Pushing image 172.30.73.49:5000/hello-world-php/cakephp-mysql-example:latest ...
Pushed 0/10 layers, 1% complete
Pushed 1/10 layers, 50% complete
Pushed 2/10 layers, 50% complete
Pushed 3/10 layers, 50% complete
Pushed 4/10 layers, 50% complete
Pushed 5/10 layers, 50% complete
Pushed 6/10 layers, 61% complete
Pushed 7/10 layers, 71% complete
Pushed 7/10 layers, 78% complete
Pushed 8/10 layers, 85% complete
Pushed 8/10 layers, 91% complete
Pushed 8/10 layers, 97% complete
Pushed 9/10 layers, 99% complete
Pushed 10/10 layers, 100% complete
Push successful

如果构建过程中出现了docker push镜像到内部镜像仓库相关的错误,请检查内部镜像仓库是否正确部署与配置。第一次推送镜像的时间会比较长,因为此时镜像仓库中还没有相应的镜像层(Layer)。后续构建的镜像推送时间将会大大加快,因为大量可以重用的镜像层已经存在于内部的镜像仓库中了。
8)构建完成后,单击左侧菜单栏的Overview按钮,回到项目主页,如图2-20所示。此时可见CakePHP应用已经启动完毕。

image

OpenShift将我们指定的域名php.apps.example.com与CakePHP容器应用进行了关联。单击CakePHP应用右上角的php.apps.example.com域名链接即可打开容器应用,如图2-21所示。

image

php.apps.example.com域名只是我们测试用的域名,并不能被互联网的域名解析服务器解析。需要修改浏览器所在机器的hosts文件,手工添加解析将php.apps.example.com指向实验机器的IP地址。
Windows系统,请修改c:windowssystem32/drivers/etc/hosts文件。
Linux系统,请修改/etc/hosts文件。
在这个应用部署的例子中,我们通过选择一个预定义的应用部署模板,快速部署了一个CakePHP应用及一个MySQL数据库。整个部署的过程,不外乎几次鼠标单击。在实际的使用中,企业可以在服务目录中加入各种不同的应用服务模板,构建出企业内部软件市场式的服务目录。用户或管理员可以通过服务目录选取需要部署的软件应用模板,输入相应的参数,然后执行部署,相关的应用服务便会以容器的方式运行在指定的服务器集群上。这些应用服务可以是一个单体的应用,也可以包含多个不同的组件,如前文部署的示例,包含了一个前端PHP应用及一个后端MySQL数据库。通过软件市场式的服务目录,即使对OpenShift没有太多了解的用户,也能快速部署复杂的应用。作为一个容器云平台,OpenShift极大地提升了应用部署的效率,使得应用部署实现自动化及标准化。
应用部署出错了?别担心,可以通过项目左边的侧栏菜单打开Monitor界面查看项目后台的事件,排查相应的错误,如图2-22所示。

image

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
20天前
|
Prometheus Kubernetes 监控
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
|
16天前
|
应用服务中间件 调度 nginx
Kubernetes的Pod调度:让你的应用像乘坐头等舱!
Kubernetes的Pod调度:让你的应用像乘坐头等舱!
|
18天前
|
存储 Kubernetes 负载均衡
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
18 1
|
20天前
|
Kubernetes 负载均衡 应用服务中间件
k8s学习--ingress详细解释与应用(nginx ingress controller))
k8s学习--ingress详细解释与应用(nginx ingress controller))
|
20天前
|
缓存 Kubernetes 负载均衡
k8s学习--sessionAffinity会话保持(又称会话粘滞)详细解释与应用
k8s学习--sessionAffinity会话保持(又称会话粘滞)详细解释与应用
|
27天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
|
1月前
|
Kubernetes 监控 Cloud Native
云原生入门:从传统应用到容器化部署的旅程
【9月更文挑战第19天】在数字化浪潮中,企业正迅速将目光投向云原生技术,以实现更快的应用开发和更灵活的资源管理。本文将通过一个简单示例引导读者理解如何将传统应用转变为云原生应用,并部署至云端。我们将探索容器化技术的基础,以及它如何帮助企业解锁现代软件交付的速度和效率。准备好让你的应用乘上云原生的快车了吗?让我们开始这段令人兴奋的旅程吧!
|
1月前
|
Kubernetes Cloud Native Linux
云原生入门:Kubernetes的简易部署与应用
【8月更文挑战第49天】在云原生的世界里,Kubernetes(K8s)是一颗璀璨的星。本文将带你走进K8s的世界,从安装到简单应用,轻松驾驭这个强大的容器编排工具。让我们一起探索云原生的奥秘,解锁新技能!
|
20天前
|
存储 Kubernetes 调度
k8s学习--k8s群集部署zookeeper应用及详细解释
k8s学习--k8s群集部署zookeeper应用及详细解释
|
20天前
|
存储 Kubernetes 数据安全/隐私保护
k8s学习--Secret详细解释与应用
Secret 支持四种类型: - **Opaque Secrets**:存储任意类型机密数据,需自行加密。 - **Service Account Token Secrets**:自动管理 API 访问令牌。 - **Docker Registry Secrets**:存储 Docker 私有仓库认证信息。 - **TLS Secrets**:存储 TLS 证书和私钥,用于加密通信。

相关产品

  • 容器服务Kubernetes版