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à.
Tutorial: distribuisci un'applicazione su Amazon EKS
In questo tutorial, imparerai come distribuire un'applicazione containerizzata in Amazon Elastic Kubernetes Service utilizzando un flusso di lavoro AmazonEKS, CodeCatalyst Amazon e alcuni altri servizi. AWS L'applicazione distribuita è un semplice «Hello, World!» sito web costruito su un'immagine Docker del server web Apache. Il tutorial illustra il lavoro di preparazione richiesto, ad esempio la configurazione di una macchina di sviluppo e di un EKS cluster Amazon, quindi descrive come creare un flusso di lavoro per creare l'applicazione e distribuirla nel cluster.
Una volta completata la distribuzione iniziale, il tutorial ti spiega come apportare una modifica all'origine dell'applicazione. Questa modifica fa sì che una nuova immagine Docker venga creata e inserita nel tuo archivio di immagini Docker con nuove informazioni di revisione. La nuova revisione dell'immagine Docker viene quindi distribuita in Amazon. EKS
Suggerimento
Invece di seguire questo tutorial, puoi utilizzare un blueprint che esegua una EKS configurazione completa di Amazon per te. Dovrai utilizzare il modello EKSApp Deployment. Per ulteriori informazioni, consulta Creare un progetto con un blueprint.
Argomenti
- Prerequisiti
- Passaggio 1: configura la tua macchina di sviluppo
- Fase 2: Creare un EKS cluster Amazon
- Fase 3: Creare un archivio di ECR immagini Amazon
- Fase 4: Aggiungere i file sorgente
- Fase 5: Creare AWS ruoli
- Fase 6: Aggiungere AWS ruoli a CodeCatalyst
- Fase 7: Aggiornare il ConfigMap
- Passaggio 8: creare ed eseguire un flusso di lavoro
- Passaggio 9: apporta una modifica ai file sorgente
- Eliminazione
Prerequisiti
Prima di iniziare questo tutorial:
-
È necessario uno CodeCatalyst spazio Amazon con un AWS account connesso. Per ulteriori informazioni, consulta Creare uno spazio.
-
Nel tuo spazio, hai bisogno di un progetto vuoto chiamato:
codecatalyst-eks-project
Usa l'opzione Inizia da zero per creare questo progetto.
Per ulteriori informazioni, consulta Creare un progetto vuoto in Amazon CodeCatalyst.
-
Nel tuo progetto, hai bisogno di un repository di CodeCatalyst sorgenti vuoto chiamato:
codecatalyst-eks-source-repository
Per ulteriori informazioni, consulta Archivia e collabora sul codice con i repository di sorgenti in CodeCatalyst.
-
Nel tuo progetto, hai bisogno di un ambiente CodeCatalyst CI/CD (non un ambiente di sviluppo) chiamato:
codecatalyst-eks-environment
Configura questo ambiente come segue:
-
Scegli qualsiasi tipo, ad esempio Non di produzione.
-
Connect il tuo AWS account.
-
Per il IAMruolo predefinito, scegli un ruolo qualsiasi. Specificherai un ruolo diverso in seguito.
Per ulteriori informazioni, consulta Implementazione in e Account AWS VPCs.
-
Passaggio 1: configura la tua macchina di sviluppo
Il primo passo di questo tutorial è configurare una macchina di sviluppo con alcuni strumenti che utilizzerai durante questo tutorial. Questi strumenti sono:
-
l'
eksctl
utilità: per la creazione di cluster -
l'
kubectl
utilità: un prerequisito pereksctl
-
il AWS CLI — anche un prerequisito per
eksctl
Puoi installare questi strumenti sulla tua macchina di sviluppo esistente, se ne hai una, oppure puoi utilizzare un ambiente di CodeCatalyst sviluppo, basato su cloud. Il vantaggio di un ambiente di CodeCatalyst sviluppo è che è facile da avviare e smontare ed è integrato con altri CodeCatalyst servizi, consentendoti di completare questo tutorial in meno passaggi.
Questo tutorial presuppone che utilizzerai un ambiente di CodeCatalyst sviluppo.
Le seguenti istruzioni descrivono un modo rapido per avviare un ambiente di CodeCatalyst sviluppo e configurarlo con gli strumenti richiesti, ma se desideri istruzioni dettagliate, consulta:
-
Creazione di un ambiente di sviluppo in questa guida.
-
Installazione di kubectl nella Amazon EKS User Guide.
-
Installazione o aggiornamento di eksctl nella Amazon User Guide. EKS
-
Installazione o aggiornamento della versione più recente di AWS CLI nella Guida per l'utente.AWS Command Line Interface
Per avviare un ambiente di sviluppo
Apri la CodeCatalyst console all'indirizzo https://codecatalyst.aws/
. -
Vai al tuo progetto,
codecatalyst-eks-project
. -
Nel riquadro di navigazione, scegli Codice, quindi scegli Archivi di origine.
-
Scegli il nome del tuo repository di origine,.
codecatalyst-eks-source-repository
-
In alto scegli Create Dev Environment, quindi scegli AWS Cloud9 (nel browser).
-
Assicurati che le opzioni Work in existing branch e main siano selezionate, quindi scegli Crea.
Il tuo ambiente di sviluppo viene avviato in una nuova scheda del browser e il tuo repository (
codecatalyst-eks-source-repository
) viene clonato al suo interno.
Per installare e configurare kubectl
-
Nel terminale Dev Environment, inserisci:
curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.18.9/2020-11-02/bin/linux/amd64/kubectl
-
Inserisci:
chmod +x ./kubectl
-
Inserisci:
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
-
Inserisci:
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
-
Inserisci:
kubectl version --short --client
-
Verifica che venga visualizzata una versione.
Ora hai installato
kubectl
.
Per installare e configurare eksctl
Nota
eksctl
non è strettamente necessario perché è possibile kubectl
utilizzarlo al suo posto. Tuttavia, eksctl
ha il vantaggio di automatizzare gran parte della configurazione del cluster ed è quindi lo strumento consigliato per questo tutorial.
-
Nel terminale Dev Environment, inserisci:
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
-
Inserisci:
sudo cp /tmp/eksctl /usr/bin
-
Inserisci:
eksctl version
-
Verifica che venga visualizzata una versione.
Ora hai installato
eksctl
.
Per verificare che AWS CLI sia installato
-
Nel terminale Dev Environment, inserisci:
aws --version
-
Verificate che appaia una versione per verificare che AWS CLI sia installata.
Completa le procedure rimanenti per configurarlo AWS CLI con le autorizzazioni necessarie per l'accesso AWS.
Per configurare il AWS CLI
È necessario configurarlo AWS CLI con chiavi di accesso e un token di sessione per consentirgli di accedere ai AWS servizi. Le seguenti istruzioni forniscono un modo rapido per configurare le chiavi e il token, ma se desideri istruzioni dettagliate, consulta Configurazione del AWS CLI nella Guida per l'AWS Command Line Interface utente.
-
Crea un utente IAM dell'Identity Center, come segue:
Accedi a AWS Management Console e apri la AWS IAM Identity Center console all'indirizzo https://console.aws.amazon.com/singlesignon/
. (Potresti dover scegliere Abilita se non hai mai effettuato l'accesso a IAM Identity Center prima.)
Nota
Assicurati di accedere utilizzando Account AWS il dispositivo connesso al tuo CodeCatalyst spazio. Puoi verificare quale account è connesso accedendo al tuo spazio e scegliendo la scheda AWSAccount. Per ulteriori informazioni, consulta Creare uno spazio.
-
Nel riquadro di navigazione, scegli Users (Utenti), quindi scegli Add user (Aggiungi utente).
-
In Nome utente, inserisci:
codecatalyst-eks-user
-
In Password, scegli Genera una password monouso da condividere con questo utente.
-
In Indirizzo e-mail e Conferma indirizzo e-mail, inserisci un indirizzo e-mail che non sia già presente in IAM Identity Center.
-
In Nome, inserisci:
codecatalyst-eks-user
-
In Cognome, inserisci:
codecatalyst-eks-user
-
In Nome visualizzato, mantieni:
codecatalyst-eks-user codecatalyst-eks-user
-
Scegli Next (Successivo).
-
Nella pagina Aggiungi utente ai gruppi, scegli Avanti.
-
Nella pagina Rivedi e aggiungi utente, esamina le informazioni e scegli Aggiungi utente.
Viene visualizzata una finestra di dialogo con password monouso.
-
Scegli Copia, quindi incolla le informazioni di accesso in un file di testo. Le informazioni di accesso sono costituite dal portale di AWS accessoURL, un nome utente e una password monouso.
-
Scegli Chiudi.
-
Crea un set di autorizzazioni, come segue:
-
Nel riquadro di navigazione, scegli Set di autorizzazioni, quindi scegli Crea set di autorizzazioni.
-
Scegli Set di autorizzazioni predefinito, quindi seleziona AdministratorAccess. Questa politica fornisce autorizzazioni complete a tutti. Servizi AWS
-
Scegli Next (Successivo).
-
In Nome del set di autorizzazioni, rimuovi
AdministratorAccess
e inserisci:codecatalyst-eks-permission-set
-
Scegli Next (Successivo).
-
Nella pagina Rivedi e crea, esamina le informazioni e scegli Crea.
-
-
Assegna il set di autorizzazioni a
codecatalyst-eks-user
, come segue:-
Nel riquadro di navigazione, scegli Account AWS, quindi seleziona la casella di controllo accanto a Account AWS quella a cui hai attualmente effettuato l'accesso.
-
Scegli Assegna utenti o gruppi.
-
Scegli la scheda Users (Utenti);
-
Seleziona la casella di controllo accanto a.
codecatalyst-eks-user
-
Scegli Next (Successivo).
-
Seleziona la casella di controllo accanto a
codecatalyst-eks-permission-set
. -
Scegli Next (Successivo).
-
Controlla le informazioni e scegli Invia.
Ora le hai assegnate
codecatalyst-eks-user
ecodecatalyst-eks-permission-set
Account AWS le hai assegnate insieme.
-
-
Le chiavi
codecatalyst-eks-user
di accesso e il token di sessione di Ottain, come segue:-
Assicurati di avere il portale di AWS accesso URL e il nome utente e la password monouso per
codecatalyst-eks-user
. Prima avresti dovuto copiare queste informazioni in un editor di testo.Nota
Se non disponi di queste informazioni, vai alla pagina dei
codecatalyst-eks-user
dettagli in IAM Identity Center, scegli Reimposta password, Genera una password monouso [...] e Reimposta nuovamente la password per visualizzare le informazioni sullo schermo. -
Esci da AWS.
-
Incolla il portale di AWS accesso URL nella barra degli indirizzi del browser.
-
Accedi con:
-
Nome utente:
codecatalyst-eks-user
-
Password:
one-time-password
-
-
In Imposta nuova password, inserisci una nuova password e scegli Imposta nuova password.
Sullo schermo viene visualizzata una Account AWScasella.
-
Scegli Account AWS, quindi scegli il nome Account AWS a cui hai assegnato l'
codecatalyst-eks-user
utente e il set di autorizzazioni. -
Accanto
codecatalyst-eks-permission-set
, scegli Riga di comando o Accesso programmatico. -
Copia i comandi al centro della pagina. Sono simili ai seguenti:
export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" export AWS_SESSION_TOKEN="
session-token
"... dove
session-token
è una stringa casuale lunga.
-
-
Aggiungere le chiavi di accesso e il token di sessione a AWS CLI, come segue:
-
Tornate al vostro ambiente di CodeCatalyst sviluppo.
-
Al prompt del terminale, incolla i comandi che hai copiato. Premere Invio.
Ora lo hai configurato AWS CLI con chiavi di accesso e un token di sessione. Ora puoi AWS CLI utilizzarlo per completare le attività richieste da questo tutorial.
Importante
Se in qualsiasi momento durante questo tutorial visualizzi messaggi simili a:
Unable to locate credentials. You can configure credentials by running "aws configure".
O:
ExpiredToken: The security token included in the request is expired
... è perché la tua AWS CLI sessione è scaduta. In questo caso, non eseguire il
aws configure
comando. Utilizzate invece le istruzioni riportate nel passaggio 4 di questa procedura, che inizia con,Obtain codecatalyst-eks-user's access key and session token
per aggiornare la sessione.
-
Fase 2: Creare un EKS cluster Amazon
In questa sezione, crei un cluster in AmazonEKS. Le istruzioni riportate di seguito descrivono un modo rapido per creare il cluster utilizzandoeksctl
, ma se desideri istruzioni dettagliate, consulta:
-
Guida introduttiva a eksctl nella Amazon EKS User Guide
oppure
-
Guida introduttiva alla console e AWS CLI nella Amazon EKS User Guide (questo argomento fornisce
kubectl
istruzioni per la creazione del cluster)
Nota
I cluster privati non sono supportati dall' CodeCatalyst integrazione con AmazonEKS.
Prima di iniziare
Assicurati di aver completato le seguenti attività sulla tua macchina di sviluppo:
-
Installata l'
eksctl
utilità. -
Installata l'
kubectl
utilità. -
L'ha installata AWS CLI e configurata con chiavi di accesso e un token di sessione.
Per informazioni su come completare queste attività, vederePassaggio 1: configura la tua macchina di sviluppo.
Come creare un cluster
Importante
Non utilizzare l'interfaccia utente del EKS servizio Amazon per creare il cluster perché il cluster non verrà configurato correttamente. Utilizza l'eksctl
utilità, come descritto nei passaggi seguenti.
-
Vai al tuo ambiente di sviluppo.
-
Crea un cluster e dei nodi:
eksctl create cluster --name
codecatalyst-eks-cluster
--regionus-west-2
Dove:
-
codecatalyst-eks-cluster
viene sostituito con il nome che vuoi assegnare al cluster. -
us-west-2
viene sostituito dalla tua regione.
Dopo 10-20 minuti, viene visualizzato un messaggio simile al seguente:
EKS cluster "codecatalyst-eks-cluster" in "us-west-2" region is ready
Nota
Vedrai più
waiting for CloudFormation stack
messaggi durante la AWS creazione del cluster. Si tratta di un comportamento normale. -
-
Verifica che il cluster sia stato creato correttamente:
kubectl cluster-info
Verrà visualizzato un messaggio simile al seguente, che indica l'avvenuta creazione del cluster:
Kubernetes master is running at https://
long-string
.gr7.us-west-2.eks.amazonaws.com CoreDNS is running at https://long-string
.gr7.us-west-2.eks.amazonaws.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Fase 3: Creare un archivio di ECR immagini Amazon
In questa sezione, crei un repository di immagini privato in Amazon Elastic Container Registry (AmazonECR). Questo repository memorizza l'immagine Docker per il tutorial.
Per ulteriori informazioni su AmazonECR, consulta la Amazon Elastic Container Registry User Guide.
Per creare un archivio di immagini in Amazon ECR
-
Vai al tuo ambiente di sviluppo.
-
Crea un repository vuoto in AmazonECR:
aws ecr create-repository --repository-name
codecatalyst-eks-image-repo
Replace (Sostituisci)
codecatalyst-eks-image-repo
con il nome che vuoi assegnare al ECR repository Amazon.Questo tutorial presuppone che tu abbia dato un nome al tuo repository.
codecatalyst-eks-image-repo
-
Visualizza i dettagli del ECR repository Amazon:
aws ecr describe-repositories \ --repository-names codecatalyst-eks-image-repo
-
Nota il
“repositoryUri”:
valore, ad esempio,111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
.Ne avrai bisogno in seguito quando aggiungerai il repository al tuo flusso di lavoro.
Fase 4: Aggiungere i file sorgente
In questa sezione, aggiungete i file sorgente dell'applicazione al vostro repository di origine ()codecatalyst-eks-source-repository
. Sono costituiti da:
-
Un
index.html
file: mostra un messaggio «Hello, World!» messaggio nel browser. -
Un Dockerfile: descrive l'immagine di base da utilizzare per l'immagine Docker e i comandi Docker da applicarvi.
-
Un
deployment.yaml
file: il manifesto di Kubernetes che definisce il servizio e la distribuzione Kubernetes.
La struttura delle cartelle è la seguente:
|— codecatalyst-eks-source-repository |— Kubernetes |— deployment.yaml |— public-html | |— index.html |— Dockerfile
Argomenti
index.html
Il index.html
file mostra un messaggio «Hello, World!» messaggio nel browser.
Per aggiungere il file index.html
-
Vai al tuo ambiente di sviluppo.
-
In
codecatalyst-eks-source-repository
, crea una cartella chiamatapublic-html
. -
In
/public-html
, crea un file chiamatoindex.html
con il seguente contenuto:<html> <head> <title>Hello World</title> <style> body { background-color: black; text-align: center; color: white; font-family: Arial, Helvetica, sans-serif; } </style> </head> <body> <h1>Hello, World!</h1> </body> </html>
-
Alla riga di comando del terminale, digitate:
cd /projects/codecatalyst-eks-source-repository
-
Aggiungi, esegui il commit e invia:
git add . git commit -m "add public-html/index.html" git push
index.html
Viene aggiunto al tuo repository in unapublic-html
cartella.
Dockerfile
Il Dockerfile descrive l'immagine Docker di base da utilizzare e i comandi Docker da applicarvi. Per ulteriori informazioni sul Dockerfile, consulta il Dockerfile Reference.
Il Dockerfile specificato qui indica di utilizzare l'immagine di base di Apache 2.4 (). httpd
Include anche istruzioni per copiare un file sorgente chiamato index.html
in una cartella sul server Apache che serve le pagine Web. L'EXPOSE
istruzione nel Dockerfile indica a Docker che il contenitore è in ascolto sulla porta 80.
Per aggiungere il Dockerfile
-
In
codecatalyst-eks-source-repository
, crea un file chiamatoDockerfile
con il seguente contenuto:FROM httpd:2.4 COPY ./public-html/index.html /usr/local/apache2/htdocs/index.html EXPOSE 80
Non includere un'estensione di file.
Importante
Il Dockerfile deve risiedere nella cartella principale del repository. Il
Docker build
comando del flusso di lavoro si aspetta che sia presente. -
Aggiungi, esegui il commit e invia:
git add . git commit -m "add Dockerfile" git push
Il Dockerfile viene aggiunto al tuo repository.
deployment.yaml
In questa sezione, aggiungi un file al tuo repository. deployment.yaml
Il deployment.yaml
file è un manifesto di Kubernetes che definisce due tipi o tipi di risorse Kubernetes da eseguire: un «servizio» e una «distribuzione».
-
Il «servizio» implementa un sistema di bilanciamento del carico in Amazon. EC2 Il load balancer ti fornisce una porta pubblica URL e standard con accesso a Internet (porta 80) che puoi utilizzare per accedere a «Hello, World!» applicazione.
-
La «distribuzione» utilizza tre pod e ogni pod conterrà un contenitore Docker con il comando «Hello, World!» applicazione. I tre pod vengono distribuiti sui nodi creati al momento della creazione del cluster.
Il manifesto di questo tutorial è breve; tuttavia, un manifesto può includere qualsiasi tipo di risorsa Kubernetes, come pod, job, ingress e policy di rete. Inoltre, puoi utilizzare più file manifest se la distribuzione è complessa.
Per aggiungere un file deployment.yaml
-
In
codecatalyst-eks-source-repository
, crea una cartella chiamata.Kubernetes
-
In
/Kubernetes
, crea un file chiamatodeployment.yaml
con il seguente contenuto:apiVersion: v1 kind: Service metadata: name: my-service labels: app: my-app spec: type: LoadBalancer selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: codecatalyst-eks-container # The $REPOSITORY_URI and $IMAGE_TAG placeholders will be replaced by actual values supplied by the build action in your workflow image: $REPOSITORY_URI:$IMAGE_TAG ports: - containerPort: 80
-
Aggiungi, esegui il commit e invia:
git add . git commit -m "add Kubernetes/deployment.yaml" git push
Il
deployment.yaml
file viene aggiunto al tuo repository in una cartella chiamataKubernetes
.
Ora hai aggiunto tutti i tuoi file sorgente.
Prenditi un momento per ricontrollare il tuo lavoro e assicurati di aver inserito tutti i file nelle cartelle corrette. La struttura delle cartelle è la seguente:
|— codecatalyst-eks-source-repository |— Kubernetes |— deployment.yaml |— public-html | |— index.html |— Dockerfile
Fase 5: Creare AWS ruoli
In questa sezione, creerai AWS IAM i ruoli di cui il tuo CodeCatalyst flusso di lavoro avrà bisogno per funzionare. Questi ruoli sono:
-
Ruolo di creazione: concede all'azione di CodeCatalyst compilazione (nel flusso di lavoro) l'autorizzazione ad accedere al tuo AWS account e scrivere ad Amazon ECR e AmazonEC2.
-
Ruolo di distribuzione: concede all'azione del cluster CodeCatalyst Deploy to Kubernetes (nel flusso di lavoro) l'autorizzazione ad accedere al tuo account e ad Amazon. AWS EKS
Nota
Per risparmiare tempo, puoi creare un solo ruolo, chiamato CodeCatalystWorkflowDevelopmentRole-
ruolo, anziché i due ruoli elencati in precedenza. Per ulteriori informazioni, consulta Creazione del CodeCatalystWorkflowDevelopmentRole-spaceNameruolo per il tuo account e il tuo spazio. Tieni presente che il spaceName
CodeCatalystWorkflowDevelopmentRole-
ruolo ha autorizzazioni molto ampie che possono rappresentare un rischio per la sicurezza. Ti consigliamo di utilizzare questo ruolo solo in tutorial e scenari in cui la sicurezza è meno preoccupante. Questo tutorial presuppone che stiate creando i due ruoli elencati in precedenza.spaceName
Per creare i ruoli di compilazione e distribuzione, completa la seguente serie di procedure.
1. Per creare una politica di fiducia per entrambi i ruoli
-
Vai al tuo ambiente di sviluppo.
-
Nella
Cloud9-
directory, crea un file chiamatolong-string
codecatalyst-eks-trust-policy.json
con il seguente contenuto:{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
2. Per creare la politica di compilazione per il ruolo di compilazione
-
Nella
Cloud9-
directory, create un file chiamatolong-string
codecatalyst-eks-build-policy.json
con il seguente contenuto:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:*", "ec2:*" ], "Resource": "*" } ] }
Nota
La prima volta che il ruolo viene utilizzato per eseguire azioni del flusso di lavoro, utilizzate il carattere jolly nell'informativa sulla politica delle risorse, quindi definite la politica inserendo il nome della risorsa dopo che è disponibile.
"Resource": "*"
3. Per creare la politica di distribuzione per il ruolo di distribuzione
-
Nella
Cloud9-
directory, create un file chiamatolong-string
codecatalyst-eks-deploy-policy.json
con il seguente contenuto:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:ListClusters" ], "Resource": "*" } ] }
Nota
La prima volta che il ruolo viene utilizzato per eseguire azioni del flusso di lavoro, utilizzate il carattere jolly nell'informativa sulla politica delle risorse, quindi definite la politica inserendo il nome della risorsa dopo che è disponibile.
"Resource": "*"
Ora hai aggiunto tre documenti di policy al tuo Dev Environment. La struttura delle cartelle ora è simile a questa:
|— Cloud9-
long-string
|— .c9 |— codecatalyst-eks-source-repository |— Kubernetes |— public-html |— Dockerfile codecatalyst-eks-build-policy.json codecatalyst-eks-deploy-policy.json codecatalyst-eks-trust-policy.json
4. Per aggiungere la politica di compilazione a AWS
-
Nel terminale Dev Environment, inserisci:
cd /projects
-
Inserisci:
aws iam create-policy \ --policy-name codecatalyst-eks-build-policy \ --policy-document file://codecatalyst-eks-build-policy.json
-
Premere Invio.
-
Nell'output del comando, annota il
"arn":
valore, ad esempioarn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
. Ne avrai bisogno ARN più tardi.
5. Per aggiungere la politica di distribuzione a AWS
-
Inserisci:
aws iam create-policy \ --policy-name codecatalyst-eks-deploy-policy \ --policy-document file://codecatalyst-eks-deploy-policy.json
-
Premere Invio.
-
Nell'output del comando, annota il
"arn":
valore della policy di distribuzione,arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
ad esempio. Ne avrai bisogno ARN più tardi.
6. Per creare il ruolo di costruzione
-
Inserisci:
aws iam create-role \ --role-name codecatalyst-eks-build-role \ --assume-role-policy-document file://codecatalyst-eks-trust-policy.json
-
Premere Invio.
-
Inserisci:
aws iam attach-role-policy \ --role-name codecatalyst-eks-build-role \ --policy-arn
arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
Dove
arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
viene sostituito con quello ARN della politica di compilazione indicata in precedenza. -
Premere Invio.
-
Alla riga di comando del terminale, digitate:
aws iam get-role \ --role-name codecatalyst-eks-build-role
-
Premere Invio.
-
Annotate il
"Arn":
valore del ruolo,arn:aws:iam::111122223333:role/codecatalyst-eks-build-role
ad esempio. Ne avrai bisogno ARN più tardi.
7. Per creare il ruolo di distribuzione
-
Inserisci:
aws iam create-role \ --role-name codecatalyst-eks-deploy-role \ --assume-role-policy-document file://codecatalyst-eks-trust-policy.json
-
Premere Invio.
-
Inserisci:
aws iam attach-role-policy \ --role-name codecatalyst-eks-deploy-role \ --policy-arn
arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
Dove
arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
viene sostituito con quello ARN della politica di distribuzione indicata in precedenza. -
Premere Invio.
-
Inserisci:
aws iam get-role \ --role-name codecatalyst-eks-deploy-role
-
Premere Invio.
-
Nota il
"Arn":
valore del ruolo, ad esempio,arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
. Ne avrai bisogno ARN più tardi.
Ora hai creato i ruoli di compilazione e distribuzione e li hai annotatiARNs.
Fase 6: Aggiungere AWS ruoli a CodeCatalyst
In questo passaggio, aggiungi build role (codecatalyst-eks-build-role
) e deploy role (codecatalyst-eks-deploy-role
) a Account AWS quello che hai collegato al tuo spazio. In questo modo i ruoli sono disponibili per l'uso nel flusso di lavoro.
Per aggiungere ruoli di creazione e distribuzione al tuo Account AWS
-
Nella CodeCatalyst console, accedi al tuo spazio.
-
In alto, scegli Impostazioni.
-
Nel riquadro di navigazione, scegli AWS Account. Viene visualizzato un elenco di account.
-
Nella colonna Amazon CodeCatalyst display name, copia il nome visualizzato del Account AWS luogo in cui hai creato i ruoli di build e deploy. (Potrebbe essere un numero). Questo valore ti servirà in seguito, durante la creazione del tuo flusso di lavoro.
-
Scegli il nome visualizzato.
-
Scegli Gestisci ruoli dalla console AWS di gestione.
Viene visualizzata la pagina Aggiungi IAM ruolo CodeCatalyst allo spazio Amazon. Potrebbe essere necessario effettuare il login per accedere alla pagina.
-
Seleziona Aggiungi un ruolo esistente in cui hai creato IAM.
Viene visualizzato un elenco a discesa. L'elenco mostra i ruoli di compilazione e distribuzione e tutti gli altri IAM ruoli con una politica di attendibilità che include i principali del servizio
codecatalyst-runner.amazonaws.com
.codecatalyst.amazonaws.com
-
Dall'elenco a discesa, aggiungi:
-
codecatalyst-eks-build-role
-
codecatalyst-eks-deploy-role
Nota
Se vedi
The security token included in the request is invalid
, potrebbe essere perché non disponi delle autorizzazioni giuste. Per risolvere questo problema, esci e accedi nuovamente con l' AWS account che hai usato quando hai creato il tuo CodeCatalyst spazio. AWS -
-
Torna alla CodeCatalyst console e aggiorna la pagina.
I ruoli di compilazione e distribuzione dovrebbero ora apparire sotto IAM ruoli.
Questi ruoli sono ora disponibili per l'uso nei flussi CodeCatalyst di lavoro.
Fase 7: Aggiornare il ConfigMap
Devi aggiungere il ruolo di distribuzione che hai creato nel ConfigMap
file Kubernetes Fase 5: Creare AWS ruoli per consentire all'azione del cluster Deploy to Kubernetes (nel tuo flusso di lavoro) la possibilità di accedere e interagire con il tuo cluster. È possibile utilizzare o eseguire questa attività. eksctl
kubectl
Per configurare il file Kubernetes ConfigMap usando eksctl
-
Nel terminale Dev Environment, inserisci:
eksctl create iamidentitymapping --cluster
codecatalyst-eks-cluster
--arnarn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
--group system:masters --usernamecodecatalyst-eks-deploy-role
--regionus-west-2
Dove:
-
codecatalyst-eks-cluster
viene sostituito con il nome del EKS cluster Amazon. -
arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
viene sostituito dal ruolo ARN di distribuzione in Fase 5: Creare AWS ruoli cui hai creato. -
codecatalyst-eks-deploy-role
(accanto a--username
) viene sostituito dal nome del ruolo di distribuzione in cui è stato creato. Fase 5: Creare AWS ruoliNota
Se hai deciso di non creare un ruolo di distribuzione, sostituisci
codecatalyst-eks-deploy-role
con il nome delCodeCatalystWorkflowDevelopmentRole-
ruolo. Per ulteriori informazioni su questo ruolo, consulta Fase 5: Creare AWS ruoli.spaceName
-
us-west-2
viene sostituito con la tua regione.
Per i dettagli su questo comando, consulta Gestire IAM utenti e ruoli
. Viene visualizzato un messaggio simile al seguente:
2023-06-09 00:58:29 [ℹ] checking arn arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role against entries in the auth ConfigMap 2023-06-09 00:58:29 [ℹ] adding identity "arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role" to auth ConfigMap
-
Per configurare il file Kubernetes ConfigMap usando kubectl
-
Nel terminale Dev Environment, inserisci:
kubectl edit configmap -n kube-system aws-auth
Il ConfigMap file viene visualizzato sullo schermo.
-
Aggiungi il testo in corsivo rosso:
# Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: v1 data: mapRoles: | - groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::111122223333:role/eksctl-codecatalyst-eks-cluster-n-NodeInstanceRole-16BC456ME6YR5 username: system:node:{{EC2PrivateDNSName}}
- groups: - system:masters rolearn: arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role username: codecatalyst-eks-deploy-role
mapUsers: | [] kind: ConfigMap metadata: creationTimestamp: "2023-06-08T19:04:39Z" managedFields: ...Dove:
-
arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
viene sostituito dal ruolo ARN di distribuzione in cui è stato creato. Fase 5: Creare AWS ruoli -
codecatalyst-eks-deploy-role
(accanto ausername:
) viene sostituito dal nome del ruolo di distribuzione in cui è stato creato. Fase 5: Creare AWS ruoliNota
Se hai deciso di non creare un ruolo di distribuzione, sostituisci
codecatalyst-eks-deploy-role
con il nome delCodeCatalystWorkflowDevelopmentRole-
ruolo. Per ulteriori informazioni su questo ruolo, consulta Fase 5: Creare AWS ruoli.spaceName
Per i dettagli, consulta la sezione Enabling IAM principal access to your cluster nella Amazon EKS User Guide.
-
Ora hai assegnato al ruolo di distribuzione e, per estensione, all'EKSazione Deploy to Amazon, le system:masters
autorizzazioni per il tuo cluster Kubernetes.
Passaggio 8: creare ed eseguire un flusso di lavoro
In questo passaggio, crei un flusso di lavoro che prende i tuoi file sorgente, li crea in un'immagine Docker e quindi distribuisce l'immagine nei tree pod del tuo cluster Amazon. EKS
Il flusso di lavoro è costituito dai seguenti elementi costitutivi eseguiti in sequenza:
-
Un trigger: questo trigger avvia l'esecuzione automatica del flusso di lavoro quando invii una modifica al tuo repository di origine. Per ulteriori informazioni sui trigger, consulta L'avvio di un flusso di lavoro viene eseguito automaticamente utilizzando i trigger.
-
Un'azione di compilazione (
BuildBackend
): all'attivazione, l'azione crea l'immagine Docker utilizzando il Dockerfile e la invia ad Amazon. ECR L'azione di compilazione aggiorna anche$IMAGE_TAG
le variabili$REPOSITORY_URI
and neldeployment.yaml
file con i valori corretti, quindi crea un elemento di output di questo file e di qualsiasi altro file nella cartella.Kubernetes
In questo tutorial, l'unico file nellaKubernetes
cartella è,deployment.yaml
ma è possibile includerne altri. L'artefatto viene utilizzato come input per l'azione di distribuzione, che viene successiva.Per ulteriori informazioni sull'azione di creazione, consulta. Creazione con flussi di lavoro
-
A deploy action (
DeployToEKS
): al termine dell'azione di compilazione, l'azione deploy cerca l'artefatto di output generato dall'azione di compilazione (Manifests
) e trova ildeployment.yaml
file al suo interno. L'azione segue quindi le istruzioni contenute neldeployment.yaml
file per eseguire tre pod, ciascuno contenente un singolo «Hello, World!» Contenitore Docker, all'interno del tuo cluster Amazon. EKS
Creazione di un flusso di lavoro
-
Vai alla console. CodeCatalyst
-
Vai al tuo progetto (
codecatalyst-eks-project
). -
Nel riquadro di navigazione, scegli CI/CD, quindi scegli Flussi di lavoro.
-
Scegli Crea flusso di lavoro.
-
Per Source repository, scegli
codecatalyst-eks-source-repository
. -
Per Branch, scegli
main
. -
Scegli Create (Crea) .
-
Elimina il codice YAML di esempio.
-
Aggiungi il YAML codice seguente per creare un nuovo file di definizione del flusso di lavoro:
Nota
Per ulteriori informazioni sul file di definizione del flusso di lavoro, vedereYAMLDefinizione del workflow.
Nota
Nel YAML codice che segue, puoi omettere le
Connections:
sezioni, se lo desideri. Se si omettono queste sezioni, è necessario assicurarsi che il ruolo specificato nel campo Ruolo predefinito IAM nel proprio ambiente includa le autorizzazioni e le politiche di fiducia di entrambi i ruoli descritte in. Fase 6: Aggiungere AWS ruoli a CodeCatalyst Per ulteriori informazioni sulla configurazione di un ambiente con un IAM ruolo predefinito, vedere. Creazione di un ambienteName: codecatalyst-eks-workflow SchemaVersion: 1.0 Triggers: - Type: PUSH Branches: - main Actions: BuildBackend: Identifier: aws/build@v1 Environment: Name:
codecatalyst-eks-environment
Connections: - Name:codecatalyst-account-connection
Role:codecatalyst-eks-build-role
Inputs: Sources: - WorkflowSource Variables: - Name: REPOSITORY_URI Value:111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
- Name: IMAGE_TAG Value: ${WorkflowSource.CommitId} Configuration: Steps: #pre_build: - Run: echo Logging in to Amazon ECR... - Run: aws --version - Run: aws ecr get-login-password --regionus-west-2
| docker login --username AWS --password-stdin111122223333.dkr.ecr.us-west-2.amazonaws.com
#build: - Run: echo Build started on `date` - Run: echo Building the Docker image... - Run: docker build -t $REPOSITORY_URI:latest . - Run: docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG #post_build: - Run: echo Build completed on `date` - Run: echo Pushing the Docker images... - Run: docker push $REPOSITORY_URI:latest - Run: docker push $REPOSITORY_URI:$IMAGE_TAG # Replace the variables in deployment.yaml - Run: find Kubernetes/ -type f | xargs sed -i "s|\$REPOSITORY_URI|$REPOSITORY_URI|g" - Run: find Kubernetes/ -type f | xargs sed -i "s|\$IMAGE_TAG|$IMAGE_TAG|g" - Run: cat Kubernetes/* # The output artifact will be a zip file that contains Kubernetes manifest files. Outputs: Artifacts: - Name: Manifests Files: - "Kubernetes/*" DeployToEKS: DependsOn: - BuildBackend Identifier: aws/kubernetes-deploy@v1 Environment: Name:codecatalyst-eks-environment
Connections: - Name:codecatalyst-account-connection
Role:codecatalyst-eks-deploy-role
Inputs: Artifacts: - Manifests Configuration: Namespace: default Region:us-west-2
Cluster: codecatalyst-eks-cluster Manifests: Kubernetes/Nel codice precedente, sostituisci:
-
Entrambe le istanze di
codecatalyst-eks-environment
con il nome dell'ambiente in Prerequisiti cui hai creato. -
Entrambe le istanze di
codecatalyst-account-connection
con il nome visualizzato della connessione all'account. Il nome visualizzato potrebbe essere un numero. Per ulteriori informazioni, consulta Fase 6: Aggiungere AWS ruoli a CodeCatalyst. -
codecatalyst-eks-build-role
con il nome del ruolo di costruzione in cui hai creatoFase 5: Creare AWS ruoli. -
111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
(nellaValue:
proprietà) con il URI ECR repository Amazon in Fase 3: Creare un archivio di ECR immagini Amazon cui hai creato. -
111122223333.dkr.ecr.us-west-2.amazonaws.com
(nelRun: aws ecr
comando) con il URI ECR repository Amazon senza il suffisso dell'immagine ()/codecatalyst-eks-image-repo
. -
codecatalyst-eks-deploy-role
con il nome del ruolo di distribuzione in cui hai creato. Fase 5: Creare AWS ruoli -
Entrambe le istanze di
us-west-2
con il tuo codice AWS regionale. Per un elenco dei codici regionali, consulta Endpoint regionali in. Riferimenti generali di AWS
Nota
Se hai deciso di non creare, creare e distribuire ruoli, sostituisci
codecatalyst-eks-build-role
ecodecatalyst-eks-deploy-role
con il nome delCodeCatalystWorkflowDevelopmentRole-
ruolo. Per ulteriori informazioni su questo ruolo, consulta Fase 5: Creare AWS ruoli.spaceName
-
-
(Facoltativo) Scegliete Convalida per assicurarvi che il YAML codice sia valido prima di eseguire il commit.
-
Scegli Applica.
-
Nella finestra di dialogo Conferma flusso di lavoro, inserisci quanto segue:
-
Per il messaggio di conferma, rimuovi il testo e inserisci:
Add first workflow
-
Per Repository, scegli
codecatalyst-eks-source-repository
. -
Per il nome del ramo, scegli principale.
-
Scegli Applica.
Ora hai creato un flusso di lavoro. L'esecuzione di un flusso di lavoro viene avviata automaticamente a causa del trigger definito nella parte superiore del flusso di lavoro. In particolare, quando hai eseguito il commit (e inviato) del
workflow.yaml
file nell'archivio di origine, il trigger ha avviato l'esecuzione del flusso di lavoro. -
Per visualizzare l'avanzamento del flusso di lavoro, esegui
-
Nel pannello di navigazione della CodeCatalyst console, scegli CI/CD, quindi scegli Flussi di lavoro.
-
Scegli il flusso di lavoro che hai appena creato,.
codecatalyst-eks-workflow
-
Scegli BuildBackenddi vedere lo stato di avanzamento della costruzione.
-
Scegli DeployToEKSdi vedere lo stato di avanzamento della distribuzione.
Per ulteriori informazioni sulla visualizzazione dei dettagli dell'esecuzione, consultaVisualizzazione dello stato e dei dettagli dell'esecuzione del flusso di lavoro.
Per verificare la distribuzione
Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/
. -
A sinistra, in basso, scegli Load Balancers.
-
Seleziona il load balancer che è stato creato come parte della tua implementazione Kubernetes. Se non sei sicuro di quale bilanciamento del carico scegliere, cerca i seguenti tag nella scheda Tag:
-
kubernetes.io/service-name
-
kubernetes.io/cluster/ekstutorialcluster
-
-
Con il bilanciamento del carico corretto selezionato, scegli la scheda Descrizione.
-
Copia e incolla il valore del DNSnome nella barra degli indirizzi del browser.
Il programma «Hello, World!» nel browser viene visualizzata una pagina Web che indica che l'applicazione è stata distribuita correttamente.
Passaggio 9: apporta una modifica ai file sorgente
In questa sezione, apporti una modifica al index.html
file nel tuo repository di origine. Questa modifica fa sì che il flusso di lavoro crei una nuova immagine Docker, la tagghi con un ID di commit, la invii ad Amazon ECR e la distribuisca su Amazon. ECS
Per modificare il file index.html
-
Vai al tuo ambiente di sviluppo.
-
Al prompt del terminale, passa al repository dei sorgenti:
cd /projects/codecatalyst-eks-source-repository
-
Recupera le ultime modifiche al flusso di lavoro:
git pull
-
Aprire
codecatalyst-eks-source-repository/public-html/index.html
. -
Nella riga 14, modifica il
Hello, World!
testo inTutorial complete!
. -
Aggiungi, esegui il commit e spingi:
git add . git commit -m "update index.html title" git push
L'esecuzione di un flusso di lavoro viene avviata automaticamente.
-
(Facoltativo) Inserisci:
git show HEAD
Annota l'ID di commit per la
index.html
modifica. Questo ID di commit verrà taggato nell'immagine Docker che verrà distribuita dall'esecuzione del flusso di lavoro appena avviata. -
Guarda lo stato di avanzamento della distribuzione:
-
Nella CodeCatalyst console, nel riquadro di navigazione, scegli CI/CD, quindi scegli Flussi di lavoro.
-
Scegli
codecatalyst-eks-workflow
di visualizzare l'ultima esecuzione. -
Scegli BuildBackende DeployToEKSper vedere l'avanzamento del flusso di lavoro esegui.
-
-
Verifica che l'applicazione sia stata aggiornata, come segue:
Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/
. -
A sinistra, in basso, scegli Load Balancers.
-
Seleziona il load balancer che è stato creato come parte della tua implementazione Kubernetes.
-
Copia e incolla il valore del DNSnome nella barra degli indirizzi del browser.
Il «Tutorial completo!» Nel browser viene visualizzata una pagina Web che indica che è stata implementata correttamente una nuova revisione dell'applicazione.
-
(Facoltativo) In AWS, passa alla ECR console Amazon e verifica che la nuova immagine Docker sia stata etichettata con l'ID di commit del passaggio 7 di questa procedura.
Eliminazione
È necessario ripulire l'ambiente in modo da non addebitare inutilmente i costi delle risorse di archiviazione e di elaborazione utilizzate in questo tutorial.
Per eliminare
-
Elimina il tuo cluster:
-
Nel terminale Dev Environment, inserisci:
eksctl delete cluster --region=
us-west-2
--name=codecatalyst-eks-cluster
Dove:
-
us-west-2
viene sostituito con la tua regione. -
codecatalyst-eks-cluster
viene sostituito dal nome del cluster creato.
Dopo 5-10 minuti, il cluster e le risorse associate vengono eliminati, inclusi, a titolo esemplificativo, AWS CloudFormation stack, gruppi di nodi (in AmazonEC2) e sistemi di bilanciamento del carico.
-
Importante
Se il
eksctl delete cluster
comando non funziona, potrebbe essere necessario aggiornare le credenziali o le credenziali. AWSkubectl
Se non sei sicuro di quali credenziali aggiornare, aggiorna prima le credenziali. AWS Per aggiornare le credenziali, consulta. AWS Come posso correggere gli errori «Impossibile individuare le credenziali» e "ExpiredToken"? Per aggiornare lekubectl
credenziali, consulta. Come posso correggere gli errori «Impossibile connettersi al server»? -
-
Nella AWS console, pulisci come segue:
-
In AmazonECR, elimina
codecatalyst-eks-image-repo
. -
In IAM Identity Center, elimina:
-
codecatalyst-eks-user
-
codecatalyst-eks-permission-set
-
-
InIAM, elimina:
-
codecatalyst-eks-build-role
-
codecatalyst-eks-deploy-role
-
codecatalyst-eks-build-policy
-
codecatalyst-eks-deploy-policy
-
-
-
Nella CodeCatalyst console, pulisci come segue:
-
Eliminare
codecatalyst-eks-workflow
. -
Eliminare
codecatalyst-eks-environment
. -
Eliminare
codecatalyst-eks-source-repository
. -
Elimina il tuo ambiente di sviluppo.
-
Elimina
codecatalyst-eks-project
.
-
In questo tutorial, hai imparato a distribuire un'applicazione su un EKS servizio Amazon utilizzando un CodeCatalyst flusso di lavoro e un'azione cluster Deploy to Kubernetes.