< Lab >
Lab into : Running SQL Server on Google Kubernetes Engine
실습: Google Kubernetes Engine에서 SQL Server 실행
- Kubernetes 클러스터 생성
- Kubernetes 클러스터 안에 SQL Server 데이터베이스 구성 및 배포
- 클라이언트에서 데이터베이스에 연결
- Helm을 이용해 SQL Server를 클러스터에 배포
Running SQL Server on Google Kubernetes Engine
Google Kubernetes Engine에서 SQL Server 실행
- Kubernetes 클러스터 생성
- 클라우드 셸을 열어 Kubernetes 클러스터 생성
gcloud container clusters create kubernetes-cluster --zone=us-central1-a
- 클러스터에 연결
gcloud container clusters get-credentials kubernetes-cluster --zone us-central1-a
- 연결 확인 테스트
클러스터를 구성하는 시스템 노드가 나열된 것을 확인
kubectl get nodes
- 클러스터에 SQL Server 구성 및 배포
- SQL Server 구성 파일이 이미 생성되어 있는 깃허브 리포지토리 복제 및 폴더 변경
git clone https://github.com/GoogleCloudPlatform/training-data-analyst cd ~/training-data-analyst/courses/db-migration/sql-server-on-gke
- Open Editor를 클릭해 sql-server-on-gke 폴더에서 volum-claims.yaml 파일을 선택
이 파일은 SQL Server 소프트웨어용, 데이터용, 트랜잭션 로그용으로 총 세 개의 볼륨을 구성
# mssql base volume claim kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mssql-base-volume spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- # mssql data volume claim kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mssql-mdf-volume spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- # mssql logs volume claim kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mssql-ldf-volume spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
- mssql-deployment.yaml 파일을 선택
이 파일은 SQL Server 배포를 구성하며 Microsoft SQL Server 이미지가 지정되어 있음
apiVersion: apps/v1 kind: Deployment metadata: name: mssql-deployment spec: replicas: 1 selector: matchLabels: app: mssql template: metadata: labels: app: mssql spec: terminationGracePeriodSeconds: 10 containers: - name: mssql image: mcr.microsoft.com/mssql/server:2017-latest ports: - containerPort: 1433 env: - name: ACCEPT_EULA value: "Y" - name: SA_PASSWORD valueFrom: secretKeyRef: name: mssql-secrets key: SA_PASSWORD - name: MSSQL_DATA_DIR value: /var/opt/mssql/mdf - name: MSSQL_LOG_DIR value: /var/opt/mssql/ldf volumeMounts: - name: mssql-base-volume mountPath: /var/opt/mssql - name: mssql-ldf-volume mountPath: /var/opt/mssql/ldf - name: mssql-mdf-volume mountPath: /var/opt/mssql/mdf volumes: - name: mssql-base-volume persistentVolumeClaim: claimName: mssql-base-volume - name: mssql-mdf-volume persistentVolumeClaim: claimName: mssql-mdf-volume - name: mssql-ldf-volume persistentVolumeClaim: claimName: mssql-ldf-volume
- mssql-service.yaml 파일을 선택
이 파일은 데이터베이스에 대한 액세스를 제공하며 로드 밸런서 서비스 유형
apiVersion: v1 kind: Service metadata: name: mssql-deployment spec: selector: app: mssql ports: - protocol: TCP port: 1433 targetPort: 1433 type: LoadBalancer
- Open Terminal을 클릭 후 비밀번호를 설정하는데 사용되는 Kubernetes 비밀을 작성
kubectl create secret generic mssql-secrets --from-literal=SA_PASSWORD="Passw0rd!"
- 데이터베이스 배포
kubectl apply -f volume-claims.yaml kubectl apply -f mssql-deployment.yaml kubectl apply -f mssql-service.yaml
- 데이터베이스 배포 확인
kubectl get pods
- 로드 밸런서의 IP 주소를 얻어 복사해두기
kubectl get services
+) IP 주소 : 23.251.151.77
- 클라이언트 시스템에서 SQL Server 데이터베이스에 연결
- 콘솔에서 Compute Engine 클릭 후 sql-server-client 이름으로 인스턴스를 생성
- 머신이 준비되면 SSH를 클릭해 머신에 연결한 후
SQL 클라이언트 도구가 이미 설치된 Microsoft에서 제공하는 Docker 컨테이너를 실행 - 대화형 모드에서 컨테이너를 시작
sudo docker run -it mcr.microsoft.com/mssql-tools
- GKE 클러스터 내에서 실행 중인 SQL Server 데이터베이스에 연결
sqlcmd -S 23.251.151.77 -U sa -P Passw0rd!
- 연결 테스트
EXEC sp_databases; GO
- 클라이언트를 종료하고 SSH 창을 닫고 클라우드 셸로 돌아가 SQL Server 배포를 삭제
kubectl delete -f mssql-service.yaml kubectl delete -f mssql-deployment.yaml kubectl delete -f volume-claims.yaml kubectl delete secrets/mssql-secrets