안녕하세요.
어제에 이어 Kubernetes 실습환경을 위해 GKE를 생성해보겠습니다.
GKE란 AWS의 EKS와 비슷한 서비스입니다. 정확히는 관리형 Kubernetes 서비스입니다.
Kubernetes의 모든 부분이 관리형으로 제공되는 것은 아니고 마스터 노드만 관리형으로 제공됩니다.
그 외에 로깅, 빌드, 권한 관리를 지원하며, 클러스터 노드들은 GCE(Google Compute Engine, EC2) 를 사용합니다.
1. Set up GKE
1-1. Create a GKE cluster
gcloud container clusters create polls \
--scopes "https://www.googleapis.com/auth/userinfo.email","cloud-platform" \
--num-nodes 2 --zone "asia-northeast3-a" # 서울 리전으로 변경
서울리전으로 변경하였고, num-nodes는 2개로 설정해주었습니다.
1-2. gcloud와 kubernetes 상호작용
gcloud와 kubernetes master와 상호 연결하여 kubernetes 명령어를 사용할 수 있게 해주는 것 같습니다.
gcloud container clusters get-credentials polls --zone "asia-northeast3-a"
2. GKE - Cloud SQL 설정
GKE 앱이 Cloud SQL 인스턴스에 연결하려면 몇 가지 인증이 필요합니다.
인스턴스 레벨 엑세스와 데이터베이스 엑세스
2-1. 인스턴스 레벨 엑세스
kubectl create secret generic cloudsql-oauth-credentials --from-file=credentials.json=[PATH_TO_CREDENTIAL_FILE]

2-2. 데이터베이스 엑세스
kubectl create secret generic cloudsql --from-literal=username=test --from-literal=password=test1234

2-3. Cloud SQL Public Docker Image Pull
docker pull b.gcr.io/cloudsql-docker/gce-proxy
# 작업 디렉터리로 이동 후
docker build -t gcr.io/<your-project-id>/polls .
# configure 설정
gcloud auth configure-docker
# Push
docker push asia.gcr.io/<your-project-id>/polls
# polls.yaml의 명세를 바탕으로 Kubenetes 생성
kubectl create -f polls.yaml
i. 작업 디렉터리에 Dockerfile이 생성되어있고, Build를 하게되면 컨테이너가 생성됩니다.
- gcr.io는 이미지를 미국의 데이터 센터에서 호스팅하지만 나중에 위치가 변경될 수 있습니다.
- us.gcr.io는 이미지를 미국의 데이터 센터에서, gcr.io에서 호스팅하는 이미지와 별도의 스토리지 버킷에 호스팅합니다.
- eu.gcr.io는 유럽 연합 내 이미지를 호스팅합니다.
- asia.gcr.io는 이미지를 아시아의 데이터 센터에서 호스팅합니다.
★ 수정사항
docker pull b.gcr.io/cloudsql-docker/gce-proxy을 하게되면 python2.7버전의 이미지가 받아집니다.
Dockerfile을 보면 RUN virtualenv -p python3 /env 하는 부분이 있는데 python 이미지 자체가 2.7버전이라
오류가 발생합니다. Dockerfile을 아래와 같이 수정하였습니다.
FROM python:3.7.3
RUN pip install virtualenv
RUN virtualenv env
ENV PATH /env/bin:$PATH
ADD requirements.txt /app/requirements.txt RUN /env/bin/pip install --upgrade pip && /env/bin/pip install -r /app/requirements.txt
ADD . /app
CMD gunicorn -b :$PORT mysite.wsgi
ii. configure 설정은 Kubernetes의 ConfigMap과 같은 설정으로 보입니다. Key: Value형식으로 데이터를 저장하여 polls.yaml 에서 호출되어 사용됩니다.
iii. GCR에 image를 Push하여 kubernetes를 생성할 때 GCR에서 가져와 사용할 수 있도록 합니다.
iiii. polls.yaml의 명세를 바탕으로 kubernetes를 생성합니다.
kubectl get pod
kubectl get service 로 polls.yaml 명세에 적힌 대로 생성된 것을 확인할 수 있다.
감사합니다.
'Devops > Kubernetes' 카테고리의 다른 글
| Kubernetes - Controller: Deployment (0) | 2020.05.20 |
|---|---|
| Kubernetes - Controller: Auto Healing, Software Update, Auto Scaling, Job (0) | 2020.05.20 |
| Kubernetes Django Tutorial (Cloud SQL, Storage) - 1 (0) | 2020.05.11 |
| Kubernetes - Object:Namespace, ResourceQuota, LimitRange (0) | 2020.05.11 |
| Helm 이란 (0) | 2020.05.11 |
댓글