Melakukan integrasi dengan infrastruktur yang ada

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

Sebelum memulai

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

  • Izin IAM AWS seperti yang dijelaskan dalam Persyaratan.

  • VPC AWS yang ada dengan:

    • Minimal satu subnet publik.
    • Minimal 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 kumpulan opsi DHCP Anda. Untuk mengetahui informasi selengkapnya, lihat Pemecahan masalah. GKE di AWS tidak mendukung nilai selain nama domain EC2 default.

    Untuk informasi lebih lanjut mengenai cara mengonfigurasi VPC AWS, lihat VPC dengan subnet publik dan pribadi.

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

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

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

Membuat ruang kerja

  1. Buat file bernama anthos-gke.yaml di editor teks. Tempel 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 milik admin kunci IAM AWS.
    • KMS_KEY_ARN dengan Nama Resource Amazon kunci AWS KMS yang mengamankan data layanan pengelolaan Anda saat layanan pengelolaan dibuat.
    • DATABASE_KMS_KEY_ARN dengan Nama Resource Amazon dari kunci AWS KMS yang mengamankan database etcd Anda.
    • SECURITY_GROUP_IDS dengan ID grup keamanan tambahan mengizinkan akses ke VM layanan pengelolaan Anda.
    • GCP_PROJECT_ID dengan project Google Cloud yang menghosting lingkungan GKE Enterprise Anda.
    • MANAGEMENT_KEY_PATH dengan lokasi kunci akun layanan pengelolaan Google Cloud Anda.
    • HUB_KEY_PATH dengan lokasi kunci akun layanan Google Cloud Connect Anda.
    • NODE_KEY_PATH dengan lokasi GKE Anda pada kunci akun layanan node AWS.
    • VPC_SUBNET_ID dengan ID subnet tempat layanan pengelolaan dijalankan.
    • SSH_SECURITY_GROUP dengan daftar ID grup keamanan mengizinkan 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 IO yang disediakan per detik (IOPS) untuk volume. Hanya berlaku jika volumeType adalah GP3. Untuk informasi selengkapnya, lihat Volume SSD Tujuan Umum (gp3).
    • ROOT_VOLUME_KEY dengan Nama Resource Amazon dari kunci AWS KMS yang mengenkripsi volume root instance layanan pengelolaan Anda. Untuk informasi selengkapnya, lihat Menggunakan CMK yang dikelola pelanggan untuk mengenkripsi volume.

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

    • BASTION_HOST_SUBNET_ID dengan ID subnet tempat bastion host berjalan. Pastikan VPC_SUBNET_ID mengizinkan koneksi masuk dari BASTION_HOST_SUBNET_ID.
    • SSH_CIDR_BLOCK dengan blok CIDR yang diizinkan oleh bastion host Anda 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 Nama Resource Amazon dari kunci AWS KMS yang mengamankan volume bastion root Anda.

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

    • PROXY_JSON_FILE dengan jalur relatif dari 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
    

    Mungkin perlu waktu hingga sepuluh menit untuk menyelesaikan perintah anthos-gke aws management apply. Setelah anthos-gke selesai, layanan pengelolaan Anda akan berjalan di AWS.

Memberi tag pada subnet dengan nama cluster Anda

Jika 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. Jika Anda membuat VPC dengan anthos-gke atau sudah memberi tag pada subnet Anda, lewati langkah ini.

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

  1. Beralihlah ke direktori yang memiliki konfigurasi GKE on 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 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. 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. Anda dapat menyalurkan perintah melalui bastion host. Jika Anda memiliki koneksi langsung ke VPC AWS, lanjutkan ke bagian Membuat kredensial dan terhubung.

Menghubungkan dengan bastion host

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

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

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

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

  2. Untuk membuka tunnel, jalankan skrip bastion-tunnel.sh. Tunnel maju 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 siap menutup koneksi, hentikan proses menggunakan Control+C atau tutup jendela.

  3. Ubah ke direktori dengan konfigurasi GKE on AWS Anda.

    cd anthos-aws

Buat kredensial dan hubungkan

Dokumentasi untuk GKE di AWS mengasumsikan bahwa Anda menggunakan tunnel SSH di port localhost 8118 untuk mengakses cluster. Jika menggunakan jenis koneksi lain ke VPC Anda, seperti interkoneksi langsung, 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 mencetak status cluster.

Langkah selanjutnya