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à.
Distribuisci carichi di lavoro dalle DevOps pipeline di Azure ai cluster Amazon EKS privati
Mahendra Revanasiddappa, Amazon Web Services
Riepilogo
Questo modello dimostra come implementare l'integrazione continua e la distribuzione continua (CI/CD) dalle DevOps pipeline di Azure ai cluster privati di Amazon Elastic Kubernetes Service (Amazon EKS). Risolve una sfida critica affrontata dalle organizzazioni che stanno migliorando il proprio livello di sicurezza passando a endpoint server API privati per i propri cluster Amazon EKS.
Un endpoint pubblico espone il server dell'API Kubernetes direttamente a Internet, creando una superficie di attacco più ampia che i malintenzionati potrebbero potenzialmente prendere di mira. Passando a un endpoint privato, l'accesso al piano di controllo del cluster è limitato all'interno del cloud privato virtuale (VPC) del cliente.
Sebbene la transizione di un cluster Amazon EKS a un endpoint API privato migliori in modo significativo la sicurezza, introduce sfide di connettività per piattaforme esterne CI/CD come Azure. DevOps L'endpoint privato è accessibile solo dall'interno del VPC o dalle reti peer del cluster. Pertanto, DevOps gli agenti Azure standard ospitati da Microsoft, che operano all'esterno della rete AWS privata, non possono raggiungere direttamente il server dell'API Kubernetes. Ciò interrompe i flussi di lavoro di distribuzione tipici che si basano su strumenti come kubectl o Helm in esecuzione su questi agenti perché non riescono a stabilire una connessione al cluster.
Per ovviare a questo problema, questo modello mostra un approccio efficiente utilizzando DevOps agenti di Azure ospitati autonomamente all'interno di cluster Amazon EKS privati. Questa soluzione offre un'ottimizzazione dei costi, un'efficienza operativa e una scalabilità superiori, preservando al contempo i requisiti di sicurezza. Questo approccio è particolarmente vantaggioso per le aziende che cercano di semplificare i DevOps processi multi-cloud senza compromettere le prestazioni o la sicurezza.
Prerequisiti e limitazioni
Prerequisiti
Un attivo. Account AWS
AWS Command Line Interface (AWS CLI) installata la versione 2.13.17 o successiva.
Creazione di un cluster Amazon EKS privato versione 1.24 o successiva, con autorizzazioni per creare namespace, segreti e distribuzioni.
Nodi di lavoro in un cluster Amazon EKS con connettività in uscita a Internet in modo che l' DevOps agente di Azure in esecuzione su di essi possa connettersi al pool di agenti di Azure DevOps .
GitHub account creato.
La AWS Toolkit for Azure DevOps versione 1.15 o successiva installata per il DevOps progetto Azure descritto nel punto precedente. Per istruzioni di installazione, consulta AWS Toolkit for Azure DevOps
Visual Studio Marketplace.
Limitazioni
Alcuni Servizi AWS non sono disponibili in tutti Regioni AWS. Per la disponibilità regionale, vedi AWS Servizi per regione
. Per endpoint specifici, consulta Endpoints and quotas del servizio e scegli il link relativo al servizio.
Architettura
Questo modello crea quanto segue:
Repository Amazon ECR - Il repository Amazon Elastic Container Registry (Amazon ECR) archivia l'immagine Docker con l'agente DevOps Azure e l'app di esempio distribuita.
Pool di DevOps agenti di Azure: un pool di agenti con DevOps hosting autonomo di Azure registra l'agente in esecuzione sul cluster privato Amazon EKS.
Ruolo IAM: un ruolo AWS Identity and Access Management (IAM) per la connessione al servizio Azure per fornire l'accesso richiesto all'agente in esecuzione su un cluster Amazon EKS privato.
Connessione DevOps al servizio Azure: una connessione di servizio in un DevOps account Azure per usare il ruolo IAM che fornisce l'accesso richiesto per l'accesso ai job della pipeline. Servizi AWS
Il diagramma seguente mostra l'architettura di distribuzione di un DevOps agente di Azure con hosting autonomo su un cluster Amazon EKS privato e la distribuzione di un'applicazione di esempio sullo stesso cluster.

