Estabeleça ligação ao Cloud SQL para SQL Server a partir do Google Kubernetes Engine

Esta página mostra como implementar uma app de exemplo no Google Kubernetes Engine (GKE) ligado a uma instância do SQL Server através da Google Cloud consola e de uma aplicação cliente. Normalmente, os recursos criados neste início rápido custam menos de um dólar (USD), assumindo que conclui os passos, incluindo a limpeza, atempadamente.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Ative as APIs Google Cloud necessárias para executar uma app de exemplo do Cloud SQL no GKE.

    Consola

    Clique em Ativar APIs para ativar as APIs necessárias para este início rápido.

    Ative as APIs

    Isto ativa as seguintes APIs:

    • API Compute Engine
    • API Cloud SQL Admin
    • Google Kubernetes Engine API
    • API Artifact Registry
    • API Cloud Build

    gcloud

    Clique no botão seguinte para abrir o Cloud Shell, que oferece acesso à linha de comandos aos seus Google Cloud recursos diretamente a partir do navegador. Pode usar o Cloud Shell para executar os comandos gcloud apresentados ao longo deste início rápido.

    Abra o Cloud Shell

    Execute o comando gcloud services enable da seguinte forma através da Cloud Shell para ativar as APIs necessárias para este início rápido:

    gcloud services enable compute.googleapis.com sqladmin.googleapis.com \
         container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com

    Este comando ativa as seguintes APIs:

    • API Compute Engine
    • API Cloud SQL Admin
    • API GKE
    • API Artifact Registry
    • API Cloud Build

Configure o Cloud SQL

Crie uma instância do Cloud SQL

Crie uma base de dados

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Selecione quickstart-instance.
  3. No menu de navegação SQL, selecione Bases de dados.
  4. Clique em Criar base de dados.
    1. No campo Nome da base de dados da caixa de diálogo Nova base de dados, introduza quickstart-db.
    2. Clique em Criar.

gcloud

Execute o comando gcloud sql databases create para criar uma base de dados.

gcloud sql databases create quickstart-db --instance=quickstart-instance

Crie um cluster do GKE

Consola

  1. Na Google Cloud consola, aceda à página Google Kubernetes Engine.

    Aceda ao Google Kubernetes Engine

  2. Clique em Criar.
  3. Clique em Configurar para o GKE Autopilot.
  4. Para Nome, especifique o nome do cluster como gke-cloud-sql-quickstart.
  5. Clique em Criar.

gcloud

Execute o comando gcloud container clusters create-auto para criar o cluster.

gcloud container clusters create-auto gke-cloud-sql-quickstart \
    --region us-central1

Clone uma app de exemplo do Cloud SQL no editor do Cloud Shell

Com uma instância do Cloud SQL, uma base de dados e um cluster do GKE, pode agora clonar e configurar uma aplicação de exemplo para estabelecer ligação à sua instância do Cloud SQL. Os restantes passos neste início rápido requerem a utilização das ferramentas de linha de comandos gcloud e kubectl. Ambas as ferramentas estão pré-instaladas no Cloud Shell.

Ir

  1. No editor do Cloud Shell, abra o código fonte da app de exemplo.
    Abra o editor do Cloud Shell
  2. Na caixa de diálogo Open in Cloud Shell, clique em Confirmar para transferir o código da app de exemplo e abrir o diretório da app de exemplo no editor do Cloud Shell.

Java

  1. No editor do Cloud Shell, abra o código fonte da app de exemplo.
    Abra o editor do Cloud Shell
  2. Na caixa de diálogo Open in Cloud Shell, clique em Confirmar para transferir o código da app de exemplo e abrir o diretório da app de exemplo no editor do Cloud Shell.

Node.js

  1. No editor do Cloud Shell, abra o código fonte da app de exemplo.
    Abra o editor do Cloud Shell
  2. Na caixa de diálogo Open in Cloud Shell, clique em Confirmar para transferir o código da app de exemplo e abrir o diretório da app de exemplo no editor do Cloud Shell.

