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/的仪表板。

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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes Cloud Native 开发工具
Argo与Flux在云原生GitOps实践上的能力对比与分析
随着云原生技术的普及和落地,越来越多的云原生应用被部署到生产环境中,由于云原生应用通常都是基于云的分布式部署模式,且每个应用可能是由多个功能组件互相调用来一起提供完整的服务的,每个组件都有自己独立的迭代流程和计划。在这种情况下,功能组件越多,意味着应用的发布管理越复杂,如果没有一个好的方案或者系统来管理复杂应用的发布上线的话,业务面临的风险也是非常大的。开源社区在复杂应用发布管理方面逐渐开始发力,
5379 1
Argo与Flux在云原生GitOps实践上的能力对比与分析
|
JavaScript
dialog打开时重新渲染
dialog打开时重新渲染
310 0
|
8月前
|
人工智能 数据可视化 程序员
程序员必收藏!Github 167000+ star 的自主AI agent,全自动AI助手,全面覆盖开发效率场景
AutoGPT 是基于 GPT-4 的开源自主 AI 智能代理,全面覆盖开发效率场景。支持任务自动拆解、多轮反馈、插件扩展与记忆管理,具备持续执行能力,适合自动化测试、CI/CD、Web 数据抓取等任务。GitHub 超 176K Star,是当前最热门的 AI Agent 开源项目之一,提供 CLI 与 GUI 双界面,助力开发者提升工作效率。
1045 1
|
人工智能 Java API
Java也能快速搭建AI应用?一文带你玩转Spring AI可落地性
Java语言凭借其成熟的生态与解决方案,特别是通过 Spring AI 框架,正迅速成为 AI 应用开发的新选择。本文将探讨如何利用 Spring AI Alibaba 构建在线聊天 AI 应用,并实现对其性能的全面可观测性。
2929 110
E: 错误,pkgProblemResolver::Resolve 发生故障,这可能是有软件包被要求保持现状的缘故
E: 错误,pkgProblemResolver::Resolve 发生故障,这可能是有软件包被要求保持现状的缘故
5780 0
|
监控 安全 网络协议
永久免费SSL证书教程—自动续签
要实现免费SSL证书的自动续签,选择合适的证书颁发机构(CA)至关重要。推荐使用JoySSL,填写注册码230922可获得免费且支持自动续签的SSL证书。申请步骤包括注册账户、选择证书类型、提交申请、验证域名所有权及安装证书。配置自动续签需安装续签工具、生成密钥和CSR,并设置续签参数。定期检查证书状态、备份证书和密钥,确保续签顺利进行。注意CA机构的政策和服务条款变化,以保持证书的有效性。
|
运维 Kubernetes 监控
在K8S中,Kubernetes常见的部署方式有哪些?
在K8S中,Kubernetes常见的部署方式有哪些?
|
存储 NoSQL Linux
《探索 Linux 命令:systemd-coredumpctl》
**《systemd-coredumpctl概览》** `systemd-coredumpctl`, Linux中管理&分析core dump的利器。集中管控systemd生成的转储,详述crash细节。用`--list`查看所有转储,`--info &lt;ID&gt;`深入单一转储。需注意权限、存储管理,配gdb深化分析。精通此命令,加速问题诊断。#LinuxTips #CoreDumpAnalysis
|
监控 安全 BI
安全检测 | 数据库审计系统为何如此重要?
数据库审计是应对信息化社会中数据安全的关键工具。它记录并分析网络上的数据库活动,对风险行为实时警告,帮助追踪事故源头和合规管理。尽管已有其他安全产品,但数据库审计专门针对内部审核监控,尤其在多数安全问题源于内部的情况下显得尤为重要。审计系统提供全方位安全审计、实时回放、精准定位、事件关联分析等功能,同时支持多种部署方式和确保数据安全的机制。企业在选择审计产品时应考虑自身业务需求和审计目标,以找到最适合的解决方案。
|
安全 前端开发 Java
Scala与Java:综合比较
Scala与Java:综合比较
401 0