在 Kubernetes 上部署应用程序:完整指南!

2025-05-28

在 Kubernetes 上部署应用程序:完整指南!

Kubernetes 是一个开源平台,用于自动化部署、扩展和管理容器化应用程序。它是一种流行的容器编排工具,能够将大量容器作为一个单元进行管理,而无需单独管理每个容器。

Kubernetes 的重要性

Kubernetes 已成为管理和部署现代应用程序的必备工具,其重要性在于它能够提供统一的平台,用于自动化和扩展应用程序的部署、管理和扩展。借助 Kubernetes,组织可以提高开发和部署流程的效率和敏捷性,从而加快产品上市速度并降低运营成本。Kubernetes 还提供了高度的可扩展性,使组织能够随着业务的增长和发展轻松扩展其应用程序。

此外,Kubernetes 还提供强大的安全功能,确保应用程序免受潜在威胁和漏洞的侵害。凭借其活跃的社区和广泛的生态系统,Kubernetes 为组织提供了丰富的资源、工具和服务,帮助他们持续改进和增强其应用程序。总而言之,使用 Kubernetes 的重要性在于它能够提供一个灵活、可扩展且安全的平台来管理现代应用程序,并使组织能够在快速发展的数字环境中保持领先地位。

以下是如何使用 Kubernetes 的基本概述:

  • 设置集群

要使用 Kubernetes,您需要设置一个集群。集群是一组运行 Kubernetes 控制平面和容器的机器。您可以在自己的基础架构上设置集群,也可以使用云服务提供商,例如 Amazon Web Services (AWS)、Google Cloud Platform (GCP) 或 Microsoft Azure。

  • 将您的应用程序打包到容器中

要在 Kubernetes 上运行应用程序,您需要将其打包到一个或多个容器中。容器是一个独立的可执行包,其中包含运行应用程序所需的一切,包括代码、运行时、系统工具、库和设置。

  • 使用清单定义应用程序的所需状态

Kubernetes 使用清单(manifests)来管理容器的部署和扩缩。清单是描述应用程序期望状态的文件。清单指定了每个容器的副本数量、副本的更新方式以及副本之间如何通信。

  • 将您的代码推送到 SCM 平台

将您的应用程序代码推送到 GitHub 等 SCM 平台。

  • 使用 CI/CD 工具实现自动化

使用专业的 CI/CD 平台(例如 Harness)来自动化部署你的应用程序。设置完成后,你就可以轻松地、经常性地在新代码推送到项目代码库时,分块部署你的应用程序代码。

  • 公开应用程序

部署应用程序后,您需要创建一个 LoadBalancer 或 ExternalName 类型的服务,将应用程序暴露给外部世界。这样,用户就可以通过稳定的 IP 地址或主机名访问应用程序。

  • 监控和管理您的应用程序

部署应用程序后,您可以使用 kubectl 工具监视容器的状态,更改所需状态,以及扩大或缩小应用程序的规模。

这些是在 Kubernetes 上部署应用程序的常规步骤。根据应用程序的复杂程度,可能需要执行其他步骤,例如配置存储、网络策略或安全性。不过,这应该为您在 Kubernetes 上部署应用程序提供了一个良好的起点。

今天,我们将了解如何使用 Harness 自动在 Kubernetes 上进行简单的应用程序部署。

先决条件

教程

Kubernetes 部署

我们将使用 GitHub 仓库中已有的示例应用程序。我们将使用 Kubernetes 集群来部署我们的应用程序。接下来,我们将在本教程中使用 CI/CD 平台 Harness 来展示如何轻松实现软件交付流程的自动化。

步骤 1:在本地测试示例应用程序

复制并克隆示例笔记应用程序

使用以下命令进入应用程序文件夹

cd notes-app-cicd
Enter fullscreen mode Exit fullscreen mode

使用以下命令安装依赖项

npm install 
Enter fullscreen mode Exit fullscreen mode

在本地运行应用程序,看看应用程序是否运行良好

node app.js
Enter fullscreen mode Exit fullscreen mode

步骤 2:容器化应用程序

您可以在示例应用程序存储库中看到 Dockerfile。

FROM node:14-alpine

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD [ "npm", "start" ]
Enter fullscreen mode Exit fullscreen mode

使用以下命令构建、标记镜像并将其推送到您选择的任何容器注册表。在本教程中,我们将把它推送到 Docker Hub。

对于 Mac M1,使用以下命令

docker buildx build --platform=linux/arm64 --platform=linux/amd64  -t docker.io/$your docker hub user name/$image name:$tag name --push  -f ./Dockerfile .
Enter fullscreen mode Exit fullscreen mode

对于 Mac M1 以外的设备,请使用以下命令来构建和推送映像,

