Conectar-se ao Cloud SQL para MySQL pelo Google Kubernetes Engine

Nesta página, mostramos como implantar um aplicativo de amostra no Google Kubernetes Engine (GKE) conectado a uma instância do MySQL usando o Console do Google Cloud e um aplicativo cliente. Os recursos criados neste guia de início rápido normalmente custam menos de um dólar, supondo que você conclua as etapas, incluindo a limpeza, em tempo hábil.

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.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Ative as APIs do Google Cloud necessárias para executar um app de amostra do Cloud SQL no GKE.

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

    Ative as APIs

    Isso permite as seguintes APIs:

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

    Clique no botão a seguir para abrir o Cloud Shell, que fornece acesso de linha de comando aos seus recursos Google Cloud diretamente no navegador. O Cloud Shell pode ser usado para executar os comandos gcloud apresentados neste guia de início rápido.

    Abra o Cloud Shell

    Execute o comando gcloud services enable da seguinte maneira usando o Cloud Shell para ativar as APIs necessárias para este guia de início rápido:

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

    Esse comando ativa as seguintes APIs:

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

Configurar o Cloud SQL

crie uma instância do Cloud SQL

IP público

Criar uma instância com um endereço IP público

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Clique em Criar instância.
  3. Clique em MySQL.
  4. Insira quickstart-instance para o ID da instância.
  5. Digite a senha do usuário raiz. Salve essa senha para uso futuro.
  6. Clique na opção Zona única em Escolher disponibilidade por região e zona.
  7. Clique e expanda a seção Mostrar configurações.
  8. No menu suspenso Tipo de máquina, selecione Leve.
  9. Clique em Criar instância e aguarde até que a instância seja inicializada.

Criar uma instância com um endereço IP público

Antes de executar o comando gcloud sql instances create da seguinte maneira, substitua DB_ROOT_PASSWORD pela senha do usuário do banco de dados.

Se quiser, modifique os valores dos seguintes parâmetros:

  • --database_version: o tipo e a versão do mecanismo de banco de dados. Se não for especificado, a API padrão será usada. Consulte a documentação das versões de banco de dados do gcloud para ver as versões atuais disponíveis.
  • --cpu: o número de núcleos desejados na máquina.
  • --memory: valor de número inteiro que indica a quantidade de memória desejada na máquina. Uma unidade de tamanho precisa ser fornecida (por exemplo, 3.072 MB ou 9 GB). Se nenhuma unidade for especificada, é considerado o GB.
  • --region: local regional da instância (por exemplo, asia-east1, us-east1). Se não houver especificação, o padrão us-central é usado. Veja a lista completa de regiões.

Execute o comando gcloud sql instances create para criar uma instância do Cloud SQL.

gcloud sql instances create quickstart-instance \
--database-version=MYSQL_8_0 \
--cpu=1 \
--memory=4GB \
--region=us-central1 \
--root-password=DB_ROOT_PASSWORD

Criar uma instância com SSL e endereço IP particular ativados

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Clique em Criar instância.
  3. Clique em MySQL.
  4. Insira quickstart-instance para o ID da instância.
  5. Digite a senha do usuário raiz. Salve essa senha para uso futuro.
  6. Clique na opção Zona única em Escolher disponibilidade por região e zona.
  7. Clique e expanda Mostrar opções de configuração.
  8. Em Tipo de máquina, selecione Leve.
  9. Em Conexões, selecione IP particular.
  10. Selecione padrão no menu suspenso Rede.
  11. Se a caixa de diálogo Conexão de acesso a serviços particulares necessária for exibida, clique no botão Configurar conexão.
    • Na caixa de diálogo Ativar API Service Networking, clique no botão Ativar API.
    • Na caixa de diálogo Alocar um intervalo de IP, selecione Usar um intervalo de IP alocado automaticamente e clique em Continuar.
    • Na caixa de diálogo Criar uma conexão, clique em Criar conexão.
  12. Desmarque a caixa de seleção IP público para criar uma instância apenas com um IP privado.
  13. Clique em Criar instância e aguarde a inicialização da instância.
  14. Clique em Conexões.
  15. Na seção Segurança, selecione Permitir apenas conexões SSL para ativar conexões SSL.
  16. Na caixa de diálogo Ativar SSL, clique em Ativar e reiniciar e aguarde a reinicialização da instância.

