EKS Cluster Sepenuhnya Pribadi - Panduan Pengguna Eksctl

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

EKS Cluster Sepenuhnya Pribadi

eksctl mendukung pembuatan cluster yang sepenuhnya pribadi yang tidak memiliki akses internet keluar dan hanya memiliki subnet pribadi. Titik akhir VPC digunakan untuk mengaktifkan akses pribadi ke layanan AWS.

Panduan ini menjelaskan cara membuat cluster pribadi tanpa akses internet keluar.

Membuat klaster yang sepenuhnya pribadi

Satu-satunya bidang yang diperlukan untuk membuat klaster yang sepenuhnya pribadi adalah: privateCluster.enabled

privateCluster: enabled: true

Pasca pembuatan cluster, perintah eksctl yang memerlukan akses ke server API Kubernetes harus dijalankan dari dalam VPC cluster, VPC peered atau menggunakan beberapa cara lain seperti AWS Direct Connect. perintah eksctl yang memerlukan akses ke EKS tidak APIs akan berfungsi jika dijalankan dari dalam VPC cluster. Untuk memperbaikinya, buat endpoint antarmuka untuk Amazon EKS untuk mengakses pengelolaan Amazon Elastic Kubernetes Service (Amazon APIs EKS) secara pribadi dari Amazon Virtual Private Cloud (VPC) Anda. Dalam rilis future, eksctl akan menambahkan dukungan untuk membuat endpoint ini sehingga tidak perlu dibuat secara manual. Perintah yang memerlukan akses ke URL penyedia OpenID Connect harus dijalankan dari luar VPC klaster Anda setelah Anda mengaktifkan AWS untuk PrivateLink Amazon EKS.

Membuat nodegroup terkelola akan terus berfungsi, dan membuat nodegroup yang dikelola sendiri akan berfungsi karena memerlukan akses ke server API melalui titik akhir antarmuka EKS jika perintah dijalankan dari dalam VPC cluster, VPC peered atau menggunakan beberapa cara lain seperti AWS Direct Connect.

catatan

Titik akhir VPC dikenakan biaya per jam dan berdasarkan penggunaan. Detail lebih lanjut tentang harga dapat ditemukan di PrivateLink harga AWS

Awas

Cluster yang sepenuhnya pribadi tidak didukung di. eu-south-1

Mengkonfigurasi akses pribadi ke layanan AWS tambahan

Untuk mengaktifkan node pekerja mengakses layanan AWS secara pribadi, eksctl membuat titik akhir VPC untuk layanan berikut:

  • Titik akhir antarmuka untuk ECR (keduanya ecr.api danecr.dkr) untuk menarik gambar kontainer (plugin AWS CNI dll)

  • Titik akhir gateway untuk S3 untuk menarik lapisan gambar yang sebenarnya

  • Titik akhir antarmuka yang EC2 diperlukan oleh integrasi aws-cloud-provider

  • Titik akhir antarmuka untuk STS untuk mendukung Peran Fargate dan IAM untuk Akun Layanan (IRSA)

  • Titik akhir antarmuka untuk CloudWatch logging (logs) jika CloudWatch logging diaktifkan

Titik akhir VPC ini penting untuk cluster pribadi fungsional, dan dengan demikian, eksctl tidak mendukung konfigurasi atau menonaktifkannya. Namun, klaster mungkin memerlukan akses pribadi ke layanan AWS lainnya (misalnya, Penskalaan Otomatis yang diperlukan oleh Cluster Autoscaler). Layanan ini dapat ditentukan dalamprivateCluster.additionalEndpointServices, yang menginstruksikan eksctl untuk membuat titik akhir VPC untuk masing-masingnya.

Misalnya, untuk mengizinkan akses pribadi ke Penskalaan Otomatis dan pencatatan: CloudWatch

privateCluster: enabled: true additionalEndpointServices: # For Cluster Autoscaler - "autoscaling" # CloudWatch logging - "logs"

Titik akhir yang didukung additionalEndpointServices adalahautoscaling, cloudformation danlogs.

Melewatkan kreasi titik akhir

Jika VPC telah dibuat dengan titik akhir AWS yang diperlukan yang disiapkan dan ditautkan ke subnet yang dijelaskan dalam dokumentasi EKS, eksctl dapat melewati pembuatannya dengan memberikan opsi seperti ini: skipEndpointCreation

privateCluster: enabled: true skipEndpointCreation: true

Pengaturan ini tidak dapat digunakan bersama denganadditionalEndpointServices. Ini akan melewati semua pembuatan titik akhir. Juga, pengaturan ini hanya disarankan jika topologi <→ subnet endpoint diatur dengan benar. Jika id subnet benar, vpce perutean diatur dengan alamat awalan, semua titik akhir EKS yang diperlukan dibuat dan ditautkan ke VPC yang disediakan. eksctltidak akan mengubah sumber daya ini.

Nodegroup

