0부터 시작하는 Docker Swarm 공부 - Google Cloud Platform 과 Kubernetes

Jaehong Lee·2022년 8월 26일
0
post-thumbnail

1. Cloud Shell & sdk 설치

  • GCP 에서는 dashboard 에 접속하여 서버에게 명령을 내린다

    GCP 는 Project 단위로 작업을 수행한다!!!

  • Cloud Shell 을 눌러서 서버에 접속하자
    • GCP 에서 제공해주는 서버는 기본적으로 데미안 계열의 linux 환경이 설치되어있다

2. Project 시작하기

  • GCP 는 Project 단위로 작업한다. 새 Project 를 생성하자
  • Project 이름을 설정하자. Project ID 가 중요하다
  • 생성된 Project 에 들어가자
  • 프로젝트 설정에 들어가자
  • Project 종료를 누르면, Project 와 Project 와 연관된 모든 것들이 삭제된다

3. Ubuntu 와 GCP 연동

GCP sdk 설치

  • 원격지에서 GCP 에 접속하여 명령을 내릴 수 있다
sudo snap install google-cloud-sdk --classic 
  • 원하는 linux 서버에서 google cloud sdk 를 설치하자
    • 설치되면 Ubuntu 에서 gcp 명령어를 사용할 수 있다

GCP 로그인하기

gcloud auth login
gcloud init
  • 로그인해주자
  • 로그인 후 gcloud init 를 통해 시작해주자

Project 접속

  • 접속할 Project 를 선택하자
  • 현재 접속된 Project 를 확인하자

Project ID 확인 및 저장

  • Project ID 를 확인하고, 변수에 저장하자

3. Git Clone 하기

  • 위 주소를 Clone 하고, 내용물을 확인하자

  • 저장소에서 gcp 와 같은 퍼블릭 클라우드는 작업을 위한 공간이 별도로 만들어진다. 이를 Project 라고 한다. 이는 퍼블릭 클라우드 안의 프라이빗 공간이다

    • 해당 Project 에서 사용할 수 있는 사설 저장소를 사용할 수 있다
    • Project 는 Unique 하다

4. API 및 서비스

  • API 및 서비스에 들어가자. 우리는 API 를 통해 서비스를 제공받을 수 있다
  • 설정에 들어가자

API 활성화

활성해야할 API

  • kubernetes engine
  • cloud build - 이미지 생성 및 업로드
  • container registry - 사설 저장소

  • kubernetes Engine 선택
  • 사용을 눌르자. 이제 kubernetes 서비스를 사용할 수 있다
  • cloud build 사용
  • container registry 는 활성화되어 있다

확인하기

  • kubernetes 확인
  • cloud build 확인하자. cloud build 를 통해 Image 를 만들고, 업로드 할 수 있다
  • container registry 를 확인하자. 이는 우리가 사용할 사설 저장소이다

5. Image 생성 및 업로드

build 하기 전 확인 사항

  • blue 와 green 디렉터리의 Dockerfile 을 확인하자
  • cloudbuild.yml 파일을 확인하면, cloud builder 에 연결하여 docker Image 를 만들고, 지정한 위치에 업로드하게 설정되있다. 우리는 PROJECT_ID 이름의 디렉터리에 업로드 할 것이다
  • PROJECT_ID 와 현재 위치를 확인하자

Image build 및 업로드

gcloud builds submit --config config/cloudbuild.yaml
  • 로컬 컴퓨터에서 이미지를 생성하고 생성된 이미지를 자신의 사설 저장소에 push 해준다
  • yml 파일을 이용해 Image 를 생성하고, 사설 저장소에 업로드하자
  • PROJECT_ID 이름의 디렉터리 밑의 imageview 디렉터리에 Image 가 저장되었다

6. Kubernetes Cluster 생성 및 연결

  • kubernetes 의 클러스터에 들어가자
  • 클러스터를 만들자. Standard 방식으로 구성하자
    • Autopilot 는 pod 단위로 결제한다. 이는 컨테이너당 결제하는 것이다
    • Standard 는 Node 단위로 결제한다

