免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

借用AWS服務CodePipeling+ECS實-創新互聯

借用 AWS 服務 CodePipeling + ECS 實

創新互聯公司是一家以網站建設公司、網頁設計、品牌設計、軟件運維、成都網站營銷、小程序App開發等移動開發為一體互聯網公司。已累計為酒樓設計等眾行業中小客戶提供優質的互聯網建站和軟件開發服務。

一、架構圖

1.1、架構圖

借用 AWS 服務 CodePipeling + ECS 實

1.2、一些文件解釋

  • buildspec.yaml: 主要是 codebuile 在構建過程中需要的一個文件,用了告知如何構建。
  • appspec.yaml: 是 codedeploy 在部署過程中的修訂文件,可以比作為一個環境變量配置文件吧。
  • taskdef.json:是我們的 ECS task 的一個定義文件,有這個文件 codepipeline 才可以在每次構建中根據要求為我們創建 task definition。
  • imageDetail.json:用來輸出我們新構建的鏡像地址,用于新的部署使用。

1.3、流程

  1. codebuild 通過文件buildspec.yaml進行構建,生成文件imageDetail.json
  2. codepipeline 會提取文件imageDetail.json中的 imageurl,放入環境變量IMAGE1_NAME
  3. codepipeline 把taskdef.json中的<IMAGE1_NAME>替換為新的 URL,并請求 ECS RegisterTaskDefinition API 進行新的任務定義注冊;
  4. 注冊完成后 API 會返回其任務定義 ARN,codepipeline 并用此 ARN 信息替換appspec.yaml中的<TASK_DEFINITION>;
  5. 而后 CodePipeline 根據appspec.yaml的信息,發動 CreateDeployment API 開始透過 CodeDeploy 執行藍綠布署。

二、創建 ECR 倉庫

創建 ECR 鏡像倉庫,我所有的操作都是在 us-east-1 這個區域,操作的 IAM 用戶擁有 root 權限。

$ aws ecr create-repository --repository-name nginx-ecs --image-scanning-configuration scanOnPush=true --region us-east-1 
{
    "repository": {
        "repositoryUri": "921283538843.dkr.ecr.us-east-1.amazonaws.com/nginx-ecs", 
        "imageScanningConfiguration": {
            "scanOnPush": true
        }, 
        "registryId": "921283538843", 
        "imageTagMutability": "MUTABLE", 
        "repositoryArn": "arn:aws:ecr:us-east-1:921283538843:repository/nginx-ecs", 
        "repositoryName": "nginx-ecs", 
        "createdAt": 1580358204.0
    }
}

三、創建 codebuild project

3.1、創建 ServiceRole

codebuild 需要獲取 s3 等權限。

$ aws iam create-role --role-name AWSCodeBuildServiceRole --assume-role-policy-document '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}}'

創建 policy。

$ aws iam create-policy --policy-name AWSCodeBuildPolicy --policy-document https://raw.githubusercontent.com/wangzan18/codepipeline-ecs/master/awscli/AWSCodeBuildPolicy.json
{
    "Policy": {
        "PolicyName": "AWSCodeBuildPolicy", 
        "PermissionsBoundaryUsageCount": 0, 
        "CreateDate": "2020-01-30T09:34:36Z", 
        "AttachmentCount": 0, 
        "IsAttachable": true, 
        "PolicyId": "ANPA5NAGHF6NYARCBUGDT", 
        "DefaultVersionId": "v1", 
        "Path": "/", 
        "Arn": "arn:aws:iam::921283538843:policy/AWSCodeBuildPolicy", 
        "UpdateDate": "2020-01-30T09:34:36Z"
    }
}
角色附加策略。
$ aws iam attach-role-policy --role-name AWSCodeBuildServiceRole --policy-arn arn:aws:iam::921283538843:policy/AWSCodeBuildPolicy
$ aws iam attach-role-policy --role-name AWSCodeBuildServiceRole --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPowerUser

3.2、創建 codebuild project

$ wget https://raw.githubusercontent.com/wangzan18/codepipeline-ecs/master/awscli/create-project.json
$ wget aws codebuild create-project --cli-input-json file://create-project.json
  • 參考文檔:https://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/create-project.html#create-project-cli
  • buildspec.yaml : https://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax

四、創建 ECS 藍綠 CodeDeploy

4.1、為 CodeDeploy 創建服務角色

$ aws iam create-role --role-name AWSCodeDeployServiceRole --assume-role-policy-document '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Principal":{"Service":"codedeploy.amazonaws.com"},"Action":"sts:AssumeRole"}}'

附加策略。

$ aws iam attach-role-policy --role-name AWSCodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS

4.2、創建 ECS 使用的 ALB

使用 create-load-balancer 命令創建 應用程序負載均衡器。指定兩個不屬于同一可用區的子網以及一個安全組。

aws elbv2 create-load-balancer \
     --name nginx-ecs-bluegreen-alb \
     --subnets subnet-694b2b35 subnet-f5761192 \
     --security-groups sg-cdc5cf8f \
     --region us-east-1

使用 create-target-group 命令創建目標組。此目標組將流量路由到服務中的原始任務集。

aws elbv2 create-target-group \
     --name bluegreentarget1 \
     --protocol HTTP \
     --port 80 \
     --target-type ip \
     --vpc-id vpc-ebff4c91 \
     --region us-east-1
aws elbv2 create-target-group \
     --name bluegreentarget2 \
     --protocol HTTP \
     --port 80 \
     --target-type ip \
     --vpc-id vpc-ebff4c91 \
     --region us-east-1

