Todos os produtos
Search
Central de documentação

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

Última atualização: Sep 21, 2026

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

Contexto

O ApsaraDB RDS é um service de banco de dados online estável, confiável e escalável da Alibaba Cloud. Construído sobre o sistema de arquivos distribuído da Alibaba Cloud e drives de estado sólido (SSDs) de alto desempenho, o ApsaraDB RDS suporta múltiplos mecanismos de banco de dados, como MySQL, SQL Server e PostgreSQL. Este tópico utiliza uma instância ApsaraDB RDS for MySQL como exemplo. Selecione um mecanismo de banco de dados de acordo com os requisitos do seu negócio. Para mais informações, consulte Database engines.

Pré-requisitos

  • Uma instância ApsaraDB RDS for MySQL foi criada e uma conta de banco de dados foi configurada para a instância. Para mais informações, consulte Create an ApsaraDB RDS for MySQL instance e Create a database and an account.

  • Um ACK Serverless cluster foi criado. Para mais informações, consulte Create an ACK Serverless cluster.

    Nota

    Este tópico usa um ACK Serverless cluster como exemplo. Caso utilize outro tipo de cluster Kubernetes, verifique se um nó virtual está implantado no cluster para conectar ao ECI.

  • A instância ApsaraDB RDS e o cluster Kubernetes conseguem se comunicar entre si.

    Para desempenho e segurança ideais, implante a instância ApsaraDB RDS e o cluster Kubernetes no mesmo Virtual Private Cloud (VPC). Isso permite a comunicação pela rede interna. Caso estejam em VPCs diferentes, configure o acesso pela 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 ApsaraDB RDS estiverem no mesmo 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 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 do VPC ou vSwitch à lista de permissões do ApsaraDB RDS. Isso permite que todas as instâncias ECI no bloco CIDR acessem a instância ApsaraDB RDS. Para mais informações, consulte Configure an IP address whitelist.

    • Grupo de segurança

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

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

Acessar o RDS pela rede pública

Se o cluster Kubernetes e a instância ApsaraDB RDS estiverem em VPCs diferentes, a aplicação deverá 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 expõe sua instância a riscos de segurança. Utilize esta opção com cautela.

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

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

    Ao conectar pela rede pública, configure uma lista de permissões de endereços ip. Para mais informações, consulte Configure an IP address whitelist.

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

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

  2. Solicite e registre o endpoint público do banco de dados. Para mais informações, consulte Apply for or release a public endpoint.

Configurar uma aplicação para conectar ao RDS

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

  1. Faça login no ACK console.

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

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

    Nota

    Um ConfigMap desacopla a configuração do ambiente da imagem do contêiner, simplificando as atualizações de configuração da aplicação.

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

    2. Clique em Create.

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

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

      Parâmetro

      Exemplo

      Descrição

      host

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

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

      port

      3306

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

      database

      test-db

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

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

    Nota

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

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

    2. Clique em Create.

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

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

      Parâmetro

      Exemplo

      Descrição

      username

      test

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

      password

      pwd

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

  5. Crie um pod 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 services de banco de dados nativos. É possível usar qualquer cliente de banco de dados padrão para conectar à instância ApsaraDB RDS. O arquivo yaml a seguir é um exemplo:

      Nota

      Para usar este exemplo, primeiro crie uma tabela chamada username com uma coluna chamada user na instância 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, nome de usuário e senha. A imagem do contêiner inclui um script Python que conecta ao banco de dados e insira 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 insira 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. Faça login no ApsaraDB RDS console.

    2. No painel de navegação à esquerda, clique em Instances. Na barra de navegação superior, selecione a região onde sua 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 de ações.

    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 exibe uma nova linha na coluna user da tabela username.

Perguntas frequentes

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

  • Tipos de rede diferentes

  • VPCs diferentes

  • Falha ou erro na resolução de nome 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 uma instância somente leitura

  • Uso incorreto 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 de acordo com seu ambiente de rede (rede interna ou rede pública). Para mais informações, consulte Troubleshoot ApsaraDB RDS connection failures.