如何在Gitlab流水线中对部署进行控制?

让我们看一下如何使用受保护的环境来设置生产部署和流水线的访问控制。这个功能目前在Gitlab Silver / Premium版本可用。

在我们的自动化世界中,为什么要手动做一些事情?手动几乎已成为低效率的代名词。但是,对于CI/CD管道,正确的配置手动作业可能是控制部署并满足合规性要求的好方法。让我们看一下如何定义手动作业以服务于两个重要的场景:控制谁可以去部署,设置手动批准作业。

部署环境保护

部署到生产环境是一项非常关键的任务,我们应该加以保护。具有Kubernetes集群的项目可以从迁移到持续部署(CD)模型中受益,在该模型中,分支或合并请求一旦合并,就会自动部署到生产中,并且无需人工干预。但是,对于尚未配置CD的项目,让我们考虑以下场景:想象一个带有手动作业的管道,该手动作业可以控制产品部署,任何有权访问提交代码的用户都可以触发该管道,可以想象生产部署的意外风险是非常大的。

幸运的是,可以使用受保护的环境来防止任何人都能部署到生产环境。在配置受保护的环境时,您可以定义授予部署访问权限的角色,组或用户。然后,可以在手动作业中定义受保护的环境以进行部署,从而限制可以运行它的人员。配置如下所示:

deploy_prod:
  stage: deploy
  script:
    - echo "Deploy to production server"
  environment:
    name: production
    url: https://example.com
  when: manual
  only:
    - master

在上面的示例中,关键字environment用于引用受保护的环境(在项目设置中配置),该环境包含可以运行作业的用户列表,在这种情况下,该用户可以将产品部署到指定的环境。没有访问权限的用户将看到禁用的按钮,并且无法执行作业。

添加批准步骤

可能会指定工作流中的某些活动需要批准后才能运行,即使从技术上讲它们本身并不是部署步骤。在此场景中,还可以在流水线中添加批准步骤,以提示授权用户采取措施以继续。这可以通过approve阶段来实现,例如,在部署之前插入批准阶段,如下所示:

stages:
  - build
  - approve
  - deploy

build:
  stage: build
  script:
    - echo Hello!

approve:
  stage: approve
  script:
    - echo Hello!
  environment:
    name: production
    url: https://example.com
  when: manual
  allow_failure: false
  only:
    - master

deploy:
  stage: deploy
  script:
    - echo Hello!
  environment:
    name: production
    url: https://example.com
  only:
    - master

在上面的YAML中,allow_failure: false (将手动作业定义为阻断),这将导致Pipeline暂停,直到授权用户通过单击开始按钮以继续进行批准为止。只有该环境列表的用户部分才能执行此操作。在这种情况下,以上示例CI配置中管道的UI视图将如下所示:

如上面的YAML示例和上图所示,使用受保护的环境和阻止属性定义的手动作业是处理合规性需求以及确保对生产部署进行适当控制的有效工具。

扩展内容

什么是GitOps?

从概念上讲,GitOps与用代码描述基础设施或持续交付没有什么不同。实际上,在许多方面,是这两个概念的融合。开发人员和运营团队都可以共享一个通用的代码存储库,而GitOps则可以为开发人员提供类似的管理应用程序及其底层基础架构的体验。这样,您可以将GitOps用作现代基础架构(如Kubernetes,Serverless和其他云原生技术)的操作模型。

版本控制和持续集成是持续可靠地部署软件的基本工具。GitOps通过使存储库成为运行应用程序所需的所有基础架构的真实来源,将这两种软件最佳实践投入运营。使用GitOps,对基础架构的任何更改都会与应用程序的更改一起提交到git存储库。

这使开发人员和运维人员可以使用熟悉的开发模式和分支策略。合并请求提供了协作和建议更改的场所。合并到主干后,应配置CI/CD以自动部署应用程序和基础架构更改。这是开发人员和运维人员之间实现同步的方式,对于作为DevOps的下一个迭代的GitOps来说,可能会非常吸引人。

为什么选择GitOps?

为什么这么多大小的组织都在考虑转向更注重GitOps的文化?

随着软件吞噬了世界,卓越的业务运营已与快速交付高质量软件的能力直接挂钩。业务生存取决于适应性和高效的软件开发实践。这些实践需要新的流程和变更管理方式。随着GitOps将这一概念进一步发展,并将管道直接集成到git和合并请求工作流程中,将其集成到生产中,这已成为一个热门话题,并将成为高效软件组织的常规工作流程。

更多精彩请关注 DevOps云学堂



添加微信小助手devopsvip 回复 "加群",自动加入群聊。

点亮 ,告诉大家你也在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值