Hanya nodegroup pribadi (baik yang dikelola maupun dikelola sendiri) yang didukung dalam klaster yang sepenuhnya pribadi karena VPC klaster dibuat tanpa subnet publik apa pun. privateNetworkingBidang (nodeGroup[].privateNetworking danmanagedNodeGroup[) harus ditetapkan secara eksplisit. Merupakan kesalahan jika privateNetworking tidak disetel di cluster yang sepenuhnya pribadi.

nodeGroups: - name: ng1 instanceType: m5.large desiredCapacity: 2 # privateNetworking must be explicitly set for a fully-private cluster # Rather than defaulting this field to `true`, # we require users to explicitly set it to make the behaviour # explicit and avoid confusion. privateNetworking: true managedNodeGroups: - name: m1 instanceType: m5.large desiredCapacity: 2 privateNetworking: true

Akses Titik Akhir Cluster

Cluster yang sepenuhnya pribadi tidak mendukung modifikasi clusterEndpointAccess selama pembuatan klaster. Ini adalah kesalahan untuk mengatur salah satu clusterEndpoints.publicAccess atauclusterEndpoints.privateAccess, karena cluster yang sepenuhnya pribadi hanya dapat memiliki akses pribadi, dan memungkinkan modifikasi bidang ini dapat merusak cluster.

VPC dan subnet yang disediakan pengguna

eksctl mendukung pembuatan cluster yang sepenuhnya pribadi menggunakan VPC dan subnet yang sudah ada sebelumnya. Hanya subnet pribadi yang dapat ditentukan dan itu adalah kesalahan untuk menentukan subnet di bawah. vpc.subnets.public

eksctl membuat titik akhir VPC di VPC yang disediakan dan memodifikasi tabel rute untuk subnet yang disediakan. Setiap subnet harus memiliki tabel rute eksplisit yang terkait dengannya karena eksctl tidak memodifikasi tabel rute utama.

apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: private-cluster region: us-west-2 privateCluster: enabled: true additionalEndpointServices: - "autoscaling" vpc: subnets: private: us-west-2b: id: subnet-0818beec303f8419b us-west-2c: id: subnet-0d42ef09490805e2a us-west-2d: id: subnet-0da7418077077c5f9 nodeGroups: - name: ng1 instanceType: m5.large desiredCapacity: 2 # privateNetworking must be explicitly set for a fully-private cluster # Rather than defaulting this field to true for a fully-private cluster, we require users to explicitly set it # to make the behaviour explicit and avoid confusion. privateNetworking: true managedNodeGroups: - name: m1 instanceType: m5.large desiredCapacity: 2 privateNetworking: true

Mengelola klaster yang sepenuhnya pribadi

Agar semua perintah berfungsi setelah pembuatan cluster, eksctl akan memerlukan akses pribadi ke titik akhir server EKS API, dan akses internet keluar (untuk). EKS:DescribeCluster Perintah yang tidak memerlukan akses ke server API akan didukung jika eksctl memiliki akses internet keluar.

Hapus paksa klaster yang sepenuhnya pribadi

Kesalahan kemungkinan terjadi saat menghapus cluster yang sepenuhnya pribadi melalui eksctl karena eksctl tidak secara otomatis memiliki akses ke semua sumber daya cluster. --forceada untuk menyelesaikan ini: itu akan memaksa menghapus cluster dan melanjutkan ketika kesalahan terjadi.

Batasan

Keterbatasan implementasi saat ini adalah bahwa eksctl awalnya membuat cluster dengan akses titik akhir publik dan pribadi diaktifkan, dan menonaktifkan akses titik akhir publik setelah semua operasi selesai. Ini diperlukan karena eksctl membutuhkan akses ke server API Kubernetes untuk memungkinkan node yang dikelola sendiri untuk bergabung dengan cluster dan untuk mendukung dan Fargate. GitOps Setelah operasi ini selesai, eksctl mengalihkan akses titik akhir cluster ke private-only. Pembaruan tambahan ini berarti bahwa pembuatan klaster yang sepenuhnya pribadi akan memakan waktu lebih lama daripada klaster standar. Di masa depan, eksctl dapat beralih ke fungsi Lambda berkemampuan VPC untuk melakukan operasi API ini.

Akses keluar melalui server proxy HTTP

eksctl dapat berbicara dengan AWS APIs melalui server proxy HTTP (S) yang dikonfigurasi, namun Anda harus memastikan bahwa Anda mengatur daftar pengecualian proxy dengan benar.

Umumnya, Anda perlu memastikan bahwa permintaan untuk titik akhir VPC untuk klaster Anda tidak dirutekan melalui proxy Anda dengan menyetel variabel lingkungan yang sesuai no_proxy termasuk nilainya. .eks.amazonaws.com

Jika server proxy Anda melakukan “intersepsi SSL” dan Anda menggunakan Peran IAM untuk Akun Layanan (IRSA), Anda perlu memastikan bahwa Anda secara eksplisit melewati SSL untuk domain tersebut. Man-in-the-Middle oidc.<region>.amazonaws.com Kegagalan untuk melakukannya akan mengakibatkan eksctl mendapatkan cap jempol sertifikat root yang salah untuk penyedia OIDC, dan plugin AWS VPC CNI akan gagal memulai karena tidak dapat memperoleh kredensyal IAM, membuat cluster Anda tidak beroperasi.

Informasi lebih lanjut