Python

  1. No editor do Cloud Shell, abra o código fonte da app de exemplo.
    Abra o editor do Cloud Shell
  2. Na caixa de diálogo Open in Cloud Shell, clique em Confirmar para transferir o código da app de exemplo e abrir o diretório da app de exemplo no editor do Cloud Shell.

Ative o cluster do GKE

Ative o cluster do GKE que acabou de criar como o cluster predefinido a usar para os restantes comandos neste início rápido.

Execute o comando gcloud container clusters get-credentials da seguinte forma para ativar o cluster do GKE.
gcloud container clusters get-credentials gke-cloud-sql-quickstart \
  --region us-central1

Configure uma conta de serviço

Crie e configure uma Google Cloud conta de serviço a ser usada pelo GKE para que tenha a função cliente do Cloud SQL com autorizações para se ligar ao Cloud SQL.
  1. Execute o comando gcloud iam service-accounts create da seguinte forma para criar uma nova conta de serviço:
    gcloud iam service-accounts create gke-quickstart-service-account \
      --display-name="GKE Quickstart Service Account"
  2. Execute o comando gcloud projects add-iam-policy-binding da seguinte forma para adicionar a função cliente do Cloud SQL à Google Cloud conta de serviço que acabou de criar. Substitua YOUR_PROJECT_ID pelo ID do projeto.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/cloudsql.client"
  3. A app de exemplo usa o registo, por isso, execute o comando gcloud projects add-iam-policy-binding da seguinte forma para adicionar a função Log Writer à Google Cloud conta de serviço que acabou de criar. Substitua YOUR_PROJECT_ID pelo ID do projeto.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  4. A conta de serviço tem de conseguir obter imagens do repositório do artifactory. Por isso, execute o comando
    gcloud projects add-iam-policy-binding da seguinte forma para adicionar a função Leitor do Artifact Registry à conta de serviço. Substitua YOUR_PROJECT_ID pelo ID do projeto.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/artifactregistry.reader"
Crie uma conta de serviço do Kubernetes configurada para ter acesso ao Cloud SQL associando-a à Google Cloud conta de serviço através da federação de identidades da carga de trabalho para o GKE.
  1. Crie uma conta de serviço do Kubernetes.
    1. Atualize o ficheiro service-account.yaml no editor do Cloud Shell. Substituir <YOUR-KSA-NAME> por ksa-cloud-sql.
    2. Execute o comando kubectl apply da seguinte forma no Cloud Shell:
      kubectl apply -f service-account.yaml
  2. Execute o comando gcloud iam service-accounts add-iam-policy-binding da seguinte forma para ativar a associação do IAM da Google Cloud conta de serviço e da conta de serviço do Kubernetes. Faça as seguintes substituições:
    • YOUR_PROJECT_ID com o ID do projeto.
    • YOUR_K8S_NAMESPACE com default, que é o espaço de nomes predefinido para clusters criados no GKE.
    • YOUR_KSA_NAME com ksa-cloud-sql.
    gcloud iam service-accounts add-iam-policy-binding \
      --role="roles/iam.workloadIdentityUser" \
      --member="serviceAccount:YOUR_PROJECT_ID.svc.id.goog[YOUR_K8S_NAMESPACE/YOUR_KSA_NAME]" \
      gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
  3. Execute o comando kubectl annotate da seguinte forma para anotar a conta de serviço do Kubernetes com a vinculação de IAM. Faça as seguintes substituições:
    • YOUR_KSA_NAME com ksa-cloud-sql.
    • YOUR_PROJECT_ID com o ID do projeto.
    kubectl annotate serviceaccount \
      YOUR_KSA_NAME  \
      iam.gke.io/gcp-service-account=gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com

Configure segredos

Execute o comando kubectl create secret generic da seguinte forma para criar segredos do Kubernetes para a base de dados, o utilizador e a palavra-passe do utilizador a serem usados pela app de exemplo. Os valores de cada segredo baseiam-se nos valores especificados nos passos anteriores deste início rápido. Substitua DB_PASS pela palavra-passe do sqlserver utilizador root que foi criada no passo Crie uma instância do Cloud SQL.

kubectl create secret generic gke-cloud-sql-secrets \
  --from-literal=database=quickstart-db \
  --from-literal=username=sqlserver \
  --from-literal=password=DB_PASS

