Todos os produtos
Search
Central de documentação

Elastic Container Instance:Conectar um pod do ECI a uma instância do RDS

Última atualização: Jun 27, 2026

Para conectar sua aplicação conteinerizada a um banco de dados, como uma instância do ApsaraDB RDS for MySQL, configure a lista de permissões da instância do ApsaraDB RDS e forneça as informações de conexão ao criar um pod do ECI. Este tópico descreve como se conectar ao ApsaraDB RDS durante a criação de um pod do ECI em um cluster ACK Serverless.

Contexto

O ApsaraDB RDS é um serviço de banco de dados online estável, confiável e escalável da Alibaba Cloud. Desenvolvido sobre o sistema de arquivos distribuídos da Alibaba Cloud e unidades de estado sólido (SSDs) de alto desempenho, o ApsaraDB RDS suporta diversos mecanismos de banco de dados, incluindo MySQL, SQL Server e PostgreSQL. Este tópico utiliza uma instância do ApsaraDB RDS for MySQL como exemplo. Escolha o mecanismo de banco de dados adequado às necessidades do seu negócio. Para mais informações, consulte Mecanismos de banco de dados.

Pré-requisitos

  • Crie uma instância do ApsaraDB RDS for MySQL e configure uma conta de banco de dados para essa instância. Para mais informações, consulte Criar uma instância do ApsaraDB RDS for MySQL e Criar um banco de dados e uma conta.

  • Crie um cluster ACK Serverless. Para mais informações, consulte Criar um cluster ACK Serverless.

    Nota

    Este tópico usa um cluster ACK Serverless como exemplo. Caso utilize outro tipo de cluster Kubernetes, certifique-se de que um nó virtual esteja implantado no cluster para permitir a conexão com o ECI.

  • A instância do ApsaraDB RDS e o cluster Kubernetes devem ter conectividade entre si.

    Para garantir melhor desempenho e segurança, implante a instância do ApsaraDB RDS e o cluster Kubernetes na mesma VPC. Isso permite a comunicação pela rede interna. Se estiverem em VPCs diferentes, configure o acesso via rede pública.

Configurar a lista de permissões do RDS e obter o endpoint

Acessar o RDS pela rede interna

Se o cluster Kubernetes e a instância do ApsaraDB RDS estiverem na mesma VPC, a aplicação poderá acessar a instância pela rede interna. Configure a lista de permissões do ApsaraDB RDS e obtenha o endpoint interno.

  1. Configure a lista de permissões do ApsaraDB RDS.

    Ao se conectar pela rede interna, adicione um endereço IP ou um grupo de segurança à lista de permissões:

    • Endereço IP

      Adicione o bloco CIDR da VPC ou do vSwitch à lista de permissões do ApsaraDB RDS. Essa ação autoriza todas as instâncias do ECI dentro desse bloco CIDR a acessar a instância do ApsaraDB RDS. Para mais informações, consulte Configurar uma lista de permissões de endereços IP.

    • Grupo de segurança

      Adicione o grupo de segurança das suas instâncias do ECI à lista de permissões do ApsaraDB RDS. Isso permite que todas as instâncias do ECI pertencentes a esse grupo de segurança acessem a instância do ApsaraDB RDS. Para mais informações, consulte Configurar um grupo de segurança.

  2. Na página Database Connection da instância do ApsaraDB RDS, localize e anote o endpoint interno.

Acessar o RDS pela rede pública

Caso o cluster Kubernetes e a instância do ApsaraDB RDS estejam em VPCs distintas, a aplicação precisará se conectar pela rede pública. Configure a lista de permissões do ApsaraDB RDS e solicite um endpoint público.

Importante
  • O uso de um endpoint público pode expor sua instância a riscos de segurança. Utilize essa opção com cautela.

  • Para obter transferência de dados mais rápida e maior segurança, recomendamos migrar sua aplicação para uma instância do ECI na mesma região e rede da instância do ApsaraDB RDS e utilizar o endpoint interno.

  1. Configure a lista de permissões do ApsaraDB RDS.

    Para conexões via rede pública, configure uma lista de permissões de endereços IP. Para mais informações, consulte Configurar uma lista de permissões de endereços IP.

    • Se a instância do ECI utilizar um gateway NAT para acessar a rede pública, adicione o endereço Elastic IP (EIP) do gateway NAT à lista de permissões de endereços IP.

    • Se a instância do ECI utilizar um EIP para acessar a rede pública, adicione o EIP da própria instância do ECI à lista de permissões de endereços IP.

  2. Solicite e anote o endpoint público do banco de dados. Para mais informações, consulte Solicitar ou liberar um endpoint público.

Configurar uma aplicação para conectar ao RDS

