본문 바로가기
CI & CD/Docker & Kubernetes

[Docker] 공식문서 도전기 #5 Kubernetes deploy

by Riverandeye 2019. 11. 5.

여기입니다.

 

이제 컨테이너에서 앱을 돌아가게끔 만들었으니, 쿠버네티스를 이용해 컨테이너를 다루어보자.

쿠버네티스는 컨테이너화된 어플리케이션을 scaling 하고 네트워킹하고 뭐 여러가지 컨테이너 이상의 기능을 해주는 무언가다. 

 

Using Kubernetes YAML

모든 쿠버네티스의 컨테이너는 리소스를 공유하는 pods로서 스케줄링 된다. 그렇다고 우리가 pods를 독립적으로 구성할건 아니고, 대부분 pods를 독립적으로 구성하는 deployment 들로 작업이 이루어질 것이다.

모든 쿠버네틱스 오브젝트는 Kubernetes YAML 파일에 명시가 되어있다. 이 yaml 파일은 쿠버네틱스의 컴포넌트와 configuration을 지정하고, 쿠버네틱스 앱을 만들거나 없애는 작업을 해준다.

 

예시를 보자.

 

아우 길어

--- 를 기준으로 두개의 object가 나뉘는 것이다. 먼저 각 property가 의미하는 것이 무엇인지 알아보자.

위쪽 Pods의 kind : Development 는 서로 다른 pods의 모임을 의미하는데, 여기서는 replica가 1이여서 pod가 1개 존재한다. 그리고 spec : container 에 작성된 컨테이너가 1개밖에 없으니, 곧 bulletinboard:1.0 의 이미지로 만들어진 pod 1개가 존재하게 될 것이다.

 

그 밑에는 service Object인데, NodePort 는 각 node의 포트를 static port에 bind 시키는 역할을 해주는 서비스이다. 이걸 통해 외부 접속 포트인 30001 포트를 내부 8080 포트에 bind 한 것이다. 

 

일반적으로 Kuber YML 파일 만들 때 패턴이 있다고 한다. 

apiVersion - Object를 파싱하는 API를 명시

kind - 어떤 Object인지 명시

metadata - Object에 이름과 같은 것들을 명시

spec - Object에 적용되는 모든 parameter와 configuration을 명시

 

Deploying and Checking Your Application

어쩄든 만든 yml 파일을 실행시켜보면

 

쿠버네티스 Object인 deployment app이 만들어지고, service가 만들어진다.

 

deployment랑 service가 잘 만들어졌는지 확인해봅자.

bb-entrypoint에서 8080 포트가 30001으로 접속할 수 있음을 확인했으니, localhost:30001에서 접속해서 확인해봅시다.

 

확인했으면 kubectl delete -f bb.yaml 로 종료해줍시다.

 

이렇게 기본 튜토리얼을 했는데, Dockerfile로 앱 작동하는 컨테이너 만드는건 어렵지 않을 것 같은데, 

여러개의 컨테이너를 다루게 해주는 쿠버네티스에 대한 공부가 좀 더 필요하다.

Nginx도 연결하고 DB도 고민해보아야 하기 때문에 .. 

댓글