Un alt produs adaugat la portofoliul VMware odata cu achizitia Heptio este Sonobuoy. Pe scurt, Sonobuoy va valida starea clusterului dvs. Kubernetes ruland o suita de teste nedistructive impotriva clusterului. Ca parte a testelor end-to-end (e2e) care sunt conduse de Sonobuoy, exista si un subset de teste de conformare rulate de asemenea. Acestea includ lucruri precum cele mai bune practici si teste de interoperabilitate. Acest lucru va va asigura ca clusterul dvs. Kubernetes (fie ca este o versiune in amonte sau o versiune ambalata terta parte) accepta toate API-urile Kubernetes necesare. Puteti citi mai multe despre conformitate aici.

Pentru a face lucrurile ceva mai complicate, am decis sa implementez solutia de decalaj aer, din moment ce nodurile K8s nu aveau acces la internet. Astfel, a trebuit sa trag toate imaginile necesare pentru Sonobuoy, apoi sa le imping in depozitul meu intern de port. Dupa ce acest pas a fost finalizat, am construit apoi fisiere manifeste care sa-l directioneze pe Sonobuoy sa traga imaginile necesare din repo-portul meu si sa ruleze suita de testare. Din fericire, Sonobuoy include un set de pasi pentru ca intreaga configuratie sa fie destul de perfecta. Acest set de pasi detaliaza modul in care am desfasurat si am rulat Sonobuoy intr-o configuratie de air-gap.

1. Instalare initiala

Pur si simplu descarcati Sonobuoy sau implementati-l executand comanda go get descrisa aici.

2. Trageti imaginile de testare din repos externe

Estimam ca veti avea nevoie de aproximativ 8 GB spatiu pe disc pentru a reduce toate imaginile din suita de teste necesare. Urmatoarea comanda va trage in jos imaginile pentru dvs.

$ sudo sonobuoy images pull INFO [0000] Trage imaginea: gcr.io/google-samples/gb-redisslave:v3 … INFO [0005] Trage imaginea: gcr.io/kubernetes-e2e-test-images/ipc-utils : 1.0 … INFO [0008] Trage imaginea: gcr.io/kubernetes-e2e-test-images/fakegitserver:1.0 … INFO [0010] Trage imaginea: gcr.io/kubernetes-e2e-test-images/echoserver : 2.2 … INFO [0014] Trage imaginea: gcr.io/kubernetes-e2e-test-images/jessie-dnsutils:1.0 …. . . INFO [0243] Trage imaginea: gcr.io/kubernetes-e2e-test-images/liveness:1.1 … INFO [0245] Trage imaginea: docker.io/library/nginx:1.15-alpine … INFO [0248] Trage imaginea: gcr.io/kubernetes-e2e-test-images/resource-consumer/controller:1.0 … INFO [0250] Trage imaginea: docker.io/library/busybox:1.29 …

3. Creati fisier „mapare” pentru locatia repo de imagini de testare

Pentru a impinge imaginile de test la un repo local sau intern, cum ar fi Harbour, trebuie sa cream un fisier YAML manifest, care va fi utilizat pentru a indica unde Sunobuoy poate gasi imaginile de testare. Am apelat la fisierul personal-repos.yaml.

$ cat custom-repos.yaml
dockerLibraryRegistry: harbor.rainpole.com/library e2eRegistry: port.rainpole.com/library/kubernetes-e2e-test-images gcRegistry: harbor.rainpole.com/library etcdRegistry: harbor.rainpole.com/ biblioteca / coreos privateRegistry: port.rainpole.com/library/k8s-authenticated-test sampleRegistry: port.rainpole.com/library/google-samples

4. Impingeti imaginile de test intr-o repetare interna

Vom folosi acelasi fisier manifest pentru a impinge imaginile in repo-portul nostru local.

