在现代 web 应用开发中,部署是一个非常重要的步骤。Google Kubernetes Engine (GKE) 是 Google Cloud Platform 中的一项服务,它提供了一种简单、可靠、可扩展的方式来部署、管理和扩展容器化应用程序。在本文中,我们将学习如何使用 GKE 部署 web 应用。
准备工作
在开始之前,您需要完成以下准备工作:
- 创建一个 Google Cloud Platform 帐号,并启用 Kubernetes Engine API。
- 安装并配置 Google Cloud SDK。
- 创建一个 Google Cloud Platform 项目。
步骤一:创建 Kubernetes 集群
首先,我们需要创建一个 Kubernetes 集群。在 Google Cloud Console 中,选择 Kubernetes Engine -> Clusters,然后点击“创建集群”。
在创建集群的页面中,您需要指定以下信息:
- 集群名称。
- 集群所在的区域。
- 集群的节点数量和节点类型。
- Kubernetes 版本。
创建集群需要一些时间,一旦集群创建完成,您将看到它出现在集群列表中。
步骤二:创建 Docker 镜像
在将应用程序部署到 Kubernetes 集群之前,我们需要将应用程序打包为 Docker 镜像。在本文中,我们将创建一个简单的 Node.js web 应用程序,并将其打包为 Docker 镜像。
首先,创建一个名为 app.js
的文件,其中包含以下代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - ------------------ ---------------- --------------- --------------- --------- --- ----- ---- - ---------------- -- ----- ------------------- -- -- - ------------------- --------- -- ---- ---------- ---
然后,创建一个名为 Dockerfile
的文件,其中包含以下代码:
FROM node:12-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8080 CMD [ "npm", "start" ]
在本例中,我们使用 Node.js 作为应用程序的运行时,并在 Dockerfile 中指定了应用程序的依赖项、端口和启动命令。
接下来,使用以下命令将应用程序打包为 Docker 镜像:
docker build -t gcr.io/[PROJECT_ID]/web-app:v1 .
其中,[PROJECT_ID]
是您的 Google Cloud Platform 项目的 ID。此命令将在本地计算机上创建一个名为 web-app
的 Docker 镜像,并将其推送到 Google Container Registry (GCR) 中。
步骤三:部署应用程序
现在,我们已经准备好将应用程序部署到 Kubernetes 集群中了。在 Google Cloud Console 中,选择 Kubernetes Engine -> Workloads,然后点击“创建工作负载”。
在创建工作负载的页面中,您需要指定以下信息:
- 工作负载名称。
- 部署的 Docker 镜像。
- 工作负载所在的 Kubernetes 集群和命名空间。
- 应用程序的端口和环境变量。
创建工作负载需要一些时间,一旦工作负载创建完成,您将看到它出现在工作负载列表中。
步骤四:暴露服务
现在,我们已经成功将应用程序部署到 Kubernetes 集群中了,但是我们还需要将其暴露给外部用户。在 Kubernetes 中,我们可以使用服务来暴露应用程序。
在 Google Cloud Console 中,选择 Kubernetes Engine -> Services,然后点击“创建服务”。
在创建服务的页面中,您需要指定以下信息:
- 服务名称。
- 服务的类型和端口。
- 服务所在的 Kubernetes 集群和命名空间。
- 服务的目标端口和选择器。
创建服务需要一些时间,一旦服务创建完成,您将看到它出现在服务列表中。
现在,您可以使用服务的 IP 地址或域名来访问应用程序了。
结论
在本文中,我们学习了如何使用 Google Kubernetes Engine 部署 web 应用程序。通过使用 GKE,我们可以轻松地部署、管理和扩展容器化应用程序,从而使我们的 web 应用程序更具可靠性和可扩展性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6746701456a8046993c84e32