全部产品
Search
文档中心

Elastic Container Instance:Konfigurasikan instance kontainer elastis untuk menghubungkan ke instance ApsaraDB RDS

更新时间:Jul 06, 2025

Untuk menghubungkan aplikasi berbasis kontainer ke instance ApsaraDB RDS, Anda harus menambahkan titik akhir aplikasi tersebut ke daftar putih instance ApsaraDB RDS dan menentukan informasi koneksi database saat membuat pod berbasis Elastic Container Instance. Topik ini menjelaskan cara menghubungkan pod ke instance ApsaraDB RDS for MySQL dalam Cluster ACK Serverless dari Container Service for Kubernetes (ACK).

Informasi latar belakang

ApsaraDB RDS adalah layanan database online yang stabil, andal, dan skalabel. Layanan ini menggunakan Sistem File Terdistribusi Apsara dan SSD berperforma tinggi dari Alibaba Cloud untuk mendukung mesin database seperti MySQL, SQL Server, dan PostgreSQL. Dalam topik ini, digunakan instance ApsaraDB RDS for MySQL sebagai contoh untuk menjelaskan cara menghubungkan instance kontainer elastis ke instance ApsaraDB RDS. Anda dapat memilih mesin database sesuai dengan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat bagian "Mesin database" dari topik Memulai.

Prasyarat

  • Instance ApsaraDB RDS for MySQL telah dibuat, dan akun pengguna telah dikonfigurasi untuk instance tersebut. Untuk informasi lebih lanjut, lihat Buat instance ApsaraDB RDS for MySQL dan Buat database dan akun untuk instance ApsaraDB RDS for MySQL.

  • Sebuah Cluster ACK Serverless telah dibuat. Untuk informasi lebih lanjut, lihat Buat Cluster ACK Serverless.

    Catatan

    Dalam contoh ini, digunakan Cluster ACK Serverless. Jika Anda menggunakan kluster Kubernetes tipe lain, pastikan bahwa node virtual diterapkan dalam kluster untuk terhubung ke Elastic Container Instance.

  • Pastikan bahwa instance ApsaraDB RDS dan kluster Kubernetes dapat saling berkomunikasi.

    Kami merekomendasikan agar Anda menerapkan instance ApsaraDB RDS dan kluster Kubernetes di VPC yang sama. Dengan cara ini, instance ApsaraDB RDS dan aplikasi dalam kluster akan saling terhubung melalui VPC. Jika Anda menerapkan instance dan kluster di VPC yang berbeda, Anda harus mengaktifkan konektivitas Internet antara instance dan aplikasi dalam kluster.

Konfigurasikan daftar putih untuk instance ApsaraDB RDS dan peroleh titik akhir database.

Akses instance ApsaraDB RDS melalui VPC

Jika instance ApsaraDB RDS dan kluster Kubernetes diterapkan di VPC yang sama, aplikasi dalam kluster dapat mengakses instance melalui VPC. Anda harus mengonfigurasi daftar putih untuk instance ApsaraDB RDS dan memperoleh titik akhir internal database.

  1. Konfigurasikan daftar putih untuk instance ApsaraDB RDS.

    Saat aplikasi dalam kluster Kubernetes mengakses instance ApsaraDB RDS melalui jaringan internal, Anda dapat menambahkan alamat IP atau grup keamanan ke daftar putih:

  2. Peroleh titik akhir internal database dari halaman Database Connection instance ApsaraDB RDS.

Akses instance ApsaraDB RDS melalui Internet

Jika instance ApsaraDB RDS dan cluster ACK Serverless diterapkan di VPC yang berbeda, aplikasi dalam kluster harus menggunakan Internet untuk mengakses instance. Anda harus mengonfigurasi daftar putih untuk instance ApsaraDB RDS dan memperoleh titik akhir publik database. Prosedur:

