從 Google Kubernetes Engine 連線

本頁面說明如何使用私人 IP 或 Cloud SQL Proxy Docker 映像檔來設定連線,從 Google Kubernetes Engine 中執行的應用程式連線至 Cloud SQL 執行個體。

簡介

如要從 Google Kubernetes Engine 中執行的應用程式存取 Cloud SQL 執行個體,則必須使用私人 IP 位址或 Cloud SQL Proxy Docker 映像檔。如果您的叢集符合需求,則要從 Google Kubernetes Engine 進行連線,私人 IP 是最簡單的方法。

如要使用公開 IP 位址,從 Google Kubernetes Engine 安全連線至 Cloud SQL,則必須使用 Cloud SQL Proxy。

資料庫連線會耗用伺服器與連線應用程式中的資源。請一律使用適合的連線管理做法,以將應用程式的佔用空間降到最低,並減少超過 Cloud SQL 連線限制的可能性。詳情請參閱管理資料庫連線一文。

使用私人 IP 位址連線

使用私人 IP 位址連線時,IP 流量絕對不會暴露於公開網際網路。如要進一步瞭解私人 IP,請參閱私人 IP 一文。

事前準備

如要使用私人 IP 連線至 Cloud SQL,您必須具備下列項目:

  • 虛擬私人雲端原生叢集上有 GKE 1.8 以上版本,須安裝 kubectl 指令列工具並設為與叢集通訊。

    如需開始使用 GKE 的說明,請參閱快速入門

  • GKE 叢集上 pod 中的應用程式容器。

  • 已建立的 PostgreSQL 執行個體。

    如需建立 Cloud SQL 執行個體的說明,請參閱建立執行個體一文。

  • 執行個體上設有 PostgreSQL 使用者帳戶。

    您的應用程式會使用此帳戶連線至資料庫。

  • 設定並指派給 Cloud SQL 執行個體的私人 IP。

連線總覽

下方步驟摘述的是使用私人 IP 位址從 GKE 連線至 Cloud SQL 的一般程序。

  1. 建立一個密鑰,以便向資料庫提供 PostgreSQL 使用者名稱與密碼。

    如要進一步瞭解密鑰,請參閱密鑰一文。

  2. 以下列項目更新您的 pod 設定檔:

    • 提供 Cloud SQL 執行個體的私人 IP 位址做為主機位址,您的應用程式會使用此位址來存取您的資料庫。
    • 提供您先前建立的密鑰,用來讓應用程式登入資料庫。
  3. 使用 Kubernetes 資訊清單檔案展開部署。

使用 Cloud SQL Proxy Docker 映像檔連線

當您使用 Cloud SQL Proxy Docker 映像檔連線時,Cloud SQL Proxy 可透過「補充」容器模式新增至您的 pod,這種 Proxy 容器所在的 pod 與應用程式相同,可以讓應用程式透過 localhost 連線至 Proxy,進而提升安全性與效能。瞭解詳情

如要進一步瞭解 Cloud SQL Proxy,請參閱關於 Cloud SQL Proxy 一文。 如要進一步瞭解如何使用 Pod,請參閱 Kubernetes 說明文件中的 Pod 總覽一文。

事前準備

在您開始這個程序之前,您必須擁有:

  • 執行 1.2 以上版本的 GKE 叢集,須安裝 kubectl 指令列工具並設為與叢集通訊。

    如需開始使用 GKE 的說明,請參閱快速入門

  • GKE 叢集上 pod 中的應用程式容器。

  • 已建立的 PostgreSQL 執行個體。

    如需建立 Cloud SQL 執行個體的說明,請參閱建立執行個體一文。

  • 執行個體上設有 PostgreSQL 使用者帳戶。

    您的應用程式會使用此帳戶連線至資料庫。如需建立使用者帳戶的說明,請參閱建立使用者一文。

  • Cloud SQL Admin API 已啟用。

  • 具有 Cloud SQL 執行個體適當權限的服務帳戶相關聯的金鑰檔案所在位置。

    詳情請參閱建立服務帳戶一文。

  • 您的 Cloud SQL 執行個體連線名稱。

    執行個體連線名稱請見 GCP 主控台的「Cloud SQL Instance details」(Cloud SQL 執行個體詳細資料) 頁面,或使用 gcloud sql instances describe 指令取得。

連線總覽

下方步驟摘述的是使用 Cloud SQL Proxy Docker 容器從 GKE 連線至 Cloud SQL 的一般程序。

  1. 建立兩個密鑰:一個用以提供 PostgreSQL 憑證,一個用以提供 Google 憑證 (即服務帳戶)。

    如要進一步瞭解密鑰,請參閱密鑰一文。

  2. 以下列項目更新您的 pod 設定檔:

    • 提供 127.0.0.1:5432 做為主機位址,您的應用程式會使用此位址來存取您的資料庫。
    • 提供您先前建立的密鑰,用來讓應用程式登入資料庫。
    • 在 Proxy 自己的容器中 (位於同一個 pod),啟動 Proxy。

      以下是 Proxy 容器使用的設定檔範例:

      - name: cloudsql-proxy
        image: gcr.io/cloudsql-docker/gce-proxy:1.11
        command: ["/cloud_sql_proxy",
                  "-instances=<INSTANCE_CONNECTION_NAME>=tcp:5432",
                  "-credential_file=/secrets/cloudsql/credentials.json"]
        securityContext:
          runAsUser: 2  # non-root user
          allowPrivilegeEscalation: false
        volumeMounts:
          - name: cloudsql-instance-credentials
            mountPath: /secrets/cloudsql
            readOnly: true

  3. 使用 Kubernetes 資訊清單檔案展開部署。

如需使用補充資訊模式下的 Cloud SQL Proxy 進行部署的完整範例 (包括程式碼範例),請參閱 GitHub 上的 Kubernetes 部署資訊清單範例檔案。

如需從 Kubernetes 環境連線至 Cloud SQL 的逐步操作說明,請參閱 PostgreSQL 與 Kubernetes 程式碼研究室一文。

需要協助嗎?如需疑難排解 Proxy 的說明,請參閱疑難排解 Cloud SQL Proxy 連線。 或者,請參閱我們的 Cloud SQL 支援頁面

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
PostgreSQL 適用的 Cloud SQL