https://devnoong.tistory.com/40
이전 포스팅에서는 쿠버네티스가 제공해주는 echoserver 를 Node로 활용해 배포를 진행했다면 요번 포스팅에서는 AWS ECR과 yaml파일을 이용해 배포를 진행해보도록 하겠습니다
1. Cloud9 ECR 로그인 (새 유저 권한으로 진행)
ECR에 업로드 된 이미지를 Minikube에서 사용하기 위해서는 ECR 로그인이 필요합니다
초반에 AWS Configure를 통해 자격증명을 하였으므로 ECR 로그인이 가능한 상태입니다
아래의 명령어를 이용해서 자격증명을 root와 동일하게 해주고 로그인을 진행합니다
$(aws ecr get-login --no-include-email --region ap-northeast-2)
아래와 같이 로그인이 성공적으로 되었기에 이제 ECR에 있는 이미지를 Pull 하여 사용 할 수 있습니다
2. NameSpace 생성 (새 유저 권한으로 진행)
네임스페이스는 애플리케이션에 필요한 서비스를 그룹화하는 방식으로 애플리케이션에서 인스턴스를 검색하는 데 사용할 수 있기에 생성하여 관리 및 사용하는 편이 유리합니다
NameSpace를 ecr-deployment로 생성합니다.
kubectl create ns ecr-deployment
네임스페이스 목록을 아래의 명령어로 확인 할 수 있습니다
kubectl get namespace
3. Deployment.yaml Service.yaml 파일 생성 및 배포 (새 유저 권한으로 진행)
AWS 콘솔창에 Elastic Container Registry를 검색해주세요
이미지 탭에 들어가 배포할 이미지 목록 리스트를 하나 선택 후 URL 복사를 눌러 이미지 태그를 복사해주세요.
Cloud9로 돌아가서 생성한 유저폴더로 이동하여 Deployment.yaml과 Service.yaml 파일을 생성합니다
cd /home/newser #생성한 userid
nano 명령어를 이용해서 deployment.yaml 파일을 생성하도록 하겠습니다~
nano ecr-deployment.yaml
위에서 복사한 이미지 태그 주소를 아래 이미지 태그란에 기입해주세요
apiVersion: apps/v1
kind: Deployment
metadata:
name: ecr-app
labels:
app: ecr-app
namespace: ecr-deployment
spec:
replicas: 3
selector:
matchLabels:
app: ecr-app
template:
metadata:
labels:
app: ecr-app
spec:
containers:
- image: {img태그 아이디}
imagePullPolicy: Always
name: ecr-app
ports:
- containerPort: 8080
protocol: TCP
위와 동일하게 nano 명령어를 이용해서 service.yaml 파일을 생성하도록 하겠습니다~
nano ecr-service.yaml
apiVersion: v1
kind: Service
metadata:
name: ecr-service
annotations:
alb.ingress.kubernetes.io/healthcheck-path: "/healthy"
namespace: ecr-deployment
spec:
selector:
app: ecr-app
type: NodePort
ports:
- port: 80
protocol: TCP
targetPort: 8080
파일 생성 후 Apply 명령어를 이용해 Pod를 생성하여 등록 및 배포를 진행합니다
kubectl apply -f ecr-deployment.yaml
kubectl apply -f ecr-service.yaml
생성 후 이전에 만들어놓은 네임스페이스를 이용해 파드들을 조회 해보겠습니다
kubectl get all -n ecr-deployment
앞에서 설정한 값대로 생성된 것을 확인 할 수 있습니다
3. 포트 포워딩 진행 (새 유저 권한으로 진행)
외부 IP에서 접근하기 위해서는 port-forward 명령어로 외부 IP 를 허용합니다
kubectl port-forward --address 0.0.0.0 svc/ecr-service 8888:80 -n ecr-deployment
이전 포스팅과 다르게 yaml 파일 방식으로 배포를 진행해봤는데 yaml파일 방식은 원하는 spec을 상세하게 기입 할 수 있다는 장점이 있는 것 같습니다
그럼 끝~~~
'Cloud > AWS' 카테고리의 다른 글
[MiniKube 실습] 쿠버네티스 어플리케이션 배포 (0) | 2022.11.09 |
---|---|
[MiniKube 실습] kubectl 설치 및 minikube 확인하기 (0) | 2022.11.09 |
[MiniKube 실습] Minikube 설치 및 실행하기 (0) | 2022.11.08 |
[MiniKube 실습] Minikube 수행을 위한 새로운 사용자 생성하기 (0) | 2022.11.08 |
[MiniKube 실습] ECR 이미지 사용을 위한 IAM Role 생성 (0) | 2022.11.08 |