Criar uma instância com SSL e endereço IP particular ativados

Criar uma instância com um endereço IP particular requer apenas a configuração do acesso a serviços particulares para permitir conexões de outros Google Cloud serviços, como o GKE.

  1. Execute o comando gcloud compute addresses create para alocar um intervalo de IP para uma conexão de acesso a serviços particulares:
  2. gcloud compute addresses create google-managed-services-default \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --description="peering range for Google" \
    --network=default
  3. Execute o comando gcloud services vpc-peerings connect para criar a conexão de acesso a serviços particulares:
  4. gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=google-managed-services-default \
    --network=default
  5. Antes de executar o comando gcloud sql instances create para criar uma instância da seguinte maneira, substitua DB_ROOT_PASSWORD pela senha do usuário do banco de dados.

  6. Se quiser, modifique os valores dos seguintes parâmetros:

    • --database_version: o tipo e a versão do mecanismo de banco de dados. Se não for especificado, a API padrão será usada. Consulte as versões do banco de dados do gcloud para ver uma lista das versões disponíveis no momento.
    • --cpu: o número de núcleos na máquina;
    • --memory: um número inteiro que indica quanta memória incluir na máquina. Uma unidade de tamanho pode ser fornecida (por exemplo, 3.072 MB ou 9 GB). Se nenhuma unidade for especificada, serão considerados GB.
    • --region: local regional da instância (por exemplo, asia-east1, us-east1). Se não for especificado, o padrão us-central1 será utilizado. Veja a lista completa de regiões.

    Execute o comando gcloud sql instances create para criar uma instância do Cloud SQL com um endereço IP particular.

     gcloud beta sql instances create quickstart-instance \
    --database-version=MYSQL_8_0 \
    --cpu=1 \
    --memory=4GB \
    --region=us-central1 \
    --root-password=DB_ROOT_PASSWORD \
    --no-assign-ip \
    --network=default
  7. Execute o comando gcloud sql instances patch para permitir apenas conexões SSL para a instância.

  8. gcloud sql instances patch quickstart-instance --require-ssl

Crie um banco de dados

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Selecione quickstart-instance.
  3. No menu de navegação SQL, selecione Bancos de dados.
  4. Clique em Criar banco de dados.
    1. No campo Nome do banco de dados da caixa de diálogo Criar um banco de dados, insira quickstart-db. Deixe os valores do conjunto de caracteres e da ordenação.
    2. Clique em Criar.

Execute o comando gcloud sql databases create para criar um banco de dados.

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

Criar um usuário

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Selecione Usuários no menu de navegação do SQL.
  4. Clique em Adicionar conta de usuário.
    • Na página Adicionar uma conta de usuário à instância instance_name, adicione as seguintes informações:
      • Nome de usuário: defina como quickstart-user;
      • Senha: especifique uma senha para o usuário do banco de dados; Anote-a para usá-la em uma etapa posterior deste guia de início rápido.
      • Na seção Nome do host, o padrão é Permitir qualquer host, o que significa que o usuário pode se conectar de qualquer endereço IP.

        Opcionalmente, selecione Restringir host por endereço IP ou intervalo de endereços e insira um endereço IP ou intervalo de endereços na seção Host. Assim, o usuário só poderá se conectar pelo endereço IP especificado.

  5. Clique em Adicionar.

Antes de executar o comando da seguinte maneira, substitua DB_PASS por uma senha para o usuário do banco de dados. Anote-a para usá-la em uma etapa posterior deste guia de início rápido.

Execute o comando gcloud sql users create para criar o usuário.

gcloud sql users create quickstart-user \
--instance=quickstart-instance \
--password=DB_PASS

Os limites de tamanho de nome de usuário são os mesmos do Cloud SQL e do MySQL no local. O limite é de 32 caracteres no MySQL 8.0 e posteriores e 16 caracteres nas versões anteriores.

Criar um cluster do GKE

  1. No Console do Google Cloud, acesse a página do Google Kubernetes Engine.

    Acessar o Google Kubernetes Engine

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

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

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

Clonar um aplicativo de amostra do Cloud SQL no editor do Cloud Shell

