Esercitazione: Test di convalida automatizzati
Come parte di ogni commit che crea servizi dati abilitati per Arc, Microsoft esegue pipeline CI/CD automatizzate che eseguono test end-to-end. Questi test vengono orchestrati tramite due contenitori gestiti insieme al prodotto principale (Controller di dati, Istanza gestita di SQL abilitata dal server Azure Arc & PostgreSQL). Questi contenitori sono:
arc-ci-launcher
: contenente le dipendenze di distribuzione (ad esempio, estensioni dell'interfaccia della riga di comando), nonché il codice di distribuzione del prodotto (usando l'interfaccia della riga di comando di Azure) per le modalità di connettività diretta e indiretta. Dopo l'onboarding di Kubernetes con il controller di dati, il contenitore sfrutta Sonobuoy per attivare test di integrazione paralleli.arc-sb-plugin
: un plug-in Sonobuoy contenente pytesttest di integrazione end-to-end basati su semplici test di fumo (distribuzioni, eliminazioni), scenari complessi a disponibilità elevata, chaos-test (eliminazioni di risorse) e così via.
Questi contenitori di test vengono resi disponibili pubblicamente per i clienti e i partner per eseguire test di convalida dei servizi dati abilitati per Arc nei propri cluster Kubernetes in esecuzione ovunque, per convalidare:
- Distribuzione/versioni di Kubernetes
- Distribuzione/versioni host
- Archiviazione (
StorageClass
/CSI), rete (ad esempio,LoadBalancer
, DNS) - Altre configurazioni specifiche di Kubernetes o dell'infrastruttura
Per i clienti che intendono eseguire Servizi dati abilitati per Arc in una distribuzione non documentata, devono eseguire correttamente questi test di convalida per essere considerati supportati. Inoltre, i partner possono usare questo approccio per certificare che la propria soluzione è conforme ai Servizi dati abilitati per Arc. Vedere Convalida kubernetes abilitata per Azure Arc.
Il diagramma seguente illustra questo processo generale:
In questa esercitazione apprenderai a:
- Distribuire
arc-ci-launcher
usandokubectl
- Esaminare i risultati dei test di convalida nell'account di Archiviazione BLOB di Azure
Prerequisiti
Credenziali:
- Il file
test.env.tmpl
contiene le credenziali necessarie ed è una combinazione dei prerequisiti esistenti necessari per eseguire l'onboarding di un Cluster connesso di Azure Arc e Controller dei dati direttamente connesso. Il programma di installazione di questo file è illustrato di seguito con esempi. - Un file kubeconfig nel cluster Kubernetes testato con accesso
cluster-admin
(necessario per l'onboarding del cluster connesso in questo momento)
- Il file
Client-tooling:
kubectl
installato - versione minima (Maggiore:"1", Minore:"21")- Interfaccia della riga di comando
git
(o alternative basate sull'interfaccia utente)
Preparazione del manifesto Kubernetes
L'utilità di avvio viene resa disponibile come parte del repository di microsoft/azure_arc
, come manifesto Kustomize - Kustomize è incorporata in kubectl
, quindi non sono necessari strumenti aggiuntivi.
- Clonare il repository in locale:
git clone https://github.com/microsoft/azure_arc.git
- Passare a
azure_arc/arc_data_services/test/launcher
per visualizzare la struttura di cartelle seguente:
├── base <- Comon base for all Kubernetes Clusters
│ ├── configs
│ │ └── .test.env.tmpl <- To be converted into .test.env with credentials for a Kubernetes Secret
│ ├── kustomization.yaml <- Defines the generated resources as part of the launcher
│ └── launcher.yaml <- Defines the Kubernetes resources that make up the launcher
└── overlays <- Overlays for specific Kubernetes Clusters
├── aks
│ ├── configs
│ │ └── patch.json.tmpl <- To be converted into patch.json, patch for Data Controller control.json
│ └── kustomization.yaml
├── kubeadm
│ ├── configs
│ │ └── patch.json.tmpl
│ └── kustomization.yaml
└── openshift
├── configs
│ └── patch.json.tmpl
├── kustomization.yaml
└── scc.yaml
In questa esercitazione verranno illustrati i passaggi per il servizio Azure Kubernetes, ma la struttura di sovrapposizione precedente può essere estesa per includere distribuzioni Kubernetes aggiuntive.
Il manifesto pronto per la distribuzione rappresenterà quanto segue:
├── base
│ ├── configs
│ │ ├── .test.env <- Config 1: For Kubernetes secret, see sample below
│ │ └── .test.env.tmpl
│ ├── kustomization.yaml
│ └── launcher.yaml
└── overlays
└── aks
├── configs
│ ├── patch.json.tmpl
│ └── patch.json <- Config 2: For control.json patching, see sample below
└── kustomization.yam
Esistono due file che devono essere generati per localizzare l'utilità di avvio da eseguire all'interno di un ambiente specifico. Ognuno di questi file può essere generato copiando e incollando e compilando ognuno dei file del modello (*.tmpl
) sopra:
.test.env
: compilare da.test.env.tmpl
patch.json
: compilare dapatch.json.tmpl
Suggerimento
Il .test.env
è un singolo set di variabili di ambiente che determina il comportamento dell'utilità di avvio. La generazione con attenzione per un determinato ambiente garantirà la riproducibilità del comportamento dell'utilità di avvio.
Config 1: .test.env
Un esempio compilato del file .test.env
generato in base a .test.env.tmpl
viene condiviso di seguito con commenti inline.
Importante
La sintassi export VAR="value"
seguente non deve essere eseguita in locale per le variabili di ambiente di origine dal computer, ma è disponibile per l'utilità di avvio. L'utilità di avvio monta questo file .test.env
così com'è come Kubernetes secret
usando secretGenerator
di Kustomize (Kustomize accetta un file, base64 codifica il contenuto dell'intero file e lo trasforma in un segreto Kubernetes). Durante l'inizializzazione, l'utilità di avvio esegue il comando source
di Bash, che importa le variabili di ambiente dal file .test.env
montato così com'è nell'ambiente dell'utilità di avvio.
In altre parole, dopo aver incollato .test.env.tmpl
e modificato per creare .test.env
, il file generato dovrebbe essere simile all'esempio seguente. Il processo di compilazione del file .test.env
è identico tra sistemi operativi e terminali.
Suggerimento
Esistono alcune variabili di ambiente che richiedono spiegazioni aggiuntive per maggiore chiarezza nella riproducibilità. Queste verranno commentate con see detailed explanation below [X]
.
Suggerimento
Si noti che l'esempio .test.env
riportato di seguito è dedicato alla modalità diretta. Alcune di queste variabili, ad esempio ARC_DATASERVICES_EXTENSION_VERSION_TAG
, non si applicano alla modalità indiretta. Per semplicità, è consigliabile configurare il file di .test.env
con variabili di modalità diretta tenendo presente che se si cambia CONNECTIVITY_MODE=indirect
l'utilità di avvio ignorerà le impostazioni specifiche della modalità diretta e userà un subset dall'elenco.
In altre parole, la pianificazione per la modalità diretta consente di soddisfare le variabili della modalità indiretta.
Esempio completato di .test.env
:
# ======================================
# Arc Data Services deployment version =
# ======================================
# Controller deployment mode: direct, indirect
# For 'direct', the launcher will also onboard the Kubernetes Cluster to Azure Arc
# For 'indirect', the launcher will skip Azure Arc and extension onboarding, and proceed directly to Data Controller deployment - see `patch.json` file
export CONNECTIVITY_MODE="direct"
# The launcher supports deployment of both GA/pre-GA trains - see detailed explanation below [1]
export ARC_DATASERVICES_EXTENSION_RELEASE_TRAIN="stable"
export ARC_DATASERVICES_EXTENSION_VERSION_TAG="1.11.0"
# Image version
export DOCKER_IMAGE_POLICY="Always"
export DOCKER_REGISTRY="mcr.microsoft.com"
export DOCKER_REPOSITORY="arcdata"
export DOCKER_TAG="v1.11.0_2022-09-13"
# "arcdata" Azure CLI extension version override - see detailed explanation below [2]
export ARC_DATASERVICES_WHL_OVERRIDE=""
# ================
# ARM parameters =
# ================
# Custom Location Resource Provider Azure AD Object ID - this is a single, unique value per Azure AD tenant - see detailed explanation below [3]
export CUSTOM_LOCATION_OID="..."
# A pre-rexisting Resource Group is used if found with the same name. Otherwise, launcher will attempt to create a Resource Group
# with the name specified, using the Service Principal specified below (which will require `Owner/Contributor` at the Subscription level to work)
export LOCATION="eastus"
export RESOURCE_GROUP_NAME="..."
# A Service Principal with "sufficient" privileges - see detailed explanation below [4]
export SPN_CLIENT_ID="..."
export SPN_CLIENT_SECRET="..."
export SPN_TENANT_ID="..."
export SUBSCRIPTION_ID="..."
# Optional: certain integration tests test upload to Log Analytics workspace:
# https://learn.microsoft.com/azure/azure-arc/data/upload-logs
export WORKSPACE_ID="..."
export WORKSPACE_SHARED_KEY="..."
# ====================================
# Data Controller deployment profile =
# ====================================
# Samples for AKS
# To see full list of CONTROLLER_PROFILE, run: az arcdata dc config list
export CONTROLLER_PROFILE="azure-arc-aks-default-storage"
# azure, aws, gcp, onpremises, alibaba, other
export DEPLOYMENT_INFRASTRUCTURE="azure"
# The StorageClass used for PVCs created during the tests
export KUBERNETES_STORAGECLASS="default"
# ==============================
# Launcher specific parameters =
# ==============================
# Log/test result upload from launcher container, via SAS URL - see detailed explanation below [5]
export LOGS_STORAGE_ACCOUNT="<your-storage-account>"
export LOGS_STORAGE_ACCOUNT_SAS="?sv=2021-06-08&ss=bfqt&srt=sco&sp=rwdlacupiytfx&se=...&spr=https&sig=..."
export LOGS_STORAGE_CONTAINER="arc-ci-launcher-1662513182"
# Test behavior parameters
# The test suites to execute - space seperated array,
# Use these default values that run short smoke tests, further elaborate test suites will be added in upcoming releases
export SQL_HA_TEST_REPLICA_COUNT="3"
export TESTS_DIRECT="direct-crud direct-hydration controldb"
export TESTS_INDIRECT="billing controldb kube-rbac"
export TEST_REPEAT_COUNT="1"
export TEST_TYPE="ci"
# Control launcher behavior by setting to '1':
#
# - SKIP_PRECLEAN: Skips initial cleanup
# - SKIP_SETUP: Skips Arc Data deployment
# - SKIP_TEST: Skips sonobuoy tests
# - SKIP_POSTCLEAN: Skips final cleanup
# - SKIP_UPLOAD: Skips log upload
#
# See detailed explanation below [6]
export SKIP_PRECLEAN="0"
export SKIP_SETUP="0"
export SKIP_TEST="0"
export SKIP_POSTCLEAN="0"
export SKIP_UPLOAD="0"
Importante
Se si esegue la generazione di file di configurazione in un computer Windows, sarà necessario convertire la sequenza end-of-line da CRLF
(Windows) a LF
(Linux), dal momento che arc-ci-launcher
viene eseguito come contenitore Linux. Lasciare la riga terminare con CRLF
può causare un errore all'avvio del contenitore arc-ci-launcher
, ad esempio: /launcher/config/.test.env: $'\r': command not found
Ad esempio, eseguire la modifica usando VSCode (in basso a destra della finestra):
Spiegazione dettagliata per determinate variabili
1. ARC_DATASERVICES_EXTENSION_*
- Versione dell'estensione e training
Obbligatorio: obbligatorio per le distribuzioni della modalità
direct
.
L'utilità di avvio può distribuire sia versioni GA che versioni precedenti a GA.
Il mapping della versione di estensione per release-train (ARC_DATASERVICES_EXTENSION_RELEASE_TRAIN
) è ottenuto da qui:
- GA:
stable
- Log delle versioni - Pre-GA:
preview
- Test delle versioni non definitive
2. ARC_DATASERVICES_WHL_OVERRIDE
- URL di download della versione precedente dell'interfaccia della riga di comando di Azure
Facoltativo: lasciare vuoto in
.test.env
per usare l'impostazione predefinita preconfezionata.
L'immagine dell'utilità di avvio è preconfezionata con la versione più recente dell'interfaccia della riga di comando arcdata al momento della versione di ogni immagine del contenitore. Tuttavia, per lavorare con le versioni precedenti e i test di aggiornamento, potrebbe essere necessario fornire all'utilità di avvio il collegamento di download dell'URL BLOB dell'interfaccia della riga di comando di Azure, per eseguire l'override della versione preassemblata; ad esempio, per indicare all'utilità di avvio di installare la versione 1.4.3, compilare:
export ARC_DATASERVICES_WHL_OVERRIDE="https://azurearcdatacli.blob.core.windows.net/cli-extensions/arcdata-1.4.3-py2.py3-none-any.whl"
La versione dell'interfaccia della riga di comando per il mapping degli URL BLOB è disponibile qui.
3. CUSTOM_LOCATION_OID
- ID oggetto Percorsi personalizzati dal tenant specifico di Microsoft Entra
Obbligatorio: è obbligatorio per la creazione della posizione personalizzata del cluster connesso.
I passaggi seguenti vengono originati da Abilitare percorsi personalizzati nel cluster per recuperare l'ID oggetto percorso personalizzato univoco per il tenant di Microsoft Entra.
Esistono due approcci per ottenere il CUSTOM_LOCATION_OID
per il tenant di Microsoft Entra.
Tramite l'interfaccia della riga di comando di Azure:
az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv # 51dfe1e8-70c6-4de... <--- This is for Microsoft's own tenant - do not use, the value for your tenant will be different, use that instead to align with the Service Principal for launcher.
Tramite il portale di Azure, passare al pannello Microsoft Entra e cercare
Custom Locations RP
:
4. SPN_CLIENT_*
- Aggiunta delle credenziali dell'entità servizio
Obbligatorio: obbligatorio per le distribuzioni in modalità diretta.
L'utilità di avvio accede ad Azure usando queste credenziali.
I test di convalida devono essere eseguiti in cluster Kubernetes non di produzione/test e sottoscrizioni di Azure, concentrandosi sulla convalida funzionale della configurazione di Kubernetes/Infrastruttura. Pertanto, per evitare il numero di passaggi manuali necessari per eseguire i lanci, è consigliabile fornire un SPN_CLIENT_ID/SECRET
con Owner
a livello di gruppo di risorse (o sottoscrizione), in quanto creerà diverse risorse in questo gruppo di risorse, nonché l'assegnazione di autorizzazioni a tali risorse per diverse identità gestite create come parte della distribuzione (queste assegnazioni di ruolo richiedono che l'entità servizio abbia Owner
).
5. LOGS_STORAGE_ACCOUNT_SAS
- URL di firma di accesso condiviso dell'account di archiviazione BLOB
Consigliato: lasciare vuoto questo significa che non si otterranno i risultati e i log dei test.
L'utilità di avvio richiede un percorso permanente (Archiviazione BLOB di Azure) per caricare i risultati, perché Kubernetes non consente ancora la copia di file da pod arrestati/completati. Vedere qui. L'utilità di avvio consente di ottenere la connettività all'Archiviazione BLOB di Azure usando un URL di firma di accesso condiviso con ambito account (anziché contenitore o BLOB con ambito) - un URL firmato con una definizione di accesso con associazione a tempo - vedere Concedere l'accesso limitato alle risorse di Archiviazione di Azure usando firme di accesso condiviso (SAS), per:
- Creare un nuovo contenitore di archiviazione nell'account di archiviazione preesistente (
LOGS_STORAGE_ACCOUNT
), se non esiste (nome basato suLOGS_STORAGE_CONTAINER
) - Creare nuovi BLOB denominati in modo univoco (file tar di log di test)
I passaggi seguenti sono originati da Concedere l'accesso limitato alle risorse di Archiviazione di Azure usando firme di accesso condiviso (SAS).
Suggerimento
Gli URL di firma di accesso condiviso sono diversi dalla chiave dell'account di archiviazione, un URL di firma di accesso condiviso viene formattato come segue.
?sv=2021-06-08&ss=bfqt&srt=sco&sp=rwdlacupiytfx&se=...&spr=https&sig=...
Esistono diversi approcci alla generazione di un URL di firma di accesso condiviso. Questo esempio mostra il portale:
Per usare invece l'interfaccia della riga di comando di Azure, vedere az storage account generate-sas
6. SKIP_*
- controllo del comportamento dell'utilità di avvio ignorando determinate fasi
Facoltativo: lasciare vuoto in
.test.env
per eseguire tutte le fasi (equivalente a0
o vuoto)
L'utilità di avvio espone SKIP_*
variabili, per eseguire e ignorare fasi specifiche, ad esempio per eseguire un'esecuzione "solo pulizia".
Anche se l'utilità di avvio è progettata per pulire sia all'inizio che alla fine di ogni esecuzione, è possibile che l'avvio e/o gli errori di test lascino le risorse residui dietro. Per eseguire l'utilità di avvio in modalità "solo pulizia", impostare le variabili seguenti in .test.env
:
export SKIP_PRECLEAN="0" # Run cleanup
export SKIP_SETUP="1" # Do not setup Arc-enabled Data Services
export SKIP_TEST="1" # Do not run integration tests
export SKIP_POSTCLEAN="1" # POSTCLEAN is identical to PRECLEAN, although idempotent, not needed here
export SKIP_UPLOAD="1" # Do not upload logs from this run
Le impostazioni precedenti indicano all'utilità di avvio di pulire tutte le risorse di Arc e Servizi dati Arc e di non distribuire/testare/caricare i log.
Config 2: patch.json
Un esempio compilato del file patch.json
generato in base a patch.json.tmpl
viene condiviso di seguito.
Notare che il
spec.docker.registry, repository, imageTag
deve essere identico ai valori in.test.env
sopra
Esempio completato di patch.json
:
{
"patch": [
{
"op": "add",
"path": "spec.docker",
"value": {
"registry": "mcr.microsoft.com",
"repository": "arcdata",
"imageTag": "v1.11.0_2022-09-13",
"imagePullPolicy": "Always"
}
},
{
"op": "add",
"path": "spec.storage.data.className",
"value": "default"
},
{
"op": "add",
"path": "spec.storage.logs.className",
"value": "default"
}
]
}
Distribuzione dell'utilità di avvio
È consigliabile distribuire l'utilità di avvio in un cluster non di produzione/test, perché esegue azioni distruttive su Arc e altre risorse Kubernetes usate.
Specifiche di imageTag
L'utilità di avvio viene definita all'interno del manifesto di Kubernetes come Job
, che richiede di indicare a Kubernetes dove trovare l'immagine dell'utilità di avvio. Questa opzione è impostata in base/kustomization.yaml
:
images:
- name: arc-ci-launcher
newName: mcr.microsoft.com/arcdata/arc-ci-launcher
newTag: v1.11.0_2022-09-13
Suggerimento
Per riepilogare, a questo punto, ci sono 3 posizioni specificate imageTag
, per maggiore chiarezza, ecco una spiegazione dei diversi usi di ognuno di essi. In genere, quando si testa una determinata versione, tutti e 3 i valori sono gli stessi (allineati a una determinata versione):
# | Filename | Nome variabile | Perché? | In uso da? |
---|---|---|---|---|
1 | .test.env |
DOCKER_TAG |
Origine dell'immagine del programma di avvio automatico nell'ambito dell'installazione dell'estensione | az k8s-extension create nell'utilità di avvio |
2 | patch.json |
value.imageTag |
Origine dell'immagine del titolare del trattamento dei dati | az arcdata dc create nell'utilità di avvio |
3 | kustomization.yaml |
images.newTag |
Origine dell'immagine dell'utilità di avvio | kubectl apply nell'utilità di avvio |
kubectl apply
Per verificare che il manifesto sia stato configurato correttamente, tentare la convalida lato client con --dry-run=client
, che stampa le risorse Kubernetes da creare per l'utilità di avvio:
kubectl apply -k arc_data_services/test/launcher/overlays/aks --dry-run=client
# namespace/arc-ci-launcher created (dry run)
# serviceaccount/arc-ci-launcher created (dry run)
# clusterrolebinding.rbac.authorization.k8s.io/arc-ci-launcher created (dry run)
# secret/test-env-fdgfm8gtb5 created (dry run) <- Created from Config 1: `patch.json`
# configmap/control-patch-2hhhgk847m created (dry run) <- Created from Config 2: `.test.env`
# job.batch/arc-ci-launcher created (dry run)
Per distribuire l'utilità di avvio e i log della parte finale, eseguire quanto segue:
kubectl apply -k arc_data_services/test/launcher/overlays/aks
kubectl wait --for=condition=Ready --timeout=360s pod -l job-name=arc-ci-launcher -n arc-ci-launcher
kubectl logs job/arc-ci-launcher -n arc-ci-launcher --follow
A questo punto, l'utilità di avvio dovrebbe essere avviata e dovrebbe essere visualizzato quanto segue:
Anche se è consigliabile distribuire l'utilità di avvio in un cluster senza risorse Arc preesistenti, l'utilità di avvio contiene la convalida preliminare per individuare i CD e le risorse ARM di Arc e Servizi dati Arc preesistenti e tenta di pulirli in modo ottimale (usando le credenziali dell'entità servizio fornite), prima di distribuire la nuova versione:
Questo stesso processo di individuazione e pulizia dei metadati viene eseguito anche all'uscita dell'utilità di avvio, per lasciare il cluster il più vicino possibile allo stato preesistente prima dell'avvio.
Passaggi eseguiti dall'utilità di avvio
A livello generale, l'utilità di avvio esegue la sequenza di passaggi seguente:
Eseguire l'autenticazione all'API Kubernetes usando l'account del servizio montato su pod
Eseguire l'autenticazione all'API ARM usando un'entità servizio montata su segreto
Eseguire l'analisi dei metadati CRD per individuare le risorse personalizzate di Arc e Servizi dati Arc
Pulire le risorse personalizzate esistenti in Kubernetes e le risorse successive in Azure. Se una mancata corrispondenza tra le credenziali in
.test.env
rispetto alle risorse esistenti nel cluster, uscire.Generare un set univoco di variabili di ambiente in base al timestamp per il nome del cluster Arc, il controller di dati e la posizione/spazio dei nomi personalizzati. Stampa le variabili di ambiente, offuscando i valori sensibili (ad esempio, password dell'entità servizio e così via)
a. Per la modalità diretta: eseguire l'onboarding del cluster in Azure Arc, quindi distribuisce il controller.
b. Per la modalità indiretta: distribuire il titolare del trattamento dei dati
Quando il titolare del trattamento dei dati viene
Ready
, generare un set di log dell'interfaccia della riga di comando di Azure (az arcdata dc debug
) e archiviare localmente, etichettati comesetup-complete
, come baseline.Usare la variabile di ambiente
TESTS_DIRECT/INDIRECT
da.test.env
per avviare un set di esecuzioni di test Sonobuoy parallelizzate in base a una matrice separata da spazi (TESTS_(IN)DIRECT
). Queste esecuzioni vengono eseguite in un nuovo spazio dei nomisonobuoy
, usando il podarc-sb-plugin
che contiene i test di convalida Pytest.aggregatore Sonobuoy accumulare i
junit
risultati dei test e i log per ogni esecuzione di testarc-sb-plugin
, che vengono esportati nel pod dell'utilità di avvio.Restituire il codice di uscita dei test e generare un altro set di log di debug, l'interfaccia della riga di comando di Azure e
sonobuoy
, archiviati in locale, etichettati cometest-complete
.Eseguire un'analisi dei metadati CRD, simile al passaggio 3, per individuare le risorse personalizzate di Arc e Servizi dati Arc esistenti. Quindi, procedere per eliminare tutte le risorse Arc e Arc Data in ordine inverso dalla distribuzione, nonché CRD, Ruolo/ClusterRoles, PV/PVC e così via.
Provare a usare il token di firma di accesso condiviso
LOGS_STORAGE_ACCOUNT_SAS
fornito per creare un nuovo contenitore dell'account di archiviazione denominato in base aLOGS_STORAGE_CONTAINER
, nel account di archiviazione preesistenteLOGS_STORAGE_ACCOUNT
. Se il contenitore dell'account di archiviazione esiste già, usarlo. Caricare tutti i risultati e i log dei test locali in questo contenitore di archiviazione come tarball (vedere di seguito).Uscire.
Test eseguiti per gruppo di test
Sono disponibili circa 375 test di integrazione univoci, in 27 gruppi di test, ognuno dei quali testa una funzionalità separata.
Suite # | Nome gruppo di test | Descrizione del test |
---|---|---|
1 | ad-connector |
Verifica la distribuzione e l'aggiornamento di un connettore Active Directory (AD Connector). |
2 | billing |
Il test di vari tipi di licenza business critical si riflette nella tabella delle risorse nel controller, usata per il caricamento della fatturazione. |
3 | ci-billing |
Simile a billing , ma con più permutazioni CPU/memoria. |
4 | ci-sqlinstance |
Test a esecuzione prolungata per la creazione di più repliche, aggiornamenti, aggiornamento GP -> BC, convalida del backup e SQL Server Agent. |
5 | controldb |
Test Database di controllo : controllo del segreto SA, verifica dell'accesso di sistema, creazione di controlli e verifica della integrità per la versione della build SQL. |
6 | dc-export |
Fatturazione in modalità indiretta e caricamento dell'utilizzo. |
7 | direct-crud |
Crea un'istanza SQL usando le chiamate ARM, convalida sia in Kubernetes che in ARM. |
8 | direct-fog |
Crea più istanze DI SQL e crea un gruppo di failover tra di essi usando le chiamate ARM. |
9 | direct-hydration |
Crea un'istanza SQL con l'API Kubernetes, convalida la presenza in ARM. |
10 | direct-upload |
Convalida il caricamento della fatturazione in modalità diretta |
11 | kube-rbac |
Assicura che le autorizzazioni dell'account del servizio Kubernetes per Servizi dati Arc corrispondano alle aspettative con privilegi minimi. |
12 | nonroot |
Assicura che i contenitori vengano eseguiti come utente non radice |
13 | postgres |
Completa vari test di creazione, ridimensionamento, backup/ripristino di Postgres. |
14 | release-sanitychecks |
L’integrità controlla le versioni da mese a mese, ad esempio le versioni di compilazione di SQL Server. |
15 | sqlinstance |
Versione più breve di ci-sqlinstance , per le convalide veloci. |
16 | sqlinstance-ad |
Verifica la creazione di istanze DI SQL con Active Directory Connector. |
17 | sqlinstance-credentialrotation |
Verifica la rotazione automatica delle credenziali sia per utilizzo generico che per business critical. |
18 | sqlinstance-ha |
Vari test di stress a disponibilità elevata, inclusi i riavvii dei pod, i failover forzati e le sospensioni. |
19 | sqlinstance-tde |
Vari test di Transparent Data Encryption. |
20 | telemetry-elasticsearch |
Convalida l'inserimento dei log in Elasticsearch. |
21 | telemetry-grafana |
Verifica che Grafana sia raggiungibile. |
22 | telemetry-influxdb |
Convalida l'inserimento delle metriche in InfluxDB. |
23 | telemetry-kafka |
Vari test per Kafka tramite SSL, configurazione a broker singolo/multi-broker. |
24 | telemetry-monitorstack |
Verifica i componenti di monitoraggio, ad esempio Fluentbit e Collectd , sono funzionali. |
25 | telemetry-telemetryrouter |
Verifica Apri telemetria. |
26 | telemetry-webhook |
Verifica i webhook di Servizi dati con chiamate valide e non valide. |
27 | upgrade-arcdata |
Aggiorna una suite completa di istanze SQL (GP, replica BC 2, replica BC 3 con Active Directory) e aggiornamenti dalla versione del mese precedente alla build più recente. |
Ad esempio, per sqlinstance-ha
vengono eseguiti i test seguenti:
test_critical_configmaps_present
: garantisce che ConfigMaps e i campi pertinenti siano presenti per un'istanza di SQL.test_suspended_system_dbs_auto_heal_by_orchestrator
: garantisce semaster
emsdb
vengono sospesi con qualsiasi mezzo (in questo caso, utente). La manutenzione dell'agente di orchestrazione riconcilia la guarigione automatica.test_suspended_user_db_does_not_auto_heal_by_orchestrator
: assicura se un database utente viene deliberatamente sospeso dall'utente, la manutenzione dell'agente di orchestrazione non lo risolve automaticamente.test_delete_active_orchestrator_twice_and_delete_primary_pod
: elimina più volte il pod dell'agente di orchestrazione, seguito dalla replica primaria e verifica che tutte le repliche siano sincronizzate. Le aspettative del tempo di failover per 2 repliche sono flessibili.test_delete_primary_pod
: elimina la replica primaria e verifica che tutte le repliche siano sincronizzate. Le aspettative del tempo di failover per 2 repliche sono flessibili.test_delete_primary_and_orchestrator_pod
: elimina la replica primaria e il pod dell'agente di orchestrazione e verifica che tutte le repliche siano sincronizzate.test_delete_primary_and_controller
: elimina la replica primaria e il pod del controller dati e verifica che l'endpoint primario sia accessibile e la nuova replica primaria sia sincronizzata. Le aspettative del tempo di failover per 2 repliche sono flessibili.test_delete_one_secondary_pod
: elimina la replica secondaria e il pod del controller dati e verifica che tutte le repliche siano sincronizzate.test_delete_two_secondaries_pods
: elimina le repliche secondarie e il pod del controller dati e verifica che tutte le repliche siano sincronizzate.test_delete_controller_orchestrator_secondary_replica_pods
:test_failaway
: forza il failover del gruppo di disponibilità dall'istanza primaria corrente, garantisce che il nuovo database primario non sia uguale al database primario precedente. Verifica che tutte le repliche siano sincronizzate.test_update_while_rebooting_all_non_primary_replicas
: gli aggiornamenti basati su controller sono resilienti con tentativi nonostante varie circostanze turbolente.
Nota
Alcuni test possono richiedere hardware specifico, ad esempio l'accesso con privilegi ai controller di dominio per test ad
per la creazione di account e voce DNS, che potrebbero non essere disponibili in tutti gli ambienti che cercano di usare il arc-ci-launcher
.
Esame dei risultati dei test
Contenitore e file di archiviazione di esempio caricati dall'utilità di avvio:
E i risultati del test generati dall'esecuzione:
Pulire le risorse
Per eliminare l'utilità di avvio, eseguire:
kubectl delete -k arc_data_services/test/launcher/overlays/aks
In questo modo vengono puliti i manifesti delle risorse distribuiti come parte dell'utilità di avvio.