Melakukan integrasi dengan infrastruktur yang ada

Dalam topik ini, Anda akan mengonfigurasi Virtual Private Cloud (VPC) AWS yang ada dengan subnet publik dan pribadi, lalu menjalankan anthos-gke untuk menyelesaikan penginstalan layanan pengelolaan.

Sebelum memulai

Untuk menyelesaikan langkah-langkah berikut, Anda memerlukan hal berikut:

  • Izin AWS IAM seperti yang dijelaskan dalam Persyaratan.

  • VPC AWS yang ada dengan:

    • Setidaknya satu subnet publik.
    • Setidaknya satu subnet pribadi.
    • Gateway internet dengan rute ke subnet publik.
    • Gateway NAT dengan rute ke subnet pribadi.
    • Nama host DNS diaktifkan.
    • Tidak ada nilai kustom domain-name di set opsi DHCP Anda. Untuk mengetahui informasi selengkapnya, lihat Pemecahan masalah. GKE di AWS tidak mendukung nilai selain nama domain EC2 default.

    Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi VPC AWS, lihat VPC dengan subnet publik dan pribadi.

  • ID subnet publik dan pribadi VPC yang ada. Misalnya, subnet-1234567890abcdefg.

  • Untuk versi cluster 1.20 atau yang lebih lama, grup keamanan AWS yang mengizinkan SSH (port 22) masuk dari grup keamanan atau rentang IP tempat Anda akan mengelola penginstalan GKE di AWS.

  • Untuk versi cluster 1.21 atau yang lebih tinggi, grup keamanan AWS yang mengizinkan koneksi keluar Konnectivity (port 8132) dari rentang IP VPC yang menampung node pool GKE di AWS Anda.

Membuat ruang kerja

  1. Buat file bernama anthos-gke.yaml di editor teks. Tempelkan konten berikut ke dalam file.

     apiVersion: multicloud.cluster.gke.io/v1
     kind: AWSManagementService
     metadata:
       name: management
     spec:
       version: aws-1.14.1-gke.0
       region: AWS_REGION
       authentication:
         awsIAM:
           adminIdentityARNs:
           - ADMIN_AWS_IAM_ARN
       kmsKeyARN: KMS_KEY_ARN
       databaseEncryption:
         kmsKeyARN: DATABASE_KMS_KEY_ARN
       securityGroupIDs:
       - SECURITY_GROUP_IDS
       googleCloud:
         projectID: GCP_PROJECT_ID
         serviceAccountKeys:
           managementService: MANAGEMENT_KEY_PATH
           connectAgent: HUB_KEY_PATH
           node: NODE_KEY_PATH
       existingVPC:
         subnetID: VPC_SUBNET_ID
         allowedSSHSecurityGroupIDs:
         - SSH_SECURITY_GROUP
       # Optional fields
       rootVolume:
         sizeGiB: ROOT_VOLUME_SIZE
         volumeType: ROOT_VOLUME_TYPE
         iops: ROOT_VOLUME_IOPS
         kmsKeyARN: ROOT_VOLUME_KEY
       bastionHost:
         subnetID: BASTION_HOST_SUBNET_ID
         allowedSSHCIDRBlocks:
         - SSH_CIDR_BLOCK
         rootVolume: # Optional
           kmsKeyARN: BASTION_VOLUME_KEY
       proxy: PROXY_JSON_FILE
    

    Ganti nilai berikut:

    • AWS_REGION dengan region AWS untuk menjalankan cluster Anda.
    • ADMIN_AWS_IAM_ARN dengan Amazon Resource Name dari kunci IAM AWS admin.
    • KMS_KEY_ARN dengan Amazon Resource Name dari kunci AWS KMS yang mengamankan data layanan pengelolaan Anda saat layanan pengelolaan dibuat.
    • DATABASE_KMS_KEY_ARN dengan Amazon Resource Name dari kunci AWS KMS yang mengamankan database etcd Anda.
    • SECURITY_GROUP_IDS dengan ID grup keamanan tambahan yang diizinkan mengakses VM layanan pengelolaan Anda.
    • GCP_PROJECT_ID dengan project Google Cloud yang menghosting lingkungan GKE Enterprise Anda.
    • MANAGEMENT_KEY_PATH dengan lokasi Google Cloud pengelolaan kunci akun layanan.
    • HUB_KEY_PATH dengan lokasi Google Cloud Connect kunci akun layanan Anda.
    • NODE_KEY_PATH dengan lokasi akun layanan node GKE di AWS.
    • VPC_SUBNET_ID dengan ID subnet tempat layanan pengelolaan berjalan.
    • SSH_SECURITY_GROUP dengan daftar ID grup keamanan yang diizinkan untuk akses SSH dalam instance layanan pengelolaan.

    Opsional: Jika Anda ingin mengenkripsi volume layanan pengelolaan, ganti nilai berikut:

    • ROOT_VOLUME_SIZE dengan ukuran volume dalam gigabyte untuk layanan pengelolaan. Contoh, 10.
    • ROOT_VOLUME_TYPE dengan jenis volume EBS. Misalnya, gp3.
    • ROOT_VOLUME_IOPS dengan pemasangan operasi I/O yang disediakan per detik (IOPS) untuk volume. Hanya valid jika volumeType adalah GP3. Untuk mengetahui informasi selengkapnya, lihat Volume SSD Tujuan Umum (gp3).
    • ROOT_VOLUME_KEY dengan Amazon Resource Name dari kunci AWS KMS yang mengenkripsi volume root instance layanan pengelolaan Anda. Untuk mengetahui informasi selengkapnya, lihat Menggunakan CMK yang dikelola pelanggan untuk mengenkripsi volume.

    Opsional: Jika Anda ingin membuat bastion host untuk mengakses lingkungan GKE di AWS dengan tunnel SSH, ganti nilai berikut:

    • BASTION_HOST_SUBNET_ID dengan ID subnet tempat host bastion berjalan. Pastikan VPC_SUBNET_ID mengizinkan koneksi masuk dari BASTION_HOST_SUBNET_ID.
    • SSH_CIDR_BLOCK dengan blok CIDR yang bastion host Anda izinkan untuk koneksi SSH masuk. Contohnya, 203.0.113.0/24. Jika Anda ingin mengizinkan SSH dari alamat IP mana pun, gunakan 0.0.0.0/0.
    • BASTION_VOLUME_KEY dengan Amazon Resource Name dari kunci AWS KMS yang mengamankan volume root bastion Anda.

    Opsional: Jika Anda ingin traffic langsung melalui proxy HTTP, ganti nilai berikut:

    • PROXY_JSON_FILE dengan jalur relatif file konfigurasi proxy. Jika Anda tidak menggunakan proxy, hapus baris ini.
  2. Jalankan anthos-gke aws management init untuk membuat file konfigurasi:

    anthos-gke aws management init
    
  3. Jalankan anthos-gke aws management apply untuk membuat cluster.

    anthos-gke aws management apply
    

    Perintah anthos-gke aws management apply mungkin memerlukan waktu hingga sepuluh menit untuk selesai. Setelah anthos-gke selesai, layanan pengelolaan Anda akan berjalan di AWS.