docker build -t $your docker hub user name/$image name .
Enter fullscreen mode Exit fullscreen mode
docker push $your docker hub user name/$image name .
Enter fullscreen mode Exit fullscreen mode

步骤 3:创建或访问 Kubernetes 集群

确保能够访问任何云提供商的 Kubernetes 集群。您甚至可以使用 Minikube 或 Kind 来创建集群。在本教程中,我们将使用 Google Cloud (GCP) 的 Kubernetes 集群。

我已经有一个 Google Cloud 帐户,因此创建集群很容易。

步骤 4:确保 Kubernetes 清单文件整洁干净

您需要部署 yaml 和服务 yaml 文件来部署和公开您的应用程序。请确保这两个文件均已正确配置。

您可以看到示例应用程序存储库中已经有deployment.yaml和service.yaml文件。

下面是我们的deployment.yaml文件。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: notes-app-deployment
  labels:
    app: notes-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: notes-app
  template:
    metadata:
      labels:
        app: notes-app
    spec:
      containers:
      - name: notes-app-deployment
        image: pavansa/notes-app
        resources:
          requests:
            cpu: "100m"
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3000
Enter fullscreen mode Exit fullscreen mode

下面是我们的 service.yaml 文件

apiVersion: v1
# Indicates this as a service
kind: Service
metadata:
 # Service name
 name: notes-app-deployment
spec:
 selector:
   # Selector for Pods
   app: notes-app
 ports:
   # Port Map
 - port: 80
   targetPort: 3000
   protocol: TCP
 type: LoadBalancer
Enter fullscreen mode Exit fullscreen mode

使用以下命令应用清单文件。首先是部署,然后是服务 yaml 文件。

kubectl apply -f deployment.yaml
Enter fullscreen mode Exit fullscreen mode
kubectl apply -f service.yaml
Enter fullscreen mode Exit fullscreen mode

应用 kubectl apply 命令后,验证 pod 是否按预期正常运行。

kubectl get pods
Enter fullscreen mode Exit fullscreen mode

您应该会看到 pod 及其状态。
正在运行的 pod

步骤 5:使用 Harness 实现自动化部署

您需要一个 CI/CD 工具来自动化您的持续集成和部署流程。Harness 以其在 CI/CD 领域的创新性和易用性而闻名。因此,我们将使用此平台来设置应用程序的自动化持续部署。

注册并验证账户后,您将收到一条欢迎信息,并看到项目创建设置。请继续创建项目。
创建项目

将名称添加到项目,保存并继续。
关于项目

选择“持续交付”模块并开始您的免费计划。
线束CD模块

转到模块并开始您的部署之旅。
部署管道

设置非常简单,如上图所示;您只需四个简单的步骤即可部署您的应用程序。

选择您的部署类型 i,例如 Kubernetes,然后单击“连接到环境”。
部署类型

使用 Delegate 连接到您的 Kubernetes 环境。Delegate 是一项在您的基础架构上运行的服务,用于代表 Harness 平台执行任务。
连接线束

下载 Delegate YAML 文件并通过应用上述步骤中所述的 kubectl apply 命令将其安装到您的 Kubernetes 集群上。

确保kubectl apply -f harness-delegate.yaml在下载委托 YAML 文件的正确路径中执行该命令。

确保您的 Delegate 安装成功。

接下来,配置服务并添加清单详细信息。
配置服务

添加所有详细信息后,单击“创建管道”。
创建管道

检查所有连接是否成功。一切正常后,点击“运行管道”。
运行 cd 管道

单击“运行管道”即可查看部署成功。
成功的线束管道

恭喜!我们已成功使用 Harness 在 Kubernetes 上部署了应用程序。现在,我们可以使用 Harness CD 模块轻松实现自动化部署。

您可以通过添加触发器来自动化您的持续交付 (CD) 流程。当任何授权人员将任何新代码推送到您的代码库时,您的管道就会被触发并执行持续交付 (CD)。让我们看看如何做到这一点。

在管道工作室中,您可以单击“触发器”选项卡并添加所需的触发器。
新触发器

所有触发器相关

点击“添加新触发器”并选择“GitHub”。
触发列表

添加所需的详细信息并继续。如您所见,我们选择“推送”作为事件。因此,每当我们的存储库发生任何授权推送时,管道都会触发并运行。
触发设置

触发 webhook

您可以在“触发器”选项卡中看到新创建的触发器。
列出新的触发器

现在,只要任何授权人员将任何代码更改推送到您的主/主存储库,管道就会自动触发。

如果您还没有看过我的另外两篇关于持续集成和自动化测试的文章,请看一下。

文章来源:https://dev.to/pavanbelagatti/deploying-an-application-on-kubernetes-a-complete-guide-1cj6
PREV
通过编写测试来学习 Go 你好,世界
NEXT
使用内存数据库测试 Node.js + Mongoose 内存数据库的优缺点让我们开始编码吧!