-
[2장] 쿠버네티스 첫걸음데이터엔지니어링/K8s on Cloud 2023. 6. 5. 12:30
Cloud Native DevOps with Kubernetes의 책을 읽고 실습을 따라한 과정
도커 데스크톱을 활용해서 간단한 데모 애플리케이션을 빌드하고 로컬에서 실행한 뒤 이미지를 컨테이너 레지스트리에 푸시하기
도커는 쿠버네티스와 관련된 여러 기능을 제공한다. 컨테이너 이미지 포맷, 컨테이너의 수명 주기를 관리하는 컨테이너 런타임 라이브러리, 컨테이너의 패키징 및 실행에 사용하는 명령줄 도구, 컨테이너 관리용 API가 있다. 도커가 중요하긴 하나 쿠버네티스가 사용하는 많은 컴포넌트 중에 하나다.
docker container run -p 9999:8888 --name hello cloudnatived/demo:hello
명령어를 이용하여 파일을 다운로드하고 localhost:9999에 띄운걸 확인할 수 있다.
실제로 localhost:9999로 접속시
이런 결과를 얻을 수 있다.
깃 클론을 이용하여 확인하게 되면, main.go 파일은 다음처럼 구성되어 있는 것을 볼 수 있다.
Go 언어로 작성된 것을 볼 수 있는데, 도커,테라폼,쿠버네티스 등등 Go로 작성이되어있다고 한다.
(단순성, 안정성,가독성을 중요시 한다고 한다!)
이 데모 애플리케이션의 핵심은 handler() 함수다.
handler()함수는 HTTP 요청을 처리하며, 함수의 인수로 전달이 된다.
http.ResponseWriter 객체는 클라이언트 유저에게 메시지를 전달해 브라우저에 출력할 수 있게 해준다.
나머지는 handler 함수가 HTTP 요청을 처리하게 등록하고, 실제로 8888포트에서 실행되도록 한다.
컨테이너 이미지는 컨테이너 실행에 필요한 모든 것이 담긴 단일 파일이다.
컨테이너 이미지 빌드는 docker image build 명령어를 사용하며, 도커파일이란 특별한 텍스트 파일을 입력으로 받는다.
도커파일은 컨테이너 이미지가 포함할 것을 구체적으로 지정한다.
컨테이너의 장점은 기존 이미지를 기반으로 새로운 이미지 빌드가 가능하다!
멀티 스테이지 빌드라는 빌드 프로세스를 사용한다.
첫번째는 golang 공식 컨테이지 이미지에서 시작하며, main.go 파일을 컴파일 한다.
go build의 결과로 demo라는 이름의 실행 가능한 바이너리 파일이 생성된다.
두번째는 완전히 비어있는 컨테이너 이미지(스크래치 이미지라고도 한다)를 가져와 안에 demo 바이너리파일을 복사한다.
빌드 단계가 필요한 이유는 불 필요한 프로그램을 줄여 다운로드 속도, 업로드 속도, 실행속도를 빠르게 함과 동시에 보안 취약점을 줄이기 위해서 필요하다!
도커 빌드를 하고 난 뒤 이제 컨테이너 이미지를 사용이 가능하다!
-t 를 이용하면 사람이 읽고 쓰기 편한 이름을 지정할 수 있다.
기본적으로는 16진수 ID값이 생성된다.
hellotest로 지정한 데모 애플리케이션의 사본이 실행중이며, 아래와 같이 나오는 것을 확인할 수 있다.
컨테이너 실행시 포트 포워딩을 설정할 수 있는데,
docker container run -p HOST_PORT:CONTAINER_PORT ...
와 같은 명령어로 지정이 가능하며, HOST_PORT로 들어오는 트래픽은 모두 도커 컨테이너의 CONTINER_PORT로 전달 된다는 것으로 생각하면 된다. 이것이 브라우저로 애플리케이션에 연결하는 방법이라고 한다.
docker image tag hellotest Docker_id/hellotest
를 입력해 이름을 지정해주고, 아래 명령어를 입력해 도커 허브에 푸시해준다!
docker image push Docker_id/hellotest
이렇게 도커 허브에 푸시된 것을 볼 수 있다.
docker container run -p 9999:8888 Docker_id/hellotest
위 명령어를 입력하면 어디서나 컨테이너 이미지를 실행할 수 있다!
쿠버네티스로 시작하기!
도커 데스크톱에서 쿠버네티스의 enable kubernetes를 눌러 활성화 시키고 난 뒤에 진행한다.
그러면 파드 demo가 만들어 진걸 확인할 수 있다.
다음처럼 get pods로 이름을 확인하고 pod/demo 로 포트포워딩을 설정해주면 된다.
그리고 localhost:9999로 들어가게되면!!??
이렇게 접속된 것을 확인할 수 있다.
다음은 3장 쿠버네티스 구축하기를 해보겠다!
'데이터엔지니어링 > K8s on Cloud' 카테고리의 다른 글
[6장] 클러스터 운영하기 (0) 2023.08.03 [5장] 리소스 관리 (0) 2023.07.04 [4장] 쿠버네티스 오브젝트 다루기 (0) 2023.06.20 [3장] 쿠버네티스 구축하기 (0) 2023.06.06