이전 실습에서 만든 Docker를 Kubernetes와 연동해서 Ncloud Kubernetes Service를 이용해보는 실습을 포스팅 하려고 한다. Docker의 경우 아래의 포스팅을 참고하면 된다.
쿠버네티스를 활용하려면 기본적인 kubectl 이 설치되어야 한다.
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
상위 2개의 명렁어를 통해서 쿠버네티스를 설치한다.
kubectl version --client를 통해서 버전을 확인한다.
cd~ 루트 디렉토리로 돌아간다.
curl -o ncp-iam-authenticator https://kr.object.ncloudstorage.com/nks-download/ncp-iam-authenticator/v1.0.0/linux/amd64/ncp-iam-authenticator -Ncp-iam-authenticator
chmod +x ./ncp-iam-authenticator
mkdir -p /root/bin && cp ./ncp-iam-authenticator /root/bin/ncp-iam-authenticator && export PATH=$PATH:/root/bin
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile
바이너리 파일 홈디렉토리에 ncp-iam-authenticator를 다운로드한다.
해당 파일을 다운로드 하는 이유는 Kubernetes Service의 ncp-iam-authenticator를 통해 IAM 인증을 제공한다.
IAM 인증을 통해 kubectl 명령을 사용하려면 ncp-iam-authenticator를 설치해야한다.
그래서 chmod를 통해서 kubectl 설정 파일을 수정한다.
$HOME/bin/ncp-iam-authenticator를 생성하고 $PATH에 추가하고, 명령어가 잘 작동하는지 확인한다.
ncp-iam-authenticator help
해당 명령어를 통해서 잘 작동이 되는지 확인한다.
IAM 인증 kubeconfig 생성하는 작업을 진행해준다. 사용자 환경 홈 디렉터리의 '.ncloud' 폴더에 configure 파일 생성한다.
mkdir .ncloud
vi ~/.ncloud/configure
configure에 아래 코드를 복사한다.
[DEFAULT]
ncloud_access_key_id = ACCESSKEYACCESSKEYAC
ncloud_secret_access_key = SECRETKEYSECRETKEYSECRETKEYSECRETKEYSECR
ncloud_api_url = https://ncloud.apigw.ntruss.com
[project]
ncloud_access_key_id = ACCESSKEYACCESSKEYAC
ncloud_secret_access_key = SECRETKEYSECRETKEYSECRETKEYSECRETKEYSECR
ncloud_api_url = https://ncloud.apigw.ntruss.com
ncp-iam-authenticator create-kubeconfig 명령을 사용하여 kubeconfig 생성한다.
ncp-iam-authenticator create-kubeconfig --region KR --clusterUuid <cluster-uuid> > kubeconfig.yaml
Cluster에서 좌측 상단에 UUID확인이 가능하다.
생성된 kubeconfig 파일로 kubectl 명령 테스트한다. 네임스페이스는 네임스페이스별 리소스 할당량 지정한다.
kubectl get namespaces --kubeconfig kubeconfig.yaml
그 다음 Container Registry 의 Access/Secret Kety를 저장한 Secret 오브젝트 생성한다.
vi ~/.bash_profile
alias kubectl='kubectl --kubeconfig="/root/kubeconfig.yml"'
source ~/.bash_profile
vi 접속 후, 파일 맨 밑에 alias 내용 추가한다.
kubectl create secret docker-registry regcred \
--docker-server=<Registry Private 도메인> --docker-username=<Access Key>\
--docker-password=<Private Key> --docker-email=<개인 이메일>
kubectl get secret
kubectl을 통해서 도커 레지스트리에 Access/Secret Kety를 저장한 Secret 오브젝트를 만든다.
(여기서 중요!) 해당 과정에서 오타 또는 잘못 입력 시, 뒤에 과정이 모두 꼬일 수 있으니 주의해서 작성하자.
생성이 성공 된 것을 확인할 수 있다.
그 다음 필요한 vi 파일에 내용을 입력한다.
cd ~/lab_source/lab3
vi create_only_pod.yaml >> image부분 Private-endpoint 수정
kubectl create -f create_only_pod.yaml >> 팟 생성
kubectl get pods -o wide
vi create_deployment.yaml >> image부분 Private-endpoint 수정
kubectl apply -f create_deployment.yaml
kubectl get pods
vi create_service.yaml
kubectl apply -f create_service.yaml
kubectl get service
기존에 도커 레지스트리가 있었떤 lab3 디렉토리로 가서 yaml파일에 image 부분을 registry endpoint로 수정 그리고 pod를 생성해준다.
두번째 명령어에서도 image 부분을 registry endpoint로 수정.
kubectl get service
위 명령어를 실행해서 쿠버네티스를 시작한다.
해당 명령어와 동시에 Load Balancer를 가면 자동으로 LB가 생성이 된다.
LB의 접속정보 IP주소를 통해 들어가면 도커 이미지에 담긴 내용을 아래와 같이 확인 할 수 있다.