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

发表时间:2025-07-24 17:18

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

一、什么是 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(例如,GitHubGitLab)。

⑷仓库引用指定您想要部署的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 自动更新应用程序

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

工作流示例:

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

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

PortainerGitOps 功能检测到该变更(基于您配置的同步间隔)并自动将更新的应用程序重新部署到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 部署

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

工作流示例:

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

●开发: dev 分支

●预览:staging 分支

●生产:main 分支

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

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

主要优势:

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

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

Portainer GitOps支持为跨Kubernetes环境管理和自动化应用部署提供了强大功能。通过将Git作为真实来源,您可以确保部署流程中的一致性、可靠性和可追溯性。无论是需要自动更新、轻松回滚还是多环境管理,PortainerGitOps都为您的Kubernetes工作负载提供了灵活且可扩展的解决方案。



Nebula Data星雲數據,总部位于新加坡,在广州、上海、香港设有分支机构,是行业领先的云网一体化及智能算力服务提供商,专注服务中资企业出海全球化。提供全球AIDC(AI智算中心) + 低延迟网络 + 融合云管理的一体化解决方案,赋能企业拥抱AI,拓展全球。