Questa pagina spiega i pacchetti della flotta, l'API FleetPackage
e il loro rapporto con Config Sync.
Un FleetPackage
è un'API dichiarativa che ti consente di gestire i pacchetti in una
flotta. Un pacchetto del parco risorse è un insieme di manifest YAML di Kubernetes che definiscono
la configurazione del cluster. Utilizzando i pacchetti del parco risorse, puoi distribuire i pacchetti tramite un'implementazione progressiva o simultanea nei cluster registrati nel parco risorse.
Definisci ogni oggetto FleetPackage
una sola volta, poi puoi aggiornare il pacchetto
con una nuova revisione. Quando applichi una nuova revisione, il servizio del pacchetto del parco risorse rileva
queste modifiche e le distribuisce ai tuoi cluster.
Vantaggi
Utilizza i pacchetti del parco risorse per eseguire il deployment delle risorse Kubernetes nei cluster registrati in un parco risorse. Dopo aver creato e applicato un pacchetto della flotta, questo esegue automaticamente il deployment dei file di configurazione Kubernetes nel repository Git nel nuovo cluster. I pacchetti del parco risorse si basano sui vantaggi di Config Sync, come la correzione automatica della deriva, e offrono i seguenti vantaggi unici:
Automatizza il rollout delle risorse:dopo aver configurato un pacchetto del parco risorse, le risorse Kubernetes a cui fa riferimento vengono distribuite automaticamente dal servizio del pacchetto del parco risorse su tutti i cluster.
Configura automaticamente i nuovi cluster: se configuri un pacchetto del parco risorse e in un secondo momento aggiungi nuovi cluster a un parco risorse, tutte le risorse definite dal pacchetto del parco risorse vengono implementate automaticamente nel nuovo cluster.
Gestisci la configurazione di Kubernetes su larga scala: anziché gestire i cluster uno alla volta, utilizza i pacchetti del parco risorse per eseguire il deployment delle risorse in un intero parco risorse di cluster.
Ridurre al minimo l'impatto di modifiche errate:scegli un numero massimo di cluster in cui eseguire il deployment delle risorse contemporaneamente. Puoi monitorare attentamente le modifiche a ogni cluster per assicurarti che le modifiche errate non influiscano sull'intera flotta.
Semplifica la configurazione di Config Sync:i pacchetti del parco risorse utilizzano Cloud Build per l'autenticazione a Git, il che significa che l'autenticazione viene eseguita una volta per progetto anziché una volta per oggetto
RootSync
oRepoSync
.
Potresti preferire utilizzare Config Sync con oggetti RootSync
o RepoSync
anziché pacchetti del parco risorse se si verifica uno o più dei seguenti scenari:
Gestisci un numero ridotto di cluster.
Hai bisogno di un maggiore controllo sulla modalità di deployment delle risorse nei cluster, oltre a quanto fornito dall'API fleet package con etichette e varianti.
Requisiti e limitazioni
Quando configuri un pacchetto della flotta, sono supportati solo i repository Git come fonte attendibile.
Le risorse Kubernetes archiviate in Git devono rappresentare lo stato finale della risorsa. Non sono supportate sovrapposizioni aggiuntive per trasformare la risorsa archiviata in Git. Per saperne di più sulle differenze tra queste risorse, consulta Best practice: crea repository WET.
L'API
FleetPackage
è disponibile solo nella regioneus-central1
. Puoi comunque eseguire il deployment nei cluster in regioni diverse, ma devi configurare Cloud Build e gcloud CLI inus-central1
.
Architettura
Puoi utilizzare l'API FleetPackage
per eseguire il deployment dei manifest Kubernetes in un parco di cluster. L'API FleetPackage
utilizza Cloud Build per sincronizzare e recuperare le risorse Kubernetes dal tuo repository Git. Il servizio di pacchetti del parco risorse
esegue quindi il deployment di queste risorse nei cluster.
Esempi di casi d'uso
Puoi utilizzare i pacchetti del parco risorse per eseguire il deployment delle risorse da un repository Git nell'intero parco risorse di cluster. Puoi anche configurare il pacchetto del parco risorse per controllare come, dove e quale tipo di risorse vengono implementate.
La sezione seguente mostra esempi di diverse configurazioni di FleetPackage
.
Per informazioni più dettagliate sull'applicazione dei pacchetti del parco risorse, consulta
Distribuire i pacchetti del parco risorse.
Deployment in tutti i cluster di un parco risorse
Il seguente FleetPackage
utilizza una strategia di implementazione
in sequenza per eseguire il deployment delle risorse Kubernetes in tre cluster alla volta e ha come target
tutti i cluster di un parco risorse:
resourceBundleSelector:
cloudBuildRepository:
name: projects/my-project/locations/us-central1/connections/my-connection/repositories/my-repo
tag: v1.0.0
serviceAccount: projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
target:
fleet:
project: projects/my-project
rolloutStrategy:
rolling:
maxConcurrent: 3
Deployment in un sottoinsieme di cluster
Il seguente FleetPackage
utilizza un selettore etichetta per eseguire il deployment delle risorse Kubernetes
solo nei cluster con l'etichetta di appartenenza country
che corrisponde a "us"
nel parco risorse:
resourceBundleSelector:
cloudBuildRepository:
name: projects/my-project/locations/us-central1/connections/my-connection/repositories/my-repo
tag: v1.0.0
serviceAccount: projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
target:
fleet:
project: projects/my-project
selector:
matchLabels:
country: "us"
rolloutStrategy:
rolling:
maxConcurrent: 3
Deployment delle risorse delle varianti in un cluster
Per questo esempio, nel repository Git hai una cartella denominata "deployments" che contiene due specifiche di deployment diverse:
Repliche: 3
# small.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
Repliche: 10
# large.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 10 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
Puoi utilizzare le varianti per eseguire il deployment delle implementazioni "piccole" o "grandi"
in cluster diversi. Ogni cluster ha un'etichetta nginx-size=small
o nginx-size=large
.
FleetPackage
in questo esempio sarebbe simile al seguente:
resourceBundleSelector:
cloudBuildRepository:
name: projects/my-project/locations/us-central1/connections/my-connection/repositories/my-repo
tag: v1.0.0
serviceAccount: projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
path: deployments
variantsPattern: "*.yaml"
rolloutStrategy:
rolling:
maxConcurrent: 2
target:
fleet:
project: projects/my-project
variantSelector:
variantNameTemplate: ${membership.labels['nginx-size']}
Passaggi successivi
Eseguire il deployment dei pacchetti del parco risorse