Penting
  • Jika Anda menggunakan titik akhir publik untuk mengakses instance ApsaraDB RDS, keamanan instance tersebut terganggu. Lanjutkan dengan hati-hati.

  • Untuk mempercepat dan mengamankan transmisi data, kami merekomendasikan agar Anda memigrasikan aplikasi Anda dari cluster ACK Serverless ke instance kontainer elastis yang diterapkan di wilayah yang sama dan memiliki jenis jaringan yang sama dengan instance ApsaraDB RDS. Dengan cara ini, aplikasi dapat mengakses instance ApsaraDB RDS melalui titik akhir internal.

  1. Konfigurasikan daftar putih untuk instance ApsaraDB RDS.

    Jika aplikasi mengakses instance melalui Internet, Anda harus mengonfigurasi daftar putih alamat IP untuk instance tersebut. Untuk informasi lebih lanjut, lihat Konfigurasikan daftar putih alamat IP untuk instance ApsaraDB RDS for MySQL.

    • Jika instance kontainer elastis menggunakan gateway NAT untuk mengakses Internet, Anda harus menambahkan alamat EIP yang terkait dengan gateway NAT ke daftar putih alamat IP.

    • Jika instance kontainer elastis menggunakan EIP untuk mengakses Internet, Anda harus menambahkan alamat EIP yang terkait dengan instance kontainer elastis ke daftar putih alamat IP.

  2. Ajukan permohonan dan catat titik akhir publik database. Untuk informasi lebih lanjut, lihat Ajukan permohonan atau lepaskan titik akhir publik untuk instance ApsaraDB RDS for MySQL.

Konfigurasikan aplikasi untuk menghubungkan ke instance ApsaraDB RDS