$ sudo sonobuoy images push –e2e-repo-config custom-repos.yaml
INFO [0000] Etichetarea imaginii: gcr.io/kubernetes-e2e-test-images/cuda-vector-add:2.0 ca harbor.rainpole.com/ library / kubernetes-e2e-test-images / cuda-vector-add: 2.0 … INFO [0000] Imagine de impingere: port.rainpole.com/library/kubernetes-e2e-test-images/cuda-vector-add:2.0 … INFO [0000] Etichetarea imaginii: gcr.io/kubernetes-e2e-test-images/netexec:1.1 ca port.rainpole.com/library/kubernetes-e2e-test-images/netexec:1.1 … . . INFO [0219] Etichetarea imaginii: gcr.io/kubernetes-e2e-test-images/nettest:1.0 ca harbor.rainpole.com/library/kubernetes-e2e-test-images/nettest:1.0 … INFO [0219] Pushing imagine: port.rainpole.com/library/kubernetes-e2e-test-images/nettest:1.0 … $

In acest moment, toate imaginile necesare ale suitei de teste sunt pastrate local in repozitia portului meu.

5. Construiti fisierele manifest Sonobuoy

In acest moment, trebuie sa construim un set personalizat de fisiere manifeste Sonobuoy care vor contine referinte la repo-portul nostru local. Acest lucru il va redirectiona pe Sonobuoy pentru a utiliza imagini locale, mai degraba decat pentru a le scoate din repos extern.

$ sonobuoy gen –e2e-repo-config custom-repos.yaml> config.yaml $ ls -ltr total 28 -rw-rw-r– 1 cormac cormac 335 23 iul 10 10:52 custom-repos.yaml -rw- rw-r– 1 cormac cormac 5917 iulie 23 12:19 config.yaml

Si la examinare, veti observa ca config.yaml contine un tip special de ConfigMap care are lista de depozite care se potrivesc cu cele create anterior, adica repo de port local:

— apiVersion: date v1: repo-list.yaml: | dockerLibraryRegistry: harbor.rainpole.com/library e2eRegistry: harbor.rainpole.com/library/kubernetes-e2e-test-images gcRegistry: harbor.rainpole.com/library etcdRegistry: harbor.rainpole.com/library/coreos privateRegistry rainpole.com/library/k8s-authenticated-test sampleRegistry: harbor.rainpole.com/library/google-samples kind: ConfigMap metadata: name: repolist-cm namespace: heptio-sonobuoy —

6. Introducerea componentelor Sonobuoy in repo locale

In acest moment, toate componentele suitei de teste pe care Sonobuoy trebuie sa le faca referire se afla in repertoriul local Harbour, deci nu este necesar sa le cautam pe cele externe. Cu toate acestea, principalele componente Sonobuoy (Sonobuoy, conformitatea si plugin-ul systemd-logs) inca preiau imaginile lor dintr-o repo externa in manifestul recent creat.yaml.

imagine: gcr.io/google-containers/conformance:v1.14.3 imagine: gcr.io/heptio-images/sonobuoy-plugin-systemd-logs:latest imagine: gcr.io/heptio-images/sonobuoy:v0.15.0

Acum va trebui sa trageti manual aceste imagini, sa le etichetati cu repo-ul local Harbour si sa le impingeti in repo-portul local. Pentru un exemplu despre cum sa faceti acest lucru, va rugam sa aruncati o privire la acest port in postarea de actiune. In cele din urma, modificati manifestul pentru a va asigura ca aceste imagini sunt furnizate din repo-portul local. Dupa ce acest lucru a fost finalizat, totul ar trebui sa fie furnizate din repo-portul local, iar referintele dvs. de imagine config.yaml ar trebui sa arate asa.

imagine: port.rainpole.com/library/conformance:v1.14.3 imagine: harbor.rainpole.com/library/sonobuoy-plugin-systemd-logs:latest imagine: port.rainpole.com/library/sonobuoy:v0.15.0

7. Verificati versiunile acceptate

Conform documentatiei, Sonobuoy accepta 3 versiuni minore Kubernetes: versiunea curenta si 2 versiuni minore inainte. Merita sa va asigurati ca aveti o configuratie acceptata inainte de a merge mai departe. In primul rand, verificati versiunile K8s dupa cum urmeaza:

$ kubectl get noduri -o wide NAME STATUS ROLES VARIA VARII INTERN-IP EXTERN-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME csi-master-01 Ready master 39d v1.14.3 10.27.51.49 10.27.51.49 Ubuntu 16.04.6 LTS 4.4 .0-150-docker generic: //18.6.2 csi-working-02 Ready <none> 39d v1.14.3 10.27.51.61 10.27.51.61 Ubuntu 16.04.6 LTS 4.4.0-150-docker generic: //18.6. 2

Puteti utiliza, de asemenea, Sonobuoy pentru a verifica versiunile. Daca includeti calea catre fisierul kubeconfig , va verifica si versiunea API. Se pare ca suntem bine sa mergem cu versiunile noastre.

$ sonobuoy versiune – kubeconfig ~ / .kube / config Versiune Sonobuoy: v0.15.0 MinimumKubeVersion: 1.13.0 MaximumKubeVersion: 1.15.

porno hand job http://runlikeagirl.com/__media__/js/netsoltrademark.php?d=adult66.net/
porno films http://www.farmstoresexpress.net/__media__/js/netsoltrademark.php?d=adult66.net/
porno suedia http://www.menshirts.com/__media__/js/netsoltrademark.php?d=adult66.net/
filme porno cu bunicute grase care se masturbeaza http://www.campusfurniture.biz/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/amatori
porno teacher http://lopeli.com/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/anal
filme porno cu adulti http://aubaby.com/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/asiatice
porno sex oral http://www.littlefaces.com/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/beeg
filme porno cele mai bune http://teemekeemiat.laminexcustomcards.com/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/blonde
porno sex free http://www.cognitiveweb.net/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/brazzers
porno hair http://www.2ndhomesofmaine.com/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/brunete
porno drunk http://www.lasocki.com/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/chaturbate
filme porno cu daniela crudu http://campaignearth.com/__media__/js/netsoltrademark.php?d=adult66.net/blonda-in-lenjerie-intima-sexy-e-fututa-anal-de-prietenul-ei
porno mia kalifa http://connectionpoint.us/__media__/js/netsoltrademark.php?d=adult66.net/pustoaica-de-17-ani-e-violata-in-patul-ei-de-doi-prieteni-veniti-in-vizita
porno mirese http://drinkin.audiompeg.de/__media__/js/netsoltrademark.php?d=adult66.net/partida-de-sex-cu-doi-adolescenti-virgini-care-se-filmeaza
películas porno http://www.radiantbeauty.com/__media__/js/netsoltrademark.php?d=adult66.net/cuplu-de-amatori-isi-filmeaza-partida-de-sex-porno-apoi-au-orgasm
türk liseli porno http://urbanweddings.com/__media__/js/netsoltrademark.php?d=adult66.net/doi-minori-amatori-fac-sex-salbatic-si-se-filmeaza
interaccial porno tube http://www.2ndgenerationvehicles.com/__media__/js/netsoltrademark.php?d=adult66.net/cuplu-de-amatori-excitati-face-sex-fierbinte-in-jacuzzi-si-se-filmeaza-cum-se-fut
hungarian porno http://www.hawaiianrumcompany.com/__media__/js/netsoltrademark.php?d=adult66.net/sex-anal-sex-oral-cu-un-cuplu-de-amatori-pe-canapeaua-din-sufragerie
porno 100000 http://youreinchargeseminar.com/__media__/js/netsoltrademark.php?d=adult66.net/doi-indragostiti-fac-sex-romantic-si-se-filmeaza-unu-pe-altu
filme porno cu capri cavani http://www.mercadolatinoinc.biz/__media__/js/netsoltrademark.php?d=adult66.net/bruneta-draguta-e-dezvirginata-pe-bune-de-prietenul-mai-mare-care-o-filmeaza

99 GitSHA: Versiunea API: v1.14.3

 

8. Incepeti testarea

