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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 Kubernetes Cloud Native
【云原生|K8s系列第3篇】:实战Kubectl创建Deployment部署应用
本期文章是K8s第3篇,主要是实战Kubectl创建Deployment部署应用。通过本期文章:我们将学习创建在 Kubernetes 集群上运行应用程序的 Deployment 所需的最常见的 Kubectl 命令。
【云原生|K8s系列第3篇】:实战Kubectl创建Deployment部署应用
|
Kubernetes Cloud Native 安全
ArgoCD + KubeVela:以开发者为中心的 GitOps
在这篇博文中,我们将分享基于阿里云的用例,使用 Argo CD 和 KubeVela 构建以开发者为中心的持续应用交付流水线的经验。
ArgoCD + KubeVela:以开发者为中心的 GitOps
|
12月前
|
存储 Kubernetes Linux
Terraform管理Kubernetes的初体验
Terraform管理Kubernetes的初体验
204 0
|
存储 Kubernetes 前端开发
GitOps【1】入门实践
GitOps【1】入门实践
GitOps【1】入门实践
|
存储 Kubernetes 前端开发
openshift gitops 实践
openshift gitops 实践
openshift gitops 实践
|
存储 Kubernetes 测试技术
GitOps 多环境部署问题及解决方案(上)
GitOps 多环境部署问题及解决方案(上)
198 0
GitOps 多环境部署问题及解决方案(上)
|
存储 运维 Kubernetes
GitOps 多环境部署问题及解决方案(下)
GitOps 多环境部署问题及解决方案(下)
258 0
GitOps 多环境部署问题及解决方案(下)
|
JSON Prometheus 运维
Kubernetes 应用管理领域总揽和入门实践|学习笔记(二)
快速学习 Kubernetes 应用管理领域总揽和入门实践
133 0
Kubernetes 应用管理领域总揽和入门实践|学习笔记(二)
|
运维 Kubernetes Cloud Native
Kubernetes 应用管理领域总揽和入门实践|学习笔记(一)
快速学习 Kubernetes 应用管理领域总揽和入门实践
94 0
Kubernetes 应用管理领域总揽和入门实践|学习笔记(一)
|
Kubernetes 容器
《GitOps:Kubernetes多集群环境下的高效CICD实践》电子版地址
GitOps:Kubernetes多集群环境下的高效CICD实践
91 0
《GitOps:Kubernetes多集群环境下的高效CICD实践》电子版地址