네트워킹 설정 생략 

 

프라이빗 서브넷 태그 설정

로드밸런서 타입을 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에서 푸쉬명령 따라서 쳐주기 

가서 이미지 생긴거 확인하면 ECR fin.

 

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도 

만약에 대회에서 json으로 주면 복붙하자 위에 저거 누르고

 

만든 정책 눌러서 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 나오면 성성공!

씨발~~~~ 성공티비 당장 대회를 박차고 나가자 기모띠 

 

+ Recent posts