使用 GitHub Actions 在 Kubernetes 上部署应用

在现代化的应用程序开发中,Kubernetes 已成为一种广泛使用的容器编排工具。使用 Kubernetes 部署应用程序的一个好处是能够自动化管理应用程序的生命周期。另一方面,GitHub Actions 可以提供一个自动化工具,可以使开发人员在构建和部署应用程序方面更加高效。本文将介绍如何使用 GitHub Actions 在 Kubernetes 上部署应用程序。

准备 Kubernetes 部署的环境

首先,需要准备好 Kubernetes 部署的环境。这个环境需要有一个可用的 Kubernetes 集群并开启了 Kubernetes API。要将应用程序部署到 Kubernetes 集群中,需要以 Kubernetes 配置文件的形式提供应用程序。

假设已经有一个使用 Minikube 的本地 Kubernetes 集群,并且将要部署一个名为“myapp”的应用程序。在部署之前,需要先在 Kubernetes 中创建相应的部署资源:

----------- -------
----- ----------
---------
  ----- -----
-----
  --------- -
  ---------
    ------------
      ---- -----
  ---------
    ---------
      -------
        ---- -----
    -----
      -----------
      - ----- -----
        ------ --------
        ------
        - -------------- ----
---
----------- --
----- -------
---------
  ----- -------------
-----
  ---------
    ---- -----
  ------
  - ----- ----
    --------- ---
    ----- --
    ----------- ----
  ----- --------

保存这个配置文件为myapp.yaml,并运行以下命令来创建资源:

- ------- ----- -- ----------

现在已经准备好 Kubernetes 环境和应用程序的部署资源,接下来可以使用 GitHub Actions 来自动化构建和部署应用程序。

创建 GitHub Actions 工作流

GitHub Actions 提供了一个 CI/CD 系统,可以通过使用 YAML 文件来构建和部署应用程序。下面将介绍如何创建一个 GitHub Actions 工作流来自动化构建和部署应用程序。

创建 GitHub Actions 触发事件

首先,需要在项目的根目录中创建一个.github/workflows目录,并在此目录下创建一个 YAML 文件,该 YAML 文件定义了 GitHub Actions 的触发条件和操作步骤。对于本教程,我们将为 GitHub Actions 创建一个名为kubernetes-deploy.yml的 YAML 文件,并定义构建应用程序并部署应用程序到 Kubernetes 集群的步骤。

以下是一个示例的kubernetes-deploy.yml文件,其中定义了触发条件和添加必要环境变量:

----- -----------------
---
  -----
    ---------
      - ----
----
  ----------------- --- ------------------------ --
  ---------------- --- ----------------------- --
-----
  -------
    -------- -------------
    ------
    - ----- --------
      ----- -------------------
    - ----- ----- -------
      ----- --------------------------
      -----
        ----------------- --- -------------------- --
    - ----- ----- --- ---- ------ -----
      ----
        ---------------- -
      ---- -
        ------ ----- ---------- ----- -- ---------------------------------- -
        ------ ---- ----------------------------------
    - ----- ------ -- ----------
      ---- -
        -------- - ---------- - ------- ----- -- -

在这个文件中,定义了以下步骤:

  • name 定义了工作流的名称
  • on 定义了 GitHub Actions 的触发条件
  • env 定义了环境变量。在本教程中,定义了 Kubernetes 环境配置信息和 Docker 镜像存储库的信息。
  • jobs 定义了工作流的任务
  • runs-on 定义了任务运行的操作系统
  • steps 定义了工作流的步骤

构建和部署应用程序到 Kubernetes 集群

要构建和部署应用程序,需要执行以下步骤:

  1. 检出代码库和分支。
  2. 安装 Kubernetes CLI 工具并设置环境变量。
  3. 构建 Docker 镜像并上传到 Docker 镜像存储库。
  4. 使用 envsubst 工具替换 Kubernetes 资源文件(myapp.yaml)中的环境变量并使用 kubectl 应用。

