AWS CI/CD之二:配置CodeDeploy

这篇具有很好参考价值的文章主要介绍了AWS CI/CD之二:配置CodeDeploy。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

前面一篇文章介绍了CodeBuild中构建一个Java的Maven项目。在这个基础上面,我们继续AWS CI/CD工作流构建之路。

1.配置CodePipeline简配版

这里主要是利用CodePipeline配置之前的CodeBuild项目,以便生产出需要部署的jar文件和CodeDeploy需要用到相关脚本文件。打开CodePipeline主页,开始创建管道,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
这次创建CodePipeline只涉及到CodeBuild,也就是只配置到Build阶段。下面开始管道设置,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
下一步,设置源代码,如下图:

AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
下一步,设置构建阶段,这里选择,之前CodeBuild设置的构建项目,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
下一步,设置部署阶段,这次我们先跳过,这个步骤,具体如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
点击创建管道,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
配置成功后,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

等待一段时间后,等这个管道构建jar文件完成后,就可以去s3页面查看,构建好的压缩包,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
这样就可以去s3页面,查看管道生产的构件文件了,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
将该构件zip文件下载,到本地检查查看如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
这里涉及到的脚本文件,我们在启动模板里面再解释。

2.创建EC2实例的IAM角色

这里使用的IAM角色,是提供给EC2实例使用的角色。打开IAM主页,点击角色,点击创建角色,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
选择AWS服务,使用EC2服务实例,点击下一步,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
配置ec2实例角色,需要的aws托管权限策略,添加AmazonAPIGatewayInvokeFullAccess,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
设置角色名称和描述,如下图:

AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
点击编辑,继续添加aws托管权限策略,添加AmazonSSMManagedInstanceCore,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
在依次添加AmazonSSMReadOnlyAccess,CloudWatchAgentServerPolicy策略,具体托管策略如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
点击创建角色,得到如下结果图:

AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
再添加两种自定义权限策略,一种是读取指定s3桶策略;一种是读取配置中心的secretsmanager策略。

GetSecretValue

打开策略主页,开始创建新策略,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

读取配置中心的secretsmanager策略,内容如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "secretsmanagerRead",
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:*:账户ID:secret:*"
        }
    ]
}

具体设置如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
创建策略,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

dev-s3

按照上述方法,创建读取指定s3桶读策略。策略内容如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::dev-xxx-data",
                "arn:aws:s3:::codepipeline-us-east-1-414194568564",
                "arn:aws:s3:::codepipeline-us-east-1-414194568564/*"
            ]
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": [
                "arn:aws:s3:::dev-xxx-data/*"
            ]
        }
    ]
}

这里主要设定s3桶和桶中的读权限,其中一个codepipeline桶是上面codepipeline构件生成位置。

CodeDeployCLI策略

方便EC2实例调用codedeploy命令权限策略,具体内容如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "codedeploy-commands-secure:GetDeploymentSpecification",
                "codedeploy-commands-secure:PollHostCommand",
                "codedeploy-commands-secure:PutHostCommandAcknowledgement",
                "codedeploy-commands-secure:PutHostCommandComplete"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

然后,将这上述自定义的权限策略添加到ec2角色中去,具体如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
依次添加上述自定义权限策略,最终结果如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

3.配置spring服务日志组

打开CloudWatch主页,开始创建日志组,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
设置日志组名称,点击创建,如下图:

AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

4.Spring中配置日志服务

只需要配置application.yaml即可,具体如下类似内容:

spring:
    application:
        name: demo
logging:
    file:
        name: ${user.home}/log/demo.log
    level:
        root: info
        org.springframework.web: debug
        org.hibernate: error
    logback:
        rollingpolicy:
            total-size-cap: 1GB

这里主要是要确定spring的日志文件输出位置。

5.配置EC2启动模板

打开EC2启动模板主页,开始进行创建启动模板,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
先简单配置启动模板,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
注意这里,还需要设置密钥文件和IAM实例配置文件,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

在用户数据部分设置,启动ec2实例的关键脚本,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
具体内容参考如下:

#!/bin/bash
# 安装CodeDeploy 代理程序
sudo yum -y update
sudo yum -y install ruby
sudo yum -y install wget
cd ~
aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1
chmod +x ./install
sudo ./install auto
# 调整codedeploy使用IAM授权
echo -e "\n:enable_auth_policy: true" | sudo tee -a /etc/codedeploy-agent/conf/codedeployagent.yml
sudo systemctl restart codedeploy-agent.service
# 安装Corretto17
sudo yum -y install java-17-amazon-corretto
java -version
# 设置环境变量
echo "export SPRING_PROFILES_ACTIVE=dev" | sudo tee /etc/profile.d/load_env.sh
echo "export SPRING_APPLICATION_NAME=xxxc" | sudo tee -a /etc/profile.d/load_env.sh
export SPRING_PROFILES_ACTIVE=dev
export SPRING_APPLICATION_NAME=xxxc
echo "export DEPLOYMENT_GROUP_NAME=dev" | sudo tee -a /etc/profile.d/load_env.sh
echo "export APPLICATION_NAME=xxxc" | sudo tee -a /etc/profile.d/load_env.sh
export DEPLOYMENT_GROUP_NAME=dev
export APPLICATION_NAME=xxxc
# 下载构建文件
cd ~
buildArtif=$(aws s3 ls s3://codepipeline-us-east-1-414194568564/dev-xxxc/BuildArtif/ --recursive --region us-east-1 | sort | tail -n 1 | awk '{print $4}') 
aws s3 cp s3://codepipeline-us-east-1-414194568564/$buildArtif . --region us-east-1
fileName=$(basename $buildArtif)
unzip ~/$fileName
chmod +x ~/*.sh
source ~/install_dependencies.sh
source ~/change_permissions.sh
source ~/start_server.sh

上述脚本,主要就是安装CodeDeploy代理程序,并开启CodeDeploy的IAM角色授权,安装JDK运行环境和相关环境变量设置,最后,就是下载CodePipeline构建好的jar和相关启动脚本,运行相关启动脚本。
最后点击创建启动模板。最终,结果如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
到这里可以手动测试一下这个启动模板,能否正常工作,具体如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

6.配置负责均衡器ELB

6.1创建ELB安全组

AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

6.2创建目标组

AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
下一步,挑选一个之前用启动模板创建的EC2实例,进行创建目标组,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
等待一段时间,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

6.3. 配置NLB

开始创建LB,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
选择创建NLB,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
详细设置如下:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
创建完NLB一段时间后,回到目标组,查看注册目标状态,如下图,表示NLB创建成功了:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

7.配置Auto Scaling组

开始创建Auto Scaling组,设置组名称,选择之前创建的启动模板,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

选择实例启动选项,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
配置高级选项,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
配置组大小和扩展策略,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
跳过通知设置,直接开始设置标签,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
下一步,审核通过后,直接创建即可。审核页面,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
等待一段时间后,auto scaling组就创建好了。如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

8.配置CodeDeploy

8.1 创建应用程序

开始创建CodeDeploy的应用程序,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
创建应用程序,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

8.2 创建AutoScalingForCodeDeploy自定义策略

打开策略主页,开始创建AutoScalingForCodeDeploy策略,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
点击创建策略,将下面内容复制进去,如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AutoScalingForCodeDeploy",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole",
                "ec2:CreateTags",
                "ec2:RunInstances"
            ],
            "Resource": "*"
        }
    ]
}

点击下一步,如下图:

AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
点击创建策略,如下图:

AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

8.3 创建角色

打开角色主页,开始创建新角色,如下图:

AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
点击创建角色,选中相关服务,如下图:

AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
点击下一步,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
点击创建角色,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
找到刚才创建的CodeDeployServiceRole角色,点击进入详情,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
开始添加自定义权限策略,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
添加AutoScalingForCodeDeploy自定义策略,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
最终角色的权限策略,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy

8.4 创建部署组

打开CodeDeploy之前创建的应用程序的部署组部分,我们开始创建dev环境的部署组,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
设置基本设置后,开始创建部署组,如下图:
AWS CI/CD之二:配置CodeDeploy,aws,ci/cd,云计算,CodeDeploy
到这里就创建部署组成功了。

总结

这个CodeDeploy是AWS CI/CD里面比较复杂一个部分,只要我们保证CodeBuild和CodeDeploy没问题的前提下面,我们就可以开始AWS CI/CD最后一个核心服务CodePipeline。文章来源地址https://www.toymoban.com/news/detail-807872.html

参考:

  • 使用 CodeDeploy 亚马逊 Virtual Private Cloud
  • Amazon Corretto 17 Installation Instructions for Amazon Linux 2 and Amazon Linux 2023

到了这里,关于AWS CI/CD之二:配置CodeDeploy的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CI/CD工具中的CI和CD的含义

    CI/CD 是现代软件开发方法中广泛使用的一种方法。其中,CI 代表持续集成(Continuous Integration),CD 则有两层含义,一是持续交付(Continuous Delivery),二是持续部署(Continuous Deployment)。下面是这些术语的详细解释: 持续集成(Continuous Integration):CI 是一种开发实践,开发人

    2024年02月07日
    浏览(36)
  • [Docker实现测试部署CI/CD----相关服务器的安装配置(2)]

            Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。 下载Linux版本的jdk,解压到/usr/local目录 进入 /etc/profile 目录,设置环境变量 刷新配置文件,输入

    2024年02月14日
    浏览(39)
  • [Docker实现测试部署CI/CD----相关服务器的安装配置(1)]

    CI,Continuous Integration,持续集成。即将持续不断更新的代码经构建、测试后也持续不断的集成到项目主干分支。 CD,包含两层含义:Continuous Delivery,持续交付,和 Continuous Deployment,持续 部署。 持续交付:是持续集成的后续步骤,持续频繁地将软件的新版本交付到类生产环境

    2024年02月14日
    浏览(39)
  • 【基于 GitLab 的 CI/CD 实践】01、GitLab CI/CD 基础概念

    目录 一、为什么要做 CI/CD ? 1.1 背景-传统的应用开发发布模式 问题 1.2 持续集成与持续交付 持续集成(CI) 持续交付(CD) 持续部署(CD) 1.3 CI/CD 的价值体现 1.4 推荐常用的 CI/CD 工具 Jenkins GitLab 二、GitLab CI/CD 功能简介 2.1 GitLab 内置持续集成功能 持续集成(CI) 连续交付(

    2024年02月16日
    浏览(50)
  • 【CI/CD】Rancher CD过程--20230906

    HARBOR_PASSWORD:密码 HARBOR_USER:工号 K8S_TOKEN:Bearer + rancher key K8S_WORKLOAD_URL:选择【View in API】的URL,并非workload的URL。 如果是新版rancher,则使用/g回去旧版界面。 选择workload,进入【View in API】 right panel click edit Move to buttom , and click “Show Request” Copy the highlight area from “-d”

    2024年02月09日
    浏览(30)
  • Jenkins CI/CD 持续集成专题三 Jenkins 使用shell脚本打包组件配置流程

    第六步 查看编译状态和产物 到这里,jenkins 配置shell脚本打包组件的完整配置流程就已经完成

    2024年04月29日
    浏览(45)
  • CI&CD 体系介绍

    先解释几个概念: 1、DevOps(Development Operations)  DevOps 是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。  它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、过程和工具。透过自动

    2024年02月04日
    浏览(31)
  • CI/CD入门(二)

    1.1 早期手动部署代码 纯手动Scp、Rsync上传代码。 纯手动登陆,Git pull 或者 Svn update。 纯手动xftp、ftp、filezilla上传代码。 开发发送压缩包,rz上传,解压部署代码。 缺点: 全程运维参与,占用大量时间。 如果节点多,上线速度慢。 人为失误多,目录管理混乱。 回滚不及时

    2024年02月12日
    浏览(27)
  • 什么是 CI/CD ?

    说在开头 CI、CD 其实是三个概念,包含了一个 CI 和两个 CD,CI全称 Continuous Integration,表示持续集成,CD包含 Continuous Delivery和 Continuous Deployment,分别是持续交付和持续部署。这三个概念之间是有前后依赖关系的。 CI/CD 并不是一个工具,它是一种软件开发实践,核心是通过引

    2024年02月03日
    浏览(29)
  • Jenkins CI/CD

    1、 Jenkins CI/CD 流程图 说明:这张图稍微更形象一点,上线之前先把代码git到版本仓库,然后通过Jenkins 如Java项目通过maven去构建,这是在非容器之前,典型的自动化的一个版本上线流程。那它有哪些问题呢? 如:它的测试环境,预生产环境,测试环境。会存在一定的兼容性

    2024年02月05日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包