GitOps【1】入门实践

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 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搭建和管理企业级网站应用
相关文章
|
存储
KubeSphere 基础知识,KubeSphere 入门了解
KubeSphere 基础知识,KubeSphere 入门了解
309 0
|
11月前
|
Kubernetes Cloud Native Go
Kubernetes实践:从入门到实践
Kubernetes实践:从入门到实践
130 0
|
弹性计算 运维 Kubernetes
动手实操,让你的 Kubernetes 集群弹起来!
本文将对于集群自动弹性伸缩(cluster-autosclaer)进行介绍,并在 ACK 集群上进行实操。
4560 4
|
存储 Kubernetes API
Argo CD 【2】动手实践
Argo CD 【2】动手实践
Argo CD 【2】动手实践
|
存储 Kubernetes 前端开发
openshift gitops 实践
openshift gitops 实践
openshift gitops 实践
|
弹性计算 安全 关系型数据库
Terraform入门初实践
0.写在前面:在云巧资产市场中对项目进行交付过程中,能够快速复用已有组件和一键部署组件一直是我们追求的目标(关于云巧相关的理念可移步了解云巧 详细了解),因此以IaC理念出圈的Terraform,成为关注的重点。本文将介绍Terraform核心理念并结合运行demo完成对Terraform的探索和初级实践,为后续云巧市场更好的交付奠定基础。1.Terraform介绍:1.1 IACInfrastr
1121 0
Terraform入门初实践
|
Kubernetes Cloud Native 安全
Gitops 最佳实践|学习笔记
快速学习Gitops 最佳实践
612 0
Gitops 最佳实践|学习笔记
|
运维 Kubernetes jenkins
Tekton系列之实践篇-如何用Jenkins来管理Tekton
Tekton系列之实践篇-如何用Jenkins来管理Tekton
Tekton系列之实践篇-如何用Jenkins来管理Tekton
|
机器学习/深度学习 Kubernetes 算法
玩转Kubeflow第一章: kubeflow 国内本地安装及案例介绍
kubeflow 是 google 开源的一个基于 kubernetes 的 ML workflow 平台,其集成了大量的机器学习工具,这里给大家介绍下基于阿里云镜像仓库进行kubeflow安装部署,同时通过 kittab 超参数案例,pipeline workflow 的例子给大家详细介绍kubeflow各组件的玩法,同时在最后提出针对kubeflow 构建 MLOps 平台的一些思考。
15044 1
玩转Kubeflow第一章: kubeflow 国内本地安装及案例介绍
|
jenkins 持续交付 开发工具
阿里云Kubernetes服务上从零搭建GitLab+Jenkins+GitOps应用发布模型的实践全纪录
阿里云Kubernetes服务上从零搭建GitLab+Jenkins+GitOps应用发布模型的实践全纪录
10987 0