GitOps【1】入门实践

简介: GitOps【1】入门实践

文章目录

安装GitOps

curl --silent --location "https://github.com/weaveworks/weave-gitops/releases/download/v0.6.0/gitops-$(uname)-$(uname -m).tar.gz" | tar xz -C /tmp
sudo mv /tmp/gitops /usr/local/bin
gitops version

或者,macOS 用户可以使用 Homebrew:

brew tap weaveworks/tap
brew install weaveworks/tap/gitops

创建 GitHub Repositories

Weave GitOps 可用于将多个应用程序部署到多个 Kubernetes 集群,每个应用程序在自己的单独存储库中都有部署清单。为了便于管理,我们将一个或多个集群的GitOps 自动化存储在单个配置存储库中。


虽然您可以将自动化添加到任何现有存储库,包括带有应用程序部署清单的存储库,但我们建议为此目的使用新的或空的存储库,我们的指南将采用这种方法。

1035234-20181020215539574-213176954.png

Fork podinfo 示例应用程序存储库

们将对示例应用程序进行更改,以展示 GitOps 对账的实际效果。因此,我们将首先 fork podinfo 示例存储库。

转到https://github.com/wego-example/podinfo-deploy并分叉存储库。

1035234-20181020215539574-213176954.png

Podinfo是一个用 Go 编写的简单 Web 应用程序,由前端和后端组件组成;它旨在展示在 Kubernetes 中运行微服务的最佳实践。可以在此处找到完整的应用程序源。

.
├── README.md
├── backend
│   ├── deployment.yaml
│   ├── hpa.yaml
│   └── service.yaml
├── frontend
│   ├── deployment.yaml
│   └── service.yaml
└── namespace.yaml
2 directories, 7 files

kind创建集群

$ kind create cluster
Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.21.1) 🖼
 ✓ Preparing nodes 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
Have a nice day! 👋

在 Kubernetes 集群上安装 Weave GitOps

格式

gitops install --config-repo git@github.com:<username>/gitops-config
gitops install --config-repo https://github.com/Ghostwritten/gitops-config.git

运行安装命令,指定在步骤 1 中创建的配置存储库的位置。

安装大约需要 2 分钟,具体取决于您的系统。

完成后,您将看到:

...
◎ verifying installation
✔ image-reflector-controller: deployment ready
✔ image-automation-controller: deployment ready
✔ source-controller: deployment ready
✔ kustomize-controller: deployment ready
✔ helm-controller: deployment ready
✔ notification-controller: deployment ready
✔ install finished
Deploy key generated and uploaded to git provider
► Writing manifests to disk
► Committing and pushing gitops updates for application
► Pushing app changes to repository
► Applying manifests to the cluster

如果报错:

✗ helm-controller: deployment not ready
✗ image-automation-controller: deployment not ready
✗ image-reflector-controller: deployment not ready
✗ kustomize-controller: deployment not ready
✗ notification-controller: deployment not ready
✗ source-controller: deployment not ready
✗ install failed
 and error: exit status 1
$ kubectl get pods -n wego-system
NAME                                           READY   STATUS             RESTARTS   AGE
helm-controller-59dcbc6dcb-8dtz7               0/1     ImagePullBackOff   0          174m
image-automation-controller-747996c677-rnhlq   0/1     ImagePullBackOff   0          174m
image-reflector-controller-f55d746df-q2742     0/1     ImagePullBackOff   0          174m
kustomize-controller-5b7b8b44f6-4t9h7          0/1     ErrImagePull       0          174m
notification-controller-77f68bf8f4-hlk8w       0/1     ImagePullBackOff   0          174m
source-controller-679665b8d6-5l2kq             0/1     ErrImagePull       0          174m

解决方法:

$ for i in `kubectl get pods -n wego-system   -o jsonpath='{.items[*].spec.containers[0].image}'`;do docker pull  $i;done
$ for i in `kubectl get pods -n wego-system   -o jsonpath='{.items[*].spec.containers[0].image}'`;do kind load  docker-image $i --name kind ;done
#检查运行pod状态
$ kubectl get pods -n wego-system
NAME                                           READY   STATUS    RESTARTS   AGE
helm-controller-59dcbc6dcb-8dtz7               1/1     Running   0          3h31m
image-automation-controller-747996c677-rnhlq   1/1     Running   0          3h31m
image-reflector-controller-f55d746df-q2742     1/1     Running   0          3h31m
kustomize-controller-5b7b8b44f6-4t9h7          1/1     Running   0          3h31m
notification-controller-77f68bf8f4-hlk8w       1/1     Running   0          3h31m
source-controller-679665b8d6-5l2kq             1/1     Running   0          3h31m

