Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Sederhanakan penerapan aplikasi multi-tenant Amazon EKS dengan menggunakan Flux
Nadeem Rahaman, Aditya Ambati, Aniket Dekate, dan Shrikant Patil, Amazon Web Services
Ringkasan
Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
Banyak perusahaan yang menawarkan produk dan layanan adalah industri yang diatur data yang diperlukan untuk mempertahankan hambatan data antara fungsi bisnis internal mereka. Pola ini menjelaskan bagaimana Anda dapat menggunakan fitur multi-tenancy di Amazon Elastic Kubernetes Service (Amazon EKS) untuk membangun platform data yang mencapai isolasi logis dan fisik antara penyewa atau pengguna yang berbagi satu kluster Amazon EKS. Pola memberikan isolasi melalui pendekatan berikut:
Isolasi namespace Kubernetes
Kontrol akses berbasis peran (RBAC)
Kebijakan jaringan
Kuota sumber daya
AWS Identity and Access Management (IAM) peran untuk akun layanan (IRSA)
Selain itu, solusi ini menggunakan Flux untuk menjaga konfigurasi penyewa tetap tidak berubah saat Anda menerapkan aplikasi. Anda dapat menerapkan aplikasi penyewa Anda dengan menentukan repositori penyewa yang berisi file Flux dalam konfigurasi Anda. kustomization.yaml
Pola ini mengimplementasikan yang berikut:
AWS CodeCommit Repositori, AWS CodeBuild proyek, dan AWS CodePipeline pipeline, yang dibuat dengan menerapkan skrip Terraform secara manual.
Jaringan dan komponen komputasi yang diperlukan untuk hosting penyewa. Ini dibuat melalui CodePipeline dan CodeBuild dengan menggunakan Terraform.
Ruang nama penyewa, kebijakan jaringan, dan kuota sumber daya, yang dikonfigurasi melalui bagan Helm.
Aplikasi milik penyewa yang berbeda, digunakan dengan menggunakan Flux.
Kami menyarankan Anda merencanakan dan membangun arsitektur Anda sendiri dengan hati-hati untuk multi-tenancy berdasarkan persyaratan unik dan pertimbangan keamanan Anda. Pola ini memberikan titik awal untuk implementasi Anda.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS
AWS Command Line Interface (AWS CLI) versi 2.11.4 atau yang lebih baru, diinstal dan dikonfigurasi
Terraform
versi 0.12 atau yang lebih baru diinstal pada mesin lokal Anda Terraform AWS Provider
versi 3.0.0 atau yang lebih baru Penyedia Kubernetes
versi 2.10 atau yang lebih baru Helm Provider
versi 2.8.0 atau yang lebih baru Kubectl Provider
versi 1.14 atau yang lebih baru
Batasan
Ketergantungan pada penerapan manual Terraform: Penyiapan awal alur kerja, termasuk membuat CodeCommit repositori, CodeBuild proyek, dan CodePipeline saluran pipa, bergantung pada penerapan Terraform manual. Ini memperkenalkan batasan potensial dalam hal otomatisasi dan skalabilitas, karena memerlukan intervensi manual untuk perubahan infrastruktur.
CodeCommit ketergantungan repositori: Alur kerja bergantung pada CodeCommit repositori sebagai solusi manajemen kode sumber dan digabungkan dengan erat. Layanan AWS
Arsitektur
Arsitektur target
Pola ini menyebarkan tiga modul untuk membangun infrastruktur pipeline, jaringan, dan komputasi untuk platform data, seperti yang diilustrasikan dalam diagram berikut.
Arsitektur pipa:

Arsitektur jaringan:

Arsitektur komputasi:

Alat
Layanan AWS
AWS CodeBuildadalah layanan build terkelola penuh yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.
AWS CodeCommitadalah layanan kontrol versi yang membantu Anda menyimpan dan mengelola repositori Git secara pribadi, tanpa perlu mengelola sistem kontrol sumber Anda sendiri.
AWS CodePipelinemembantu Anda dengan cepat memodelkan dan mengkonfigurasi berbagai tahapan rilis perangkat lunak dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perubahan perangkat lunak secara terus menerus.
Amazon Elastic Kubernetes Service (Amazon EKS) membantu Anda menjalankan AWS Kubernetes tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri.
AWS Transit Gatewayadalah hub pusat yang menghubungkan virtual private cloud (VPCs) dan jaringan lokal.
Amazon Virtual Private Cloud (Amazon VPC) membantu Anda meluncurkan AWS sumber daya ke jaringan virtual yang telah Anda tentukan. Jaringan virtual ini menyerupai jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaat menggunakan infrastruktur yang dapat diskalakan. AWS
Alat-alat lainnya
Kebijakan Jaringan Cilium mendukung kebijakan jaringan
Kubernetes L3 dan L4. Mereka dapat diperluas dengan kebijakan L7 untuk menyediakan keamanan tingkat API untuk HTTP, Kafka, dan gRPC, dan protokol serupa lainnya. Flux
adalah alat pengiriman berkelanjutan (CD) berbasis Git yang mengotomatiskan penerapan aplikasi di Kubernetes. Helm
adalah pengelola paket open source untuk Kubernetes yang membantu Anda menginstal dan mengelola aplikasi di klaster Kubernetes Anda. Terraform
adalah alat infrastruktur sebagai kode (IAc) HashiCorp yang membantu Anda membuat dan mengelola sumber daya cloud dan lokal.
Repositori kode
Kode untuk pola ini tersedia di repositori Solusi GitHub Terraform Multi-Tenancy EKS
Praktik terbaik
Untuk pedoman dan praktik terbaik untuk menggunakan implementasi ini, lihat berikut ini:
Epik
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Kloning repositori proyek. | Kloning repositori Solusi Terraform Multi-Tenancy GitHub EKS
| AWS DevOps |
Bootstrap bucket Terraform S3 dan Amazon DynamoDB. |
| AWS DevOps |
Perbarui |
| AWS DevOps |
Menyebarkan modul pipa. | Untuk membuat sumber daya pipeline, jalankan perintah Terraform berikut secara manual. Tidak ada orkestrasi untuk menjalankan perintah ini secara otomatis.
| AWS DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Mulai pipa. |
Setelah proses pertama ini, pipeline dimulai secara otomatis setiap kali Anda melakukan perubahan ke cabang utama CodeCommit repositori. Pipa meliputi tahapan berikut:
| AWS DevOps |
Validasi sumber daya yang dibuat melalui modul jaringan. | Konfirmasikan bahwa AWS sumber daya berikut dibuat setelah pipeline berhasil diterapkan:
| AWS DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Perbarui | Untuk menyebarkan add-on untuk kluster pribadi Amazon EKS, CodeBuild proyek harus dilampirkan ke VPC Amazon EKS.
| AWS DevOps |
Perbarui | Di
| AWS DevOps |
Perbarui |
| AWS DevOps |
Validasi sumber daya komputasi. | Setelah Anda memperbarui file di langkah sebelumnya, CodePipeline mulai secara otomatis. Konfirmasikan bahwa itu membuat AWS sumber daya berikut untuk infrastruktur komputasi:
| AWS DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Validasi sumber daya manajemen penyewa di Kubernetes. | Jalankan perintah berikut untuk memeriksa apakah sumber daya manajemen penyewa berhasil dibuat dengan bantuan Helm.
| AWS DevOps |
Verifikasi penerapan aplikasi penyewa. | Jalankan perintah berikut untuk memverifikasi bahwa aplikasi penyewa telah digunakan.
|
Pemecahan Masalah
Isu | Solusi |
---|---|
Anda menemukan pesan galat yang mirip dengan berikut ini:
| Ikuti langkah-langkah ini untuk memecahkan masalah:
|
Sumber daya terkait
Informasi tambahan
Berikut adalah contoh struktur repositori untuk menerapkan aplikasi penyewa:
applications sample_tenant_app ├── README.md ├── base │ ├── configmap.yaml │ ├── deployment.yaml │ ├── ingress.yaml │ ├── kustomization.yaml │ └── service.yaml └── overlays ├── tenant-1 │ ├── configmap.yaml │ ├── deployment.yaml │ └── kustomization.yaml └── tenant-2 ├── configmap.yaml └── kustomization.yaml