Com uma instância do Cloud SQL, um banco de dados e um cluster do GKE, é possível clonar e configurar um aplicativo de amostra para se conectar à instância do Cloud SQL. As etapas restantes neste guia de início rápido exigem o uso das ferramentas de linha de comando gcloud e kubectl. As duas ferramentas vêm pré-instaladas no Cloud Shell.

  1. No editor do Cloud Shell, abra o código-fonte do app de amostra.

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

Ativar o cluster do GKE

Ative o cluster do GKE que você acabou de criar como o cluster padrão para ser usado nos comandos restantes neste guia de início rápido.

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

Configurar uma conta de serviço

Crie e configure uma Google Cloud conta de serviço para ser usada pelo GKE, de modo que ela tenha o papel Cliente do Cloud SQL com permissões para se conectar ao Cloud SQL.
  1. Execute o comando gcloud iam service-accounts create da seguinte maneira 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 maneira para adicionar o papel Cliente do Cloud SQL à conta de serviço Google Cloud que você 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. O app de exemplo usa a geração de registros. Portanto, execute o comando gcloud projects add-iam-policy-binding conforme mostrado a seguir para adicionar o papel de Gravador de registros à conta de serviço Google Cloud que você 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 precisa ser capaz de extrair imagens do repositório de artefatos. Portanto, execute o comando
    gcloud projects add-iam-policy-binding conforme a seguir para adicionar o papel de 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 vinculando-a à conta de serviço Google Cloud usando a Federação de identidade da carga de trabalho para GKE.
  1. Crie uma conta de serviço do Kubernetes:
    1. Atualize o arquivo service-account.yaml no editor do Cloud Shell. Substitua <YOUR-KSA-NAME> por ksa-cloud-sql.
    2. Execute o comando kubectl apply da seguinte maneira no Cloud Shell:
      kubectl apply -f service-account.yaml
  2. Execute o comando gcloud iam service-accounts add-iam-policy-binding da seguinte maneira para ativar a vinculação do IAM da conta de serviço Google Cloud e da conta de serviço do Kubernetes. Faça as seguintes substituições:
    • YOUR_PROJECT_ID pelo ID do projeto.
    • YOUR_K8S_NAMESPACE por default, que é o namespace padrão 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 maneira para anotar a conta de serviço do Kubernetes com vinculação do IAM. Faça as seguintes substituições:
    • YOUR_KSA_NAME com ksa-cloud-sql.
    • YOUR_PROJECT_ID pelo 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

Configurar secrets

Execute o comando kubectl create secret generic da seguinte maneira para criar secrets do Kubernetes para o banco de dados, o usuário e a senha do usuário serem usados pelo app de amostra. Os valores de cada secret são baseados nos valores especificados nas etapas anteriores deste guia de início rápido. Substitua DB_PASS pela senha do quickstart-user que você criou na etapa anterior do guia de início rápido Criar um usuário.

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

Criar o app de amostra

  1. Execute o seguinte comando gcloud artifacts repositories create no Cloud Shell para criar um repositório no Artifact Registry chamado gke-cloud-sql-repo na mesma região do seu 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 maneira no Cloud Shell para criar um contêiner do 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 .
  1. Execute o seguinte comando gcloud artifacts repositories create no Cloud Shell para criar um repositório no Artifact Registry chamado gke-cloud-sql-repo na mesma região do seu 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 maneira no Cloud Shell para criar um contêiner do 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
  1. Execute o seguinte comando gcloud artifacts repositories create no Cloud Shell para criar um repositório no Artifact Registry chamado gke-cloud-sql-repo na mesma região do seu 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 maneira no Cloud Shell para criar um contêiner do 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 .
  1. Execute o seguinte comando gcloud artifacts repositories create no Cloud Shell para criar um repositório no Artifact Registry chamado gke-cloud-sql-repo na mesma região do seu 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 maneira no Cloud Shell para criar um contêiner do 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 .

Implantar o aplicativo de exemplo

IP público

Com a configuração do aplicativo de amostra pronta, é possível implantar o aplicativo de amostra.

