Colloquio Tecnico DevOps — Cheat Sheet

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.

Concetti chiave

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.

Domande tipiche e risposte pronte

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.

Insidie e errori comuni

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.

Snippet e comandi

# 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

Da ripassare

[ ] 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

Jarvis Interviews
Jarvis