Web 应用程序功能强大,在企业和个人使用上具有很大的潜力。但在创建、使用和部署 Web 应用程序时,必须确保其可靠性、可扩展性、可用性等。通过将 Web 应用程序容器化并部署到云端,即可对这些重要任务加以妥善处理。
本教程将集中介绍如何在 IBM Cloud 上构建云就绪的 Express.js 应用程序。本教程是在 Building a Cloud Ready Express.js Application 工作坊基础上的延伸。在本教程中,您将学习如何从原始教程中提取 Node.js 应用程序并将其部署到 IBM Cloud 上的 Kubernetes 集群中。
利用IBM Cloud Lite 快速轻松地构建您的下一个应用程序。您的免费帐户从不过期,而且您会获得 256 MB 的 Cloud Foundry 运行时内存和包含 Kubernetes 集群的 2 GB 存储空间。了解所有细节并确定如何开始。如果您不熟悉 IBM Cloud,请查阅 cognitiveclass.ai 上的 IBM Cloud Essentials 课程 。
要完成本教程中的步骤,您需要:
注意:本教程可使用 Free 类型集群来完成。与 Kubernetes Ingress 相关的两个可选部分和定制域需要类型为 Standard 的付费集群。
遵循 原始教程 中从 设置 到 第 5 步 之间的说明进行操作。在原始教程中,您需要完成以下操作:
完成此步骤后,第 1 步中的 Kubernetes 集群应已配置完成,此时可继续执行第 3 步。
现在您已构建了应用程序的 Helm Chart,应用程序部署流程已大幅简化。
使用以下步骤将 Express.js 应用程序部署到 Kubernetes 中:
ibmcloud cr namespaces
ibmcloud cr namespace-add < NAMESPACE >
export MYNAMESPACE=< NAMESPACE > export MYPROJECT=nodeserver
ibmcloud cr region
来识别容器注册表。将 MYREGISTRY 环境变量设置为您的注册表。 export MYREGISTRY=< REGISTRY >
docker tag nodeserver-run:1.0.0 ${MYREGISTRY}/${MYNAMESPACE}/${MYPROJECT}:v1.0.0
,为用于创建容器以本地运行应用的 Docker 镜像添加标记 ibmcloud cr login docker push ${MYREGISTRY}/${MYNAMESPACE}/${MYPROJECT}:v1.0.0
chart/nodeserver
中创建名为 rbac.yaml
的文件。此文件将充当配置文件,用于创建对集群具有 cluster-admin 角色的服务帐户。将以下内容复制到此文件中: apiVersion: v1 kind: ServiceAccount metadata: name: tiller namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tiller roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: tiller namespace: kube-system
chart/nodeserver
目录运行以下命令来设置配置: kubectl create -f rbac.yaml helm init --service-account tiller
helm version
,并验证 Client 与 Server 运行的版本是否相同。 chart/nodeserver/values.yaml
文件修改为使用 IBM Cloud 容器注册表上的镜像。运行 echo ${MYREGISTRY}/${MYNAMESPACE}/${MYPROJECT}
,并将 repository
字段更改为此命令的结果。此外,将 tag
字段更改为 v1.0.0
。 注意:如果容器注册表以 bluemix.net
结束,那么转至此处,查找以 icr.io
结尾的已更新注册表区域的域名,并针对 chart/nodeserver/values.yaml
中的 repository
对其进行更新。
chart/nodeserver
目录运行以下命令,以在云上安装 Helm Chart:
helm install . --name ${MYPROJECT}
如果应用程序部署成功,您将会看到一条确认消息。要访问云上目前正在运行的应用程序,可运行 kubectl get services
并找到 nodeserver-service
的 PORT
。接下来,转至 IBM Cloud 上的集群仪表板,找到集群工作节点的 Public IP
。
在浏览器中打开新选项卡/窗口,并转至:
现在,您应可在浏览器中看到云上正在运行的应用程序。
IBM Cloud 提供了 Kubernetes 仪表板,用于在云上监视 Kubernetes。可通过 IBM Cloud 仪表板上的集群访问此仪表板。
现在,您已在 IBM Cloud 上使用 Docker、Helm 和 Kubernetes 部署了 Express.js 应用程序!
本文翻译自: Build a cloud-ready Express.js application on IBM Cloud (2019-05-17)
我来评几句
登录后评论已发表评论数()