네트워킹 설정 생략
프라이빗 서브넷 태그 설정
로드밸런서 타입을 internal로 지정할 경우 프라이빗 서브넷에 자동으로 로드밸런서가 생성되게 된다.
이 때 사용할 서브넷을 지정하기 위해 프라이빗 서브넷에 달아야 하는 태그는 아래와 같다.
kubernetes.io/cluster/[클러스터 이름] = shared
kubernetes.io/role/internal-elb = 1
퍼블릭 서브넷 태그 설정
로드밸런서 타입을 internet-facing으로 지정할 경우 퍼블릭 서브넷에 자동으로 로드밸런서가 생성되게 된다.
이 때 사용할 서브넷을 지정하기 위해 퍼블릭 서브넷에 달아야 하는 태그는 아래와 같다.
kubernetes.io/cluster/[클러스터 이름] = shared
kubernetes.io/role/internal-elb = 1
Basiton 서버에 필수도구 설치
1. kubectl for Kubernetes 1.29 설치
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.0/2024-01-04/bin/linux/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/bin/
2. eksctl 설치
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
chmod +x /tmp/eksctl
sudo mv /tmp/eksctl /usr/local/bin
eksctl version 해서 0.175.0 나오면 성성공
3.helm 설치
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
Document DB
- 서브넷 그룹생성
서브넷 그룹 생성을 먼저해준다 protected 두 개 추가
- 보안그룹 생성
- 클러스터 파라미터 그룹 생성
그냥하세요
- 진짜 DB 클러스터 생성
고급 옵션 눌러서 저거두개만 건들고 생성
- Secrets Manager
documt 자격증명
이것도 그냥 하세요
ElastiCache - mancached ㄱ
기본사용자 설정
개인 설정에서 기본설정 사용자 지정 protected 두개 설정 ㄱㄱ
보안사용자 설정
보안그룹은 모든 트래픽 허용
하지만 최소 권한으로 설정하라고 하면
인바운드:
사용자 tcp : 11211
사용자 TCP : 11212 두개 설정
아웃바운드는 다 열기
ECR
다1. key.pem이 있는 경로에서 ec2로 ssh 접속하기
ssh -i "[키 이름]" ec2-user@[서버주소]
2. sudo su 권한 주기 ( 앞으로 명령어를 칠때 앞에 sudo를 안써도 되게 해준다 단, 접속할때마다 해줘야함 그냥 필요로 하면 될듯 )
3. 도커 설치 하기
sudo yum install -y docker
4. 도커실행
sudo systemctl start docker
sudo systemctl enable docker
5. 권한주기
sudo usermod -aG docker $USER
ssh 접속 끊었다가 다시 접속
6. 공개과제 파일 인스턴스로 가져오기
[중요] 이거 하기 전에 SSH 연결 끊어야 함 exit (윈도우에서 해야함)
scp -i "[키 이름]" "37.클라우드컴퓨팅(2023 지방).zip" ec2-user@[서버주소]:/home/ec2-user/cloud.zip
( 뒤에 있는 cloud.zip은 긴 파일 이름을 변경해준거임)
7. zip 파일 풀기 [ 다시 ssh 접속해서 ec2 안에서 해줘야함 ]
unzip cloud.zip
하고 app폴더 들어갔을때 docker..등등 뜨면 됨
8. 다시 aws ecr에서 푸쉬명령 따라서 쳐주기
EKS(ㅅㅂ)
클러스터 만들기
보안그룹 = 모든 트래픽
클러스터 서비스 역할: IAM 에서 EKS cluster선택 (자동으로 들어감)
엔드포인트 엑세스 : 프라이빗이라고 하면 프라이빗 아니면 그냥 퍼블릭으로 ㄱㄱ
노드그룹 만들기
IAM 가서 EC2선택하고
eksworkernodepolicy
eks_cni_policy
container Registry read only (퍼블릭으로 하면 좆됨)
권한 부여하고 만들기
클러스터 - 컴퓨팅 - 노드그룹 추가
fargate 프로파일3개 구성 (이것도 컴퓨팅에있음) (노드그룹 만들고 딜레이 생길때 하자)
이름도 마음대로
포드실행역할에 있는 EKS 사용설명서 창 띄우고 IAM ㄱㄱ
IAM 에서 ec2
pod
container Registry read only
만들고
신뢰정책 편집에서 그 위에 창에서
이거복사
리전 - 계정ID - 별 로 달고 생성 후 다시 fargate 들어가서 새로고침 누르면 등록이 됨
네임스페이스 : kube-system
레이블 일치 :
key - app.kubernetes.io/name
값 - aws-load-balancer-controller
생성! - (하나 만들면 다 될때까지 다른 프로파일 못만드니까 밑에 업데이트 부터 로드밸런서 사전준비하자)
fargate 2
이름 입력하고 위에서 했으니까 그냥 다음
네임스페이스 : kube-system
레이블 일치:
key - k8s-app
값- kube-dns
fargate 3 (서비스)
네임스페이스 : default
레이블일치는 안하고 다음 누르기
--------------------------------------------------
IAM 가서 엑세스키 만들기
계정 들어가서 기타 누르고 만들면 액세스키 생성티비 그 화면 띄워놓고 cmd ㄱㄱ
로드밸런서 사전준비 부터 하자
만약 api version 관련 오류가 발생하면 aws cli가 최신 버전인지 확인해보자
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html
로드밸런서 사전준비 --- 액세스키 만들고
1. 아이디 - 비밀키 - 리전 - json 으로 넣기
aws configure
2. 업데이트 - 지역과 , 네임은 클러스터 이름으로
aws eks update-kubeconfig --region ap-northeast-2 --name wsi-cluster
로그인 제대로 됐는지 확인
aws sts get-caller-identity
--------------
3. kubectl 네임스페이스에 있는 pod를 확인해서 권한이 있는지 확인
kubectl get pods -n kube-system
4.제공업체 생성 : 만약에 오류뜨면 config 들어가서 리전 잘 못 쳤는지 확인
cluster_name=[클러스터이름]
oidc_id=$(aws eks describe-cluster --name $cluster_name --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
eksctl utils associate-iam-oidc-provider --cluster $cluster_name --approve
5.정책만들
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.5.4/docs/install/iam_policy.json
aws iam create-policy \
--policy-name [원하는정책이름] \
--policy-document file://iam_policy.json
쳐서 나온 arn을 복사후 알아서 잘 가지고 있기
7. name에는 대문자 들어가면 안되고 대시와 소문자만
쿠버네티스 안에 역할을 만들고 aws iam 역할을 연결해서 aws 리소스에 접근할수있도록 하는것
eksctl create iamserviceaccount \
--cluster=$cluster_name \
--namespace=kube-system \
--name=[만들기 원하는 쿠버네티스 서비스 계정 이름] \
--role-name [만들기 원하는 IAM 역할 이름] \
--attach-policy-arn=[위 명령어에서 생성된 정책의 ARN] \
--approve
sample
eksctl create iamserviceaccount \
--cluster=$cluster_name \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--role-name EKSloadBalancerRole \
--attach-policy-arn=arn:aws:iam::345983683754:policy/eks-load \ 위에 arn
--approve
네임과 롤네임 중복해도 된다 (그렇게하자)
8.
helm repo add eks https://aws.github.io/eks-charts
helm repo update eks
9.
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=$cluster_name \
--set serviceAccount.create=false \
--set serviceAccount.name=[이전에 만든 쿠버네티스 서비스 계정 이름] \
--set vpcId=[생성될 로드밸런서를 설치할 AWS VPC ID]
이전에 만든 쿠버네티스 서비스 계정이름은 위에서만든 name
vpc아이디는 콘솔가서 ID 복사
클러스터에서 리소스 들어가서 배포 들어가면
있는거 확인하고 포드 생길때까지 대기
이것도 가능함
kubectl get deployments -n kube-system
else 만약 포드가 잘 안올라간닫면..
helm uninstall aws-load-balancer-controller -n kube-system
7번부터 다시 ㄱㄱ (대신 역할이름 전부다 바꾸자 오타좀 안나게 해라 시발)
뼈대 완성 이제 서비스를 올려보자 🦴
1.아까 위에서 했던건데 이름이랑 rolname 다르게 해야함
arn은 재탕하면 안되고 콘솔가서 IAM - 정책
document 선택하고 모든 ) 나열과 읽기 체크 리소스는 모두 누르고 권한 더 추가
해서 elasticahe 누르고 나열 읽기 리소스 모두 권한더 추가
secreat 누르고 나열 읽기 리소스 모두 권한 더 추가
rds도
만든 정책 눌러서 arn 복사해서 밑에 코드에다가 넣자
name에 대문자 안쓰게 조심
eksctl create iamserviceaccount \
--cluster=$cluster_name \
--namespace=default \
--name=[만들기 원하는 쿠버네티스 서비스 계정 이름] \
--role-name [만들기 원하는 IAM 역할 이름] \
--attach-policy-arn=[위 명령어에서 생성된 정책의 ARN] \
--approve
만약잘못하면 이 명령 수정하고
kubectl rollout restart 서비스이름
이때 서비스 이름은 deply.yaml 들어가면 name에 있다
블로그에 서비스.인그레스.디플로이먼트 다 저장
2.
nano deployment.yaml 들어가서
위에서 친 name을
yaml 파일안에있는 serviceAcconutName에 넣기
image는 ECR의 이미지 URL을 복사해서 넣기
c+o
엔터
c+X
kubectl apply -f deployment.yaml 뒤에는 아까 수정한 파일이름 kubectl delete -f deployment.yaml
파일 수정한걸 적용하는것
콘솔가서 클러스터에
3.
kubectl apply -f service.yaml
kubectl apply -f ingress.yaml
이러면 자동으로 생긴것을 볼수 있음
기다리면 프로비저닝중이 활으로 될거임
DNS 복사해서 웹브라우저에 넣고 /whoareyou 해서 server identifrier 나오면 성성공!
씨발~~~~ 성공티비 당장 대회를 박차고 나가자 기모띠
'AWS' 카테고리의 다른 글
2024 지방기능경기대회 클라우드컴퓨팅 회고록 (0) | 2024.04.05 |
---|---|
2024 지방기능경기대회 클라우드컴퓨팅 제2과제 예상문제 풀이 (0) | 2024.04.03 |
2023 기능경기대회 클라우드컴퓨팅 제 1과제 [VPC ~ ECR] (1) | 2024.03.24 |
Docker 🐋 (0) | 2024.03.21 |
AWS 2022 기능경기대회 클라우드컴퓨팅 제 1과제 [ EC2 설정 ] (0) | 2024.03.20 |