배포자동화 : CI/CD 실습시 필요한 스크립트

AWS CodeBuild

쿠버네티스 자동 배포를 위한 아마존(AWS) 매니지드 서비스인 CodeBuild CI/CD에 필요한 Scripts

  • CodeBuild 생성시 환경변수명

  • AWS_ACCOUNT_ID

  • KUBE_URL

  • KUBE_TOKEN

  • CodeBuild 와 ECR 연결 정책설정

{
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:CompleteLayerUpload",
        "ecr:GetAuthorizationToken",
        "ecr:InitiateLayerUpload",
        "ecr:PutImage",
        "ecr:UploadLayerPart"
      ],
      "Resource": "*",
      "Effect": "Allow"
 }
  • CodeBuild 와 EKS 연결
    1. eks-admin-service-account.yaml 파일 생성하여 sa 생성
apiVersion: v1
kind: ServiceAccount
metadata:
  name: eks-admin
  namespace: kube-system
    1. kubectl apply -f eks-admin-service-account.yaml
  • 혹은, 바로 적용도 가능함

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
  name: eks-admin
  namespace: kube-system
EOF
    1. eks-admin-cluster-role-binding.yaml 파일 생성하여 롤바인딩
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: eks-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: eks-admin
  namespace: kube-system
    1. kubectl apply -f eks-admin-cluster-role-binding.yaml
  • 혹은, 바로 적용도 가능함

cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: eks-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: eks-admin
  namespace: kube-system
EOF
  • 만들어진 eks-admin SA 의 토큰 가져오기
  • kubectl -n kube-system describe secret eks-admin
  • kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk “{print $1}”)



Azure Pipeline

Azure 메니지드 서비스의 CI/CD Lab.에 필요한 가이드 Scripts

  • azure shell 에서 클러스터 연결
  • az aks get-credentials --resource-group (user01_resource_group) --name (user01_cluster)
  • 연결 확인
  • kubectl get all
  • AKS와 ACR 연결
  • az aks update -n [azure-cluster-name] -g [azure-resource-Group-name] --attach-acr [azure-acr-name]
  • Arguments 샘플
    • deploy monolith --image=[your container registry].azurecr.io/monolith:$(Build.BuildId)
  • Copy Files Task 속성정보
    • Source Folder    : $(system.defaultworkingdirectory)
    • Contents    : azure/*
    • Target Folder : $(build.artifactstagingdirectory)
  • Bash Arguments 샘플
    • sed -i "s/latest/$(Build.BuildId)/g" $(System.DefaultWorkingDirectory)/(_1st-prj-CI)/drop/azure/deploy.yaml


*MSA School의 모든 콘텐츠에 대한 권리는 MSA School에 있으며, 무단 복제 및 배포를 금합니다. 영리 목적의 사용은 허용되지 않으며, 개인적 용도로 복제할 경우 반드시 출처를 표기해야 합니다.
© uEngine. All Rights Reserved. | 주소 : 서울특별시 서초구 신반포로45길 18 502호(잠원동, 주일빌딩)
사업자등록번호 : 211-87-95355 | 전화번호 : 02-567-8301 | 대표이사 : 장진영
*MSA School의 모든 콘텐츠에 대한 권리는 MSA School에 있으며, 무단 복제 및 배포를 금합니다.
영리 목적의 사용은 허용되지 않으며, 개인적 용도로 복제할 경우 반드시 출처를 표기해야 합니다.
© uEngine. All Rights Reserved.
주소 : 서울특별시 서초구 신반포로45길 18 502호(잠원동, 주일빌딩)
사업자등록번호 : 211-87-95355
전화번호 : 02-567-8301
대표이사 : 장진영