Kubernetes GitOps:初学者指南及实践教程
Kubernetes 多年来一直是人们热议的话题。
它彻底改变了容器编排方式,并成为该领域的领导者。许多开发人员都喜欢使用 Kubernetes。虽然企业倾向于在 Kubernetes 上部署应用程序以应对规模和高资源需求,但一种新的 Kubernetes 相关部署方法正在兴起——GitOps。
是的,GitOps 提供了一种流畅的方法和一套实践,可以利用 Git 等简单的工具来管理基础设施和应用程序部署。通过结合 Kubernetes 和 GitOps,组织可以获得灵活性、敏捷性、规模、性能、效率和更快的功能交付等巨大优势。
在本 Kubernetes 和 GitOps 指南中,我将提供一份入门级的分步教程,帮助您开始使用 Kubernetes 实现 GitOps。现在,是时候将您的应用程序部署提升到一个新的水平了。让我们开始吧!
简单的 GitOps 工作流程
GitOps 的基本原则是让 Git 成为事实来源,包括将所有内容迁移到代码中,并在 Git 中存储和维护所有内容。在部署方面,使用 Operator 以声明式的方式部署 Git 和 Yaml 中配置的内容。由于所有开发人员都熟悉 Git,因此 GitOps 简化了他们复杂的工作流程。
因此,当涉及到 Kubernetes 时,应用程序代码、容器镜像和所有相关清单文件都将存储在 Git 中,并且任何更改都通过 Git 作为单一事实来源进行。
注:以上内容摘自我在 Dev 社区撰写的另一篇 GitOps 文章。欢迎阅读!
今天,我们将在下面的教程中向您展示如何在您的应用程序中开始使用 GitOps 方法。
先决条件
- 在本教程中,我们将使用 Harness 等持续交付工具来实现 GitOps。因此,请创建一个免费的Harness 帐户。它使用 Argo CD-as-a-Service。
- GitHub 帐户和一个示例代码库,可供您进行实验。我有一个示例代码库,您可以 fork 它并使用。
教程
注册 Harness 帐户,验证您的电子邮件并重新登录以设置 GitOps 管道。
您将看到以下部署选项 - Kubernetes和带有 GitOps 的 Kubernetes。
选择“带有 GitOps 的 Kubernetes ”并继续。
您无需担心任何设置和安装。Harness 会处理好一切。它通过配置托管代理连接到 Harness。
一旦代理安装成功,就进入下一个配置。
在这里我们提供简单的详细信息,如来源、身份验证和 Git 详细信息。
从选项中选择 Git 和 own source code。添加我们的 Git 仓库链接:https://github.com/pavanbelagatti/argocd-example-apps
注意:上面显示的是我的 GitHub repo 链接,您应该添加您的 repo 链接,即您在本教程开始时分叉的链接。
添加完这些详细信息后,请务必添加“匿名”来验证您的详细信息。[顺便说一句,这是一个公开的仓库,因此无需用户名和密码进行身份验证]
选择目标修订版本为“master”,路径为“helm-guestbook”
接下来,选择“Harness Hosted”来测试 GitOps 工作流程。您也可以选择“自行管理”。但在本教程中,我们将选择“Harness Hosted”。
点击“创建并同步应用程序”。
这是您将进入的 GitOps 仪表板,其中将显示您的所有 GitOps 详细信息。
在同一个选项卡中,您可以看到同步策略,它设置为“手动”,将其更改为“自动”。
这意味着,当您的 GitHub 存储库发生任何更改时,GitOps 代理将自动选择这些更改,并以自动方式进行同步。
在主仪表板中,转到“GitOps”选项卡,这是进入 GitOps 工作流程的入口。
单击“GitOps”选项卡后,您应该会看到 GitOps 仪表板的概览。
单击它并转到资源视图。您将看到values.yaml
文件中提到的 4 个副本正在运行。
这是我们示例 repo 中的 values.yaml 文件。
# Default values for helm-guestbook.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 4
image:
repository: gcr.io/heptio-images/ks-guestbook-demo
tag: 0.1
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- chart-example.local
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}
您应该会看到 GitOps 代理会发现并处理此差异。突然间,应用程序配置不同步了。需要一些时间才能匹配成功,然后才能恢复正常且同步成功的状态。
由于我们将同步策略更改为自动,因此您可以将第二次部署视为“自动”。
好吧,过了一段时间,应用程序配置状态显示出健康和成功的同步状态。
在上面的资源视图中,您可以看到副本已匹配到 5 个,因为我们想要 5 个副本。
由于 GitOps 使用 Git 作为数据源,它会记录谁提交了哪些代码,以及是否有人在代码库中进行了更改。您可以从我们的 GitOps 仪表板查看这些信息。
一旦您点击上方红色框中显示的 ID 号,您就可以看到发生了什么变化。
这就是使用 Harness CD 通过 GitOps 方式部署应用程序的直观和简单之处。
Kubernetes GitOps 是处理复杂的云原生应用部署的绝佳方法。由于它使用 Git 等开发人员熟知的简单工具,因此易于学习和简化应用部署流程。使用 Kubernetes GitOps,让您的应用更加稳定、敏捷和高效。立即开始使用 GitOps!
鏂囩珷鏉ユ簮锛�https://dev.to/pavanbelagatti/kubernetes-gitops-a-beginners-guide-with-a-hands-on-tutorial-56de