Gitops 最佳实践|学习笔记

简介: 快速学习Gitops 最佳实践

开发者学堂课程【云原生实践公开课Gitops 最佳实践】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/698/detail/12276


Gitops 最佳实践


内容介绍:

一、 GitOps 概述

二、 应用中心介绍

三、 部署应用

四、 GitOps 交付实践


一、 GitOps 概述

1.什么是 GitOps

GitOps 是一种应用持续交付的方式,它的核心思想是将应用程序的声明式编排甚至基础架构编排都存放在 Git 源仓库中,实际上任何能被描述的内容都可以被存放在Git 源仓库中

GitOps 主要应用场景是在云原生环境下应用的持续交付,相反云原生环境也为GitOps 交互模式的发挥提供了一些基础设施的条件,如下所示:

(1)使用GitOps交付模型的基础条件:

  • 不可变基础设施。
  • 声明式的容器编排。

2.GitOps交付模型的特性:

  • Git 作为应用变更的唯一入口
  • 拉式流水线。
  • 可观测性。

3.GitOps工作流程∶

  • 应用管理员提交应用变更到Git.
  • GitOps 引擎定期检测Git端应用更新,若有更新则开始拉式流水线。
  • GitOps 引擎拉取应用更新并交付到实际运行环境。
  • GitOps 引擎定期检测应用的实际运行状态和Git端描述的状态的差异性并报警或自动处理。

4.GitOps的好处

  • 研发效能提升。
  • 安全审批和审计.
  • 应用运维效率提升。
  • 更快的平均恢复时间。


二、应用中心介绍

应用中心是用于 Kubernetes 的声明式的 GitOps 持续交付工具,基于 开源工具Argo CD开发

image.png

Argo CD 包括三个组件,第一个是API,第二最主要的就是操作这个应用,负责增删改查主要是管理这个原仓库,例如添加 git 类型的原仓库,以及可以添加HIB类型的原仓库作为仓库去进行管理创建删除以及配对的速度管理都在rap上。

原生的 Kubernetes 没有一个完整的应用的概念所有应用的子资源,部署下去就分散到集群里去。

Argo CD 把这些所有的资源全部描述在一个里这里就是一个完整的应用的概念  

1. 安装和使用

(1) 第一步安装控制器

(2) 添加集群

2.数据源仓库管理

  • 阿里云应用模板
  • n Git仓库
  • Helm 仓库

3.集群管理

登录GitHub,打开需要部署的仓库

image.png

因为是公共的仓库,所以不需要密码直接可以登录


三、创建和部署应用

使用应用中心创建应用应包含以下几部分配置:

1.基础配置

image.png

  • 应用名称,如 guestbook
  • 应用同步策略,如 none 或 automated

2.源仓库配置

  • 源仓库类型,如gi或 helm
  • 源仓库地址,如httos:llgithub.comhaoshuwei/book-examples
  • 其他信息,如果是Git类型源仓库,则还需要配置修订版本信息子目录信息,本

示例中配置修订版本为‘master`分支,子目录为"examples/guestbook/helm`;

如果是 Helm 类型源仓库,则需要选择 Helm Chart 名称及其版本号

3.目标集群配置

image.png

  • 目标集群的API Server地址或目标集群的名称,https://192.168.0.32:6443或appcenter
  • 目标集群的命名空间,如 guestbook

4.guestbook 应用资源拓扑


image.png

healthy:表示应用是否正常运行。

synced:表示处于同步状态,即 git 端和实际运行环境中的版本是一致的。

sync ok:在部署应用的动作是否成功完成并返回。

刷新后查看

image.png


四、GitOps交付实践

GitOps 模式更新应用 guestbook :

1.开发者创建开发分支 feat/guestbook-v2并更新应用

2. 开发者请求合并分支 feat/guestbook-v2到 master

3.应用管理员审批步骤2中的合并请求,若应用更新没问题则合并请求

4.应用中心自动检测 Git 端应用 guestbook的更新

5.若检测到更新,则将其同步部署至实际运行环境 

代码示例:

apiversion: v1

kind: Servicemetadata:

annotations:

kubectl. kubernetes.io/last-applied-configuration: >

