返回顶部
首页 > 资讯 > 精选 >如何安装及使用GitOps
  • 392
分享到

如何安装及使用GitOps

2023-06-28 02:06:35 392人浏览 安东尼
摘要

小编给大家分享一下如何安装及使用gitOps,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!GitOps是一种实现持续交付的模型,它的核心思想是将应用系统的声明性基

小编给大家分享一下如何安装及使用gitOps,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

GitOps是一种实现持续交付的模型,它的核心思想是将应用系统的声明性基础架构和应用程序存放在Git的版本控制库中。

如何安装及使用GitOps

GitOps与CI/CD:它们之间有什么联系?

GitOps和CI/CD是十分重要的工作伙伴。CI/CD可以让开发人员持续迭代、开发和部署应用程序。而迭代通常通过一个Git配置仓库进行(尽管也会有其他配置仓库)。在部署/交付阶段,构建的基于容器的应用程序被“push”到kubernetes进行部署。GitOps会通过Kubernetes使用“pull”的方法来增强CI/CD模型,从而将运维层面带入部署/交付中。

但是,如果有人更改了Kubernetes集群中运行的某些内容,会发生什么?我们将使用Git作为声明性部署工具的主要事实来源,并利用其他工具在出现差异时向我们发出警报。此外,通过利用可以识别运行状态和声明状态之间差异的工具,Kubernetes可以修复为已知/声明的运行状态。

注意:持续集成和持续开发是互补但独立的过程。在理想状态下,GitOps会将批处理规模拆分为单件流程,每次只处理一个单元。但是,由于CI和CD流程发生在不同的组中,因此组织之间的流程可能会有所不同。

GitOps和应用程序生命周期

让我们从应用程序生命周期的视角来看一下GitOps的作用。在典型的生命周期中,应用程序会经历多个状态,包括:

代码

构建

创建镜像

测试

发布

而使用GitOps,这些状态将会扩展为:

部署

在Git仓库中监控更改

日志更改和事件

发生更改时发出警报,并于现有的监控/告警系统集成

更新

在GitOps操作模型下,当应用程序发布时,Kubernetes需要确保其按预期运行。同时,Kubernetes通过确保其稳定性和可用性来管理应用程序的运维工作。如果一个开发人员通过Git更改了该应用程序,Kubernetes将会接受声明并根据需要应用它。

GitOps带来了什么?

GitOps为应用程序提供一个操作模型,它可以确保Git提供一个框架来统一应用程序的运行、操作和持续开发。

作为CI/CD流水线的一部分,GitOps为应用程序构建/交付与运行它的位置之间提供了粘合剂。

在Kubernetes平台中,Git为应用程序的开发和运维提供了唯一的事实来源。

应用程序交付和平台管理都是声明式的,同时还能通过Git进行版本控制

Git可以控制回滚、升级以及更改

开发人员不需要知道如何操作运维平台(如Kubernetes),无需了解复杂的部署交付流程,仅需使用熟悉的工具发布新功能即可。极大提升开发者体验。

Git控制并修证差异或“漂移”

GitOps利用审核、监控以及回滚功能来增加应用程序发布的可靠性和稳定性

最后,尽管在GitOps模式下还有很多工作要做,但是GitOps、devops以及现有CI/CD模式之间存在十分明显的协同作用。GitOps提供了一种用于将应用程序交付到Kubernetes平台的模型,该模型确保了Git是唯一的事实来源并且充分利用Kubernetes平台上的功能。但值得注意的是,GitOps不能替代工具。恰恰相反,GitOps通过声明性的流程和工具来强化流程、提高其成熟度并帮助团队交付应用程序。

GitOps实践:FluxCD Demo

FluxCD(或Flux)是一个很棒的工具,它可以将Git和Kubernetes集成起来。Flux本质上是一个Kubernetes Operator,这意味着,你作为一个管理员可以将其安装到Kubernetes 以管理Git和原生Kubernetes之间的集成。

