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à.
Questo tutorial ti aiuta a creare un'azione di distribuzione CodePipeline che distribuisce il codice in un cluster che hai configurato in Amazon EKS.
L'azione EKS supporta cluster EKS pubblici e privati. I cluster privati sono il tipo consigliato da EKS; tuttavia, entrambi i tipi sono supportati.
Nota
Come parte della creazione di una pipeline nella console, per gli artefatti verrà utilizzato un bucket di artefatti S3. CodePipeline (Questo è diverso dal bucket utilizzato per un'azione sorgente S3.) Se il bucket di artefatti S3 si trova in un account diverso da quello della pipeline, assicurati che il bucket di artefatti S3 sia di proprietà di utenti sicuri e affidabili. Account AWS
Nota
Questa azione utilizza l'elaborazione gestita per eseguire comandi in un ambiente di CodePipeline compilazione. CodeBuild L'esecuzione dell'azione dei comandi comporterà costi separati in. AWS CodeBuild
Nota
L'azione di EKS
distribuzione è disponibile solo per le pipeline di tipo V2.
Prerequisiti
Per utilizzare questo tutorial per creare la pipeline di distribuzione continua, è necessario disporre di alcune risorse. Ecco di cosa hai bisogno prima di iniziare:
Nota
Tutte queste risorse devono essere create all'interno della stessa regione. AWS
-
Un repository per il controllo del codice sorgente (utilizzato in questo tutorial GitHub) in cui aggiungere un
deployment.yaml
file di esempio. -
È necessario utilizzare un ruolo di CodePipeline servizio esistente che aggiornerai con le autorizzazioni per questa azione utilizzando Fase 3: Aggiornare la politica del ruolo di servizio in IAM CodePipeline di seguito le autorizzazioni per questa azione. Le autorizzazioni necessarie dipendono dal tipo di cluster creato. Per ulteriori informazioni, consulta Autorizzazioni relative alla politica del ruolo di servizio.
-
Un'immagine funzionante e un tag del repository che hai inviato a ECR o al tuo archivio di immagini.
Dopo aver soddisfatto questi prerequisiti, puoi procedere con il tutorial e creare la pipeline di distribuzione continua.
Fase 1: (Facoltativo) Creare un cluster in Amazon EKS
Puoi scegliere di creare un cluster EKS con un endpoint pubblico o privato.
Nei passaggi seguenti, crei un cluster pubblico o privato in EKS. Questo passaggio è facoltativo se il cluster è già stato creato.
Crea un cluster pubblico in Amazon EKS
In questo passaggio, crei un cluster in EKS.
Crea un cluster pubblico
-
Apri la console EKS, quindi scegli Crea cluster.
-
In Nome, assegna un nome al cluster. Scegli Next (Successivo).
-
Scegli Create (Crea) .
Crea un cluster privato in Amazon EKS
Se scegli di creare un cluster con un endpoint privato, assicurati di collegare solo le sottoreti private e assicurati che abbiano una connessione Internet.
Segui i prossimi cinque passaggi secondari per creare un cluster con un endpoint privato.
Crea un VPC nella console
-
Apri la console VPC, quindi scegli Crea VPC.
-
In Impostazioni VPC, scegli VPC e altro.
-
Scegli di creare una sottorete pubblica e 4 sottoreti private. Seleziona Crea VPC.
-
Nella pagina delle sottoreti, scegli Privato.
Determina le sottoreti private nel tuo VPC
-
Accedi al tuo VPC e scegli l'ID VPC per aprire la pagina dei dettagli del VPC.
-
Nella pagina dei dettagli del VPC, scegli la scheda Mappa delle risorse.
-
Visualizza il diagramma e prendi nota delle tue sottoreti private. Le sottoreti vengono visualizzate con etichette per indicare lo stato pubblico o privato e ogni sottorete è mappata su una tabella di routing.
Tieni presente che un cluster privato avrà tutte le sottoreti private.
-
Crea una sottorete pubblica per ospitare il gateway NAT. È possibile allegare un solo gateway Internet a un VPC alla volta.
Crea un gateway NAT nella sottorete pubblica
-
Nella sottorete pubblica, create un gateway NAT. Vai alla console VPC, quindi scegli Gateway Internet. Scegliere Crea gateway Internet.
-
In Nome, inserisci un nome per il tuo gateway Internet. Scegliere Crea gateway Internet.
Aggiorna la tabella di routing per la sottorete privata per indirizzare il traffico verso il gateway NAT.
Aggiungi il gateway NAT alle tabelle di routing per le sottoreti private
-
Vai alla console VPC, quindi scegli Subnet.
-
Per ogni sottorete privata, selezionala, quindi scegli la tabella di routing per quella sottorete nella pagina dei dettagli, scegli Modifica tabella di routing.
-
Aggiorna la tabella di routing per la sottorete privata per indirizzare il traffico Internet verso il gateway NAT. Scegli Aggiungi route. Scegli il gateway NAT tra le opzioni da aggiungere. Scegli il gateway Internet che hai creato.
-
Per la sottorete pubblica, crea una tabella di routing personalizzata. Verifica che la lista di controllo degli accessi alla rete (ACL) per la sottorete pubblica consenta il traffico in entrata dalla sottorete privata.
-
Scegli Save changes (Salva modifiche).
In questo passaggio, crei un cluster in EKS.
Crea un cluster privato
-
Apri la console EKS, quindi scegli Crea cluster.
-
In Nome, assegna un nome al cluster. Scegli Next (Successivo).
-
Specificate il VPC e altre informazioni di configurazione. Scegli Create (Crea) .
Il tuo cluster EKS può essere un cluster pubblico o privato. Questo passaggio è per i cluster che hanno SOLO un endpoint privato. Assicurati che il tuo cluster sia privato.
Fase 2: configura il tuo cluster privato in Amazon EKS
Questo passaggio è applicabile solo se hai creato un cluster privato. Questo passaggio è per i cluster che hanno SOLO un endpoint privato.
Configura il tuo cluster
-
Collega le sottoreti private solo nel cluster EKS nella scheda Rete. Collega le sottoreti private acquisite nella sezione Determina le sottoreti private nel tuo VPC sotto. Fase 1: (Facoltativo) Creare un cluster in Amazon EKS
-
Assicurati che le sottoreti private abbiano accesso a Internet poiché CodePipeline archivia e recupera gli artefatti dal bucket di artefatti S3 per la tua pipeline.
Fase 3: Aggiornare la politica del ruolo di servizio in IAM CodePipeline
In questo passaggio, aggiornerai un ruolo di CodePipeline servizio esistentecp-service-role
, ad esempio con le autorizzazioni richieste per connetterti CodePipeline al tuo cluster. Se non disponi di un ruolo esistente, creane uno nuovo.
Aggiorna il tuo ruolo di CodePipeline servizio con i seguenti passaggi.
Per aggiornare la politica CodePipeline del ruolo di servizio
-
Apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/
). -
Dal pannello di controllo della console, scegli Roles (Ruoli).
-
Cerca il tuo ruolo CodePipeline di servizio, ad esempio
cp-service-role
. -
Aggiungi una nuova politica in linea.
-
Nell'editor delle politiche, inserisci quanto segue.
-
Per un cluster pubblico, aggiungi le seguenti autorizzazioni.
{ "Statement": [ { "Sid": "EksClusterPolicy", "Effect": "Allow", "Action": "eks:DescribeCluster", "Resource": "arn:aws:eks:us-east-1:
ACCOUNT-ID
:cluster/my-cluster" }, { "Sid": "EksVpcClusterPolicy", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": [ "*" ] } ], "Version": "2012-10-17" } -
Per un cluster privato, aggiungi le seguenti autorizzazioni. I cluster privati richiederanno autorizzazioni aggiuntive per il tuo VPC, se applicabile.
{ "Statement": [ { "Sid": "EksClusterPolicy", "Effect": "Allow", "Action": "eks:DescribeCluster", "Resource": "arn:aws:eks:us-east-1:
ACCOUNT-ID
:cluster/my-cluster" }, { "Sid": "EksVpcClusterPolicy", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "ec2:CreateNetworkInterface", "Resource": "*", "Condition": { "StringEqualsIfExists": { "ec2:Subnet": [ "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-03ebd65daeEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0e377f6036EXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0db658ba1cEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0db658ba1cEXAMPLE" ] } } }, { "Effect": "Allow", "Action": "ec2:CreateNetworkInterfacePermission", "Resource": "*", "Condition": { "ArnEquals": { "ec2:Subnet": [ "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-03ebd65daeEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0e377f6036EXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0db658ba1cEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0db658ba1cEXAMPLE" ] } } }, { "Effect": "Allow", "Action": "ec2:DeleteNetworkInterface", "Resource": "*", "Condition": { "StringEqualsIfExists": { "ec2:Subnet": [ "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-03ebd65daeEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0e377f6036EXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0db658ba1cEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0db658ba1cEXAMPLE" ] } } } ], "Version": "2012-10-17" }
-
-
Scegli Aggiorna policy.
Fase 4: Creare una voce di accesso per il ruolo di servizio CodePipeline
In questo passaggio, si crea una voce di accesso nel cluster che aggiungerà il ruolo di CodePipeline servizio aggiornato nel passaggio 3, insieme a una politica di accesso gestito.
-
Apri la console EKS e accedi al tuo cluster.
-
Scegli la scheda Accesso.
-
In Voci di accesso IAM, scegli Crea voce di accesso.
-
Nell'ARN principale IAM, inserisci il ruolo che hai appena aggiornato per l'azione, ad esempio.
cp-service-role
Scegli Next (Successivo). -
Nella pagina Passaggio 2: Aggiungi politica di accesso, in Nome della politica, scegli la politica gestita per l'accesso, ad
AmazonEKSClusterAdminPolicy
esempio. Scegli Aggiungi policy. Scegli Next (Successivo).Nota
Questa è la politica utilizzata dall' CodePipeline azione per comunicare con Kubernetes. Come procedura consigliata, per definire le autorizzazioni della policy con il minimo privilegio rispetto alla politica amministrativa, allega invece di una policy personalizzata.
-
Nella pagina di revisione, scegli Crea.
Passo 5: Crea un archivio di sorgenti e aggiungi i file di helm chart
configurazione
In questo passaggio, crei un file di configurazione appropriato per la tua azione (file manifest di Kubernetes o grafico Helm) e lo memorizzi nel tuo repository di origine. Usa il file appropriato per la tua configurazione. Per ulteriori informazioni, consulta https://kubernetes.
-
Per Kubernetes, usa un file manifest.
-
Per Helm, usa un grafico Helm.
-
Crea o usa un repository esistente GitHub .
-
Crea una nuova struttura nel tuo repository per i file del grafico Helm, come mostrato nell'esempio seguente.
mychart |-- Chart.yaml |-- charts |-- templates | |-- NOTES.txt | |-- _helpers.tpl | |-- deployment.yaml | |-- ingress.yaml | `-- service.yaml `-- values.yaml
-
Aggiungi il file al livello principale del tuo repository.
Fase 6: Creazione della pipeline
Usa la CodePipeline procedura guidata per creare le fasi della pipeline e connettere il tuo repository di origine.
Creazione della pipeline
Apri la console all' CodePipeline indirizzo. https://console.aws.amazon.com/codepipeline/
-
Nella pagina Welcome (Benvenuto), pagina Getting started (Nozioni di base) o pagina Pipelines (Pipeline), scegliere Create pipeline (Crea pipeline).
-
Nella pagina Passaggio 1: Scegli l'opzione di creazione, in Opzioni di creazione, scegli l'opzione Crea pipeline personalizzata. Scegli Next (Successivo).
-
Nel Passaggio 2: Scegliete le impostazioni della pipeline, in Nome della tubazione, immettete.
MyEKSPipeline
-
CodePipeline fornisce condotte di tipo V1 e V2, che differiscono per caratteristiche e prezzo. Il tipo V2 è l'unico tipo che puoi scegliere nella console. Per ulteriori informazioni, consulta i tipi di pipeline. Per informazioni sui prezzi di CodePipeline, consulta la sezione Prezzi
. -
In Ruolo di servizio, scegli il ruolo di servizio che hai aggiornato nella Fase 3.
-
Lasciare i valori predefiniti delle impostazioni in Advanced settings (Impostazioni avanzate), quindi scegliere Next (Successivo).
-
Nella pagina Passaggio 3: Aggiungi fase di origine, per Provider di origine, scegli di creare una connessione al tuo GitHub repository.
-
Nel Passaggio 4: Aggiungi la pagina della fase di compilazione, scegli Salta.
-
Nella pagina Fase 5: Aggiungere la fase di distribuzione, scegli Amazon EKS.
-
In Tipo di configurazione Deploy, scegli Helm.
-
In Helm chart location, inserisci il nome della release, ad esempio.
my-release
Per Helm chart location, inserisci il percorso per i file della mappa di Helm, ad esempio.mychart
-
Scegli Next (Successivo).
-
-
Nella pagina Step 6: Review (Fase 6: esamina), esamina la configurazione della pipeline, quindi seleziona Create pipeline (Crea pipeline) per creare la pipeline.
-
Dopo che la pipeline è stata eseguita correttamente, scegli Visualizza dettagli per visualizzare i registri dell'azione e visualizzare l'output dell'azione.