Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questa guida si distribuisce un controller GitHub Actions a disponibilità elevata e agenti self-hosted in esecuzione nel servizio Azure Kubernetes. Gli strumenti di esecuzione self-hosted usano condivisioni file di Azure SMB per l'archiviazione permanente.
Importante
Il software open source è citato nella documentazione e negli esempi di AKS (Azure Kubernetes Service). Il software che distribuisci è escluso dagli accordi sul livello di servizio di AKS, dalla garanzia limitata e dal supporto Azure. Quando si utilizza la tecnologia open source insieme ad AKS, consultare le opzioni di supporto disponibili dalle rispettive community e dai manutentori di progetti per sviluppare un piano.
Microsoft si assume la responsabilità di creare i pacchetti open source che distribuiamo su AKS. Tale responsabilità include la completa gestione dei processi di build, scan, firma, validazione e hotfix, oltre al controllo dei file binari nelle immagini dei contenitori. Per altre informazioni, vedere Gestione delle vulnerabilità per il servizio Azure Kubernetes e Copertura del supporto del servizio Azure Kubernetes.
Che cos'è Actions Runner Controller (ARC)?
Actions Runner Controller (ARC) è un operatore di Kubernetes che orchestra e scala i runner self-hosted per GitHub Actions. ARC si basa su volumi persistenti (PV) per condividere le informazioni sui processi tra il pod dello strumento di esecuzione e il pod del processo contenitore. Per ulteriori informazioni, vedere Informazioni su Actions Runner Controller.
Perché usare le azioni GitHub auto-ospitate su AKS (Azure Kubernetes Service)?
I runner di GitHub Actions autogestiti su AKS offrono alle organizzazioni un maggiore controllo, scalabilità e sicurezza sulla loro infrastruttura CI/CD. Invece di basarsi su strumenti di esecuzione ospitati su GitHub, che sono strumenti di esecuzione condivisi e temporanei, gli strumenti di esecuzione self-hosted offrono:
- Ambienti personalizzati: Personalizza i runner per soddisfare requisiti specifici di build, test o distribuzione.
- Miglioramenti delle prestazioni: sfruttare l'archiviazione permanente e la memorizzazione nella cache per ridurre i tempi di compilazione e migliorare l'affidabilità.
- Efficienza dei costi su larga scala: scala dinamicamente i runner all'interno della tua infrastruttura, ottimizzando i flussi di lavoro frequenti o a lunga durata.
- Sicurezza e isolamento migliorati: mantenere il controllo completo sull'infrastruttura e sui dati, ideale per settori regolamentati o carichi di lavoro sensibili.
Casi d'uso comuni
- Pipeline CI/CD aziendali: per i team che necessitano di ambienti di compilazione coerenti, sicuri e scalabili.
- Pipeline monorepos o ML di grandi dimensioni: dove la memorizzazione nella cache o la persistenza degli artefatti è fondamentale.
- Ottimizzazione delle prestazioni: uso delle condivisioni SMB Premium di File di Azure per ridurre la latenza dei metadati e aumentare le operazioni di I/O al secondo.
Prerequisiti
- Questa guida presuppone una conoscenza di base dei concetti di base di Kubernetes.
- Sono necessari i ruoli predefiniti di AzureProprietario o Amministratore accesso utenti e Collaboratore in una sottoscrizione nell'account Azure.
È possibile utilizzare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Introduzione ad Azure Cloud Shell.
Se preferisci eseguire localmente i comandi di riferimento della CLI, installa l'Azure CLI. Se si esegue in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se usi un'installazione locale, accedi all'interfaccia della riga di comando di Azure usando il comando az login. Per completare il processo di autenticazione, seguire i passaggi visualizzati nel terminale. Per altre opzioni di accesso, vedere Eseguire l'autenticazione ad Azure con l'interfaccia della riga di comando di Azure.
Quando ti viene richiesto, installa l'estensione Azure CLI al primo utilizzo. Per altre informazioni sulle estensioni, vedere Usare e gestire le estensioni con l'interfaccia della riga di comando di Azure.
Esegui az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, avviare az upgrade.
- È necessario un account GitHub attivo. Fare riferimento alle informazioni sui prezzi in base alla gestione del repository.
- Sono necessarie le risorse seguenti installate:
- Interfaccia della riga di comando di Azure 2.56 o versione successiva.
- Estensione di anteprima del servizio Azure Kubernetes.
- jq versione 1.5 o successiva.
- kubectl versione 1.21.0 o successiva.
- apresl versione 3.3.1 o successiva.
- Visual Studio Code o un altro editor di codice preferito.
Processo di distribuzione
In questa guida si apprenderà come:
- Usare Azure CLI per creare un cluster AKS multizona.
- Distribuire una condivisione file di Azure per usarla nei volumi persistenti di AKS.
- Installare il GitHub Actions Runner Controller (ARC) su AKS.
- Installare un set di scalabilità di strumenti di esecuzione ARC e montare la condivisione file nel servizio Azure Kubernetes.
- Eseguire un flusso di lavoro di esempio usando GitHub Actions.
Architettura di distribuzione
Questa architettura di riferimento illustra come implementare una soluzione di runner autogestito di GitHub Actions usando AKS e Azure File Share (SMB). La soluzione consente alle organizzazioni di eseguire processi del flusso di lavoro GitHub in modo sicuro all'interno della propria infrastruttura di Azure mantenendo al tempo stesso una gestione efficiente delle risorse di archiviazione e scalabilità.
L'architettura è costituita da tre componenti principali:
- Livello di integrazione di GitHub: connette i flussi di lavoro dai repository GitHub all'infrastruttura di Azure.
- Livello di orchestrazione di AKS: Gestisce le istanze di esecuzione containerizzate e il loro ciclo di vita.
- Livello di archiviazione: offre funzionalità di archiviazione permanenti e temporanee per i runner.
Livello di integrazione di GitHub
Il livello di integrazione di GitHub connette i flussi di lavoro dai repository GitHub all'infrastruttura di Azure. I processi del flusso di lavoro vengono inviati da GitHub tramite api.github.com e githubusercontent.com a strumenti di esecuzione self-hosted.
Livello di orchestrazione del cluster AKS
Il livello di orchestrazione del cluster AKS gestisce le istanze in contenitori del runner e il loro ciclo di vita. Il cluster è suddiviso in due spazi dei nomi: arc-controller e arc-runners.
arc-controller gestisce l'infrastruttura dello strumento di esecuzione e i listener di processi.
arc-runners gestisce i segreti, il controllo degli accessi e i runner pod. I runner sono containerizzati, utilizzano archiviazione effimera e si connettono a volumi condivisi e dedicati.
Livello di archiviazione
Il livello di archiviazione Condivisioni file di Azure fornisce sia la condivisione file NuGet con accesso ReadWriteMany per le dipendenze condivise sia l'archiviazione temporanea per gli strumenti di esecuzione, tutti supportati da attestazioni di volume persistente.
Passo successivo
Contributori
Microsoft gestisce questo articolo. I collaboratori seguenti l'hanno originariamente scritto:
- Jorge Arterio | Esperto Senior di Cloud
- Jeff Patterson | Product Manager principale
- Rena Shah | Senior Product Manager
- Shekhar Singh Sorot | Product Manager 2
- Erin Schaffer | Sviluppatore di contenuti 2