在Kubernetes中,Operator是Kubernetes原生平台的扩展,是一种自定义资源的模式,该自定义资源主要用于管理应用程序及其组件。这意味着,在Kubernetes内部Operator的帮助下,所需状态(如运行状态)将不断检查和调整以符合Git仓库声明的内容。Flux可以集成到你现有的CI/CD工具集中,以进行其他工作流程、权限批准和审核。在Kubernetes中,Flux会监控你通过配置声明的Git仓库是否发生更改,并且如果 Kubernetes Pod上在本地发生了不应发生的更改,Flux将会把Kubernetes更新到所需的运行状态。请记住,Git是事实来源。Flux Operator会检测到这一点,并将正在运行的配置更改回声明的状态。

以下demo,我将会展示如何安装和实现Flux。

前期准备

一个Docker Hub镜像仓库,你可以将flaskapp docker镜像上传到此处

一个Git Repo并连接它,然后你可以在整个演示过程中根据需要用你的设置替换“”中的任何内容

具体步骤

安装Kubernetes

安装并配置fluxctl,Flux部署的原生安装程序

配置Flux以连接到Git Repo

在Git Repo中升级deployment manifest

升级容器镜像并同步

配置漂移(drift)并同步

你可以使用以下配置进行测试或演示。它包括Flask应用程序的Docker file以及Kubernetes deployment/配置文件。在演示中,你会需要它们,此外你还可以将它们上传到你指定的Git仓库中。

Docker File

FROM python:3      RUN pip install flask      RUN mkdir -p /corp/app   WORKDIR /corp/app   COPY main.py .   ENV FLASK_APP=/corp/app/main.py      ENV APP_NAME=MyApp.DevOps   ENV APP_VERSioN=v1.0.0      CMD ["flask", "run", "--host=127.0.0.1"]
main.py Python 脚本文件
import osfrom flask import Flaskapp = Flask(__name__)@app.route('/')def index():   appname = os.environ['APP_NAME']   appversion = os.environ['APP_VERSION']   response = "%s - %s.%s\n" %('Hello World', appname, appversion)   return response
Kubernetes Deployment文件
apiVersion: v1kind: Namespacemetadata: name: my-demo---apiVersion: apps/v1kind: Deploymentmetadata: name: fluxdemo namespace: my-demo annotations:   flux.weave.works/tag.flask: glob:develop-v*   flux.weave.works/automated: 'true' labels:   role: fluxdemo   env: demo   app: fluxspec: replicas: 1 selector:   matchLabels:     role: fluxdemo template:   metadata:     labels:       role: fluxdemo   spec:     containers:     - name: Nginx       image: nginx:1.16-perl       imagePullPolicy: IfNotPresent       ports:       - name: Http         containerPort: 80       volumeMounts:       - name: nginx-proxy-config         mountPath: /etc/nginx/conf.d/default.conf         subPath: nginx.conf     - name: flask       image: docker.io//flaskapp:develop-v1.8.0       imagePullPolicy: IfNotPresent       ports:       - name: http         containerPort: 5000       env:       - name: APP_NAME         value: myfluxdemo.k8s.GitOps       - name: APP_VERSION         value: v1.0.5     volumes:     - name: nginx-proxy-config       configMap:         name: nginx-conf---apiVersion: v1kind: ConfigMapmetadata: name: nginx-conf namespace: my-demodata: nginx.conf: |-   #CODE1.0:   #add the nginx.conf configuration - this will be referenced within the deployment.yaml   server {       listen 80;       server_name localhost;       location / {           proxy_pass http://localhost:5000/;           proxy_set_header Host "localhost";       }   }
安装Flux

https://docs.fluxcd.io/en/1.18.0/references/fluxctl.html

安装Fluxcd

https://docs.fluxcd.io/en/1.18.0/tutorials/get-started.html

为Repo配置Flux

创建一个命名空间

kubectl create nsexport FLUX_FORWARD_NAMESPACE=fluxctl list-workloads

安装Fluxcd以建立与你的Git Repo的连接

