2.1 컨테이너 애플리케이션 개발의 흐름
스텝1 개발 환경의 준비
- 에디터나 IDE 등을 설치하고 개발 언어별로 필요한 런타임이나 라이브러리 도입
스텝2 컨테이너 이미지의 작성 및 공유
- 컨테이너 작동을 하려면 애플리케이션을 움직이기 위해 필요한 바이너리, OS, 네트워크와 같은 ㅇ니프라 설ㅈ어이 모두 포함되어 있는 ‘컨테이너 이미지’를 작성해야 한다. 도커의 경우 DOCKERFILE이라는 텍스트 파일에 구성을 기술, 그것을 빌드한 것을 실행 환경에서 이용가능한 레포지토리로 공유한다.
스텝3 클러스터 작성 (실제 환경의 작성)
실제로 컨테이너 애플리케이션을 작동시키는 서버를 셋업한다.
개발 환경이나 테스트 환경에서는 로컬 머신에서 작동시킬 수도 있지만 서비스를 공개할 때는 자신이 보유한 온프레미스 환경에서 시스템을 구축하거나 클라우드 서비스를 이용한다.
2.2 개발 환경 준비
Visual studio code 설치
MS가 제공하는 오픈소스 소스코드 에디터이며 무료이다. Windows, macOS, Linux에서도 작동된다.
비주얼 스튜디오 마켓플레이스에서 제공하는 확장 기능을 넣어 커스터마이징하여 사용 할 수 있다.
Vs code 주요 지원기능
- 디버그 기능
- 구문 하이라이트
- intelliSense(입력 보완 기구)
- Git 연동
- 태스크 자동 실행
- 확장 기능 임베디드
- 통합 터미널 가능
Vs code에서 [view] -> [extensions]
Docker support for visual studio 설치
Visual studio code kubernetes tools 설치
Azure CLI 명령의 설치
https://aka.ms/installazurecliwindows
CMD를 통해 AZURE에 로그인한다
as login
이어서 다음 명령을 실행하여 리소스 프로바이더를 활성화한다.
az provider register -n Microsoft.Network
az provider register -n Microsoft.Storage
az provider register -n Microsoft.Compute
az provider register -n Microsoft.ContainerService
- Azure cli 설치 문서 : https://docs.microsoft.com/ko-kr/cli/azure/install-azure-cli
- Kubectl 명령의 설치 : https://storage.googleapis.com/kubernetes-release/release/v1.11.4/bin/windows/amd64/kubelctl.exe
설치후 버전 체크
$ kubectl version
Azure cli를 이용하면 az명령어로 kubectl 명령을 설치 할 수 있다. Azure의 경우 이 방법으로 진행한다.
Sudo az install-cli
Azure cloud shell은 브라우저에서 azure를 명령으로 조작할 수 있는 웹 애플리케이션이다. 클라이언트 단말이나 az명령을 설치하는 것이 어려운 경우에 사용하면 좋다.
개요 : https://docs.microsoft.com/ko-kr/azure/cloud-shell/overview
2.3 azure container registry
Azure Container Registry(이하 ACR)는 애져가 제공하는 컨테이너 이밎 공유 서비스다. 쿠버네티스 뿐만 아니라 DC/OS, Docker Swarm, Azure가 제공하는 컨테이너 실행 환경에서 이용할 수 있다.
(1) 레지스트리 작성
$ ACR_NAM=sampleACRResgistry
Azure에서는 리소스 그룹이라는 논리적 단위로 리소스를 관리한다.
$ ACR_RES_GROUP=$ACR_NAME
그리고 다음 명령어를 통해 리소스 그룹을 작성한다 로케이션은 한국 중부 리전을 사용한다.
$ az group create –resource-group $ACR_RES_GROUP –location koreacentral
이제 리소스 그룹이 생성되었으니 acr의 레지스트리를 작성한다.
$ az acr create –resource-group $ACR_RES_GROUP –name $ACR_NAME –sku Standard –location koreacentral
여기서 LOGIN SERVER의 값을 확인해야 한다. 이것이 컨테이너 레지스트리의 액세스 위치가 된다.
(2) 샘플 다운로드
예시에서는 아래와 같은 샘플 프로젝트를 사용한다
$ git clone https://github.com/ToruMakabe/Understanding-K8s
$ cd Uderstanding-K8s/chap02/
(3) 이미지 빌드
다음 명령어를 통해 빌드한다 이미지 이름은 photo-view이며 이미지의 식별을 위해 ‘v1.0’ 태그를 설정한다 이 이미지의 빌드에는 시간이 조금 걸린다.
az acr build –registry $ACR_NAME –image photo-view:v1.0 v1.0/
2.4 azure를 사용한 쿠버네티스 클러스터 작성
Azure Kubernetes Service(이하 AKS)를 이용하여 설명을 진행한다.
(1) ACR와 AKS 연결하기
좀 전에 ACR에서 작성한 컨테이너 이미지는 AKS에서 작성한 쿠버네티스 클러스터 상에서 pull하여 움직인다.
그러기 위해서는 ACR과 AKS 사이에 인증을 해야 하기 때문에 Azure Active Directory의 서비스 프린서플을 사용한다.
서비스 프린 서플이란 azure의 리소스를 조작하는 애플리케이션을 위한 ID이다.
먼저 az acr show 명령을 실행하여 ACR의 리소스 ID를 취득한다. 다음 명령어를 사용하여 취득한 리소스 ID를 쉘 환경변수 ACR_ID에 설정한다.
$ ACR_ID=$(az acr show --name $ACR_NAME --query id --output tsv)
이후 서비스 프린서플 이름을 쉘 환경변수 SP_NAME에 설정한다.
(2) 클러스터 만들기
(3) 클러스터 연결을 위한 인증 정보 설정하기
KUBECTL 명령을 사용한 클러스터의 기본 조작
서비스 프린 서플이란 azure의 리
AKS를 사용하여 쿠버네티스 클러스터를 작성했으면 이제 kubectl 명령을 사용하여 클러스터를 조작할 수 있다.
kubectl은 기본적으로 다음과 같은 구문으로 사용한다.
kubectl <명령> <타입> <이름> <플래그>
- 명령
- 클러스터에 대해 어떤 조작을 할지 지정
- 자주쓰는 명령은 create / apply / get / delete, 상세보기 describe, 로그 확인은 logs
- 타입
- 쿠버네티스는 컨테이너 애플리케이션이든 네트워크 설정이든 잡 실행이든 모두 리소스라는 추상화된 개념으로 관리한다
- 타입에는 단축명 이용할 수 있다
- 이름
- 리소스에는 식별을 위한 고유한 이름 존재
- 이것을 리소스의 이름으로 지정, 이름은 대소문자 구분
- 이름을 생략하면 모든 리소스의 상세정보가 표시된다
- 플래그