1. VPC 구성

  2. Instance 생성 (Bastion-server, K8S-manage-server)

    Public의 Bastion과 Private의 k8s manage server 2개 생성

  3. RECA-PUB-BAS 인스턴스

    Nginx, Tomcat, Docker, aws cli 설치

    *** Bastion에는 Nginx와 Tomcat을 설치할 필요가 없지만, Dockerfile 생성 시 편의를 위해 설치

  4. RECA-PRI-MNG 인스턴스 (=k8s manage server)

    Bastion에서 .pem 이용해 접속 ssh -i "RECA_TEST.pem" ec2-user@PRIVATE_IP

    aws cli, docker, eksctl, kubectl 설치

    curl -o kubectl <https://amazon-eks.s3.us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl>
    chmod +x ./kubectl
    mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
    echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
    kubectl version --short --client
    
  5. nginx—tomcat 연결을 위한 설정 파일 편집 (Bastion)

    sudo vi /etc/nginx/conf.d/default.conf
    
    # 내용 수정
    location / {
     proxy_pass <http://10.3.128.100:8080>; # tomcat 서비스 ClusterIP를 미리 지정
     proxy_set_header Host $host;
     proxy_set_header X-Real-IP $remote_addr;
     }
    
    mkdir nginx
    # home에 nginx 디렉토리 생성
    sudo cp /etc/nginx/conf.d/default.conf nginx/default.conf
    # 생성한 nginx 하위에 수정한 설정파일 default.conf 복사 -> dockerfile에 사용할 경로
    

    /etc/nginx/conf.d/default.conf에 ClusterIP를 미리 지정

    /etc/nginx/conf.d/default.conf에 ClusterIP를 미리 지정

  6. Dockerfile 생성

    sudo vi Dockerfile
    
    FROM nginx:1.22.0 
    # hub.docker.com에서 nginx 이미지를 가져온다
    RUN rm /etc/nginx/conf.d/default.conf
    # RUN, 기존의 default.conf 파일을 삭제
    COPY nginx/default.conf /etc/nginx/conf.d/default.conf
    # 5번에서 수정해 저장한 nginx/default.conf을 원래 경로에 복사
    CMD ["nginx", "-g", "daemon off;"]
    # 실행
    EXPOSE 80
    # 80 포트 열기
    
    sudo docker build --tag nginxtest:1.0 .
    

    Untitled

  7. aws configure 로그인

  8. aws ECR 생성 후 push

    Untitled

    aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 194453983284.dkr.ecr.ap-northeast-2.amazonaws.com
    docker build -t nginxtest .
    docker tag nginxtest:latest 194453983284.dkr.ecr.ap-northeast-2.amazonaws.com/nginxtest:latest
    docker push 194453983284.dkr.ecr.ap-northeast-2.amazonaws.com/nginxtest:latest
    
  9. 콘솔에서 클러스터, 노드 그룹 생성 후 연결

    Untitled

    aws eks --region ap-northeast-2 update-kubeconfig --name EKS-test
    kubectl get nodes
    
    kubectl create deployment tomcat --replicas=3 --image=tomcat
    kubectl expose deployment tomcat --name=tomcat-service --port=8080 --target-port=8080 --type=LoadBalancer --cluster-ip=10.3.128.100
    # nginx 설정 파일에 지정해 준 clusterIP 지정
    
    kubectl create deployment nginx --replicas=3 --image=194453983284.dkr.ecr.ap-northeast-2.amazonaws.com/nginxtest
    # ECR에 올려놓은 nginx 이미지로 create
    
    kubectl expose deployment nginx --name=psy-nginx-service --port=80 --target-port=80 --type=LoadBalancer --cluster-ip=10.3.0.100
    # Loadbalancer
    kubectl get services
    # 확인
    

    ⇒ aws 콘솔의 nginx 로드밸런서 — DNS 접속하여 최종 확인