export GHUSER=""export REPO="gitops-demo"export NS="flux"fluxctl install \--git-user=${GHUSER} \--git-email=${GHUSER}@users.noreply.GitHub.com \--git-url=git@github.com:Image download failed.{REPO} \--namespace=${NS} | kubectl apply -f -
创建ssh密钥以添加到Github仓库

在你的terminal中输入以下命令,以获取下一步所需的密钥:

fluxctl identity

打开Github,导航到安装Fluxcd时添加的仓库,转到设置-部署密钥,单击【添加部署密钥】,为其指定title,选中【允许write access】,粘贴公共密钥,然后单击【添加密钥】。

在Git Repo中升级Deployment Manifest

打开你的Git Repo,里面应该有deployment.yaml文件,向下滑动直到如下所示部分,然后更改APP_VERSION号码

env:   - name: APP_NAME     value: myfluxdemo.K8s.GitOps   - name: APP_VERSION     value: v1.0.5

保存并Commit更改到你的Repo。

Flux将在5分钟之内升级你的deployment

要从localhost进行测试,请在Kubernetes中使用“Port-forward”命令:

kubectl get pods -n  copy the pod name kubectl port-forward  8080:80 -n

打开其他terminal:

curl -s -i http://localhost:8080
升级容器镜像并同步

现在让我们对Docker镜像进行修改并将其上传到我们的Docker Hub镜像仓库中。为此,我们将修改flaskapp目录中的main.py文件。

升级main.py文件。将Hello World更改为其他内容

response = "%s - %s.%s\n" %('Flux World', appname, appversion)

创建一个新的Docker文件并上传到Docker(以及另一个增量版本号)。

等待5分钟,Flux将会自动部署新镜像

配置漂移并同步

现在,我们来测试一下手动更改正在运行的配置会发生什么。

kubectl scale deployment/fluxdemo --replicas=4 -n

现在,我们花几分钟来看看pod并观察发生了什么。我们将会在短时间内(5分钟以内)看到其他的pod,此外我们还将看到许多pod终止。因此,Flux已使配置恢复到当前在Git中保留的已声明的部署状态。

kubectl get po -n  --watch

重新运行相同的命令,并且你会看到目前仅有一个正在运行的pod。

别忘了清理和移除deployment和Git连接(如果你想移除它)。否则,你需要开始添加更多的仓库并继续进行构建。

以上是“如何安装及使用GitOps”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 如何安装及使用GitOps