注册 Kubernetes API 访问凭证

上述 YAML 文件中要使用 Kubernetes API 访问凭证来连接 Kubernetes 集群。但是,在 GitHub Actions 环境中执行构建和部署可能需要使用不同的 Kubernetes 访问凭证。因此,需要注册一个 ServiceAccount 并生成相关的 Kubernetes API 访问凭证。要注册 ServiceAccount 并生成访问凭证,可以使用以下命令:

- ------- ------ -------------- --------------
- ------- ------ ------------------ -------------- ------------- ------------- ---------------------------------------
- ------- --- ------- -- ---- - -- -- --------- - --------------------- - ------------------ - --------------- - ----- -- -- -- -- -------- --- ------ -- -- ------------------------ - ------ -- -- -----

第一行命令创建 ServiceAccount,第二行命令创建一个 ClusterRoleBinding 并将 ServiceAccount 绑定到命名空间default。最后一个命令将输出由第二个命令自动生成的 Kubernetes API 访问凭证。

将访问凭证复制到剪贴板中。

注册 Docker 镜像存储库 API 访问凭证

在 GitHub Actions 构建 Docker 镜像并上传到 Docker 镜像存储库时,可能需要 Docker 镜像存储库 API 的访问凭证。在这个例子中,使用了 Docker Hub 作为 Docker 镜像存储库。要使用 Docker Hub API 访问凭证,请执行以下命令:

- ---- -------------------
- ---- -------------------

将输出的 Docker Hub 用户名(DOCKERHUB_USERNAME)和密码(DOCKERHUB_PASSWORD)复制到剪贴板中。

注册 GitHub Actions 的秘密配置

将之前复制到剪贴板中的 Kubernetes API 访问凭证和 Docker Hub API 访问凭证保存在 GitHub Actions 的秘密配置中。打开 GitHub 仓库页面,进入 Settings -> Secrets,然后单击“New repository secret”创建两个新的秘密:

  • KUBE_CONFIG_DATA:将复制到剪贴板中的 Kubernetes API 访问凭证粘贴到 GitHub Actions 秘密配置的 KUBE_CONFIG_DATA 行
  • DOCKER_REGISTRY:将 Docker Hub 用户名(DOCKERHUB_USERNAME)和密码(DOCKERHUB_PASSWORD)以以下格式粘贴到 GitHub Actions 秘密配置的 DOCKER_REGISTRY 行中:{DOCKERHUB_USERNAME}:{DOCKERHUB_PASSWORD}

做完这些准备工作后,就可以将代码和配置提交到 GitHub 仓库并触发构建和部署。

运行 GitHub Actions 工作流程

现在,每当将代码提交到 GitHub 仓库后,GitHub Actions 将自动构建并部署应用程序。这个操作步骤包括:

  1. 构建 Docker 镜像;
  2. 将 Docker 镜像上传到 Docker 镜像存储库;
  3. 下载 Kubernetes 部署文件(myapp.yaml);
  4. 使用 envsubst 工具替换 Kubernetes 资源文件中的环境变量;
  5. 在 Kubernetes 集群上运行 kubectl 命令,将更新后的应用程序部署到架构中。

要查看 GitHub Actions 的工作流,可以在 GitHub 仓库页面上导航到“Actions”部分。在那里,可以查看所有在主分支上触发并运行的工作流。还可以使用该部分的筛选选项来筛选和查找某个特定的工作流。

结论

使用 GitHub Actions 在 Kubernetes 上部署应用程序可以简化流程并加快开发和部署。在本文中,介绍了如何使用 GitHub Actions 构建和部署应用程序。此外,还讨论了如何设置 Kubernetes 环境和注册 API 访问凭证,并使用 GitHub Actions 的秘密函数来安全地存储这些信息。GitHub Actions 在企业组织中也可以用来进一步规范和简化构建和部署流程。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66fa999244713626014e0260