这将向.weave-gitops您的配置存储库提交一个新文件夹,其中包含以下文件以管理指定集群上的 Weave GitOps 运行时:

.
└── clusters
    └── kind-kind
        ├── system
        │   ├── flux-source-resource.yaml
        │   ├── flux-system-kustomization-resource.yaml
        │   ├── flux-user-kustomization-resource.yaml
        │   ├── gitops-runtime.yaml
        │   ├── wego-app.yaml
        │   └── wego-system.yaml
        └── user
            └── .keep

flux-source-resource:一个GitRepository源,它“定义了包含系统所需状态和获取它的要求的存储库的来源”。这包括interval检查可用新版本的频率。

flux-system-kustomization-resource:一个Flux Kustomization,它“代表了 Flux应该在集群中协调的一组本地 Kubernetes 资源(例如 kustomize覆盖)”。这将部署在指定路径下找到的资源,在本例中为/system文件夹,在集群和 Git 中声明的状态之间进行协调。其中“如果您使 kubectl edit/patch/delete 对集群进行任何更改,它们将被立即还原。” 基于interval值。

flux-user-kustomization-resource:另一个Flux Kustomization,这次是/user文件夹中的任何内容,本指南后面将包含对我们示例应用程序的引用。

gitops-runtime: 创建wego-system命名空间并部署 Flux 运行时。

wego-app:它部署了我们的集群上 Web UI(当前未公开)。

wego-system:它创建了我们的应用程序自定义资源定义 (CRD)

要了解有关这些文件的更多信息,请参阅GitOps 自动化。

启动 GitOps Dashboard Web UI

Weave GitOps 提供了一个 Web UI 来帮助管理应用程序的生命周期管理。

gitops ui run

运行上述命令将在浏览器中打开位于http://0.0.0.0:9001/的仪表板。

您将看到一个空的应用程序视图,如下图所示。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
Kubernetes Cloud Native 安全
ArgoCD + KubeVela:以开发者为中心的 GitOps
在这篇博文中,我们将分享基于阿里云的用例,使用 Argo CD 和 KubeVela 构建以开发者为中心的持续应用交付流水线的经验。
ArgoCD + KubeVela:以开发者为中心的 GitOps
|
5月前
|
机器学习/深度学习 分布式计算 Kubernetes
YAML焦虑再见:PythonSDK助力大规模Argo Workflows构建
Hera优雅的对接Python生态体系与Argo Workflows框架,将繁琐复杂的工作流设计转化为直观简明的创作体验。它不仅为大规模任务编排开创了一条免受YAML复杂性困扰的通途,还为数据工程师铺设了平滑的桥梁,让他们能够借助熟悉的Python语言,无缝构造和优化机器学习工作流。
|
Kubernetes Cloud Native Go
Kubernetes实践:从入门到实践
Kubernetes实践:从入门到实践
149 0
|
7月前
|
关系型数据库 MySQL 中间件
KubeSphere 核心实战之四【在kubesphere平台上部署Ruoyi-cloud项目】(实操篇 4/4)
KubeSphere 核心实战之四【在kubesphere平台上部署Ruoyi-cloud项目】(实操篇 4/4)
397 1
|
存储 域名解析 Kubernetes
从零开始,在 Kubernetes 上玩转 Erda(二)
本章节介绍 Erda 的部署以及配置细节
1830 0
从零开始,在 Kubernetes 上玩转 Erda(二)
|
Rust Kubernetes 监控
从零开始,在 Kubernetes 上玩转 Erda(三)
本章节通过 Erda CI/CD 能力进行应用的交付
1040 0
从零开始,在 Kubernetes 上玩转 Erda(三)
|
存储 Kubernetes 前端开发
openshift gitops 实践
openshift gitops 实践
openshift gitops 实践
|
存储 Kubernetes 监控
GitOps【1】理论认识
GitOps【1】理论认识
GitOps【1】理论认识
|
Kubernetes Cloud Native 安全
Gitops 最佳实践|学习笔记
快速学习Gitops 最佳实践
638 0
Gitops 最佳实践|学习笔记
|
Kubernetes 容器
《GitOps:Kubernetes多集群环境下的高效CICD实践》电子版地址
GitOps:Kubernetes多集群环境下的高效CICD实践
109 0
《GitOps:Kubernetes多集群环境下的高效CICD实践》电子版地址
下一篇
DataWorks