Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Semplifica la distribuzione di applicazioni multi-tenant Amazon EKS utilizzando Flux
Creato da Nadeem Rahaman (AWS), Aditya Ambati (AWS), Aniket Dekate (AWS) e Shrikant Patil (AWS)
Riepilogo
AWS CodeCommit Avviso: non è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni
Molte aziende che offrono prodotti e servizi sono settori regolamentati dai dati che sono tenuti a mantenere le barriere relative ai dati tra le loro funzioni aziendali interne. Questo modello descrive come utilizzare la funzionalità multi-tenancy di Amazon Elastic Kubernetes Service (Amazon EKS) per creare una piattaforma dati che consenta l'isolamento logico e fisico tra tenant o utenti che condividono un singolo cluster Amazon EKS. Il modello fornisce l'isolamento attraverso i seguenti approcci:
Isolamento dello spazio dei nomi Kubernetes
Controllo degli accessi basato sui ruoli (RBAC)
Policy di rete
Quote delle risorse
AWS Identity and Access Management ruoli (IAM) per gli account di servizio (IRSA)
Inoltre, questa soluzione utilizza Flux per mantenere immutabile la configurazione del tenant durante la distribuzione delle applicazioni. È possibile distribuire le applicazioni tenant specificando il repository tenant che contiene il file Flux nella configurazione. kustomization.yaml
Questo modello implementa quanto segue:
Un AWS CodeCommit repository, AWS CodeBuild progetti e una AWS CodePipeline pipeline, creati distribuendo manualmente gli script Terraform.
Componenti di rete e di calcolo necessari per ospitare i tenant. Questi vengono creati tramite CodePipeline e CodeBuild utilizzando Terraform.
Namespace dei tenant, politiche di rete e quote di risorse, configurati tramite un grafico Helm.
Applicazioni che appartengono a tenant diversi, distribuite utilizzando Flux.
Ti consigliamo di pianificare e creare attentamente la tua architettura per la multi-tenancy in base ai tuoi requisiti unici e alle tue considerazioni di sicurezza. Questo modello fornisce un punto di partenza per l'implementazione.
Prerequisiti e limitazioni
Prerequisiti
Un attivo Account AWS
AWS Command Line Interface (AWS CLI) versione 2.11.4 o successiva, installata e configurata
Terraform
versione 0.12 o successiva installata sul computer locale Terraform AWS Provider
versione 3.0.0 o successiva Helm Provider versione 2.8.0
o successiva Kubectl
Provider versione 1.14 o successiva
Limitazioni
Dipendenza dalle distribuzioni manuali di Terraform: la configurazione iniziale del flusso di lavoro, inclusa la creazione di CodeCommit repository, CodeBuild progetti e pipeline, si basa sulle implementazioni manuali di Terraform. CodePipeline Ciò introduce una potenziale limitazione in termini di automazione e scalabilità, poiché richiede un intervento manuale per le modifiche all'infrastruttura.
CodeCommit dipendenza dal repository: il flusso di lavoro si basa sui CodeCommit repository come soluzione di gestione del codice sorgente ed è strettamente associato a. Servizi AWS
Architettura
Architetture di destinazione
Questo modello implementa tre moduli per creare la pipeline, la rete e l'infrastruttura di calcolo per una piattaforma dati, come illustrato nei diagrammi seguenti.
Architettura della pipeline:

Architettura di rete:

Architettura di calcolo:

Strumenti
Servizi AWS
AWS CodeBuildè un servizio di compilazione completamente gestito che ti aiuta a compilare codice sorgente, eseguire test unitari e produrre artefatti pronti per la distribuzione.
AWS CodeCommitè un servizio di controllo delle versioni che consente di archiviare e gestire in modo privato gli archivi Git, senza dover gestire il proprio sistema di controllo del codice sorgente.
AWS CodePipelineti aiuta a modellare e configurare rapidamente le diverse fasi di una versione del software e ad automatizzare i passaggi necessari per rilasciare continuamente le modifiche al software.
Amazon Elastic Kubernetes Service (Amazon EKS) ti aiuta a eseguire AWS Kubernetes senza dover installare o gestire il tuo piano di controllo o i tuoi nodi Kubernetes.
AWS Transit Gatewayè un hub centrale che collega cloud privati virtuali () e reti locali. VPCs
Amazon Virtual Private Cloud (Amazon VPC) ti aiuta a lanciare AWS risorse in una rete virtuale che hai definito. Questa rete virtuale è simile a una comune rete da gestire all'interno del proprio data center, ma con i vantaggi dell'infrastruttura scalabile di AWS.
Altri strumenti
Le politiche di rete Cilium supportano le politiche di rete
Kubernetes L3 e L4. Possono essere estesi con policy L7 per fornire sicurezza a livello di API per HTTP, Kafka e gRPC e altri protocolli simili. Flux
è uno strumento di distribuzione continua (CD) basato su Git che automatizza le implementazioni delle applicazioni su Kubernetes. Helm
è un gestore di pacchetti open source per Kubernetes che ti aiuta a installare e gestire le applicazioni sul tuo cluster Kubernetes. Terraform
è uno strumento di infrastruttura come codice (IaC) HashiCorp che ti aiuta a creare e gestire risorse cloud e locali.
Archivio di codici
Il codice per questo pattern è disponibile nel repository GitHub EKS Multi-Tenancy Terraform
Best practice
Per le linee guida e le migliori pratiche per l'utilizzo di questa implementazione, consulta quanto segue:
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Clona il repository del progetto. | Clona il repository GitHub EKS Multi-Tenancy Terraform Solution
| AWS DevOps |
Avvia il bucket Terraform S3 e Amazon DynamoDB. |
| AWS DevOps |
Aggiorna i |
| AWS DevOps |
Implementa il modulo pipeline. | Per creare risorse di pipeline, esegui manualmente i seguenti comandi Terraform. Non esiste alcuna orchestrazione per l'esecuzione automatica di questi comandi.
| AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Avvia la pipeline. |
Dopo questa prima esecuzione, la pipeline si avvia automaticamente ogni volta che esegui una modifica al ramo principale del CodeCommit repository. La pipeline include le seguenti fasi:
| AWS DevOps |
Convalida le risorse create tramite il modulo di rete. | Verifica che le seguenti AWS risorse siano state create dopo la corretta implementazione della pipeline:
| AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Aggiorna | Per distribuire i componenti aggiuntivi per il cluster privato Amazon EKS, il CodeBuild progetto deve essere collegato al VPC Amazon EKS.
| AWS DevOps |
Aggiorna i | Nella
| AWS DevOps |
Aggiorna il |
| AWS DevOps |
Convalida le risorse di calcolo. | Dopo aver aggiornato i file nei passaggi precedenti, si CodePipeline avvia automaticamente. Verifica che abbia creato le seguenti AWS risorse per l'infrastruttura di elaborazione:
| AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Convalida le risorse di gestione dei tenant in Kubernetes. | Esegui i seguenti comandi per verificare che le risorse di gestione dei tenant siano state create correttamente con l'aiuto di Helm.
| AWS DevOps |
Verifica le distribuzioni delle applicazioni tenant. | Esegui i seguenti comandi per verificare che le applicazioni tenant siano state distribuite.
|
Risoluzione dei problemi
Problema | Soluzione |
---|---|
Viene visualizzato un messaggio di errore simile al seguente:
| Segui questi passaggi per risolvere il problema:
|
Risorse correlate
Informazioni aggiuntive
Ecco un esempio di struttura di repository per la distribuzione di applicazioni tenant:
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