Este procedimento demonstra como conectar um cluster ACK Serverless a uma instância do ApsaraDB RDS pela rede interna.

  1. Faça login no console do ACK.

  2. Na página Cluster, localize o cluster desejado e clique em seu nome para abrir a página de detalhes.

  3. Crie um ConfigMap para armazenar as informações de conexão do ApsaraDB RDS.

    Nota

    O ConfigMap desacopla a configuração de ambiente da imagem do contêiner e simplifica as atualizações de configuração da aplicação.

    1. No painel de navegação à esquerda, escolha Configuration > ConfigMaps.

    2. Clique em Create.

    3. Insira os detalhes do ConfigMap e clique em OK.

      Defina o nome como rds-config e adicione os seguintes pares chave-valor:

      Parâmetro

      Exemplo

      Descrição

      host

      rm-2zem97a62s9.mysql.rds.aliyuncs.com

      Endpoint do banco de dados. Disponível na página Database Connection da instância do ApsaraDB RDS.

      port

      3306

      Porta do banco de dados. Disponível na página Database Connection da instância do ApsaraDB RDS.

      database

      test-db

      Nome do banco de dados. Disponível na página Databases da instância do ApsaraDB RDS.

  4. Crie um Secret para armazenar o nome de usuário e a senha do banco de dados.

    Nota

    Utilizar um Secret é uma prática recomendada para gerenciar com segurança informações sensíveis da aplicação, como credenciais de banco de dados.

    1. No painel de navegação à esquerda, escolha Configuration > Secrets.

    2. Clique em Create.

    3. Insira os detalhes do Secret e clique em OK.

      Defina o nome como rds-secret e adicione os seguintes pares chave-valor:

      Parâmetro

      Exemplo

      Descrição

      username

      test

      Nome de usuário do banco de dados. Disponível na página Accounts da instância do ApsaraDB RDS.

      password

      pwd

      Senha do banco de dados. Caso tenha esquecido a senha, redefina-a na página Accounts da instância do ApsaraDB RDS.

  5. Crie um pod do ECI para testar a conexão.

    1. No painel de navegação à esquerda, escolha Workloads > Pods.

    2. Clique em Create from YAML.

    3. Insira a configuração YAML e clique em Create.

      O ApsaraDB RDS é totalmente compatível com serviços nativos de banco de dados. Use qualquer cliente de banco de dados padrão para conectar à instância do ApsaraDB RDS. O arquivo YAML abaixo serve como exemplo:

      Nota

      Para executar este exemplo, crie previamente uma tabela chamada username com uma coluna denominada user na instância do ApsaraDB RDS.

      A configuração YAML a seguir utiliza variáveis de ambiente para fornecer os detalhes de conexão com o banco de dados: endpoint, porta, nome, usuário e senha. A imagem do contêiner inclui um script Python que se conecta ao banco de dados e insere dados.

      apiVersion: v1
      kind: Pod
      metadata:
        labels:
          name: rds-test
        name: rds-test
      spec:
        containers:
        - name: test-rds
          image: registry.cn-hangzhou.aliyuncs.com/eci_open/sqlclient:1.0.1  # A container image that contains a Python script to connect to the database.
          imagePullPolicy: IfNotPresent
          command: ["/bin/bash","-c","python3 /testapp/mysqlclient.py"]
          env:
          - name: MYSQL_HOST 
            valueFrom:
              configMapKeyRef:
                name: rds-config  # The name of the ConfigMap.
                key: host  # The key in the ConfigMap.
          - name: MYSQL_PORT
            valueFrom:
              configMapKeyRef:
                name: rds-config # The name of the ConfigMap.
                key: port # The key in the ConfigMap.
          - name: MYSQL_DB
            valueFrom:
              configMapKeyRef:
                name: rds-config  # The name of the ConfigMap.
                key: database # The key in the ConfigMap.
          - name: MYSQL_USERNAME
            valueFrom:
              secretKeyRef:
                name: rds-secret # The name of the Secret.
                key: username  # The key in the Secret.
          - name: MYSQL_PWD
            valueFrom:
              secretKeyRef:
                name: rds-secret # The name of the Secret.
                key: password # The key in the Secret.
        restartPolicy: Never

      A imagem do exemplo anterior contém um script Python (mysqlclient.py) que insere uma linha na coluna user da tabela username. O script é o seguinte:

      import pymysql
      import os
      import time
      config = {
          'host': str(os.getenv('MYSQL_HOST')),
          'port': int(os.getenv('MYSQL_PORT')),
          'user': str(os.getenv('MYSQL_USERNAME')),
          'password': str(os.getenv('MYSQL_PWD')),
          'database': str(os.getenv('MYSQL_DB')),
      }
      def mysqlClient():
          print("Connecting to the database...")
          db = pymysql.connect(**config)
          try:
              cursor = db.cursor()
              cursor.execute("INSERT INTO username(user) VALUES('Mrs')")
              cursor.close()
              db.commit()
              cursor = db.cursor()
              cursor.execute("SELECT user FROM username")
              result = cursor.fetchall()
              cursor.close()
              if result != None:
                  print(result)
                  time.sleep(99999)
          except Exception as e:
              print('System Error: ', e)
          finally:
              db.close()
      if __name__ == '__main__':
          mysqlClient()
  6. Faça login no banco de dados e verifique o resultado.

    1. Acesse o console do ApsaraDB RDS.

    2. No painel de navegação à esquerda, clique em Instances. Na barra de navegação superior, selecione a região onde a instância está localizada e clique no ID da instância.

    3. No painel de navegação à esquerda, clique em Databases.

    4. Localize o banco de dados desejado e clique em SQL Query na coluna Actions.

    5. Na caixa de diálogo exibida, insira o nome de usuário e a senha do banco de dados e clique em Log In.

    6. Execute um comando SQL para verificar o resultado.

      Execute o comando SELECT * FROM . A saída exibirá uma nova linha na coluna user da tabela username.

Perguntas frequentes

As causas mais comuns para falhas na conexão com o banco de dados incluem:

  • Tipos de rede diferentes

  • VPCs distintas

  • Falha ou erro na resolução de nomes de domínio

  • Regiões diferentes

  • Configuração incorreta da lista de permissões de endereços IP

  • Lista de permissões não configurada para instância somente leitura

  • Uso inadequado de endpoints internos ou públicos

  • Limite de conexões atingido

  • Nome de usuário ou senha incorretos

  • Impossibilidade de resolver o endpoint

Solucione o problema com base no seu ambiente de rede (rede interna ou pública). Para mais informações, consulte Solucionar falhas de conexão do ApsaraDB RDS.