Dalam topik ini, VPC digunakan untuk menghubungkan aplikasi dalam Cluster ACK Serverless ke instance ApsaraDB RDS. Prosedur:

  1. Masuk ke Konsol ACK.

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik nama kluster. Halaman manajemen kluster akan muncul.

  3. Buat ConfigMap untuk mengonfigurasi koneksi ke instance ApsaraDB RDS.

    Catatan

    ConfigMap dapat memisahkan konfigurasi lingkungan dari gambar kontainer. Ini memudahkan modifikasi konfigurasi aplikasi.

    1. Di panel navigasi di sebelah kiri, pilih Configurations > ConfigMaps.

    2. Klik Create di pojok kanan atas halaman.

    3. Konfigurasikan ConfigMap dan klik OK.

      Di panel yang muncul, tentukan nama untuk ConfigMap. Contoh: rds-config. Kemudian, konfigurasikan parameter yang dijelaskan dalam tabel berikut.

      Parameter

      Contoh

      Deskripsi

      host

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

      Titik akhir database. Anda dapat memperoleh titik akhir di halaman Database Connection instance ApsaraDB RDS.

      port

      3306

      Nomor port database. Anda dapat memperoleh nomor port di halaman Database Connection instance ApsaraDB RDS.

      database

      test-db

      Nama database. Anda dapat memperoleh nama database di halaman Databases instance ApsaraDB RDS.

  4. Buat secret untuk menambahkan nama pengguna dan kata sandi database.

    Catatan

    Secret memastikan bahwa informasi rahasia seperti nama pengguna dan kata sandi database dapat secara aman diteruskan ke aplikasi.

    1. Di panel navigasi di sebelah kiri, pilih Configurations > Secrets.

    2. Klik Create.

    3. Konfigurasikan secret dan klik OK.

      Di panel yang muncul, tentukan nama untuk secret. Contoh: rds-secret. Kemudian, konfigurasikan parameter yang dijelaskan dalam tabel berikut.

      Parameter

      Contoh

      Deskripsi

      username

      test

      Nama pengguna yang digunakan untuk mengakses database. Anda dapat memperoleh nama pengguna di halaman Accounts instance ApsaraDB RDS.

      password

      pwd******

      Kata sandi yang digunakan untuk mengakses database. Jika Anda lupa kata sandi Anda, Anda dapat menyetel ulang kata sandi di halaman Accounts.

  5. Buat pod berbasis Elastic Container Instance dan uji apakah pod dapat terhubung ke instance ApsaraDB RDS.

    1. Di panel navigasi di sebelah kiri, pilih Workloads > Pods.

    2. Klik Create from YAML.

    3. Masukkan isi file YAML dan klik Create.

      ApsaraDB RDS for MySQL sepenuhnya kompatibel dengan MySQL open source. Anda dapat menghubungkan ke instance ApsaraDB RDS dari klien database dengan cara yang sama seperti Anda menghubungkan ke database MySQL open source. Kode berikut memberikan contoh konfigurasi.

      Catatan

      Jika Anda menggunakan konfigurasi sampel yang disediakan dalam topik ini untuk menguji koneksi database, buat tabel bernama username di instance ApsaraDB RDS dan tambahkan kolom bernama user ke tabel tersebut.

      Kode YAML berikut menggunakan variabel lingkungan untuk memasukkan informasi koneksi database, termasuk titik akhir, nomor port, nama, nama pengguna, dan kata sandi database. Gambar tersebut berisi skrip Python yang dapat digunakan untuk menghubungkan database ke kluster dan menyisipkan data.

      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  # Gambar yang berisi pekerjaan Python yang digunakan untuk menghubungkan instance ApsaraDB RDS ke kluster.
          imagePullPolicy: IfNotPresent
          command: ["/bin/bash","-c","python3 /testapp/mysqlclient.py"]
          env:
          - name: MYSQL_HOST 
            valueFrom:
              configMapKeyRef:
                name: rds-config  # Nama ConfigMap.
                key: host # Kunci dalam ConfigMap.
          - name: MYSQL_PORT
            valueFrom:
              configMapKeyRef:
                name: rds-config # Nama ConfigMap.
                key: port # Kunci dalam ConfigMap.
          - name: MYSQL_DB
            valueFrom:
              configMapKeyRef:
                name: rds-config  # Nama ConfigMap.
                key: database # Kunci dalam ConfigMap.
          - name: MYSQL_USERNAME
            valueFrom:
              secretKeyRef:
                name: rds-secret # Nama secret.
                key: username # Kunci dalam secret.
          - name: MYSQL_PWD
            valueFrom:
              secretKeyRef:
                name: rds-secret # Nama secret.
                key: password # Kunci dalam secret.
        restartPolicy: Never

      Gambar sebelumnya berisi skrip Python (mysqlclient.py) yang dapat digunakan untuk menyisipkan data ke kolom user tabel username. Isi skrip:

      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("menghubungkan 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. Masuk ke database ApsaraDB RDS dan lihat hasil koneksi.

    1. Masuk ke Konsol ApsaraDB RDS.

    2. Di panel navigasi di sebelah kiri, klik Instances. Di bilah navigasi atas, pilih wilayah tempat instance ApsaraDB RDS diterapkan. Kemudian, temukan instance dan klik ID instance.

    3. Di panel navigasi di sebelah kiri, klik Databases.

    4. Temukan database ApsaraDB RDS yang ingin Anda lihat. Klik SQL Query.

    5. Di kotak dialog yang muncul, masukkan nama pengguna dan kata sandi database ApsaraDB RDS dan klik Log In.

    6. Masukkan perintah SQL untuk menanyakan hasil.

      Jalankan perintah SELECT * FROM 'username'. Anda dapat melihat bahwa entri data ditambahkan ke kolom user tabel username.

      对接RDS

FAQ

Bagian berikut menjelaskan alasan umum mengapa database ApsaraDB RDS Anda gagal terhubung ke Elastic Container Instance:

  • Jenis jaringan berbeda

  • VPC berbeda

  • Kegagalan atau kesalahan resolusi nama domain

  • Wilayah berbeda

  • Pengaturan daftar putih alamat IP tidak benar

  • Tidak ada daftar putih alamat IP yang dikonfigurasi untuk instance baca-saja

  • Titik akhir internal atau publik tidak valid

  • Kuota koneksi habis

  • Nama pengguna atau kata sandi tidak valid

  • Alamat host tidak valid

Pilih solusi berdasarkan jenis jaringan yang Anda gunakan untuk menghubungkan ke instance ApsaraDB RDS. Untuk informasi lebih lanjut, lihat Apa yang harus saya lakukan jika saya gagal menghubungkan instance ApsaraDB for RDS?