ソフトウェア開発備忘録

ソフトウェアエンジニアの開発備忘録

GKEコンテナからCloudSQLにプロキシ接続する

シークレットを作成する

Google Container Engine から接続する  |  Cloud SQL for MySQL  |  Google Cloud Platform

シークレットを作成

kubectl create secret generic cloudsql-instance-credentials \
                       --from-file=credentials.json=[PROXY_KEY_FILE_PATH]

ユーザーとパスワードを登録

kubectl create secret generic cloudsql-db-credentials --from-literal=username=[USER] --from-literal=password=[PASSWORD]

deployment.yamlを作成しデプロイする

deployment.yamlファイルを記述する
DB_USER, DB_PASSWORD 環境変数を設定

- name: DB_USER
  valueFrom:
    secretKeyRef:
      name: cloudsql-db-credentials
      key: username
- name: DB_PASSWORD
  valueFrom:
    secretKeyRef:
      name: cloudsql-db-credentials
      key: password

CloudSQLインスタンス接続コマンド記載

- image: gcr.io/cloudsql-docker/gce-proxy:1.09
  name: cloudsql-proxy
  command: ["/cloud_sql_proxy", "--dir=/cloudsql",
            "-instances=[INSTANCE_CONNECTION_NAME]=tcp:3306",
            "-credential_file=/secrets/cloudsql/credentials.json"]
  volumeMounts:
    - name: cloudsql-instance-credentials
      mountPath: /secrets/cloudsql
      readOnly: true
    - name: ssl-certs
      mountPath: /etc/ssl/certs
    - name: cloudsql
      mountPath: /cloudsql
volumes:
  - name: cloudsql-instance-credentials
    secret:
      secretName: cloudsql-instance-credentials
  - name: ssl-certs
    hostPath:
      path: /etc/ssl/certs
  - name: cloudsql
    emptyDir:

アプリケーション側でDB_USER, DB_PASSWORDを読み込む用実装する
次回Elixirアプリケーションも記載したdeployment.yamlを作成する