Cu tot ce este in loc, putem incepe acum testarea. Cu toate acestea, din moment ce a trebuit sa facem modificari la configuratii pentru a sprijini mecanismul spatiu aer / repo locale, nu putem folosi direct comanda sonobuoy. In schimb, trebuie sa utilizam kubectl application pe manifestul construit si modificat mai devreme pentru a incepe testarea.

$ kubectl apply -f config.yaml namespace / heptio-sonobuoy a creat serviceaccount / sonobuoy-serviceaccount a creat clusterrolebinding.rbac.authorization.k8s.io/sonobuoy-serviceaccount-heptio-sonobuoy a creat clusterrole.rbac.authorization.k8s.io/sonobuoy serviceaccount a creat configmap / sonobuoy-config-cm a creat configmap / sonobuoy-plugins-cm a creat pod / sonobuoy a creat configmap / repolist-cm a creat serviciul / sonobuoy-master a creat

 

9. Monitorizati testele

In mod implicit, sunt executate doua seturi de teste; testele systemd-logs si testele e2e. Puteti verifica progresul lor cu urmatoarea comanda de stare:

$ sonobuoy Stare PLUGIN STATUS COUNT e2e ruleaza 1 sistem-jurnalele care ruleaza 2 Sonobuoy este inca in curs. Pergerile pot dura pana la 60 de minute. $ sonobuoy Stare PLUGIN STATUS COUNT e2e ruleaza 1 sistem-jurnal completat 2 Sonobuoy este inca in curs. Executiile pot dura pana la 60 de minute.

Cealalta optiune utila pentru monitorizarea progresului este optiunea „ jurnalele ”. Acest lucru ofera o iesire foarte verboasa si poate fi urmarit daca se utilizeaza optiunea -f. Iata iesirea de la inceputul testelor, care arata cate teste vor fi rulate:

$ sonobuoy busteni -f
namespace = “heptio-sonobuoy” pod = “sonobuoy-systemd-logs-daemon-set-02274f1712d5490e-bnmkv” container = “sonobuoy-worker” time = “2019-07-23T16: 17: 20Z” level = info msg = ” Se asteapta waitfile “waitfile = / tmp / results / done time =” 2019-07-23T16: 17: 21Z “level = info msg =” Fisier facut detectat, transmiterea fisierului rezultat “resultFile = / tmp / results / systemd_logs namespace =” heptio-sonobuoy “pod =” sonobuoy-systemd-logs-daemon-set-02274f1712d5490e-lg2cc “container =” sonobuoy-working “time =” 2019-07-23T16: 17: 22Z “level = info msg =” In asteptare pentru asteptare “waitfile = / tmp / results / done time =” 2019-07-23T16: 17: 23Z “level = info msg =” Fisier facut detectat, care transmite fisierul de rezultate “resultFile = / tmp / results / systemd_logs namespace =”heptio-sonobuoy “pod =” sonobuoy-e2e-job-53542f69c61f4dae “container =” sonobuoy-worker “time =” 2019-07-23T16: 17: 23Z “level = info msg =” Waiting for waitfile “waitfile = / tmp / results / done namespace = “heptio-sonobuoy” pod = “sonobuoy” container = “kube-sonobuoy” time = “2019-07-23T16: 17: 21Z” level = info msg = “Scanarea pluginurilor in ./plugins.d ( pwd: /) “time =” 2019-07-23T16: 17: 21Z “level = info msg =” Plugin-uri de scanare in /etc/sonobuoy/plugins.d (pwd: /) “time =” 2019-07-23T16: 17: 21Z “level = info msg =” Directory (/etc/sonobuoy/plugins.d) nu exista “time =” 2019-07-23T16: 17: 21Z “level = info msg =” Scanarea pluginurilor in ~ / sonobuoy /plugins.d (pwd: /) “time =” 2019-07-23T16: 17: 21Z “level = info msg =”Directorul (~ / sonobuoy / plugins.d) nu exista “time =” 2019-07-23T16: 17: 21Z “level = info msg =” Filtrare spatii de nume bazate pe urmatorul regex:. * | Heptio-sonobuoy “time = “2019-07-23T16: 17: 21Z” level = info msg = “Space names csi-demo Matched = true” time = “2019-07-23T16: 17: 21Z” level = info msg = “Space names default Matched = true” time = “2019-07-23T16: 17: 21Z” level = info msg = “demo namespace Matched = true” time = “2019-07-23T16: 17: 21Z” level = info msg = “Space names heptio-sonobuoy Match = true “time =” 2019-07-23T16: 17: 21Z “level = info msg =” Space names kube-node-lease Coordonat = true “time =” 2019-07-23T16: 17: 21Z “level = info msg =” Space names kube-public Potrivit = true “time =” 2019-07-23T16: 17: 21Z “level = info msg =”Spacepace kube-system Matched = true “time =” 2019-07-23T16: 17: 21Z “level = info msg =” namespace svc-demo Matched = true “time =” 2019-07-23T16: 17: 21Z “level = info msg = “namespace velero Matched = true” time = “2019-07-23T16: 17: 21Z” level = info msg = “Server de pornire Rezultate asteptate: [{e2e} {csi-master-01 systemd-logs} {csi -worker-02 systemd-logs}] “time =” 2019-07-23T16: 17: 21Z “level = info msg =” Pornirea rutinei de actualizare a adnotarilor “time =” 2019-07-23T16: 17: 21Z “level = info msg = “Start server de agregare” adresa = 0.0.0.0 port = 8080 time = “2019-07-23T16: 17: 21Z” level = info msg = “Plugin de rulare” plugin = e2e time = “2019-07-23T16: 17 : 21Z “level = info msg =” Plugin de rulare “plugin = systemd-logs time =” 2019-07-23T16: 17: 23Z “level = info msg = “cerere de agregare primita” client_cert = systemd-logs node = csi-worker-02 plugin_name = systemd-logs time = “2019-07-23T16: 17: 24Z” level = info msg = “cerere de agregare primita” client_cert = node systems-logs = csi-master-01 plugin_name = systemd-logs namespace = “heptio-sonobuoy” pod = “sonobuoy-e2e-job-53542f69c61f4dae” container = “e2e” + set + x + / usr / local / bin / ginkgo ‘–focus = \ [Conformance \]’ ‘–skip = Alpha | \ [(Disruptive | Caracteristica: [^ \]] + | Flaky) \]’ –noColor = true / usr / local / bin / e2e.test – –disable-log-dump –repo-root = / kubernetes –provider = local –report-dir = / tmp / results –kubeconfig = + tee / tmp / results / e2e. jurnal I0723 16: 17: 23.756655 15 test_context.go: 405] Utilizarea unui fisier kubeconfig temporar din configuratia in-cluster: / tmp / kubeconfig-709992315 I0723 16:17:23.756820 15 e2e.go: 240] Incepe rularea e2e “5a22a21f-ad65-11e9-bb39-9288ee65ecf1” pe nodul Ginkgo 1 Running Suite: Kubernetes e2e suite ================== ================= Random Seed: 1563898642 – Va randomiza toate specificatiile Va rula 204 din 3585 de specificatii

Iata o iesire chiar de la sfarsitul unei suita de teste, care arata cate teste au fost rulate si care au trecut si care (daca exista) au esuat.