Node

  • GCP 는 master Node 를 따로 제공해주는 것이 아닌, 현재 우리가 작업하고 있는 Dashboard 가 master 역활을 한다. 생성되는 Node 는 worker Node 들이다

  • runtime 과 Node 환경을 선택하자. 우리는 runtime 으로 containerd 를 사용하며, 환경은 Ubuntu 를 사용할 것이다

  • Node 사양을 선택하자. 표준 영구 디스크는 AWS 의 EBS 와 동일한 서비스 이다

클러스터 기본 사항

  • 기본 사항을 설정하자
    • 하나의 리전에 여러 영역이 포함되어있다
    • 영역은 asia 일본 오사카로 지정하였다

  • 제어 영역 버전은 기본으로 유지하고, 클러스터를 만들어주자

Cluster 확인하기

  • 클러스터가 생성되었다. 현재 우리가 사용중인 master 역활이고, worker Node 3 개가 생성된 것이다

연결하기 - Ubuntu

  • 연결에 들어가자
  • Code 를 복사해서 Ubuntu 에 붙여넣자
  • kubectl 을 설치하자
  • Code 를 복사해서 Ubuntu 에서 실행하면 클러스터에 연결된다

연결하기 - Cloud Shell

  • Cloud Shell 상에서도 연결 가능하다
kubectl get nodes

  • 연결된 Node 를 확인하자

Cloud Shell 에 Clone

  • 현재 Cloud Shell 에는 사용할 자료들이 없다. 따라서, Cloud Shell 에 Clone 해주자

7. Configmap & Secret 배포

Configmap

  • yml 파일 내용을 확인하자. 이름은 projectid 이며, Data 도 확인 가능하다
  • Configmap 을 생성해주자
  • 확인해보면 잘 생성되었다
  • Configmap 은 Data 를 확인할 수 있다

Secret

  • Secret 을 생성해주자
  • 잘 생성되었다
  • Secrets 는 Data 를 확인할 수 없다

8. Yaml 파일을 이용해 APP 배포하기

Yaml 수정

  • 배포에 사용할 Yaml 파일을 확인하자
  • 내용을 확인해주자
  • image 부분을 본인의 Project ID 로 수정해주자
  • green Yml 파일도 수정해주자

배포하기

  • api 버전을 확인하자
  • 우리는 Deploy 를 하므로 Deployment 의 api 버전을 확인하자
  • 위 사항들을 수정해주자
  • Yaml 파일을 이용해 배포해주자

9. K8S 와 Deployment

  • K8S 는 K 와 S 사이에 8 글자가 있어서 K8S 이다

  • K8S 는 모든 기능을 객체화 하였다

  • Deployment 는 K8S 의 기능중 하나이다

    • Deployment 안에 Replica_set 이 있고, 이 안에 Pod 가 있다. Pod 는 가장 작은 단위로 컨테이너들의 묶음이다
    • K8S 에서는 Service 배포의 최소 단위가 Container 가 아닌 Pod 이다

  • Yaml 파일은 하나의 Deployment 의 정의이다. 파일 내용을 확인하면, Replica_set 정의 안에 Pod 정의 안에 Container 정의가 있는 것을 확인할 수 있다

10. Pod Scale 조정

  • Pod list 를 확인하자
  • replicas 부분만 수정하면 된다
  • 수정된 Yaml 파일을 적용시키면, Pod 가 4 개로 늘어났다
  • Pod 를 하나 삭제해도, replicas 가 4 이므로, Pod 가 새로 생성되어 4 개를 유지한다

11. Load Balancer 배포

blue 로 보내기

  • Yaml 파일을 확인하면, 80 번 Port 를 매핑하였고, LB 의 80 번 Port 로의 접근은 webserver 타입에 blue 인 Pod 한테 전달해주도록 설정되있다
  • 배포해주자
  • 생성되었는지 확인하자
  • 엔드포인트에 접속하면, 배포한 APP 컨테이너의 WEB 페이지로 접속된다

green 으로 보내기

  • green Service 를 배포하고, service 에서 green 으로 트래픽을 보내게 설정해서 다시 배포해주면 된다
  • 총 7 개의 Pod 가 생성되었다

12. GCP Project 삭제

  • 프로젝트 설정에 들어가서 종료를 누르면 된다
profile
멋진 엔지니어가 될 때까지

0개의 댓글