SKT에서 플젝을 했었는데
git push 시 AKS, docker로 배포하고 성공/실패 여부를 알림으로 알리는 것을 모두 자동화 해봤었습니다.
(그 당시에 쳤던 명령어들)
https://velog.io/@rodom1018/jenkins-%EB%B0%B0%ED%8F%AC1
https://velog.io/@rodom1018/jenkins-%EB%B0%B0%ED%8F%AC-2
다만 SKT 교육과정에서의 시간은 2주뿐이여서,
기본 구현만 가까스로 하고 생각이 조금 정리된 느낌이 없어
보강을 해보고자 합니다.
AWS / AZURE 차이점을 알아볼겸
이번 실습은 AWS 에서 진행 할 예정이고
서버는 지난 번에는 머신러닝 모델을 탑재한 무거운 서버였으나
이번에는 가벼운 웹 서버로 하면서
다양한 시도를 해볼 생각입니다.
특히 직접 부하 테스트를 해서
metric 관련한 관찰을 해볼 생각인데
사실 인프라가 이런 부하에 적재적소하게 잘 행동하는 것을
구상하는 것이라서
이러한 관찰이 도움이 될 거라 생각합니다 !
cloud 9 란 ?
(aws 공식문서 왈)
AWS Cloud9은 브라우저만으로 코드를 작성, 실행 및 디버깅할 수 있는 클라우드 기반 IDE(통합 개발 환경)입니다. 코드 편집기, 디버거 및 터미널이 포함되어 있습니다.
-> ec2 에서 처음부터 ide로 이쁘게 명령어를 쳐보고 싶을 때 쓰는 것!
*이 때 IAM ROLE을 부여해야합니다.
(그냥 기존 ec2 만들어서 iam 준다고 생각하자 . )
역시나 aws 공식문서 참조
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html
https://docs.aws.amazon.com/ko_kr/AmazonECR/latest/userguide/getting-started-cli.html
공식문서 보면서 만들고
ecr 만들면 push 어떻게 해야되는지 아주 친절하게 알려준다 (와!)
이는 전에 했던 것과 동일 !
(cloud9 ec2 기준) 그리고 docker hub 에서 pull 하고 ecr 로 push 한다 .
예 >
docker pull ske04186/msa_practice_1:0.0.01
docker tag ske04186/msa_practice_1:0.0.01 456188629746.dkr.ecr.ap-northeast-2.amazonaws.com/webserver:latest
docker push 456188629746.dkr.ecr.ap-northeast-2.amazonaws.com/webserver:latest
VPC 를 생성합니다.
이전 단계에서 만들었던 vpc 위에 eks 를 만듭니다.
{
"accountId" : "456188629746",
"architecture" : "x86_64",
"availabilityZone" : "ap-northeast-2a",
"billingProducts" : null,
"devpayProductCodes" : null,
"marketplaceProductCodes" : null,
"imageId" : "ami-07ddd980ec06b8dcc",
"instanceId" : "i-0b9fef31dd2a89184",
"instanceType" : "t2.micro",
"kernelId" : null,
"pendingTime" : "2022-10-26T12:40:45Z",
"privateIp" : "10.0.12.74",
"ramdiskId" : null,
"region" : "ap-northeast-2",
"version" : "2017-09-30"
}
cat << EOF > eks-demo-cluster.yaml
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: eks-demo # 생성할 EKS 클러스터명
region: ap-northeast-2 # 클러스터를 생성할 리전
version: "1.21"
vpc:
subnets:
public:
ap-northeast-2a: { id: subnet-0869c6a10dd693dd8 }
ap-northeast-2b: { id: subnet-0ec053c3411e3c42a }
managedNodeGroups:
- name: node-group # 클러스터의 노드 그룹명
instanceType: t2.micro # 클러스터 워커 노드의 인스턴스 타입
desiredCapacity: 2 # 클러스터 워커 노드의 갯수
volumeSize: 10 # 클러스터 워커 노드의 EBS 용량 (단위: GiB)
iam:
withAddonPolicies:
imageBuilder: true # Amazon ECR에 대한 권한 추가
# albIngress: true # albIngress에 대한 권한 추가
cloudWatch: true # cloudWatch에 대한 권한 추가
autoScaler: true # auto scaling에 대한 권한 추가
cloudWatch:
clusterLogging:
enableTypes: ["*"]
EOF
eksctl create cluster -f eks-demo-cluster.yaml
하면 cloudformation이 생기면서 cluster 또한 생긴다.
(참고)
오류가 떴다
새로 생기는 ec2 한테 내가 생성한 vpc에서 public ip 을 할당 해주지 않는다는 뜻이어서
다음과 같이 자동 할당 옵션을 넣어주었다 .
(자잘한 오류 - 콘솔에서 보기)
aws cloud9 describe-environment-memberships --environment-id=$C9_PID --region='ap-northeast-2'
https://viassh.github.io/network/eks-setting-rbac/
이런식으로 수정을 해주었더니 잘 되었다 !
(쿠버네티스 대시보드 보기)
https://tommypagy.tistory.com/233
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
kubectl -n kube-system describe secret