O aplicativo de amostra implantado se conectará à instância do Cloud SQL usando o proxy do Cloud SQL em execução em um padrão de arquivo secundário do Kubernetes. Esse padrão é realizado com a implantação de uma carga de trabalho com um contêiner extra que compartilha o mesmo pod do Kubernetes que o contêiner do aplicativo de amostra.

  1. Para saber o nome da conexão da instância do Cloud SQL, execute o comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Atualize o arquivo deployment.yaml no editor do Cloud Shell. Faça as seguintes substituições:
    • <YOUR_KSA_NAME> com ksa-cloud-sql.
    • <LOCATION> com us-central1.
    • <YOUR_PROJECT_ID> pelo ID do projeto.
    • <YOUR-DB-SECRET> com gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> pelo nome da conexão da instância do Cloud SQL recuperada do comando gcloud na etapa anterior. O formato é project_id:region:instance_name. O nome da conexão da instância também está visível na página Visão geral da instância do Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Go Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Go Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Go Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Execute o comando kubectl apply da seguinte maneira no Cloud Shell para implantar o aplicativo de amostra:
    kubectl apply -f deployment.yaml
  4. Execute o comando kubectl apply da seguinte maneira para adicionar um balanceador de carga na frente da implantação, para que você possa acessá-lo na Internet:
    kubectl apply -f service.yaml
  5. Execute o comando kubectl get da seguinte maneira para ver os detalhes do serviço:
    kubectl get services
  6. Copie o endereço IP externo assim que ele ficar disponível nos detalhes do serviço, o que pode levar alguns minutos.
  7. Veja o aplicativo de amostra implantado. Abra uma janela do navegador e acesse o endereço IP externo do serviço.

    Ver o app de amostra implantado

O aplicativo de amostra implantado se conectará à instância do Cloud SQL usando o conector Java do Cloud SQL.

  1. Para saber o nome da conexão da instância do Cloud SQL, execute o comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Atualize o arquivo deployment.yaml no editor do Cloud Shell. Faça as seguintes substituições:
    • <YOUR_KSA_NAME> com ksa-cloud-sql.
    • <LOCATION> com us-central1.
    • <YOUR_PROJECT_ID> pelo ID do projeto.
    • <YOUR-DB-SECRET> com gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> pelo nome da conexão da instância do Cloud SQL recuperada do comando gcloud na etapa anterior. O formato é project_id:region:instance_name. O nome da conexão da instância também está visível na página Visão geral da instância do Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          # For more information about using Kubernetes service accounts see: 
          # https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts
          serviceAccountName: <YOUR-KSA-NAME> # TODO(developer): replace this value.
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_CONNECTION_NAME
              value: <INSTANCE_CONNECTION_NAME>
            - name: DB_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
    
  3. Execute o comando kubectl apply da seguinte maneira no Cloud Shell para implantar o aplicativo de amostra:
    kubectl apply -f deployment.yaml
  4. Execute o comando kubectl apply da seguinte maneira para adicionar um balanceador de carga na frente da implantação, para que você possa acessá-lo na Internet:
    kubectl apply -f service.yaml
  5. Execute o comando kubectl get da seguinte maneira para ver os detalhes do serviço:
    kubectl get services
  6. Copie o endereço IP externo assim que ele ficar disponível nos detalhes do serviço, o que pode levar alguns minutos.
  7. Veja o aplicativo de amostra implantado. Abra uma janela do navegador e acesse o endereço IP externo do serviço.

    Ver o app de amostra implantado

O aplicativo de amostra implantado se conectará à instância do Cloud SQL usando o proxy do Cloud SQL em execução em um padrão de arquivo secundário do Kubernetes. Esse padrão é realizado com a implantação de uma carga de trabalho com um contêiner extra que compartilha o mesmo pod do Kubernetes que o contêiner do aplicativo de amostra.

  1. Para saber o nome da conexão da instância do Cloud SQL, execute o comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Atualize o arquivo deployment.yaml no editor do Cloud Shell. Faça as seguintes substituições:
    • <YOUR_KSA_NAME> com ksa-cloud-sql.
    • <LOCATION> com us-central1.
    • <YOUR_PROJECT_ID> pelo ID do projeto.
    • <YOUR-DB-SECRET> com gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> pelo nome da conexão da instância do Cloud SQL recuperada do comando gcloud na etapa anterior. O formato é project_id:region:instance_name. O nome da conexão da instância também está visível na página Visão geral da instância do Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Execute o comando kubectl apply da seguinte maneira no Cloud Shell para implantar o aplicativo de amostra:
    kubectl apply -f deployment.yaml
  4. Execute o comando kubectl apply da seguinte maneira para adicionar um balanceador de carga na frente da implantação, para que você possa acessá-lo na Internet:
    kubectl apply -f service.yaml
  5. Execute o comando kubectl get da seguinte maneira para ver os detalhes do serviço:
    kubectl get services
  6. Copie o endereço IP externo assim que ele ficar disponível nos detalhes do serviço, o que pode levar alguns minutos.
  7. Veja o aplicativo de amostra implantado. Abra uma janela do navegador e acesse o endereço IP externo do serviço.

    Ver o app de amostra implantado