{"apiVersion":"v1","kind"":"Service","metadata": {"annotations":{}"labecs":{"app" :"guestbook" ,"app.kuberncreationTimestamp: "2020-10-20T14:38:42z'

labels:

app: guestbook

app. kubernetes.io/instance: guestbook

tier: f rontend

name: frontend

namespace: guestbook

resourceversion: '307457784"

selfLink:/api/v1/namespaces/guestbook/services/frontenduid: 1f1382d3-5841-493d-9689-8edada3ead22

spec:

clusterIP: 172.17.8.69

externalTrafficPolicy: clusterports:

- nodePort: 30020

port: 80

protocol: TCPtargetPort: 80selector:

app: guestbook

tier: frontend

essionAffinity: Nonetype: NodePort

status:

loadBalancer: {}

手动刷新后

image.png

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes Cloud Native 开发工具
Argo与Flux在云原生GitOps实践上的能力对比与分析
随着云原生技术的普及和落地,越来越多的云原生应用被部署到生产环境中,由于云原生应用通常都是基于云的分布式部署模式,且每个应用可能是由多个功能组件互相调用来一起提供完整的服务的,每个组件都有自己独立的迭代流程和计划。在这种情况下,功能组件越多,意味着应用的发布管理越复杂,如果没有一个好的方案或者系统来管理复杂应用的发布上线的话,业务面临的风险也是非常大的。开源社区在复杂应用发布管理方面逐渐开始发力,
5225 1
Argo与Flux在云原生GitOps实践上的能力对比与分析
|
5月前
|
人工智能 数据可视化 程序员
程序员必收藏!Github 167000+ star 的自主AI agent,全自动AI助手,全面覆盖开发效率场景
AutoGPT 是基于 GPT-4 的开源自主 AI 智能代理,全面覆盖开发效率场景。支持任务自动拆解、多轮反馈、插件扩展与记忆管理,具备持续执行能力,适合自动化测试、CI/CD、Web 数据抓取等任务。GitHub 超 176K Star,是当前最热门的 AI Agent 开源项目之一,提供 CLI 与 GUI 双界面,助力开发者提升工作效率。
726 1
|
5月前
|
存储 人工智能 运维
阿里云联合信通院发布《面向LLM应用的可观测性能力要求》
随着大模型技术的广泛应用,大语言模型(LLM)在对话系统、检索增强生成(RAG)、智能体(Agent)等场景中展现出无限的想象力与创造力。同时,基于 LLM 以及 AI 生态技术栈构建的应用以及业务场景也如雨后春笋般不断涌现。然而,LLM 应用在生产落地过程中面临着模型不确定性大、架构链路复杂、用户体验难以评估等诸多痛点。如何构建 LLM 应用的全链路可观测性体系以及如何评估可观测性能力是否完善,业界缺乏统一且完整细致的标准。
|
弹性计算 安全 容灾
【深度好文】为什么说用好VPC很重要!
本文详细探讨了阿里云VPC(Virtual Private Cloud)的使用方法及其重要性。 VPC作为用户云上的“数据中心”,提供了安全隔离的网络环境,帮助用户构建和管理云服务。文章首先对比了经典网络和VPC的区别,强调了VPC在安全性、灵活性和扩展性方面的优势。接着,通过具体的规划步骤,包括选择地域、账号规划、网段规划、安全隔离设计等,展示了如何有效利用VPC。此外,还介绍了VPC连接互联网的方式及安全措施,以及VPC与IDC互访的解决方案。 总体而言,VPC不仅是用户上云的第一步,更是构建稳定、高效云基础设施的关键。
springboot字段注入@value细节
springboot字段注入@value细节
222 1
|
监控 Devops 持续交付
掌握 GitOps:实现 DevOps 自动化的现代方法
【10月更文挑战第19天】GitOps 是一种基于 Git 仓库管理应用配置和集群状态的现代化 DevOps 方法,通过自动化工具实现声明式配置和持续部署。本文介绍了 GitOps 的核心概念、优势、挑战及实施的最佳实践,帮助团队提高部署效率和系统可靠性。
|
12月前
|
人工智能 自然语言处理 安全
已解决:国内如何使用Claude 3.5 Sonnet \ claude官网中文入口
已解决:国内如何使用Claude 3.5 Sonnet \ claude官网中文入口
2158 20
|
Kubernetes 应用服务中间件 nginx
史上最全干货!Kubernetes 原理+实战总结(全文6万字,90张图,100个知识点)(上)
史上最全干货!Kubernetes 原理+实战总结(全文6万字,90张图,100个知识点)
52703 30
|
存储 jenkins Java
CentOS上安装Jenkins
CentOS上安装Jenkins
519 0
|
jenkins Java Shell
jenkins学习笔记之十三:配置SonarScanner扫描Java项目
jenkins学习笔记之十三:配置SonarScanner扫描Java项目