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/


被折叠的 条评论
为什么被折叠?