Il diagramma mostra il flusso di lavoro seguente:
Implementa un DevOps agente di Azure ospitato autonomamente come distribuzione all'interno di un cluster Amazon EKS.
Un DevOps agente di Azure si connette al pool di agenti su un DevOps account Azure usando un token di accesso personale (PAT) per l'autenticazione.
Azure Pipelines configura una pipeline da distribuire usando il codice di un repository. GitHub
La pipeline viene eseguita sull'agente dal pool di agenti configurato nella configurazione della pipeline. L' DevOps agente di Azure ottiene le informazioni sul lavoro della pipeline effettuando costantemente il polling sull'account Azure. DevOps
L' DevOps agente di Azure crea un'immagine Docker come parte del processo della pipeline e la invia al repository Amazon ECR.
L' DevOps agente di Azure distribuisce l'applicazione di esempio su un cluster Amazon EKS privato in uno spazio dei nomi chiamato.
webapp
Strumenti
Strumenti
Amazon Elastic Container Registry (Amazon ECR) è un servizio di registro di immagini di container gestito sicuro, scalabile e affidabile.
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 Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
Altri strumenti
Archivio di codice
Il codice per questo pattern è disponibile nel repository GitHub deploy-kubernetes-resources-to- amazon-eks-using-azure -devops
.
Best practice
Per Amazon EKS, consulta la Amazon EKS Best Practice Guide.
Segui il principio del privilegio minimo e concedi le autorizzazioni minime necessarie per eseguire un'attività. Per ulteriori informazioni, consulta le best practice relative alla concessione dei privilegi minimi e alla sicurezza nella documentazione IAM.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Trova il GUID dell' DevOps organizzazione di Azure. | Accedi al tuo DevOps account Azure, quindi usa il seguente URL per trovare il GUID dell'organizzazione: | AWS DevOps |
Configura un IdP in. Account AWS | Per configurare un provider di identità (IdP) Account AWS per una connessione al servizio Azure, usa i seguenti passaggi:
Per altri dettagli, vedi Come eseguire la federazione AWS da Azure usando DevOps OpenID Connect | AWS DevOps |
Crea una policy IAM in Account AWS. | Per creare una policy IAM che fornisca le autorizzazioni richieste al ruolo IAM usato dalla DevOps pipeline di Azure, usa i seguenti passaggi:
| AWS DevOps |
Crea un ruolo IAM in Account AWS. | Per configurare un ruolo IAM nella Account AWS connessione al servizio Azure, usa i seguenti passaggi:
Nella politica, fornisci le tue informazioni per i seguenti segnaposto:
| AWS DevOps |
Crea una connessione di servizio nell' DevOps account Azure. | Per configurare una connessione al servizio Azure, usa i seguenti passaggi:
Per ulteriori dettagli, consulta Creare una connessione di servizio | AWS DevOps |
Aggiungi il ruolo IAM al file di configurazione di Amazon EKS. | Il ruolo IAM deve disporre delle autorizzazioni necessarie per eseguire le operazioni richieste sul cluster Amazon EKS. Poiché si tratta di un ruolo di pipeline, il ruolo IAM deve essere in grado di gestire quasi tutti i tipi di risorse sul cluster. Pertanto, l'autorizzazione Per aggiungere la configurazione richiesta all'
Sostituiscilo Per ulteriori informazioni, consulta Come funziona Amazon EKS con IAM nella documentazione di Amazon EKS. | AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un pool di agenti ospitati autonomamente. | Per configurare un pool di agenti ospitati autonomamente nell' DevOps account Azure, usa i seguenti passaggi:
Per ulteriori dettagli, consulta Creare e gestire pool di agenti |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un repository Amazon ECR. | Le immagini Docker utilizzate per distribuire l' DevOps agente Azure e l'applicazione di esempio (
Per ulteriori dettagli, consulta Creazione di un repository privato Amazon ECR per archiviare immagini nella documentazione di Amazon ECR. | AWS DevOps |
Crea un Dockerfile per creare l'agente Azure DevOps . | Crea un Dockerfile per creare l'immagine Docker su cui è installato l'agente Azure. DevOps Archivia il seguente contenuto in un file denominato:
| AWS DevOps |
Crea script per l' DevOps agente di Azure. | Per creare lo
| AWS DevOps |
Crea un'immagine Docker con l'agente Azure. DevOps | Per creare un'immagine Docker per installare l' DevOps agente di Azure, usa il Dockerfile che hai creato in precedenza per creare l'immagine. Nella stessa directory in cui è archiviato il Dockerfile, esegui i seguenti comandi:
Sostituisci | AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Genera un token di accesso personale di Azure. | L'agente in esecuzione sul cluster privato Amazon EKS richiede un token di accesso personale (PAT) per potersi autenticare con l'account Azure DevOps . Per generare un PAT, usa i seguenti passaggi:
Per ulteriori dettagli, consulta Registrare un agente utilizzando un token di accesso personale (PAT) | AWS DevOps |
Utilizza il file manifest di Kubernetes per la distribuzione degli agenti. | Per distribuire l' DevOps agente di Azure sul cluster privato Amazon EKS, copia il seguente file manifest e archivia il file come:
Sostituisci | AWS DevOps |
Implementa l'agente sul cluster privato Amazon EKS. | Per distribuire l'agente Azure Devops sul cluster privato Amazon EKS, usa il seguente comando:
| AWS DevOps |
Verifica che l'agente sia in esecuzione. | Per verificare che l' DevOps agente di Azure sia in esecuzione, usa il seguente comando:
L'output previsto dovrebbe essere simile al seguente:
Assicurati che la | AWS DevOps |
Verifica che l'agente sia registrato nel pool di DevOps agenti di Azure. | Per verificare che l'agente sia distribuito nel cluster privato Amazon EKS e sia registrato nel pool di agenti
Dovresti vedere un agente elencato con lo stato Online e il nome dell'agente dovrebbe iniziare con azure-pipelines-agent-eks -*. | AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Inserisci il repository di applicazioni di esempio nel tuo GitHub account. | Effettua il fork del seguente repository AWS di esempi sul tuo account: GitHub https://github.com/aws-samples/deploy-kubernetes-resources-to- -devops amazon-eks-using-azure | AWS DevOps |
Creare una pipeline. | Per creare una pipeline nel tuo DevOps account Azure, usa i seguenti passaggi:
| AWS DevOps |
Verifica che l'applicazione di esempio sia stata distribuita. | Una volta completata la pipeline, verifica la corretta implementazione dell'applicazione di esempio controllando sia il repository Amazon ECR che il cluster Amazon EKS. Per verificare gli artefatti nel repository Amazon ECR, utilizza i seguenti passaggi:
Ad esempio Per verificare la distribuzione sul cluster Amazon EKS privato nello spazio dei nomi
L'output previsto è il seguente:
Nota: se questa è la prima esecuzione della pipeline, potrebbe essere necessario autorizzare la connessione al servizio e il pool di agenti. Cerca le richieste di autorizzazione nell'interfaccia della DevOps pipeline di Azure e approvale per procedere. | AWS DevOps |
Risoluzione dei problemi
Problema | Soluzione |
---|---|
La pipeline fallisce quando il nome del repository Amazon ECR non corrisponde | L'applicazione di esempio si aspetta che il nome del repository Amazon ECR corrisponda al Per risolvere questo problema, rinomina il tuo repository Amazon ECR o aggiorna
|
Errore: cluster Kubernetes irraggiungibile: il server ha richiesto al client di fornire le credenziali | Se riscontri questo errore nella fase «Pull and Deploy Helm Chart» nella pipeline di Azure, la causa principale in genere deriva da una configurazione errata del ruolo IAM nel tuo cluster Amazon EKS. Per risolvere questo problema, controlla quanto segue:
|
Risorse correlate
AWS Blog
Servizi AWS documentazione
Documentazione Microsoft