Tutorial: Pengujian validasi otomatis
Sebagai bagian dari setiap penerapan yang membangun layanan data berkemampuan Arc, Microsoft menjalankan alur CI/CD otomatis yang melakukan pengujian end-to-end. Pengujian ini diorkestrasi melalui dua kontainer yang dipertahankan bersama produk inti (Pengontrol Data, SQL Managed Instance yang diaktifkan oleh server Azure Arc & PostgreSQL). Kontainer ini adalah:
arc-ci-launcher
: Berisi dependensi penyebaran (misalnya, ekstensi CLI), serta kode penyebaran produk (menggunakan Azure CLI) untuk mode konektivitas Langsung dan Tidak Langsung. Setelah Kubernetes di-onboarding dengan Pengontrol Data, kontainer memanfaatkan Sonobuoy untuk memicu pengujian integrasi paralel.arc-sb-plugin
: Plugin Sonobuoy yang berisi pengujian integrasi end-to-end berbasis Pytest, mulai dari uji asap sederhana (penyebaran, penghapusan), hingga skenario ketersediaan tinggi yang kompleks, uji kekacauan (penghapusan sumber daya) dll.
Kontainer pengujian ini tersedia untuk umum bagi pelanggan dan mitra untuk melakukan pengujian validasi layanan data dengan dukungan Arc di kluster Kubernetes mereka sendiri yang berjalan di mana saja, untuk memvalidasi:
- Distro/versi Kubernetes
- Host disto/versions
- Penyimpanan (
StorageClass
/CSI), jaringan (misalnyaLoadBalancer
, DNS) - Kubernetes lain atau penyiapan khusus infrastruktur
Agar Pelanggan yang ingin menjalankan Layanan Data dengan dukungan Arc pada distribusi yang tidak terdokumentasi, mereka harus menjalankan pengujian validasi ini agar berhasil dianggap didukung. Selain itu, Mitra dapat menggunakan pendekatan ini untuk mensertifikasi solusi mereka sesuai dengan Data Services dengan dukungan Arc - lihat Validasi Kubernetes layanan data dengan dukungan Azure Arc.
Diagram berikut menguraikan proses tingkat tinggi ini:
Dalam tutorial ini, Anda akan mempelajari cara:
- Menyebarkan
arc-ci-launcher
menggunakankubectl
- Memeriksa hasil pengujian validasi di akun Azure Blob Storage Anda
Prasyarat
Kredensial:
- File
test.env.tmpl
berisi kredensial yang diperlukan, dan merupakan kombinasi dari prasyarat yang ada yang diperlukan untuk onboarding Kluster Terhubung Azure Arc dan Pengontrol Data yang Terhubung Langsung. Penyetelan file ini dijelaskan di bawah ini dengan sampel. - File kubeconfig ke kluster Kubernetes yang diuji dengan
cluster-admin
akses (diperlukan untuk onboarding Connected Cluster saat ini)
- File
Alat klien:
kubectl
diinstal - versi minimum (Mayor:"1", Minor:"21")git
antarmuka baris perintah (atau alternatif berbasis UI)
Persiapan manifes Kubernetes
Peluncur tersedia sebagai bagian microsoft/azure_arc
dari repositori, sebagai manifes Kustomisasi - Kustomisasi dibangun ke dalam kubectl
- sehingga tidak ada alat tambahan yang diperlukan.
- Kloning repositori secara lokal:
git clone https://github.com/microsoft/azure_arc.git
- Navigasi ke
azure_arc/arc_data_services/test/launcher
, untuk melihat struktur folder berikut:
├── 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
Dalam tutorial ini, kita akan fokus pada langkah-langkah untuk AKS, tetapi struktur overlay di atas dapat diperluas untuk menyertakan distribusi Kubernetes tambahan.
Manifes siap disebarkan akan mewakili hal berikut:
├── 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
Ada dua file yang perlu dibuat untuk melokalisasi peluncur untuk berjalan di dalam lingkungan tertentu. Masing-masing file ini dapat dihasilkan dengan menyalin-menempelkan dan mengisi setiap file templat (*.tmpl
) di atas:
.test.env
: isi dari.test.env.tmpl
patch.json
: isi daripatch.json.tmpl
Tip
.test.env
adalah satu set variabel lingkungan yang mendorong perilaku peluncur. Menghasilkannya dengan hati-hati untuk lingkungan tertentu akan memastikan reproduktifitas perilaku peluncur.
Konfigurasi 1: .test.env
Sampel .test.env
file yang diisi, yang dihasilkan berdasarkan .test.env.tmpl
dibagikan di bawah ini dengan komentar sebaris.
Penting
Sintaks export VAR="value"
di bawah ini tidak dimaksudkan untuk dijalankan secara lokal ke variabel lingkungan sumber dari komputer Anda - tetapi ada untuk peluncur. Peluncur memasang file ini .test.env
apa adanya sebagai Kubernetes secret
menggunakan Kustomize secretGenerator
(Kustomize mengambil file, base64 mengodekan seluruh konten file, dan mengubahnya menjadi rahasia Kubernetes). Selama inisialisasi, peluncur menjalankan perintah bash source
, yang mengimpor variabel lingkungan dari file apa yang dipasang .test.env
ke lingkungan peluncur.
Dengan kata lain, setelah menyalin-menempelkan .test.env.tmpl
dan mengedit untuk membuat .test.env
, file yang dihasilkan akan terlihat mirip dengan sampel di bawah ini. Proses untuk mengisi .test.env
file identik di seluruh sistem operasi dan terminal.
Tip
Ada beberapa variabel lingkungan yang memerlukan penjelasan tambahan untuk kejelasan dalam reproduksi. Ini akan dikomentari dengan see detailed explanation below [X]
.
Tip
Perhatikan bahwa contoh di .test.env
bawah ini adalah untuk mode langsung . Beberapa variabel ini, seperti ARC_DATASERVICES_EXTENSION_VERSION_TAG
tidak berlaku untuk mode tidak langsung . Untuk kesederhanaan, yang terbaik adalah mengatur .test.env
file dengan variabel mode langsung , beralih CONNECTIVITY_MODE=indirect
akan membuat peluncur mengabaikan pengaturan spesifik mode langsung dan menggunakan subset dari daftar.
Dengan kata lain, merencanakan mode langsung memungkinkan kita untuk memenuhi variabel mode tidak langsung .
Sampel selesai dari .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"
Penting
Jika melakukan pembuatan file konfigurasi di komputer Windows, Anda harus mengonversi urutan End-of-Line dari CRLF
(Windows) ke LF
(Linux), sebagai arc-ci-launcher
berjalan sebagai kontainer Linux. Membiarkan baris berakhir sebagai CRLF
dapat menyebabkan kesalahan pada arc-ci-launcher
awal kontainer - seperti: /launcher/config/.test.env: $'\r': command not found
Misalnya, lakukan perubahan menggunakan VSCode (kanan bawah jendela):
Penjelasan terperinci untuk variabel tertentu
1. ARC_DATASERVICES_EXTENSION_*
- Versi ekstensi dan pelatihan
Wajib: ini diperlukan untuk
direct
penyebaran mode.
Peluncur dapat menyebarkan rilis GA dan pra-GA.
Versi ekstensi untuk pemetaan release-train (ARC_DATASERVICES_EXTENSION_RELEASE_TRAIN
) diperoleh dari sini:
- GA:
stable
- Log versi - Pra-GA:
preview
- Pengujian pra-rilis
2. ARC_DATASERVICES_WHL_OVERRIDE
- URL unduhan versi Azure CLI sebelumnya
Opsional: biarkan ini kosong
.test.env
untuk menggunakan default pra-paket.
Gambar peluncur dimas sebelumnya dengan versi CLI arcdata terbaru pada saat setiap rilis gambar kontainer. Namun, untuk bekerja dengan rilis dan pengujian peningkatan yang lebih lama, mungkin perlu menyediakan tautan unduhan URL Blob Azure CLI kepada peluncur, untuk mengambil alih versi yang telah dipaketkan sebelumnya; misalnya untuk menginstruksikan peluncur untuk menginstal versi 1.4.3, isi:
export ARC_DATASERVICES_WHL_OVERRIDE="https://azurearcdatacli.blob.core.windows.net/cli-extensions/arcdata-1.4.3-py2.py3-none-any.whl"
Versi CLI ke pemetaan URL Blob dapat ditemukan di sini.
3. CUSTOM_LOCATION_OID
- ID Objek Lokasi Kustom dari penyewa Microsoft Entra spesifik Anda
Wajib: ini diperlukan untuk pembuatan Lokasi Kustom Kluster Terhubung.
Langkah-langkah berikut bersumber dari Aktifkan lokasi kustom di kluster Anda untuk mengambil ID Objek Lokasi Kustom unik untuk penyewa Microsoft Entra Anda.
Ada dua pendekatan untuk mendapatkan CUSTOM_LOCATION_OID
penyewa Microsoft Entra Anda.
Melalui Azure CLI:
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.
Melalui portal Azure - navigasikan ke bilah Microsoft Entra Anda, dan cari
Custom Locations RP
:
4. SPN_CLIENT_*
- Kredensial Perwakilan Layanan
Wajib: ini diperlukan untuk penyebaran Mode Langsung.
Peluncur masuk ke Azure menggunakan kredensial ini.
Pengujian validasi dimaksudkan untuk dilakukan pada kluster Kubernetes Non-Produksi/Uji & Langganan Azure - berfokus pada validasi fungsional penyiapan Kubernetes/Infrastruktur. Oleh karena itu, untuk menghindari jumlah langkah manual yang diperlukan untuk melakukan peluncuran, disarankan untuk menyediakan SPN_CLIENT_ID/SECRET
yang memiliki Owner
di tingkat Grup Sumber Daya (atau Langganan), karena akan membuat beberapa sumber daya dalam Grup Sumber Daya ini, serta menetapkan izin ke sumber daya tersebut terhadap beberapa Identitas Terkelola yang dibuat sebagai bagian dari penyebaran (penetapan peran ini pada gilirannya mengharuskan Perwakilan Layanan memiliki Owner
).
5. LOGS_STORAGE_ACCOUNT_SAS
- URL SAS Akun Penyimpanan Blob
Disarankan: membiarkan ini kosong berarti Anda tidak akan mendapatkan hasil dan log pengujian.
Peluncur memerlukan lokasi persisten (Azure Blob Storage) untuk mengunggah hasil, karena Kubernetes belum (belum) mengizinkan penyalinan file dari pod yang dihentikan/selesai - lihat di sini. Peluncur mencapai konektivitas ke Azure Blob Storage menggunakan URL SAS yang dilingkup akun (dibandingkan dengan cakupan kontainer atau blob) - URL yang ditandatangani dengan definisi akses terikat waktu - lihat Memberikan akses terbatas ke sumber daya Azure Storage menggunakan tanda tangan akses bersama (SAS), untuk:
- Buat Kontainer Penyimpanan baru di Akun Penyimpanan yang sudah ada sebelumnya (
LOGS_STORAGE_ACCOUNT
), jika tidak ada (nama berdasarkanLOGS_STORAGE_CONTAINER
) - Membuat blob baru bernama unik (file log tar pengujian)
Langkah-langkah berikut bersumber dari Berikan akses terbatas ke sumber daya Azure Storage menggunakan tanda tangan akses bersama (SAS).
Tip
URL SAS berbeda dari Kunci Akun Penyimpanan, URL SAS diformat sebagai berikut.
?sv=2021-06-08&ss=bfqt&srt=sco&sp=rwdlacupiytfx&se=...&spr=https&sig=...
Ada beberapa pendekatan untuk menghasilkan URL SAS. Contoh ini menunjukkan portal:
Untuk menggunakan Azure CLI sebagai gantinya, lihat az storage account generate-sas
6. SKIP_*
- mengontrol perilaku peluncur dengan melewati tahap tertentu
Opsional: biarkan ini kosong
.test.env
untuk menjalankan semua tahapan (setara dengan0
atau kosong)
Peluncur mengekspos SKIP_*
variabel, untuk menjalankan dan melewati tahap tertentu - misalnya, untuk melakukan eksekusi "pembersihan saja".
Meskipun peluncur dirancang untuk membersihkan baik di awal maupun di akhir setiap eksekusi, dimungkinkan untuk peluncuran dan/atau kegagalan pengujian untuk meninggalkan sumber daya residu. Untuk menjalankan peluncur dalam mode "bersihkan saja", atur variabel berikut di .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
Pengaturan di atas menginstruksikan peluncur untuk membersihkan semua sumber daya Arc dan Arc Data Services, dan untuk tidak menyebarkan/menguji/mengunggah log.
Konfigurasi 2: patch.json
Sampel file yang patch.json
diisi, yang dihasilkan berdasarkan patch.json.tmpl
dibagikan di bawah ini:
Perhatikan bahwa
spec.docker.registry, repository, imageTag
harus identik dengan nilai di.test.env
atas
Sampel selesai dari 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"
}
]
}
Penyebaran peluncur
Disarankan untuk menyebarkan peluncur dalam kluster Non-Produksi/Pengujian - karena melakukan tindakan destruktif pada Arc dan sumber daya Kubernetes lainnya yang digunakan.
imageTag
Spesifikasi
Peluncur didefinisikan dalam Manifes Kubernetes sebagai Job
, yang mengharuskan menginstruksikan Kubernetes tempat menemukan gambar peluncur. Ini diatur dalam base/kustomization.yaml
:
images:
- name: arc-ci-launcher
newName: mcr.microsoft.com/arcdata/arc-ci-launcher
newTag: v1.11.0_2022-09-13
Tip
Untuk rekap, pada titik ini - ada 3 tempat yang kami tentukan imageTag
, untuk kejelasan, berikut adalah penjelasan tentang berbagai penggunaan masing-masing. Biasanya - saat menguji rilis tertentu, semua 3 nilai akan sama (selaras dengan rilis tertentu):
# | Filename | Nama variabel | Mengapa? | Digunakan oleh? |
---|---|---|---|---|
1 | .test.env |
DOCKER_TAG |
Sumber gambar Bootstrapper sebagai bagian dari penginstalan ekstensi | az k8s-extension create di peluncur |
2 | patch.json |
value.imageTag |
Sumber gambar Pengontrol Data | az arcdata dc create di peluncur |
3 | kustomization.yaml |
images.newTag |
Sumber gambar peluncur | kubectl apply ing peluncur |
kubectl apply
Untuk memvalidasi bahwa manifes telah disiapkan dengan benar, coba validasi sisi klien dengan --dry-run=client
, yang mencetak sumber daya Kubernetes yang akan dibuat untuk peluncur:
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)
Untuk menyebarkan peluncur dan log ekor, jalankan hal berikut:
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
Pada titik ini, peluncur harus dimulai - dan Anda akan melihat yang berikut:
Meskipun yang terbaik adalah menyebarkan peluncur dalam kluster tanpa sumber daya Arc yang sudah ada sebelumnya, peluncur berisi validasi pra-penerbangan untuk menemukan CRD dan sumber daya ARM Arc dan Arc Data Services yang sudah ada sebelumnya, dan mencoba membersihkannya dengan upaya terbaik (menggunakan kredensial Perwakilan Layanan yang disediakan), sebelum menyebarkan rilis baru:
Proses penemuan dan pembersihan metadata yang sama ini juga dijalankan saat peluncur keluar, untuk meninggalkan kluster sedekat mungkin dengan status yang sudah ada sebelumnya sebelum peluncuran.
Langkah-langkah yang dilakukan oleh peluncur
Pada tingkat tinggi, peluncur melakukan urutan langkah-langkah berikut:
Mengautentikasi ke API Kubernetes menggunakan Akun Layanan yang dipasang Pod
Mengautentikasi ke ARM API menggunakan Perwakilan Layanan yang dipasang Rahasia
Lakukan pemindaian metadata CRD untuk menemukan Sumber Daya Kustom Arc dan Arc Data Services yang ada
Bersihkan Sumber Daya Kustom yang ada di Kubernetes, dan sumber daya berikutnya di Azure. Jika ada ketidakcocokan antara kredensial dibandingkan
.test.env
dengan sumber daya yang ada di kluster, keluar.Hasilkan sekumpulan variabel lingkungan unik berdasarkan tanda waktu untuk nama Kluster Arc, Pengontrol Data, dan Lokasi Kustom/Namespace. Mencetak variabel lingkungan, mengaburkan nilai sensitif (misalnya Kata Sandi Perwakilan Layanan, dll.)
a. Untuk Mode Langsung - Onboard Kluster ke Azure Arc, lalu sebarkan pengontrol.
b. Untuk Mode Tidak Langsung: sebarkan Pengontrol Data
Setelah Pengontrol Data adalah
Ready
, buat sekumpulan log Azure CLI (az arcdata dc debug
) dan simpan secara lokal, berlabel sebagaisetup-complete
- sebagai garis besar.TESTS_DIRECT/INDIRECT
Gunakan variabel lingkungan dari.test.env
untuk meluncurkan serangkaian eksekusi pengujian Sonobuoy paralel berdasarkan array yang dipisahkan spasi (TESTS_(IN)DIRECT
). Eksekusi ini dijalankan di namespace barusonobuoy
, menggunakanarc-sb-plugin
pod yang berisi pengujian validasi Pytest.Agregator Sonobuoy mengakumulasi
junit
hasil pengujian dan log perarc-sb-plugin
eksekusi pengujian, yang diekspor ke dalam pod peluncur.Kembalikan kode keluar dari pengujian, dan hasilkan serangkaian log debug lain - Azure CLI dan
sonobuoy
- disimpan secara lokal, berlabel sebagaitest-complete
.Lakukan pemindaian metadata CRD, mirip dengan Langkah 3, untuk menemukan Sumber Daya Kustom Arc dan Arc Data Services yang ada. Kemudian, lanjutkan untuk menghancurkan semua sumber daya Data Arc dan Arc dalam urutan terbalik dari penyebaran, serta CRD, Role/ClusterRoles, PV/PVC, dll.
Coba gunakan token
LOGS_STORAGE_ACCOUNT_SAS
SAS yang disediakan untuk membuat kontainer Akun Penyimpanan baru bernama berdasarkanLOGS_STORAGE_CONTAINER
, di AkunLOGS_STORAGE_ACCOUNT
Penyimpanan yang sudah ada sebelumnya . Jika kontainer Akun Penyimpanan sudah ada, gunakan kontainer tersebut. Unggah semua hasil pengujian dan log lokal ke kontainer penyimpanan ini sebagai tarball (lihat di bawah).Keluar.
Pengujian yang dilakukan per rangkaian pengujian
Ada sekitar 375 pengujian integrasi unik yang tersedia, di 27 suite pengujian - masing-masing menguji fungsionalitas terpisah.
Suite # | Nama rangkaian pengujian | Deskripsi pengujian |
---|---|---|
1 | ad-connector |
Menguji penyebaran dan pembaruan Konektor Direktori Aktif (Konektor AD). |
2 | billing |
Menguji berbagai jenis lisensi Business Critical tercermin dalam tabel sumber daya di pengontrol, yang digunakan untuk Pengunggahan penagihan. |
3 | ci-billing |
Mirip dengan billing , tetapi dengan lebih banyak permutasi CPU/Memori. |
4 | ci-sqlinstance |
Pengujian jangka panjang untuk pembuatan multi-replika, pembaruan, GP -> Pembaruan BC, Validasi cadangan, dan Agen SQL Server. |
5 | controldb |
Database Kontrol Pengujian - Pemeriksaan rahasia SA, verifikasi masuk sistem, pembuatan audit, dan pemeriksaan kewarasan untuk versi build SQL. |
6 | dc-export |
Pengunggahan penagihan dan penggunaan Mode Tidak Langsung. |
7 | direct-crud |
Membuat instans SQL menggunakan panggilan ARM, memvalidasi di Kubernetes dan ARM. |
8 | direct-fog |
Membuat beberapa instans SQL dan membuat Grup Failover di antara mereka menggunakan panggilan ARM. |
9 | direct-hydration |
Membuat Instans SQL dengan API Kubernetes, memvalidasi kehadiran di ARM. |
10 | direct-upload |
Memvalidasi pengunggahan penagihan dalam Mode Langsung |
11 | kube-rbac |
Memastikan izin Akun Layanan Kubernetes untuk Arc Data Services cocok dengan harapan hak istimewa terkecil. |
12 | nonroot |
Memastikan kontainer berjalan sebagai pengguna non-root |
13 | postgres |
Menyelesaikan berbagai pengujian pembuatan, penskalaan, pencadangan/pemulihan Postgres. |
14 | release-sanitychecks |
Pemeriksaan kewarasan untuk rilis bulan ke bulan, seperti versi Build SQL Server. |
15 | sqlinstance |
Versi yang lebih pendek dari ci-sqlinstance , untuk validasi cepat. |
16 | sqlinstance-ad |
Menguji pembuatan Instans SQL dengan Konektor Direktori Aktif. |
17 | sqlinstance-credentialrotation |
Menguji Rotasi Kredensial Otomatis untuk Tujuan Umum dan Kritis Bisnis. |
18 | sqlinstance-ha |
Berbagai tes High Availability Stress, termasuk reboot pod, failover paksa, dan suspensi. |
19 | sqlinstance-tde |
Berbagai pengujian Enkripsi Data Transparan. |
20 | telemetry-elasticsearch |
Memvalidasi Penyerapan log ke Elasticsearch. |
21 | telemetry-grafana |
Validasi Grafana dapat dijangkau. |
22 | telemetry-influxdb |
Memvalidasi penyerapan Metrik ke dalam InfluxDB. |
23 | telemetry-kafka |
Berbagai pengujian untuk Kafka menggunakan SSL, pengaturan tunggal/multi-broker. |
24 | telemetry-monitorstack |
Menguji komponen Pemantauan, seperti Fluentbit dan Collectd berfungsi. |
25 | telemetry-telemetryrouter |
Menguji Telemetri Terbuka. |
26 | telemetry-webhook |
Menguji Webhook Data Services dengan panggilan yang valid dan tidak valid. |
27 | upgrade-arcdata |
Meningkatkan rangkaian lengkap Instans SQL (GP, replika BC 2, replika BC 3, dengan Direktori Aktif) dan peningkatan dari rilis bulan lalu ke build terbaru. |
Sebagai contoh, untuk sqlinstance-ha
, pengujian berikut dilakukan:
test_critical_configmaps_present
: Memastikan ConfigMaps dan bidang yang relevan ada untuk Instans SQL.test_suspended_system_dbs_auto_heal_by_orchestrator
: Memastikan apakahmaster
danmsdb
ditangguhkan dengan cara apa pun (dalam hal ini, pengguna). Pemeliharaan orkestrator menyembuhkannya secara otomatis.test_suspended_user_db_does_not_auto_heal_by_orchestrator
: Memastikan apakah Database Pengguna sengaja ditangguhkan oleh pengguna, rekonsiliasi pemeliharaan Orchestrator tidak memulihkannya secara otomatis.test_delete_active_orchestrator_twice_and_delete_primary_pod
: Menghapus pod orkestrator beberapa kali, diikuti oleh replika utama, dan memverifikasi semua replika disinkronkan. Harapan waktu failover untuk 2 replika dilonggarkan.test_delete_primary_pod
: Menghapus replika utama dan memverifikasi semua replika disinkronkan. Harapan waktu failover untuk 2 replika dilonggarkan.test_delete_primary_and_orchestrator_pod
: Menghapus pod replika dan orkestrator utama dan memverifikasi semua replika disinkronkan.test_delete_primary_and_controller
: Menghapus replika utama dan pod pengontrol data dan memverifikasi titik akhir utama dapat diakses dan replika utama baru disinkronkan. Harapan waktu failover untuk 2 replika dilonggarkan.test_delete_one_secondary_pod
: Menghapus replika sekunder dan pod pengontrol data dan memverifikasi semua replika disinkronkan.test_delete_two_secondaries_pods
: Menghapus replika sekunder dan pod pengontrol data dan memverifikasi semua replika disinkronkan.test_delete_controller_orchestrator_secondary_replica_pods
:test_failaway
: Memaksa failover AG menjauh dari primer saat ini, memastikan primer baru tidak sama dengan primer lama. Memverifikasi semua replika disinkronkan.test_update_while_rebooting_all_non_primary_replicas
: Pengujian pembaruan berbasis pengontrol tahan dengan percobaan ulang meskipun berbagai keadaan bergejolak.
Catatan
Pengujian tertentu mungkin memerlukan perangkat keras tertentu, seperti Akses istimewa ke Pengendali Domain untuk ad
pengujian pembuatan entri Akun dan DNS - yang mungkin tidak tersedia di semua lingkungan yang ingin menggunakan arc-ci-launcher
.
Memeriksa Hasil Pengujian
Contoh kontainer penyimpanan dan file yang diunggah oleh peluncur:
Dan hasil pengujian yang dihasilkan dari eksekusi:
Membersihkan sumber daya
Untuk menghapus peluncur, jalankan:
kubectl delete -k arc_data_services/test/launcher/overlays/aks
Ini membersihkan manifes sumber daya yang disebarkan sebagai bagian dari peluncur.