Google 애플리케이션을 실행하기 전에 데이터베이스 스키마를 업데이트해야합니다. this thread과 this answer을 기반으로하는 경우 init 컨테이너를 사용하여 작업을 수행하기로 결정했습니다.Kubernetes : gce-proxy가있는 initContainer입니까?
내 SQL 인스턴스가 호스팅 된 Google Cloud SQL 인스턴스이므로 데이터베이스에 연결할 수 있으려면 gce-proxy
이 필요합니다.
initContainers:
- name: cloudsql-proxy-init
image: gcr.io/cloudsql-docker/gce-proxy:1.09
command: ["/cloud_sql_proxy"]
args:
- --dir=/cloudsql
- -instances=xxxx:europe-west1:yyyyy=tcp:5432
- -credential_file=/secrets/cloudsql/credentials.json
volumeMounts:
- name: dev-db-instance-credentials
mountPath: /secrets/cloudsql
readOnly: true
- name: ssl-certs
mountPath: /etc/ssl/certs
- name: cloudsql
mountPath: /cloudsql
- name: liquibase
image: eu.gcr.io/xxxxx/liquibase:v1
imagePullPolicy: Always
command: ["./liquibase.sh"]
env:
- name: DB_TYPE
value: postgresql
- name: DB_URL
value: jdbc:postgresql://localhost/test
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
- name: DB_USER
valueFrom:
secretKeyRef:
name: db-credentials
key: username
하지만 내 포드가 붙어 : 내 initContainers은 다음과 같습니다
containers with incomplete status: [cloudsql-proxy-init liquibase]
내가 포드 보면
는 설명 :Init Containers:
cloudsql-proxy-init:
Container ID: docker://0373fa6528ec3768d46a1c59ca45f12d9fc46d1f0d199b7eb3772545701e1b1d
Image: gcr.io/cloudsql-docker/gce-proxy:1.09
Image ID: docker://sha256:66c58ef63dbfe239ff95416d62635559498ebb395abb8a4b1edee78e48e05fe4
Port:
Command:
/cloud_sql_proxy
Args:
--dir=/cloudsql
-instances=xxxxx:europe-west1:yyyyyy=tcp:5432
-credential_file=/secrets/cloudsql/credentials.json
State: Running
Started: Thu, 13 Apr 2017 17:40:02 +0300
Ready: False
Restart Count: 0
Mounts:
/cloudsql from cloudsql (rw)
/etc/ssl/certs from ssl-certs (rw)
/secrets/cloudsql from dev-db-instance-credentials (ro)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-th58c (ro)
liquibase:
Container ID:
Image: eu.gcr.io/xxxxxx/liquibase:v1
Image ID:
Port:
Command:
./liquibase.sh
State: Waiting
Reason: PodInitializing
Ready: False
Restart Count: 0
Environment:
DB_TYPE: postgresql
DB_URL: jdbc:postgresql://localhost/test
DB_PASSWORD: <set to the key 'password' in secret 'db-credentials'> Optional: false
DB_USER: <set to the key 'username' in secret 'db-credentials'> Optional: false
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-th58c (ro)
그리고 그것은 보인다 클라우드 SQL- proxy-init가 실행 중입니다.
2017/04/13 14:40:02 using credential file for authentication; [email protected]
2017/04/13 14:40:02 Listening on 127.0.0.1:5432 for xxxxx:europe-west1:yyyyy
2017/04/13 14:40:02 Ready for new connections
init 컨테이너가 초기화를 계속할 수 있도록 종료해야하기 때문에 문제가 될 수 있습니다. 그렇다면 어떻게 liquibase에서 Google Cloud SQL 인스턴스에 연결할 수 있습니까?
대만족을 – gerasalus
또한 물론 다른 포드에서 프록시를 실행할 수 있지만, 난 당신이에 그 일을하지 않는 이유가 있었다 가정 ... 커플 링을 피하기 위해 호핑 된 첫번째 장소 –