cloud-sql/mysql/mysql/deployment.yaml

O aplicativo de amostra implantado se conectará à instância do Cloud SQL usando o proxy do Cloud SQL em execução em um padrão de arquivo secundário do Kubernetes. Esse padrão é realizado com a implantação de uma carga de trabalho com um contêiner extra que compartilha o mesmo pod do Kubernetes que o contêiner do aplicativo de amostra.

  1. Para saber o nome da conexão da instância do Cloud SQL, execute o comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Atualize o arquivo deployment.yaml no editor do Cloud Shell. Faça as seguintes substituições:
    • <YOUR_KSA_NAME> com ksa-cloud-sql.
    • <LOCATION> com us-central1.
    • <YOUR_PROJECT_ID> pelo ID do projeto.
    • <YOUR-DB-SECRET> com gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> pelo nome da conexão da instância do Cloud SQL recuperada do comando gcloud na etapa anterior. O formato é project_id:region:instance_name. O nome da conexão da instância também está visível na página Visão geral da instância do Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Python Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Python Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Python Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Execute o comando kubectl apply da seguinte maneira no Cloud Shell para implantar o aplicativo de amostra:
    kubectl apply -f deployment.yaml
  4. Execute o comando kubectl apply da seguinte maneira para adicionar um balanceador de carga na frente da implantação, para que você possa acessá-lo na Internet:
    kubectl apply -f service.yaml
  5. Execute o comando kubectl get da seguinte maneira para ver os detalhes do serviço:
    kubectl get services
  6. Copie o endereço IP externo assim que ele ficar disponível nos detalhes do serviço, o que pode levar alguns minutos.
  7. Veja o aplicativo de amostra implantado. Abra uma janela do navegador e acesse o endereço IP externo do serviço.

    Ver o app de amostra implantado

Com a configuração do aplicativo de amostra pronta, é possível implantar o aplicativo de amostra.

O aplicativo de amostra implantado se conectará à instância do Cloud SQL usando o proxy do Cloud SQL em execução em um padrão de arquivo secundário do Kubernetes. Esse padrão é realizado com a implantação de uma carga de trabalho com um contêiner extra que compartilha o mesmo pod do Kubernetes que o contêiner do aplicativo de amostra.

  1. Para saber o nome da conexão da instância do Cloud SQL, execute o comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Atualize o arquivo deployment.yaml no editor do Cloud Shell. Faça as seguintes substituições e edições:
    • Substitua <YOUR_KSA_NAME> por ksa-cloud-sql.
    • Substitua <LOCATION> por us-central1.
    • Substitua <YOUR_PROJECT_ID> pelo ID do projeto.
    • Substitua <YOUR-DB-SECRET> por gke-cloud-sql-secrets.
    • Substitua <INSTANCE_CONNECTION_NAME> pelo nome da conexão da instância do Cloud SQL recuperada do comando gcloud na etapa anterior. O formato é project_id:region:instance_name. O nome da conexão da instância também está visível na página Visão geral da instância do Cloud SQL.
    • Ative o proxy do Cloud SQL Auth para se conectar à instância do Cloud SQL usando o endereço IP particular. Remova a marca de comentário da sinalização "-ip_address_types=PRIVATE" removendo o símbolo de comentário # e o espaço em branco à direita. A sinalização sem comentários ficará assim:
      - "-ip_address_types=PRIVATE"
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Go Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Go Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Go Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Execute o comando kubectl apply da seguinte maneira no Cloud Shell para implantar o aplicativo de amostra:
    kubectl apply -f deployment.yaml
  4. Execute o comando kubectl apply da seguinte maneira para adicionar um balanceador de carga na frente da implantação, para que você possa acessá-lo na Internet:
    kubectl apply -f service.yaml
  5. Execute o comando kubectl get da seguinte maneira para ver os detalhes do serviço:
    kubectl get services
  6. Copie o endereço IP externo assim que ele ficar disponível nos detalhes do serviço, o que pode levar alguns minutos.
  7. Veja o aplicativo de amostra implantado. Abra uma janela do navegador e acesse o endereço IP externo do serviço.

    Ver o app de amostra implantado

