검색결과 리스트
글
모든 개발환경 구축이 끝이 났습니다.
이제 실제로 앱을 만들어 배포해 보도록 하겠습니다.
DashBoard 이용하여 앱 배포하기
포스팅의 촛점은 Production 환경에 맞추어져 있습니다.
private Registry 에 이미지를 올리고, 그것을 통해서 Deployment 한다는 가정으로 진행하겠습니다. :)
초간단 앱 만들고, 배포하기
먼저 초 간단 앱을 만들어서 배포해 봅시다. :)
nodejs 를 통해서 Hello World! 를 출력하는 앱을 만들겠습니다.
var os = require('http');
var handler = function(req, res) {
res.writeHead(200);
res.end('Hello World!');
}
var www = http.createServer(handler);
www.listen(8080);
을 server.js 라는 이름으로 저장합니다.
localhost:8080 으로 접속하면 "Hello World!"를 출력해주는 간단한 앱이 완성되었습니다.
배포를 위해서 Dockerfile 을 만들어 줍니다.
파일 이름을 Dockerfile 로 저장합니다. (다른 이름으로 해도 됩니다. 그러면 이후 build 시에 -f 플래그를 이용해서 파일명을 지정해 주어야 합니다.)
FROM node:carbon
EXPOSE 8080
COPY server.js .
CMD node server.js
이제 현재 폴더에는 두개의 파일이 있습니다.
앱 파일인 server.js 와 이미지 빌드를 위한 Dockerfile 파일입니다.
아래처럼 빌드를 합니다.
$ docker build -t registry.crystalcube.com/admin/testapp:v1 .
보시면 아시겠지만 registry.crystalcube.com/admin/testapp:v1 에서 : 앞부분에는 빌드할 이미지 이름입니다.
뒤에 따라오는 v1 은 TAG 명입니다.
private registry 를 사용한다면, 그곳에서 허용하는 규칙에 맞게 이름을 정하셔야 합니다.
만약 이미 빌드한 앱에 대해서 이미지:태그명을 변경하려면 아래처럼 하시면 됩니다.
$ docker tag {기존 이미지:태그} {새로운 이미지:태그}
$ docker login registry.crystalcube.com
뒤에 따라오는 registry.crystalcube.com 에 사용하시는 registry 주소를 적어주시면 됩니다.
로그인을 성공적으로 마친 뒤에, 다음과 같이 배포하시면 됩니다.
$ docker push registry.crystalcube.com/admin/testapp:v1
Kubernetes 에 Docker Registry 를 위한 Secret 생성하기
프로젝트 관리차원(분리)에서 네임스페이스를 만들겠습니다.
$ kubectl create namespace {my-namespace}
이제 Kubernetes 에서 private registry 에 있는 이미지를 Pull 할 수 있도록, secret 을 만들어 주어야 합니다.
아래처럼 생성할 수 있습니다.
$ kubectl create secret docker-registry {NAME} --docker-server=registry.crystalcube.com --docker-username={ID} --docker-password={PASSWORD} --docker-email={EMAIL} -n {NAMESPACE}
{NAME} 에는 임의의 이름으로 정해주시면 됩니다.
{NAMESPACE} 에는 secret 을 저장/사용할 namespace 를 지정해 주면 됩니다.
생성이 완료되면 아래처럼 확인 할 수 있습니다.
$ kubectl get secret -n {my-namespace}
NAME TYPE DATA AGE
default-token-9w9vz kubernetes.io/service-account-token 3 1h
crystalcube-secret kubernetes.io/dockerconfigjson 1 35m
DashBoard 에서 앱 Deployment 하기
이제 모든 준비가 완료되었습니다.
Deployment 는 NODE 들에게 Docker 를 생성하도록 하는 과정이라고 보시면 됩니다. 말 그대로 배포과정입니다.
일반적으로 yaml 파일을 작성하여 Deployment 를 하는데, 저는 Dashboard 를 사용해서 해 보도록 하겠습니다.
추가적으로 말씀드리자면, 현재 버전의 Dashboard 에서는 디테일한 설정을 할 수 없습니다.
Deployment 이외에 Service 나 Ingress 등과 관련된 기능은 일부만 지원하거나 미지원 합니다.
어쨌든~
https://{apiserver-ip}:{port}/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
Dashboard 에 접속하여, 토큰을 가지고 로그인을 합니다.
우측 상단에 "+생성" 이라는 버튼을 누르고, 아래처럼 필드를 채워줍니다.
컨테이너 이미지에는 앞서 push 한 이미지의 주소를,
파드의 수는 원하는 pod 의 갯수를,
서비스에는 외부와 연결할 포트 번호를 넣어줍니다.
그리고 private registry 사용시 중요한 부분이 나옵니다.
네임 스페이스를 앞서 secret 을 추가했던 것으로 선택합니다.
그리고나서 그 밑에 '이미지 풀 시크릿' 을 눌러보면, 앞서 만들었던 secret 이 보입니다.
그것을 반드시 선택해 주어야 합니다.
하단에 배포 버튼을 누르면 끝이 납니다. :)
워크로드를 살펴보면, 정상적으로 Deployment 가 진행되는 것을 볼 수 있습니다.
'네트워크' 카테고리의 다른 글
Docker with Kubernetes #8 - 기타설명 (0) | 2018.09.06 |
---|---|
Docker with Kubernetes #7 - Kubernetes 의 GPU 설정 (0) | 2018.09.06 |
Docker with Kubernetes #5 - Dashboard 설치 (9) | 2018.09.03 |
Docker with Kubernetes #4 - Kubernetes 설치 (2) | 2018.09.03 |
Docker with Kubernetes #3 - Docker Compose (0) | 2018.09.03 |
RECENT COMMENT