Beri tag pada subnet Anda dengan nama cluster Anda

Jika Anda menggunakan subnet AWS yang ada dengan GKE di AWS dan ingin membuat load balancer, Anda harus memberi tag pada VPC dan subnet dengan nama layanan pengelolaan Anda. Jika Anda membuat VPC dengan anthos-gke atau telah memberi tag pada subnet, lewati langkah ini.

Untuk memberi tag pada subnet, lakukan langkah-langkah berikut:

  1. Beralih ke direktori dengan konfigurasi GKE di AWS. Anda membuat direktori ini saat Menginstal layanan pengelolaan.

    cd anthos-aws

  2. Ekspor ID cluster Anda sebagai variabel lingkungan $CLUSTER-ID. Pilih versi Terraform Anda, lalu jalankan perintah berikut:

    Terraform 0.12, 0.13

    export CLUSTER_ID=$(terraform output cluster_id)
    

    Terraform 0.14.3+

    export CLUSTER_ID=$(terraform output -raw cluster_id)
    
  3. Ekspor ID VPC AWS Anda sebagai variabel lingkungan $VPC_ID. Pilih versi Terraform Anda, lalu jalankan perintah berikut:

    Terraform 0.12, 0.13

    export VPC_ID=$(terraform output vpc_id)
    

    Terraform 0.14.3+

    export VPC_ID=$(terraform output -raw vpc_id)
    
  4. Dapatkan ID subnet pribadi Anda dengan alat CLI aws.

      aws ec2 describe-subnets \
          --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
          --query "Subnets[*].SubnetId" \
          --output text
    
  5. Beri tag pada subnet Anda dengan ID cluster Anda. Jalankan perintah berikut untuk setiap subnet Anda.

      aws ec2 create-tags \
          --resources SUBNET_IDS \
          --tags Key=gke:multicloud:cluster-id,Value=$CLUSTER_ID
    

    Ganti SUBNET_IDS dengan daftar ID subnet, yang dipisahkan dengan spasi. Contoh, subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef.

Menghubungkan ke layanan pengelolaan

Di bagian ini, Anda akan membuat koneksi ke layanan pengelolaan. Anda dapat menyalurkan perintah melalui host bastion. Jika Anda memiliki koneksi langsung ke VPC AWS, lanjutkan ke Buat kredensial dan hubungkan.

Menghubungkan dengan bastion host

Jika Anda menggunakan bastion host untuk menyiapkan tunnel SSH, pertama-tama konfigurasi host di anthos-gke.yaml Anda. Selanjutnya, buat skrip untuk membuka tunnel dengan melakukan langkah-langkah berikut:

  1. Gunakan terraform untuk membuat skrip yang membuka tunnel SSH ke host bastion.

    terraform output bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform membuat skrip bastion-tunnel.sh yang menggunakan kunci SSH host bastion (~/.ssh/anthos-gke).

  2. Untuk membuka tunnel, jalankan skrip bastion-tunnel.sh. Tunnel meneruskan dari localhost:8118 ke bastion host.

    Untuk membuka tunnel ke bastion host, jalankan perintah berikut:

    ./bastion-tunnel.sh -N
    

    Pesan dari tunnel SSH akan muncul di jendela ini. Jika Anda sudah siap untuk menutup koneksi, hentikan proses dengan menggunakan Control+C atau menutup jendela.

  3. Beralih ke direktori dengan konfigurasi GKE di AWS.

    cd anthos-aws

Membuat kredensial dan menghubungkan

Dokumentasi untuk GKE di AWS mengasumsikan bahwa Anda menggunakan tunnel SSH di port 8118 localhost untuk mengakses cluster Anda. Jika Anda menggunakan jenis koneksi lain ke VPC, seperti Direct Interconnect, VPN, atau metode lainnya, Anda dapat menghapus baris env HTTP_PROXY=http://localhost:8118 dari perintah.

  1. Buat kubeconfig untuk autentikasi. Gunakan anthos-gke untuk menambahkan kredensial ke konfigurasi Anda yang disimpan di ~/.kube/config.

    anthos-gke aws management get-credentials
    
  2. Pastikan Anda dapat terhubung ke layanan pengelolaan dengan kubectl.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl cluster-info
    

    kubectl akan mencetak status cluster.

Langkah berikutnya