Tag: devops, ci-cd, docker, kubernetes, terraform, observability, git, linux
Livello: intermedio
TL;DR: Sintesi rapida su pipeline CI/CD, containerizzazione, orchestrazione, IaC e monitoraggio per colloqui tecnici DevOps.
CI/CD garantisce integrazione continua del codice e rilascio automatizzato tramite pipeline riproducibili.
Infrastructure as Code (IaC) rende il provisioning dell'infrastruttura dichiarativo, versionato e idempotente.
I container standardizzano l'ambiente applicativo isolando processi e dipendenze.
Kubernetes orchestra cluster di container gestendo scheduling, self-healing, scaling e rolling update.
GitOps usa Git come singola fonte di verita per lo stato dell'infrastruttura e dei deployment.
L'osservabilita si fonda su tre pilastri: metriche numeriche, log aggregati e tracing distribuito.
Strategie di rilascio come Blue/Green e Canary riducono downtime e rischi in produzione.
Il modello Shared Responsibility nel cloud stabilisce la divisione dei compiti di sicurezza.
12-Factor App guida la separazione di configurazioni, statelessness e gestione dei processi.
Q: Come spieghi la differenza tra Rolling Update, Blue/Green e Canary Deployment?R: Rolling Update sostituisce gradualmente i pod senza downtime. Blue/Green usa due ambienti identici commutando il router istantaneamente. Canary rilascia la nuova versione a una percentuale ridotta di traffico per validare stabilita e metriche prima del rollout completo.
Q: Come gestisci i secrets e le configurazioni sensibili in una pipeline CI/CD e su Kubernetes?R: Non commetto mai secrets in chiaro. In CI/CD uso variabili d'ambiente protette dal runner. Su Kubernetes adotto secret manager esterni come Vault integrati tramite operatori, iniettando i valori a runtime.
Q: Cosa significa idempotenza in Terraform o Ansible e perche e importante?R: L'idempotenza assicura che eseguire l'automazione piu volte produca sempre lo stesso stato finale senza duplicazioni o derive, azzerando le differenze tra stato desiderato e reale.
Q: Come affronti il debug di un container Kubernetes in stato CrashLoopBackOff?R: Controllo prima i log del pod con kubectl logs --previous per vedere il crash applicativo, poi verifico con describe pod eventi, liveness/readiness probe, quote di risorse esaurite (OOMKilled) o credenziali mancanti.
Q: Come strutturi una strategia di backup e Disaster Recovery su cloud?R: Definisco RPO e RTO aziendali, automatizzo snapshot periodici con replica cross-region e testo il ripristino con simulazioni periodiche verificate da script IaC.
Salvare credenziali, token API o chiavi SSH all'interno del repository Git o nelle immagini Docker.
Usare il tag :latest nelle immagini container in produzione impedendo rollback deterministici.
Eseguire i processi dentro i container come utente root.
Omettere resource requests e limits nei pod provocando instabilita del nodo per saturazione memoria.
Ignorare la persistenza dello stato (state file) di Terraform senza locking remoto.
Creare pipeline CI/CD non riproducibili con dipendenze esterne non vincolate alle versioni.
# Debug di un pod Kubernetes e verifica eventi
kubectl describe pod <pod-name> -n <namespace>
kubectl logs <pod-name> -n <namespace> --previous --tail=100
Bash
# Esecuzione shell temporanea in un namespace per test di rete
kubectl run tmp-shell --rm -i --tty --image=nicolaka/netshoot -- /bin/bash
Bash
# Ispezione layer e dimensione di un'immagine Docker
docker history --human --format "{{.Size}}\t{{.CreatedBy}}" <image-name>:<tag>
Bash
# Pianificazione e verifica drift in Terraform
terraform plan -out=tfplan -detailed-exitcode
[ ] Meccanismo di calcolo e tuning di CPU e Memory requests/limits su Kubernetes
[ ] Differenza tra Ingress Controller, Service ClusterIP, NodePort e LoadBalancer
[ ] Configurazione di State Locking su Terraform con S3 e DynamoDB o backend equivalente
[ ] Gestione del ciclo di vita dei certificati SSL/TLS con cert-manager
[x] Principi base del ciclo GitOps e strumenti ArgoCD/Flux
[x] Comandi CLI principali di Docker e kubectl per troubleshooting rapido