devnoong.log
article thumbnail
728x90

 

 

https://devnoong.tistory.com/40

 

[MiniKube 실습] 쿠버네티스 어플리케이션 배포

minikube 를 사용해 쿠버네티스 어플리케이션을 배포하는 작업을 진행해보겠습니다. 우선 배포를 진행하기 전 간략하게 쿠버네티스에 대해 정리하는 시간을 가져보도록 하겠습니다. 쿠버네티스

devnoong.tistory.com

 

이전 포스팅에서는 쿠버네티스가 제공해주는 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을 상세하게 기입 할 수 있다는 장점이 있는 것 같습니다

그럼 끝~~~

728x90