如何在 GitHub Actions 中自动化部署 Helm

45次阅读
没有评论

问题描述

在使用 GitHub Actions 时,希望能够在私有的 GitHub Actions runner 中自动化部署 Helm。他的仓库中包含一个用于 logstash 的 Helm chart。他想知道如何在私有 runner 中自动化运行 Helm 命令。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

你可以使用 GitHub Actions 中的 Helm 3 action 来自动化部署 Helm。以下是具体步骤:
1. 在你的 GitHub 仓库中,添加一个名为 .github/workflows/helm-deploy.yml 的文件。
2. 在该文件中,定义一个 workflow,用于自动化部署 Helm。
3. 在 workflow 中,使用 Helm 3 action 来执行 Helm 命令。
下面是一个示例的 workflow 文件:

name: Helm Deploy

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: self-hosted

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Helm
        uses: azure/setup-helm@v1
        with:
          version: '3'

      - name: Deploy Helm chart
        uses: azure/helm-package@v1
        with:
          chartPath: ./elkhelmconfig/logstash
          releaseName: logstash
          namespace: default
          valuesFile: ./elkhelmconfig/logstash/values.yaml

在上面的示例中,我们定义了一个名为 Helm Deploy 的 workflow,它会在代码推送到 main 分支时触发。该 workflow 使用了 Helm 3 action 来执行 Helm 命令。具体来说,它会使用 azure/setup-helm action 来设置 Helm 环境,然后使用 azure/helm-package action 来部署 Helm chart。
请注意,你需要将示例中的路径和文件名修改为你自己的 Helm chart 的路径和文件名。

方案2

使用脚本或工具来管理 Helm 部署可能会增加复杂性,并且需要确保正确设置 Helm 的配置文件。
另一种方法是编写脚本或使用工具来控制 Helm 的部署。你可以使用 curl 命令来下载 Helm,并使用脚本来执行 Helm 命令。以下是一个示例脚本:

#!/bin/bash
# 下载 Helm
curl -LO https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz
tar -zxvf helm-v3.7.0-linux-amd64.tar.gz
# 添加执行权限
chmod +x linux-amd64/helm
# 部署 Helm chart
./linux-amd64/helm upgrade logstash ./elkhelmconfig/logstash/ --install --wait --atomic --namespace=default --set=app.name=logstash --values=./elkhelmconfig/logstash/values.yaml

在这个示例中,我们首先使用 curl 命令下载 Helm,并解压缩。然后,我们给 Helm 添加执行权限,并使用脚本执行 Helm 命令来部署 Helm chart。
请注意,你需要将示例中的路径和文件名修改为你自己的 Helm chart 的路径和文件名。

总结

在 GitHub Actions 中自动化部署 Helm 可以通过使用 Helm 3 action 或编写脚本来实现。使用 Helm 3 action 可以更方便地执行 Helm 命令,而编写脚本则可以更灵活地控制部署过程。根据你的需求和偏好,选择适合你的方法来自动化部署 Helm。

正文完