– 204 Treci | 0 Esuat | 0 In asteptare | 3381 Skipped PASS Ginkgo a rulat 1 suite in 1h23m21.836284415s Test Suite Trecut nume de spatiu = “heptio-sonobuoy” pod = “sonobuoy-e2e-job-53542f69c61f4dae” container = “sonobuoy-worker” time = “2019-07-23T17: 40: 45Z “level = info msg =” Fisier facut detectat, care transmite fisierul de rezultate “resultFile = / tmp / results / e2e.tar.gz namespace =” heptio-sonobuoy “pod =” sonobuoy “container =” kube-sonobuoy “time =” 2019-07-23T17: 40: 45Z “level = info msg =” cerere de agregare primita “client_cert = e2e plugin_name = e2e time =” 2019-07-23T17: 40: 45Z “level = info msg =” Ultima actualizare la adnotari la exit “time =” 2019-07-23T17: 40: 45Z “level = info msg =” csidrivers nespecificate in Resurse non-nil. Saltarea interogarii csidrivers. “time =” 2019-07-23T17: 40: 45Z “level = info msg =” csinode nespecificate in Resurse non-nul. Saltul interogarii csinodes. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” runtimeclasses nespecificate in Resurse non-nul. Saltul interogarii runtimeclasses. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” secrete care nu sunt specificate in Resurse diferite. Salt la interogarea secretelor. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” evenimente nespecificate in Resurse non-nul. Salt la interogarea evenimentelor. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” horizontalpodautoscalers nespecificati in Resurse non-nul. Sarirea interogarii horizontalpodautoscalers. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” resticrepositories nespecificate in Resurse non-nul. Sarirea interogarii resticrepositories. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” backupstoragelocations nespecificate in Resurse non-nul. Saltul interogarii de backupstoragelocations. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” backup-uri nespecifiate in Resurse non-nul. Sarirea interogarii copiilor de rezerva. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” solicitari de descarcare nu sunt specificate in Resurse non-nul. Sarirea cererii de descarcare solicitari. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” podvolumerestores nespecificati in Resurse non-nul. Saltul interogarii podvolumerestores. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” restabileste nespecificat in Resurse non-nul. Saltul restabileste interogarea. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” solicitari de eliminare nu sunt specificate in Resurse diferite. Sarirea interogarii pentru eliminarea de rezerva “time =” 2019-07-23T17: 40: 45Z “level = info msg =” podvolumebackups nespecificate in Resurse non-nul. Saltul interogarii podvolumebackups. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” serverstatusrequests nespecificate in Resurse non-nul. Sarirea interogarii serverstatusrequests. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” volumesnapshotlocations nespecificate in Resurse non-nul. Saltul interogarii de volumenapshotlocations. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” planificari nespecificate in Resurse non-nul. Saltul interogarii programelor. “Time =” 2019-07-23T17: 40: 45Z “level = info msg =” Colectarea configuratiei nodului si a sanatatii … “time =” 2019-07-23T17: 40:

 

10. interogarea rezultatelor

Dupa completarea suitei de testare, rezultatele pot fi, de asemenea, solicitate folosind o varietate de comenzi. In primul rand, verificati daca fiecare lucru s-a finalizat folosind comanda status.

$ sonobuoy status
PLUGIN STATUS COUNT e2e complet 1 sistemd-jurnal completat 2 Sonobuoy a fost completat. Utilizati `sonobuoy retrieve` pentru a obtine rezultate.

Dupa cum sugera comanda anterioara, acum putem prelua rezultatele rularii si le putem examina pentru esecuri. Iata un mod de a face doar asta.

$ rezultate = $ (sonobuoy preluat) $ sonobuoy e2e $ Rezultate teste esuate: 0

 

11. Curatare

Pentru a elimina Sonobuoy din cluster, pur si simplu executati urmatoarea comanda:

$ sonobuoy sterge –wait INFO [0000] sters tip = namespace namespace = heptio-sonobuoy INFO [0000] delete type = clusterrolebindings INFO [0000] sters tip = clusterroles $

Si asta completeaza introducerea noastra in Sonobuoy. Speram sa vedeti cat de util poate fi acest produs atunci cand doriti sa verificati integritatea clusterului dvs. Kubernetes. Cititi mai multe despre Sonobuoy aici. O alta caracteristica placuta este capacitatea de a scrie propriile pluginuri personalizate pentru a extinde suita de testare. Acest lucru ar putea fi foarte util daca doriti sa validati unele aplicatii sau functii personalizate, alaturi de conformitatea end-to-end pe care Sonobuoy o testeaza deja.