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
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
adalahGP3
. 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, gunakan0.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.
Jalankan
anthos-gke aws management init
untuk membuat file konfigurasi:anthos-gke aws management init
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
. Setelahanthos-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:
Beralihlah ke direktori yang memiliki konfigurasi GKE on AWS. Anda membuat direktori ini saat Menginstal layanan pengelolaan.
cd anthos-aws
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)
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)
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
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:
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
).Untuk membuka tunnel, jalankan skrip
bastion-tunnel.sh
. Tunnel maju darilocalhost: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.
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.
Buat
kubeconfig
untuk autentikasi. Gunakananthos-gke
untuk menambahkan kredensial ke konfigurasi Anda yang disimpan di~/.kube/config
.anthos-gke aws management get-credentials
Pastikan Anda dapat terhubung ke layanan pengelolaan dengan
kubectl
.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
kubectl
mencetak status cluster.
Langkah selanjutnya
- Buat cluster pengguna.
- Gunakan proxy dengan GKE di AWS.
- Ubah konfigurasi
kubectl
Anda agar terhubung ke GKE di AWS dengan lebih sedikit opsi command line. - Lihat grup keamanan minimum yang diperlukan untuk GKE pada layanan pengelolaan AWS dan cluster pengguna.