O aplicativo de amostra implantado se conectará à instância do Cloud SQL usando o conector Java do Cloud SQL.

  1. Para saber o nome da conexão da instância do Cloud SQL, execute o comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Atualize o arquivo deployment.yaml no editor do Cloud Shell. Faça as seguintes substituições:
    • <YOUR_KSA_NAME> com ksa-cloud-sql.
    • <LOCATION> com us-central1.
    • <YOUR_PROJECT_ID> pelo ID do projeto.
    • <YOUR-DB-SECRET> com gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> pelo nome da conexão da instância do Cloud SQL recuperada do comando gcloud na etapa anterior. O formato é project_id:region:instance_name. O nome da conexão da instância também está visível na página Visão geral da instância do Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          # For more information about using Kubernetes service accounts see: 
          # https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts
          serviceAccountName: <YOUR-KSA-NAME> # TODO(developer): replace this value.
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_CONNECTION_NAME
              value: <INSTANCE_CONNECTION_NAME>
            - name: DB_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
    
  3. Execute o comando kubectl apply da seguinte maneira no Cloud Shell para implantar o aplicativo de amostra:
    kubectl apply -f deployment.yaml
  4. Execute o comando kubectl apply da seguinte maneira para adicionar um balanceador de carga na frente da implantação, para que você possa acessá-lo na Internet:
    kubectl apply -f service.yaml
  5. Execute o comando kubectl get da seguinte maneira para ver os detalhes do serviço:
    kubectl get services
  6. Copie o endereço IP externo assim que ele ficar disponível nos detalhes do serviço, o que pode levar alguns minutos.
  7. Veja o aplicativo de amostra implantado. Abra uma janela do navegador e acesse o endereço IP externo do serviço.

    Ver o app de amostra implantado

O aplicativo de amostra implantado se conectará à instância do Cloud SQL usando o proxy do Cloud SQL em execução em um padrão de arquivo secundário do Kubernetes. Esse padrão é realizado com a implantação de uma carga de trabalho com um contêiner extra que compartilha o mesmo pod do Kubernetes que o contêiner do aplicativo de amostra.

  1. Para saber o nome da conexão da instância do Cloud SQL, execute o comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Atualize o arquivo deployment.yaml no editor do Cloud Shell. Faça as seguintes substituições e edições:
    • Substitua <YOUR_KSA_NAME> por ksa-cloud-sql.
    • Substitua <LOCATION> por us-central1.
    • Substitua <YOUR_PROJECT_ID> pelo ID do projeto.
    • Substitua <YOUR-DB-SECRET> por gke-cloud-sql-secrets.
    • Substitua <INSTANCE_CONNECTION_NAME> pelo nome da conexão da instância do Cloud SQL recuperada do comando gcloud na etapa anterior. O formato é project_id:region:instance_name. O nome da conexão da instância também está visível na página Visão geral da instância do Cloud SQL.
    • Ative o proxy do Cloud SQL Auth para se conectar à instância do Cloud SQL usando o endereço IP particular. Remova a marca de comentário da sinalização "-ip_address_types=PRIVATE" removendo o símbolo de comentário # e o espaço em branco à direita. A sinalização sem comentários ficará assim:
      - "-ip_address_types=PRIVATE"
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Execute o comando kubectl apply da seguinte maneira no Cloud Shell para implantar o aplicativo de amostra:
    kubectl apply -f deployment.yaml
  4. Execute o comando kubectl apply da seguinte maneira para adicionar um balanceador de carga na frente da implantação, para que você possa acessá-lo na Internet:
    kubectl apply -f service.yaml
  5. Execute o comando kubectl get da seguinte maneira para ver os detalhes do serviço:
    kubectl get services
  6. Copie o endereço IP externo assim que ele ficar disponível nos detalhes do serviço, o que pode levar alguns minutos.
  7. Veja o aplicativo de amostra implantado. Abra uma janela do navegador e acesse o endereço IP externo do serviço.

    Ver o app de amostra implantado

