全面解读!基于Portainer的GitOps的核心应用场景与落地指南

Portainer是一款强大的工具,可简化容器化应用的管理,并且凭借其内置的GitOps功能,从Git仓库部署和管理应用变得无缝便捷。在本篇中,我们将通过创建存储在Git中的Kubernetes配置文件来配置Portainer的GitOps,并辅以实际案例和实用场景。

一、什么是 GitOps?

GitOps是一种现代化的管理和自动化部署方式,它将Git 视为基础设施和应用配置的权威来源。通过GitOps,所有变更都在Git仓库中进行,而像Portainer这样的GitOps工具则确保运行环境与Git中定义的期望状态保持一致。这种方式提供了可追溯性、版本控制和自动回滚等优势。

二、在Portainer中设置Gitops

在 Portainer 中,当您从存储在Git 仓库中的清单创建新应用时,即可设置GitOps。无需单独“启用”GitOps——它作为编码化应用部署过程的一部分而原生支持。

前置条件

●正在运行的Kubernetes集群。

●已安装并配置的Portainer Business Edition安装并配置。

●一个包含Kubernetes资源清单或Helm图表的Git仓库。

步骤1:导航至应用并选择“从清单创建”
⑴登录 Portainer并选择您的Kubernetes环境。
⑵导航至应用部分。
⑶点击从清单创建开始使用存储在Git仓库中的清单部署应用程序的过程。

步骤2:使用清单配置GitOps

当提示时,您需要配置与您的Git仓库的连接:

⑴命名空间:决定您是否要使用清单中指定的命名空间,或覆盖并手动选择目标命名空间

⑵认证:如果您的Git仓库需要认证,请添加凭证.

⑶仓库URL:输入存储Kubernetes配置清单的Git URL(例如,GitHub、GitLab)。

⑷仓库引用:指定您想要部署的Git分支(通常为 main 或 master)。

⑸配置清单路径:提供仓库中配置清单所在的路径(例如,/manifests/deployment.yaml)。您可以为您的应用程序添加多个配置清单路径。

这是一个基本的 deployment.yaml 示例:

一旦您配置了与您仓库的连接,Portainer将会获取并应用到您的Kubernetes环境中的清单文件。

步骤3:设置GitOps 自动同步

在设置过程中,您可以配置 Portainer自动与Git仓库同步。这确保了推送到仓库的更改(例如新的镜像版本或配置更新)会自动应用到您的Kubernetes集群。

⑴GitOps更新:选择以启用GitOps协调引擎。

⑵机制:如果您偏好基于推送的更新,可以选择启用轮询(默认)或 Webhook。

⑶获取间隔:您可以配置Portainer久检查一次您的Git仓库更新(例如,每5 分钟)。

⑷始终应用清单:此选项确保任何在集群中生效的本地更改都将被覆盖,即使Git仓库中没有变化。

⑸跳过TLS验证:如果你在Git仓库中使用自签名证书,可以禁用TLS警告。

三、应用场景

①使用GitOps 自动更新应用程序

假设你管理着一个通过GitOps在Portainer中部署的容器化Web 服务。该应用程序是一个基本的Nginx Web服务器。

工作流示例:

团队在 deployment.yaml 中将Docker 镜像版本从nginx:1.17 更新为nginx:1.18。

他们随后将更新的清单推送到Git仓库的main分支。

Portainer的GitOps 功能检测到该变更(基于您配置的同步间隔)并自动将更新的应用程序重新部署到Kubernetes,切换到新的nginx 镜像版本。

主要优势:

●自动化:无需手动更新,确保应用程序始终与Git中的最新配置匹配。

●一致性:运行环境始终反映Git中定义的期望状态。

②使用 GitOps进行回滚

Portainer中的GitOps也简化了回滚操作,帮助团队在更新过程中出现问题时快速恢复到先前已知的良好状态。

工作流示例:

在部署 nginx:1.18 后,你发现新版本引入了一个bug。

要回滚,只需将 Git 仓库中的更改恢复到之前的nginx:1.17 版本:

然后将更改推送到 Git 仓库。

Portainer自动检测到更新,并将先前的工作版本(nginx:1.17) 重新部署到Kubernetes,从而有效地回滚了该更改。

主要优势

●轻松回滚:只需在Git中回滚更改,让Portainer处理重新部署。

●版本控制:由于所有更改都记录在 Git 中,您拥有所有部署的完整审计记录。

③多环境GitOps 部署

如果你管理多个环境,例如开发、测试和生产环境,你可以使用Portainer的GitOps来以一致和可控的方式管理所有环境的部署。

工作流示例:

每个环境(开发、测试、生产)都链接到你的Git仓库中的不同分支。

●开发: dev 分支

●预览:staging 分支

●生产:main 分支

开发者将更改推送到dev分支,一旦测试通过,他们就会将更改合并到staging分支以进行进一步验证。

最后,一旦变更通过验证,代码将被合并到main分支,Portainer会自动将其部署到生产Kubernetes集群。

主要优势:

环境隔离:为每个环境创建独立的Git分支,防止未经测试的变更进入生产环境。

自动化:Portainer根据Git分支更新自动将部署到正确的环境。

Portainer 的GitOps支持为跨Kubernetes环境管理和自动化应用部署提供了强大功能。通过将Git作为真实来源,您可以确保部署流程中的一致性、可靠性和可追溯性。无论是需要自动更新、轻松回滚还是多环境管理,Portainer的GitOps都为您的Kubernetes工作负载提供了灵活且可扩展的解决方案。
星雲數據(香港)有限公司星雲數據(香港)有限公司https://nebula-data.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值