Come posso creare AMI Amazon Linux personalizzate per Amazon EKS?
Desidero creare un Amazon Linux Amazon Machine Image (AMI) personalizzato da distribuire con un cluster Amazon Elastic Kubernetes Service (Amazon EKS).
Risoluzione
Prerequisiti
- Installa Packer sul tuo computer locale o su un'istanza Amazon Linux Amazon Elastic Compute Cloud (EC2). Per le istruzioni, consulta Install Packer sul sito web di Hashicorp.
- Quindi installa il plug-in Amazon da utilizzare con Hashicorp Packer per creare immagini personalizzate su AWS. Per istruzioni, consulta Installation sul sito web Hashicorp.
- Assicurati che make e git siano installati:
sudo yum install make -y sudo yum install git -y
Creazione di un'AMI Amazon Linux personalizzata per Amazon EKS
Completa i seguenti passaggi:
-
Per clonare il repository amazon-eks-ami AWS Labs, esegui il seguente comando:
sudo git clone https://github.com/awslabs/amazon-eks-ami && cd amazon-eks-ami
Per ulteriori informazioni, consulta amazon-eks-ami sul sito web GitHub.
-
Per creare un nuovo file denominato variables-custom.json nella directory amazon-eks-ami, esegui il seguente comando:
sudo vi variables-custom.json
Nota: il file delle variabili predefinite che variables-custom.json sovrascrive si trova nel file variables-default.json sul sito web GitHub. Se usi Amazon Linux 2 (AL2), il percorso del file per variables-default.json è /amazon-eks-ami/templates/al2/variables-default.json. Se usi Amazon Linux 2023 (AL2023), il percorso del file è /amazon-eks-ami/templates/al2023/variables-default.json.
-
Nel file variables-custom.json, aggiungi i valori:
{ "aws_region": "AWS_Region", "source_ami_filter_name": "AMI_Name", "source_ami_id": "Source_AMI_ID", "source_ami_owners": "AMI_Owner_Account_ID", "temporary_security_group_source_cidrs": "Source_Machine_IP", #example: local_machine_IP /32 or NAT_GW_IP /32 or EC2_PublicIP /32 "launch_block_device_mappings_volume_size": "Integer", #Root volume size of the instance to be launched by packer "iam_instance_profile": "IAM_Instance_Profile_Name" #Optional }
Quando usi un'AMI esistente come origine per creare un'AMI personalizzata per EKS, imposta il valore launch\ _block\ _device\ _mappings\ _volume\ _size. Il valore deve essere uguale o superiore alla dimensione del volume dell'istantanea AMI. Il valore predefinito è “4" nel file variables-default.json.
Se utilizzi l'opzione iam\ _instance\ _profile in Packer, è necessario fornire il nome del profilo di istanza del ruolo IAM che si desidera allegare. Non fornire l'ARN del ruolo IAM o l'ARN del profilo di istanza.
Se il parametro temporary_security_group_source_cidrs non viene fornito, Packer apre la porta SSH a tutti gli indirizzi IP (0.0.0.0/0). Per prevenire un rischio per la sicurezza, è consigliabile specificare l'indirizzo IP del computer di origine nel parametro temporary_security_group_source_cidrs. -
Per avviare il processo di creazione dell'AMI personalizzata, esegui il seguente comando:
sudo make PACKER_OPTIONAL_K8S_VARIABLE_FILE=variables-custom.json k8s=1.29 os_distro=al2 arch=x86_64 -d
In alternativa, per attivare il logging dei pacchetti, esegui il seguente comando:
sudo PACKER_LOG_PATH=packer_logs.txt`TZ=":Asia/Kolkata" date +%Y-%m-%d_%H%M` PACKER_LOG=1 make PACKER_OPTIONAL_K8S_VARIABLE_FILE=variables-custom.json k8s=1.29 os_distro=al2 arch=x86_64 -d
Nota: per impostare il fuso orario del tuo sistema, sostituisci ":Asia/Kolkata" con il tuo fuso orario. Il file di log generato di Packer è disponibile nella stessa directory in cui si esegue il comando Packer.
-
Verifica che le credenziali utente IAM o il ruolo IAM che usi per eseguire il comando make dispongano delle autorizzazioni IAM richieste. Per ulteriori informazioni, consulta IAM task or instance role e Attaching IAM policies to roles sul sito web di Hashicorp. Inoltre, le autorizzazioni devono consentire l'accesso al bucket Amazon Simple Storage Service (Amazon S3) predefinito. È necessario allegare la policy AmazonS3ReadOnlyAccess. Se non disponi delle autorizzazioni per accedere al bucket S3, potresti ricevere il seguente errore:
"required variable not set: kubernetes_build_date
required variable not set: kubernetes_version"Nota: queste autorizzazioni consentono a Packer di effettuare chiamate API ad AWS. In alternativa, puoi configurare le credenziali statiche come una chiave segreta e una chiave di accesso segreta, una variabile di ambiente o file di credenziali condivisi.
-
Verifica che l'AMI personalizzata sia presente nella Regione AWS dell'AMI di origine.
Quando Packer esegue il provisioning dell'istanza, i file binari predefiniti vengono scaricati dal bucket S3 amazon-eks in us-west-2. Per ulteriori informazioni, consulta il file install-worker.sh sul sito web GitHub.
(Facoltativo) Fornitura dei binari Kubernetes
Completa i seguenti passaggi:
- Per esaminare i file binari disponibili forniti nel bucket predefinito, esegui il seguente comando:
Nota: sostituisci amazon-eks, kubernetes_version, kubernetes_build_date e arch con i tuoi valori.aws s3 ls s3://amazon-eks aws s3 ls s3://amazon-eks/kubernetes_version/kubernetes_build_date/bin/linux/arch/
- Per scaricare i tuoi file binari sul nodo worker durante il provisioning, è necessario rispecchiare la struttura delle cartelle bucket amazon-eks utilizzata nello script install-worker.sh.
- Dopo aver preparato i file binari, utilizza l'interfaccia a riga di comando di AWS per copiare i file binari nel bucket Amazon S3. L'esempio seguente utilizza un binario kubelet personalizzato:
Nota: sostituisci my-custom-bucket, amazon-eks, kubernetes_version, kubernetes_build_date e arch con i tuoi valori. Bisogna fornire tutti i file binari elencati nel bucket amazon-eks predefinito.aws s3 cp kubelet s3://my-custom-bucket/kubernetes_version/kubernetes_build_date/bin/linux/arch/kubelet
- Per avviare il processo di compilazione, usa l'AMI di origine configurata in variables-default.json dalla directory al2 nel percorso /amazon-eks-ami/templates/al2/variables-default.json. Per richiamare make con i parametri, esegui un comando simile al seguente:
Nota: verifica che i parametri binari_bucket_name, binary_bucket_region, kubernetes_version e kubernetes_build_date corrispondano al percorso dei tuoi file binari in Amazon S3.make k8s binary_bucket_name=Custom_Bucket_Name binary_bucket_region=Region kubernetes_version=Version kubernetes_build_date=Build_Date -d

Contenuto pertinente
- AWS UFFICIALEAggiornata un mese fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 mesi fa
- AWS UFFICIALEAggiornata 3 anni fa