Crie a app de exemplo

Ir

  1. Execute o seguinte comando gcloud artifacts repositories create no Cloud Shell para criar um repositório no Artifact Registry denominado gke-cloud-sql-repo na mesma região que o cluster. Substitua YOUR_PROJECT_ID pelo ID do projeto.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Execute o comando gcloud builds submit da seguinte forma no Cloud Shell para criar um contentor Docker e publicá-lo no Artifact Registry. Substitua YOUR_PROJECT_ID pelo ID do projeto.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

Java

  1. Execute o seguinte comando gcloud artifacts repositories create no Cloud Shell para criar um repositório no Artifact Registry denominado gke-cloud-sql-repo na mesma região que o cluster. Substitua YOUR_PROJECT_ID pelo ID do projeto.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Execute o comando mvn da seguinte forma no Cloud Shell para criar um contentor Docker e publicá-lo no Artifact Registry. Substitua YOUR_PROJECT_ID pelo ID do projeto.
    mvn clean package com.google.cloud.tools:jib-maven-plugin:2.8.0:build \
      -Dimage=us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql \
      -DskipTests -Djib.to.credHelper=gcloud

Node.js

  1. Execute o seguinte comando gcloud artifacts repositories create no Cloud Shell para criar um repositório no Artifact Registry denominado gke-cloud-sql-repo na mesma região que o cluster. Substitua YOUR_PROJECT_ID pelo ID do projeto.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Execute o comando gcloud builds submit da seguinte forma no Cloud Shell para criar um contentor Docker e publicá-lo no Artifact Registry. Substitua YOUR_PROJECT_ID pelo ID do projeto.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

Python

  1. Execute o seguinte comando gcloud artifacts repositories create no Cloud Shell para criar um repositório no Artifact Registry denominado gke-cloud-sql-repo na mesma região que o cluster. Substitua YOUR_PROJECT_ID pelo ID do projeto.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Execute o comando gcloud builds submit da seguinte forma no Cloud Shell para criar um contentor Docker e publicá-lo no Artifact Registry. Substitua YOUR_PROJECT_ID pelo ID do projeto.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

Implemente a app de exemplo

Limpar

Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Selecione a instância quickstart-instance para abrir a página Detalhes da instância.
  3. Na barra de ícones na parte superior da página, clique em Eliminar.
  4. Na caixa de diálogo Eliminar instância, escreva quickstart-instance e, de seguida, clique em Eliminar para eliminar a instância.
  5. Na Google Cloud consola, aceda à página Google Kubernetes Engine.

    Aceda ao Google Kubernetes Engine

  6. Clique na caixa de verificação junto ao nome do serviço gke-cloud-sql-quickstart.
  7. Clique no botão Eliminar na parte superior da página do Google Kubernetes Engine.

Passos de limpeza opcionais

Se não estiver a usar a Google Cloud conta de serviço que criou para este início rápido, pode removê-la.

  1. Na Google Cloud consola, aceda à página IAM.

    Aceda ao IAM

  2. Selecione a caixa de verificação da conta do IAM com o nome gke-quickstart-service-account.
  3. Clique em Remover e confirme a remoção.

Se não estiver a usar as APIs que foram ativadas como parte deste início rápido, pode desativá-las.

  • APIs ativadas neste guia de início rápido:
    • API Compute Engine
    • API Cloud SQL Admin
    • Google Kubernetes Engine API
    • API Artifact Registry
    • API Cloud Build
  1. Na Google Cloud consola, aceda à página APIs.

    Aceder às APIs

  2. Selecione qualquer API que queira desativar e, de seguida, clique no botão Desativar API.

O que se segue?

Com base nas suas necessidades, pode saber mais sobre como criar instâncias do Cloud SQL.

Também pode saber como criar utilizadores do SQL Server e bases de dados para a sua instância do Cloud SQL.

Consulte também as informações de preços do Cloud SQL.

Saiba mais sobre:

Além disso, pode saber como estabelecer ligação a uma instância do Cloud SQL a partir de outras aplicações do Google Cloud: