我有一个安装了Docker化的Jenkins构建服务器,如下所示,我想将其移至AWS。
我对此有疑问,谢谢。
ECS是部署Docker化的Jenkins代理的正确选择吗?
Fargate ECS的启动类型是否支持Windows容器?
我知道ECS可以动态配置EC2实例,是否可以像下面这样配置ECS?
a。如果没有要构建的作业,则集群中没有运行ECS2实例。
b。如果启动了构建作业,则ECS将动态启动EC2实例,以运行dockerized代理对其进行处理。
c。构建作业完成后,ECS群集将自动停止或终止正在运行的EC2实例。
================================================ ==================
Jenkins master:
Runs as a Linux container hosted on a UBUNTU virtual machine.
Jenkins Agents:
Linux Agent:
Runs as a Linux container hosted on the same UBUNTU virtual machine as master.
Windows Agents:
Runs as a windows container hosted on a Windows server 2019.
答案 0 :(得分:1)
好吧,我为您提供一些提示:
是的,ECS可以使用自动缩放来动态设置EC2实例,但是只有在cloudwatch中达到指标的阈值并且抛出警报并且自动缩放才能开始工作时,ECS才可以使用。使用jenkins主服务器在ECS中启动任务,然后在执行作业时启动1或2个代理既不是一个好策略,也不是可行的想法,谁来唤醒这些任务?
如果您想在EC2实例中使用jenkins docker并且您有一个主节点正在运行,并且您想保持停止未使用的代理并仅在作业需要时才启动它,也许可以在您的Jenkinsfile中调用lambda函数来启动您的代理,这里是Jenkinsfile中的示例:
stage('Start Infrastructure') {
steps {
sh '''
#!/bin/bash
aws lambda invoke --function-name Wake_Up_Jenkins_Agent --invocation-type Event --log-type Tail --payload '{"node":"NodeJS-Java-Agent","action":"start"}' logsfile.txt
'''
}
}
随后又是另一个阶段,以停止您的代理,但是您的主节点必须处于联机状态,因为它是从存储库或CI / CD流程调用的关键和主要组件。另外,您还需要通过逻辑过程来实现lambda来启动或停止实例。