本文链接: https://lsjlt.com/news/315616.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何安装及使用GitOps
    小编给大家分享一下如何安装及使用GitOps,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!GitOps是一种实现持续交付的模型,它的核心思想是将应用系统的声明性基...
    99+
    2023-06-28
  • jconsole如何安装及使用
    jconsole是Java自带的一种监视和管理工具,用于监控和管理Java虚拟机(JVM)的性能和资源使用情况。要安装和使用jcon...
    99+
    2023-09-25
    jconsole
  • opencv如何安装及使用
    要安装和使用OpenCV,您可以按照以下步骤进行操作:1. 首先,您需要下载并安装OpenCV的库文件。您可以在OpenCV的官方网...
    99+
    2023-09-20
    opencv
  • JQGrid如何安装及使用
    安装JQGrid可以通过以下几个步骤来完成:1. 下载JQGrid插件文件。可以从JQGrid的官方网站(https://www.t...
    99+
    2023-09-29
    JQGrid
  • dosbox如何安装及使用
    要安装和使用DOSBox,您可以按照以下步骤操作:1. 下载DOSBox:您可以从DOSBox官方网站(https://www.do...
    99+
    2023-09-29
    dosbox
  • PowerDesigner如何安装及使用
    PowerDesigner是一款强大的建模工具,用于设计和管理数据库、业务过程、数据仓库和应用程序等。下面是PowerDesigne...
    99+
    2023-09-14
    PowerDesigner
  • Ubuntu如何安装及使用Python3-pip
    本文小编为大家详细介绍“Ubuntu如何安装及使用Python3-pip”,内容详细,步骤清晰,细节处理妥当,希望这篇“Ubuntu如何安装及使用Python3-pip”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-04
  • linux如何安装配置及使用redis
    这篇文章主要为大家展示了“linux如何安装配置及使用redis”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux如何安装配置及使用redis”这篇文章吧...
    99+
    2024-04-02
  • Mac如何安装brew及使用brew安装软件/插件?
    文章目录 前言一、brew安装1、brew 镜像安装脚本2、官网安装 二、使用步骤 前言 刚入手一台Mac笔记本,没有啥配置,需要使用脚本安装一些软件或者插件需要使用brew,...
    99+
    2023-09-05
    macos
  • javaFX安装及使用
    一、javaFX下载 Jdk 从 1.8 开始 jdk 自带 JavaFX,到 Jdk 11 开始 jdk 不再内置 JavaFX,所以如果你使用的是高版本的 jdk 在使用 javaFX 的时候就需...
    99+
    2023-09-01
    intellij-idea java javaFX安装及使用 javaFX javaFX安装
  • SeleniumIDE安装及使用
    目录1.Selenium IDE简介2.Selenium IDE下载3.使用1.Selenium IDE简介 是Chrome和FireFox的扩展工具,用于在浏览器中进行便捷的录制与...
    99+
    2023-03-22
    Selenium IDE安装 Selenium IDE使用
  • resin3安装及使用
    1.)安装JAVA2.)设置环境变量3.)安装resin4.)resin多进程设置一、下载JAVA的rpm包,直接安装即可二、设置环境变量  1.为了统一路径,将JAVA建一个软连接在/opt目录      ln -s /opt/zimbr...
    99+
    2023-01-31
  • Flume的安装及使用
    Flume的安装及使用 目录Flume的安装及使用Flume的安装1、上传至虚拟机,并解压2、重命名目录,并配置环境变量3、查看flume版本4、测试flume5、flume的使用 Flume的安装 1、上传至虚拟机,并解压 tar -z...
    99+
    2015-07-16
    Flume的安装及使用
  • Labelme 安装以及使用
    好久没有使用标注工具了,应工作需要,补一篇,自己实践后,总结如下 1.labelme 简介 labelme 是一款图像标注工具,主要用于神经网络构建前的数据集准备工作,因为是用 Python 写的,所...
    99+
    2023-09-26
    python 开发语言 深度学习
  • labelme的安装及使用
    一、Anaconda的安装 步骤1:访问Anaconda官网,点击Download,下载Anaconda软件安装包。 步骤2:双击刚下载好的anaconda软件安装包,按照提示进行下一步操作即可。 ...
    99+
    2023-09-09
    python 深度学习 linux
  • DDDDOCR安装以及使用
    DDDDOCR图片验证码识别技术 在我们日常浏览网页的时候,常常会弹出一张图片让你来验证,有的是滑动验证,有的是输入相应字符来进行验证,今天我就来给大家介绍这么一个技术,可以专门用来识别图片验证码的功...
    99+
    2023-09-18
    python numpy pycharm
  • MySQL Workbench安装及使用
    目录 一、MySQL Workbench简介 二、MySQL数据库安装 三、远程连接MySQL服务器 四、创建数据库 五、创建数据表 六、数据内容维护 七、查看数据表 八、修改数据表 九、删除数据表 一、MySQL Workben...
    99+
    2023-08-31
    数据库 mysql sql
  • MySQL Workbench 安装及使用
    MySQL Workbench 安装及使用 文章目录 MySQL Workbench 安装及使用1. MySQL Workbench 简介2. MySQL Workbench 的下载与安装3. MySQL Workbench 使用...
    99+
    2023-08-18
    mysql 数据库 dba
  • 如何安装nvm并使用nvm安装nodejs及配置环境变量
    这篇文章主要介绍了如何安装nvm并使用nvm安装nodejs及配置环境变量的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何安装nvm并使用nvm安装nodejs及配置环境变量文章都会有所收获,下面我们一起来看...
    99+
    2023-07-05
  • OSWatcher如何安装使用
    这篇文章主要介绍了OSWatcher如何安装使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 [root@rhel5 ~]# l...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作