Automazione della piattaforma e DevOps per il servizio Azure Kubernetes
In quanto piattaforma nativa del cloud, Kubernetes richiede un approccio nativo del cloud alla distribuzione e alle operazioni. Azure e Kubernetes sono piattaforme aperte ed estendibili con API complete e ben architettate, che offrono opportunità e possibilità di automatizzare in modo completo. Pianificare un approccio DevOps e altamente automatizzato basandosi sulle procedure consigliate generali e per l'automazione di DevOps.
Considerazioni relative alla progettazione
Ecco alcune considerazioni relative alla progettazione per l'automazione e l'automazione della piattaforma del servizio Azure Kubernetes e di DevOps:
Quando si stabilisce l'approccio da adottare per la progettazione e l'automazione, prendere in considerazione le limitazioni dei servizi di Azure e l'ambiente di integrazione continua e recapito continuo (CI/CD). Per un altro esempio, vedere le limitazioni per l'utilizzo di GitHub.
Quando si protegge e si protegge l'accesso agli ambienti di sviluppo, test, domande e risposte e produzione, prendere in considerazione le opzioni di sicurezza dal punto di vista CI/CD. Le distribuzioni sono automatiche, quindi eseguire il mapping del controllo di accesso di conseguenza.
Valutare la possibilità di usare prefissi e suffissi con convenzioni ben definite per identificare in modo univoco ogni risorsa distribuita. Queste convenzioni di denominazione evitano conflitti nella distribuzione di soluzioni una accanto all'altra e migliorano la velocità effettiva e l'agilità complessiva del team.
Inventariare i flussi di lavoro per supportare la progettazione, l'aggiornamento e la distribuzione della soluzione in regimi normali e DRP (Disaster Recovery Plan). Valutare la possibilità di eseguire il mapping delle pipeline in base a tali flussi di lavoro, allo scopo di incrementare familiarità e produttività.
Ecco alcuni scenari e pipeline di esempio da considerare:
- Distribuzione, applicazione di patch e aggiornamento dei cluster
- Distribuzione e aggiornamento delle applicazioni
- Distribuzione e gestione dei componenti aggiuntivi
- Failover per il ripristino di emergenza
- Distribuzioni blu-verde
- Gestione di ambienti canary
È consigliabile usare una mesh di servizi per aggiungere altre funzionalità di sicurezza, crittografia e registro ai carichi di lavoro.
Valutare la possibilità di distribuire altre risorse, ad esempio sottoscrizioni, assegnazione di tag ed etichette, per supportare l'esperienza di DevOps tramite il rilevamento e l'analisi delle distribuzioni e degli artefatti correlati.
Considerare l'impatto del cambio di paradigma associato all'analogia Pets vs Cattle. Prevedere che i pod e altri aspetti di Kubernetes siano temporanei e allineare l'infrastruttura di automazione e pipeline di conseguenza. Non fare affidamento su indirizzi IP o altre risorse per essere fissi o permanenti.
Suggerimenti per la progettazione
Ecco alcune raccomandazioni relative alla progettazione per l'automazione e l'automazione della piattaforma del servizio Azure Kubernetes e di DevOps:
Basarsi su pipeline o azioni per:
- Ottimizzare le procedure applicate all'interno del team.
- Rimuovere gran parte dell'onere di dover reinventare una soluzione già disponibile.
- Offrire prevedibilità e dati analitici in termini di qualità e agilità complessive.
Distribuire in anticipo e frequentemente usando pipeline pianificate e basate su trigger. Le pipeline basate su trigger assicurano che le modifiche vengano convalidate correttamente, mentre le pipeline pianificate gestiscono il comportamento negli ambienti soggetti a modifiche.
Separare la distribuzione dell'infrastruttura dalla distribuzione delle applicazioni. L'infrastruttura di base è meno soggetta a variazioni rispetto alle applicazioni. Considerare ogni tipo di distribuzione come un flusso e una pipeline separati.
Usare opzioni native del cloud per la distribuzione. Usare l'infrastruttura distribuita come codice per distribuire l'infrastruttura, incluso il piano di controllo, e usare Helm e il modello Operatore in Kubernetes per distribuire e gestire i componenti nativi di Kubernetes.
Usare GitOps per distribuire e gestire le applicazioni. GitOps usa il repository GIT come unico sistema SSOT (Single Source of Truth), evitando variazioni della configurazione e incrementando produttività e affidabilità durante i rollback e le routine correlate.
Usare identità gestite dai pod e il provider di Azure Key Vault per il driver CSI dell'archivio segreti per proteggere segreti, certificati e stringhe di connessione.
Cercare di ottimizzare la concorrenza della distribuzione evitando impostazioni e elementi di configurazione hardcoded.
Fare affidamento su convenzioni note tra le distribuzioni correlate all'infrastruttura e alle applicazioni. Usare controller di ammissione combinati con il componente aggiuntivo Criteri di Azure per Kubernetes per convalidare e applicare le convenzioni tra gli altri criteri definiti.
Adottare lo spostamento a sinistra in modo coerente con gli elementi seguenti:
- Sicurezza, aggiungendo strumenti di analisi delle vulnerabilità come l'analisi dei contenitori nelle prime fasi della pipeline.
- Criteri, usando i criteri distribuiti come codice e applicando i criteri in modo nativo del cloud tramite controller di ammissione.
Considerare ogni guasto, errore o interruzione come un'opportunità per automatizzare e migliorare la qualità complessiva della soluzione. Integrare questo approccio nel framework SRE (Site Reliability Engineering) e di spostamento a sinistra.