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
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
adalahGP3
. 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, gunakan0.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.
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
Perintah
anthos-gke aws management apply
mungkin memerlukan waktu hingga sepuluh menit untuk selesai. Setelahanthos-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:
Beralih ke direktori dengan konfigurasi GKE di 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 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
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:
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
).Untuk membuka tunnel, jalankan skrip
bastion-tunnel.sh
. Tunnel meneruskan 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 sudah siap untuk menutup koneksi, hentikan proses dengan menggunakan Control+C atau menutup jendela.
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.
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
akan mencetak status cluster.
Langkah berikutnya
- Buat cluster pengguna.
- Gunakan proxy dengan GKE di AWS.
- Ubah konfigurasi
kubectl
untuk terhubung ke GKE di AWS dengan lebih sedikit opsi command line. - Lihat grup keamanan minimum yang diperlukan untuk cluster pengguna dan layanan pengelolaan GKE di AWS.