使用 create-listener 命令創建負載均衡器偵聽器,該偵聽器帶有將請求轉發到目標組的默認規則。

aws elbv2 create-listener \
     --load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:921283538843:loadbalancer/app/nginx-ecs-bluegreen-alb/28cd5055a92630c1 \
     --protocol HTTP \
     --port 80 \
     --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-1:921283538843:targetgroup/bluegreentarget1/80b89a8c4e5f574d \
     --region us-east-1

4.3、創建 Amazon ECS 集群

使用 create-cluster 命令創建要使用的名為 nginx-ecs-bluegreen 的集群。

aws ecs create-cluster \
     --cluster-name nginx-ecs-bluegreen \
     --region us-east-1

為 ECS task 創建執行角色。

$ aws iam create-role --role-name AWSECSTaskServiceRole --assume-role-policy-document '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Principal":{"Service":"ecs-tasks.amazonaws.com"},"Action":"sts:AssumeRole"}}'

附加策略 AmazonECSTaskExecutionRolePolicy。

$ aws iam attach-role-policy --role-name AWSECSTaskServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy

然后,使用您創建的 fargate-task.json 文件注冊任務定義。

$ wget https://raw.githubusercontent.com/wangzan18/codepipeline-ecs/master/awscli/fargate-task.json
$ aws ecs register-task-definition \
     --cli-input-json file://fargate-task.json \
     --region us-east-1

創建 ECS Service。

$ wget https://raw.githubusercontent.com/wangzan18/codepipeline-ecs/master/awscli/service-bluegreen.json
$ aws ecs create-service \
     --cli-input-json file://service-bluegreen.json \
     --region us-east-1

4.4、創建 AWS CodeDeploy 資源

使用 create-application 命令創建 CodeDeploy 應用程序。指定 ECS 計算平臺。

$ aws deploy create-application \
     --application-name nginx-ecs \
     --compute-platform ECS \
     --region us-east-1

使用 create-deployment-group 命令創建 CodeDeploy 部署組。

$ wget https://raw.githubusercontent.com/wangzan18/codepipeline-ecs/master/awscli/deployment-group.json
$ aws deploy create-deployment-group \
     --cli-input-json file://deployment-group.json \
     --region us-east-1
  • 參考文檔:https://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/create-blue-green.html#create-blue-green-loadbalancer
  • imageDetail.json :https://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/file-reference.html#file-reference-ecs-bluegreen
  • taskdef.json : https://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/tutorials-ecs-ecr-codedeploy.html#tutorials-ecs-ecr-codedeploy-taskdefinition

四、創建 codepipeline

4.1、創建 codepipeline 所需 SerivceRole

如果您的 AWS 賬戶中還沒有 CodePipeline 服務角色,請創建一個。借助此服務角色,CodePipeline 可代表您與其他 AWS 服務進行交互,包括 AWS CodeBuild。

$ aws iam create-role --role-name AWSCodePipelineServiceRole --assume-role-policy-document '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Principal":{"Service":"codepipeline.amazonaws.com"},"Action":"sts:AssumeRole"}}'

為 codepipeline role 創建 policy,并將 policy 附加到 AWSCodePipelineServiceRole。

$ aws iam create-policy --policy-name AWSCodePipelineServiceRolePolicy --policy-document https://raw.githubusercontent.com/wangzan18/codepipeline-ecs/master/awscli/AWSCodePipelineServiceRolePolicy.json
{
    "Policy": {
        "PolicyName": "AWSCodePipelineServiceRolePolicy", 
        "PermissionsBoundaryUsageCount": 0, 
        "CreateDate": "2020-01-30T05:33:22Z", 
        "AttachmentCount": 0, 
        "IsAttachable": true, 
        "PolicyId": "ANPA5NAGHF6NULEJS574V", 
        "DefaultVersionId": "v1", 
        "Path": "/", 
        "Arn": "arn:aws:iam::921283538843:policy/AWSCodePipelineServiceRolePolicy", 
        "UpdateDate": "2020-01-30T05:33:22Z"
    }
}
角色附加策略。
$ aws iam attach-role-policy --role-name AWSCodePipelineServiceRole --policy-arn arn:aws:iam::921283538843:policy/AWSCodePipelineServiceRolePolicy

4.2、創建 pipeline

$ wget https://raw.githubusercontent.com/wangzan18/codepipeline-ecs/master/awscli/create-pipeline.json
$ aws codepipeline create-pipeline --cli-input-json file://create-pipeline.json --region us-east-1

注意:文檔中的 OAuthToken 自己去 github 中去申請。

  • 參考文檔:https://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/GitHub-create-personal-token-CLI.html
  • https://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli

4.3、為 pipeline 創建 webhook

$ wget https://raw.githubusercontent.com/wangzan18/codepipeline-ecs/master/awscli/my-webhook.json
$ aws codepipeline put-webhook --cli-input-json file://my-webhook.json --region us-east-1
$ aws codepipeline register-webhook-with-third-party --webhook-name nginx-ecs-webhook --region us-east-1

相關參數可以根據自己情況填寫,參考文檔:https://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/pipelines-webhooks-create.html。

獲得了 webhook 的相關信息之后,我們登陸 github,選擇相應的存儲庫,

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網站名稱:借用AWS服務CodePipeling+ECS實-創新互聯
分享網址:http://m.newbst.com/article24/dggdje.html

成都網站建設公司_創新互聯,為您提供App設計網站維護微信公眾號微信小程序網站排名全網營銷推廣

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化