cloud-sql/mysql/mysql/deployment.yaml

O aplicativo de amostra implantado se conectará à instância do Cloud SQL usando o proxy do Cloud SQL em execução em um padrão de arquivo secundário do Kubernetes. Esse padrão é realizado com a implantação de uma carga de trabalho com um contêiner extra que compartilha o mesmo pod do Kubernetes que o contêiner do aplicativo de amostra.

  1. Para saber o nome da conexão da instância do Cloud SQL, execute o comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Atualize o arquivo deployment.yaml no editor do Cloud Shell. Faça as seguintes substituições e edições:
    • Substitua <YOUR_KSA_NAME> por ksa-cloud-sql.
    • Substitua <LOCATION> por us-central1.
    • Substitua <YOUR_PROJECT_ID> pelo ID do projeto.
    • Substitua <YOUR-DB-SECRET> por gke-cloud-sql-secrets.
    • Substitua <INSTANCE_CONNECTION_NAME> pelo nome da conexão da instância do Cloud SQL recuperada do comando gcloud na etapa anterior. O formato é project_id:region:instance_name. O nome da conexão da instância também está visível na página Visão geral da instância do Cloud SQL.
    • Ative o proxy do Cloud SQL Auth para se conectar à instância do Cloud SQL usando o endereço IP particular. Remova a marca de comentário da sinalização "-ip_address_types=PRIVATE" removendo o símbolo de comentário # e o espaço em branco à direita. A sinalização sem comentários ficará assim:
      - "-ip_address_types=PRIVATE"
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Python Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Python Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Python Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Execute o comando kubectl apply da seguinte maneira no Cloud Shell para implantar o aplicativo de amostra:
    kubectl apply -f deployment.yaml
  4. Execute o comando kubectl apply da seguinte maneira para adicionar um balanceador de carga na frente da implantação, para que você possa acessá-lo na Internet:
    kubectl apply -f service.yaml
  5. Execute o comando kubectl get da seguinte maneira para ver os detalhes do serviço:
    kubectl get services
  6. Copie o endereço IP externo assim que ele ficar disponível nos detalhes do serviço, o que pode levar alguns minutos.
  7. Veja o aplicativo de amostra implantado. Abra uma janela do navegador e acesse o endereço IP externo do serviço.

    Ver o app de amostra implantado

Limpar

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse 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 Excluir.
  4. Na caixa de diálogo Excluir instância, digite quickstart-instance e clique em Excluir para excluir a instância.
  5. No Console do Google Cloud, acesse a página do Google Kubernetes Engine.

    Acessar o Google Kubernetes Engine

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

Etapas de limpeza opcionais

Se você não estiver usando a conta de serviço Google Cloud criada para este guia de início rápido, poderá removê-la.

  1. No console do Google Cloud, abra a página IAM.

    Acessar IAM

  2. Marque a caixa de seleção da conta do IAM chamada gke-quickstart-service-account.
  3. Clique em Remover e confirme a remoção.

Se você não estiver usando as APIs que foram ativadas como parte deste guia de início rápido, é possível desativá-las.

  • APIs que foram ativadas neste guia de início rápido:
    • API Compute Engine
    • API Cloud SQL Admin
    • API Google Kubernetes Engine
    • API Artifact Registry
    • API Cloud Build
  1. No Console do Google Cloud, acesse a página APIs.

    Acesse APIs

  2. Selecione qualquer API que você quer desativar e clique no botão Desativar API.

A seguir

Com base nas suas necessidades, é possível saber mais sobre como criar instâncias do Cloud SQL.

Também é possível aprender a criar usuários do MySQL e bancos de dados para sua instância do Cloud SQL.

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

Saiba mais sobre estas situações:

Além disso, é possível aprender a se conectar a uma instância do Cloud SQL usando outros aplicativos do Google Cloud, como: