GKE의 Go 앱에서 Cloud Sql Proxy를 통해 CloudSQL 2세대에 연결
개요
GKE Docker의 Go 앱에서 Cloud Sql Proxy를 통해 CloudSQL 2 세대에 연결해 보았으므로 비망록으로 남겨 둡니다.
절차
DB 생성
google cloud console에서 cloudSQL db 만들기
第2世代
선택하기
DB명은 db-dev
로 한다
フェールオーバレプリカの作成
에 체크하고 작성하기
인스턴스가 생성되었는지 확인
사용자의 비밀번호 설정
GKE에서 DB 연결 확인 및 사용자 권한 생성
연결 확인, 사용자 권한 생성을 위한 인스턴스 생성
gcloud compute instances create sql-client --scopes=sql-admin --machine-type=f1-micro \
--network=lovelytokyo --subnet=lovelytokyo \
--zone=asia-northeast1-b
연결하다
gcloud compute ssh debian@sql-client
cloud_sql_proxy 설치
curl https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -o cloud_sql_proxy
chmod +x cloud_sql_proxy
sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
mysql client 설치
sudo apt-get install mysql-client
cloud_sql_proxy 시작
sudo ./cloud_sql_proxy -dir=/cloudsql -instances='lovelytokyo:asia-northeast1:db-dev=tcp:3306'
연결하다
mysql --user root --host localhost --protocol TCP --password
db 만들기
CREATE DATABASE hawai DEFAULT CHARACTER SET utf8;
DB hawai
에 사용자 cloudmaster
가 프록시를 통해 액세스 할 때 권한 설정
GRANT SELECT,INSERT,UPDATE,DELETE ON hawai.* TO 'cloudmaster'@'cloudsqlproxy~%';
FLUSH PRIVILEGES;
GKE Docker의 GO 앱에서 연결
1. 서비스 계정 키 만들기
google cloud console에서 서비스 계정 키 만들기
만든 Cloud SQL Service account
json 파일을 다운로드하여 저장
/path/to/secrets/cloudsql/lovelytokyo-xxxx-xxx.json
2. 인스턴스에서 CloudSQL에 액세스하기 위한 보안 생성
이때 json 파일의 경로는 1.로 저장한 경로로 한다.
kubectl create secret generic cloudsql-oauth-credentials --from-file=credentials.json=/path/to/secrets/cloudsql/lovelytokyo-xxxx-xxx.json
3. 데이터베이스에 액세스 할 때 사용하는 사용자 및 암호 작성
go 앱에서 사용
kubectl create secret generic cloudsql-master-user --from-literal=username=cloudmaster
kubectl create secret generic cloudsql-master-password --from-literal=password=masterpasswd
GO 앱의 deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name:app-sample
spec:
replicas: 1
strategy:
type: RollingUpdate
template:
metadata:
labels:
application: app-sample
tier: app
spec:
imagePullSecrets:
- name : gcp-registry-key
containers:
- image: gcr.io/lovelytokyo/app-sample
name: app-sample
ports:
- containerPort: 8080
protocol: TCP
imagePullPolicy: Always
env:
- name: MASTER_USER
valueFrom:
secretKeyRef:
name: cloudsql-master-user (3.で作成したものを参照する)
key: username
- name: MASTER_PASSWORD
valueFrom:
secretKeyRef:
name: cloudsql-master-password (3.で作成したものを参照する)
key: password
- image: b.gcr.io/cloudsql-docker/gce-proxy:1.05
name: cloudsql-proxy
command: ["/cloud_sql_proxy", "--dir=/cloudsql",
"-instances=lovelytokyo:asia-northeast1:db-dev=tcp:3306",
"-credential_file=/secrets/cloudsql/credentials.json"]
volumeMounts:
- name: cloudsql-oauth-credentials
mountPath: /secrets/cloudsql
readOnly: true
- name: ssl-certs
mountPath: /etc/ssl/certs
- name: cloudsql
mountPath: /cloudsql
volumes:
- name: cloudsql-oauth-credentials
secret:
secretName: cloudsql-oauth-credentials
- name: ssl-certs
hostPath:
path: /etc/ssl/certs
- name: cloudsql
emptyDir:
앱의 연결 샘플
환경 변수로 설정한 사용자 이름과 암호를 사용하여 연결
user := os.Getenv("MASTER_USER")
passwd := os.Getenv("MASTER_PASSWORD")
db := "hawai"
connStr := fmt.Sprintf("%s:%s@tcp(localhost:3306)/%s%s", user, passwd, db, option)
Reference
이 문제에 관하여(GKE의 Go 앱에서 Cloud Sql Proxy를 통해 CloudSQL 2세대에 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kkam0907/items/bd1071352057e2166543
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
DB 생성
google cloud console에서 cloudSQL db 만들기
第2世代
선택하기DB명은
db-dev
로 한다フェールオーバレプリカの作成
에 체크하고 작성하기인스턴스가 생성되었는지 확인
사용자의 비밀번호 설정
GKE에서 DB 연결 확인 및 사용자 권한 생성
연결 확인, 사용자 권한 생성을 위한 인스턴스 생성
gcloud compute instances create sql-client --scopes=sql-admin --machine-type=f1-micro \
--network=lovelytokyo --subnet=lovelytokyo \
--zone=asia-northeast1-b
연결하다
gcloud compute ssh debian@sql-client
cloud_sql_proxy 설치
curl https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -o cloud_sql_proxy
chmod +x cloud_sql_proxy
sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
mysql client 설치
sudo apt-get install mysql-client
cloud_sql_proxy 시작
sudo ./cloud_sql_proxy -dir=/cloudsql -instances='lovelytokyo:asia-northeast1:db-dev=tcp:3306'
연결하다
mysql --user root --host localhost --protocol TCP --password
db 만들기
CREATE DATABASE hawai DEFAULT CHARACTER SET utf8;
DB
hawai
에 사용자 cloudmaster
가 프록시를 통해 액세스 할 때 권한 설정GRANT SELECT,INSERT,UPDATE,DELETE ON hawai.* TO 'cloudmaster'@'cloudsqlproxy~%';
FLUSH PRIVILEGES;
GKE Docker의 GO 앱에서 연결
1. 서비스 계정 키 만들기
google cloud console에서 서비스 계정 키 만들기
만든
Cloud SQL Service account
json 파일을 다운로드하여 저장/path/to/secrets/cloudsql/lovelytokyo-xxxx-xxx.json
2. 인스턴스에서 CloudSQL에 액세스하기 위한 보안 생성
이때 json 파일의 경로는 1.로 저장한 경로로 한다.
kubectl create secret generic cloudsql-oauth-credentials --from-file=credentials.json=/path/to/secrets/cloudsql/lovelytokyo-xxxx-xxx.json
3. 데이터베이스에 액세스 할 때 사용하는 사용자 및 암호 작성
go 앱에서 사용
kubectl create secret generic cloudsql-master-user --from-literal=username=cloudmaster
kubectl create secret generic cloudsql-master-password --from-literal=password=masterpasswd
GO 앱의 deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name:app-sample
spec:
replicas: 1
strategy:
type: RollingUpdate
template:
metadata:
labels:
application: app-sample
tier: app
spec:
imagePullSecrets:
- name : gcp-registry-key
containers:
- image: gcr.io/lovelytokyo/app-sample
name: app-sample
ports:
- containerPort: 8080
protocol: TCP
imagePullPolicy: Always
env:
- name: MASTER_USER
valueFrom:
secretKeyRef:
name: cloudsql-master-user (3.で作成したものを参照する)
key: username
- name: MASTER_PASSWORD
valueFrom:
secretKeyRef:
name: cloudsql-master-password (3.で作成したものを参照する)
key: password
- image: b.gcr.io/cloudsql-docker/gce-proxy:1.05
name: cloudsql-proxy
command: ["/cloud_sql_proxy", "--dir=/cloudsql",
"-instances=lovelytokyo:asia-northeast1:db-dev=tcp:3306",
"-credential_file=/secrets/cloudsql/credentials.json"]
volumeMounts:
- name: cloudsql-oauth-credentials
mountPath: /secrets/cloudsql
readOnly: true
- name: ssl-certs
mountPath: /etc/ssl/certs
- name: cloudsql
mountPath: /cloudsql
volumes:
- name: cloudsql-oauth-credentials
secret:
secretName: cloudsql-oauth-credentials
- name: ssl-certs
hostPath:
path: /etc/ssl/certs
- name: cloudsql
emptyDir:
앱의 연결 샘플
환경 변수로 설정한 사용자 이름과 암호를 사용하여 연결
user := os.Getenv("MASTER_USER")
passwd := os.Getenv("MASTER_PASSWORD")
db := "hawai"
connStr := fmt.Sprintf("%s:%s@tcp(localhost:3306)/%s%s", user, passwd, db, option)
Reference
이 문제에 관하여(GKE의 Go 앱에서 Cloud Sql Proxy를 통해 CloudSQL 2세대에 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kkam0907/items/bd1071352057e2166543텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)