使用 Flux 设置 GitOps

使用 Flux 设置 GitOps_第1张图片

从本文中,您将学习如何使用 Flux,它是 Kubernetes 集群中的一个 GitOps 工具。

创建 Kubernetes 集群

根据您所处的环境类型或您有权访问的环境,您可以通过几种不同的方式启动和运行 Kubernetes 集群:

  • ​ 在你的本地主机上使用 Minikube 之类的东西 ​
  • 在 AKS、EKS 或 GKE 等 Kubernetes 服务上
  • 在一堆虚拟机上
  • 在使用 K3s 的树莓派上
  • 还有一堆其他的方法...

无论您使用哪种方法,Flux 都可以使用。

就本文而言,您可以使用 Minikube,因为它非常适合本地环境,不必担心在云中花钱或部署一堆虚拟机。

要开始使用 Minikube,请查看本指南。

应用程序

GitOps 是用一个工具(如 Flux)查看Git 存储库,检查 Kubernetes 清单,并确认 Kubernetes 清单中的内容就是 Kubernetes 集群上的内容。因此,我们需要一个 Kubernetes 应用程序。

出于本文的目的,将使用 Nginx 应用程序。对于初级选手,它并没有什么太复杂和完美的地方。

Flux配置

当你准备安装 Flux 时,有几个组件:

  • 命令行工具
  • 连接到 GitHub
  • GitHub 凭据
  • 部署Flux

在本节中,将介绍启动和运行 Flux 所需的一切。

安装Flux

要安装 Flux,您必须查看此处为您的操作系统找到的安装指南。

例如,要在 MacOS 上安装 Flux,您可以运行以下命令:

brew install fluxcd/tap/flux

要检查安装是否成功以及您使用的 Kubernetes 集群是否与 Flux 兼容,可以运行以下命令:

flux check --pre

需要指定 GitHub 用户名。

flux bootstrap github 如果 GitHub 存储库不存在,该命令将创建它,并将工具包提交到mainormaster分支。然后它将 Kubernetes 集群配置为与存储库同步。

例如,要YOUUSERNAMEkubernetes-examplesGitHub 存储库中使用我的用户名,如下所示。

flux bootstrap github \
  --owner=YOUUSERNAME \
  --repository=kubernetes-examples \
  --branch=main \
  --path=./clusters/my-cluster \
  --personal

在存储库中,将看到一个包含 Flux 配置的新目录。

使用 Flux 设置 GitOps_第2张图片

部署应用程序

现在已经安装了 Flux,是时候部署一个应用程序了。应该做的第一件事是从应用程序部分克隆代码存储库并将其分支到 GitHub 组织。

拥有克隆的存储库后,cd(更改目录)到终端/命令行上的存储库。

将应用程序添加到 Flux

首先,将 nginx 应用添加到 Flux。下面的命令将以 30 秒的间隔拉取 Nginx 应用程序。

flux create source git kubernetes-examples \
  --url=https://github.com/YOUUSERNAME/kubernetes-examples \
  --branch=main \
  --interval=30s \
  --export > ./clusters/my-cluster/podinfo-source.yaml

运行上面的命令后,一个名为的新文件podinfo-source.yaml将添加到存储库中。将新文件/代码推送到 GitHub。

部署 Nginx 应用程序

要部署应用程序,您将使用Kubernetes kustomize,它是一种以声明方式自定义 Kubernetes 应用程序的工具。

首先,创建一个名为的文件podinfo-kustomization.yaml并将其放入您的 GitHub 存储库。

接下来,运行下面的命令。下面的命令将使用该kubernetes-examples应用程序作为源。

flux create kustomization kubernetes-examples \
  --target-namespace=default \
  --source=kubernetes-examples \
  --path="./kustomize" \
  --prune=true \
  --interval=5m \
  --export > clusters/my-cluster/podinfo-kustomization.yaml

注意如何有一个kustomize目录。该目录是手动创建的(它已经存在于 GitHub 存储库中)。这就是应用程序配置的位置(例如:Nginx Kubernetes 清单)。如果目录中没有应用程序的 Kubernetes 清单kustomize,Flux 配置将无法工作。

运行上述命令后,提交并将其推送到 GitHub 存储库。

确保已部署应用程序

为确保应用已部署,您可以使用该flux get命令查看 Flux 正在运行和管理的应用。

flux get kustomizations --watch

你可能感兴趣的:(devops,云计算,容器,云原生,架构)