Come sai siamo Amazon Consulting Partner, e seppur AWS ha annunciato Fargate e l’integrazione su ECS di Kubernetes,
volevamo anche uno strumento per il deployment dei nostri cluster che ci desse comunque un minimo di gestione e di libertà.
Kubernetes Operations è uno dei tanti progetti che si è messo in luce per la creazione e l’automatizzazione di cluster con focus iniziale proprio su AWS.
Siamo rimasti piacevolmente sorpresi dalla sua facilità e dall’adattabilità al mondo AWS, dai bilanciatori ELB fino ai volumi EBS.
Con un “semplice comando”
kops create cluster \--cloud=aws \--master-zones=eu-west-1a,eu-west-1b,eu-west-1c \--zones=eu-west-1a,eu-west-1b,eu-west-1c \--node-count=3 \--topology private \--networking weave \--node-size=t2.medium \--master-size=t2.medium \--vpc=vpc-xxxx \--bastion="true" \--cloud-labels "Owner=alemazz" \--ssh-public-key ~/.ssh/k8s.pub \--target=terraform --state s3://xxx-ideato-it-state-store --yes --out terraform/kops --name xxxx.ideato.it
Siamo in grado di creare un cluster privato in HA, su multiple AZ dietro SSH Bastion con stato persistente e salvato su S3.
La ciliegina sulla torta, è il supporto a Terraform che tramite gli switch
--target=terraform --out terraform/kops
permette di generare un template terraform, con cui usare i classici comandi
terraform plan
per il dry-run e
terraform apply
per applicare le modiche.
Avendo abbracciato da tempo i principi di Infrastructure as Code, abbiamo deciso di usare Terraform perché ci mette in grado di fare versioning, mantenere e consegnare al cliente il codice infrastrutturale del suo cluster ed ora, grazie a Kubernetes Operations, tutto questo è ancora più semplice da gestire.