From 918ca4ad721622edd36328fb2f1adb3e7d5d9a94 Mon Sep 17 00:00:00 2001 From: Vladimir Kuznetsov Date: Tue, 8 Aug 2023 18:29:03 +0300 Subject: [PATCH] update testing and debugging documentation --- README.md | 6 +++- docs/{debuging.md => debugging.md} | 30 ++++++++++--------- docs/testing.md | 46 +++++++++++++++++++----------- 3 files changed, 51 insertions(+), 31 deletions(-) rename docs/{debuging.md => debugging.md} (94%) diff --git a/README.md b/README.md index 989a91cc1f..1ddc3fd4e1 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,13 @@ см. [release process](docs/release.md) +## Инструкция по запуску тестов + +см. [testing](docs/testing.md) + ## Инструкция по отладке -см. [debuging](docs/debuging.md) +см. [debuging](docs/debugging.md) ## Overview diff --git a/docs/debuging.md b/docs/debugging.md similarity index 94% rename from docs/debuging.md rename to docs/debugging.md index f733bf4049..e1a0b156bb 100644 --- a/docs/debuging.md +++ b/docs/debugging.md @@ -14,15 +14,15 @@ tail -f -n 20 $(find /var/log/pods/kube-system_ebs-csi-controller-* -type l | xa 2. Скопировать из неймспейса kaas в свой неймспейс все образы. 3. Из файла charts/aws-ebs-csi-driver/values.yaml выписать все образы с версиями и скопировать их в свой неймспейс используя утилиту scopeo. -Пример для версии v1.19: +Пример для версии v1.21: ```sh -skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/eks-distro/kubernetes-csi/node-driver-registrar:v2.8.0-eks-1-27-3 docker://registry.cloud.croc.ru/awesomedev/node-driver-registrar:v2.8.0-eks-1-27-3 -skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/eks-distro/kubernetes-csi/livenessprobe:v2.10.0-eks-1-27-3 docker://registry.cloud.croc.ru/awesomedev/livenessprobe:v2.10.0-eks-1-27-3 -skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/eks-distro/kubernetes-csi/external-attacher:v4.3.0-eks-1-27-3 docker://registry.cloud.croc.ru/awesomedev/external-attacher:v4.3.0-eks-1-27-3 -skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/eks-distro/kubernetes-csi/external-provisioner:v3.5.0-eks-1-27-3 docker://registry.cloud.croc.ru/awesomedev/external-provisioner:v3.5.0-eks-1-27-3 -skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/eks-distro/kubernetes-csi/external-resizer:v1.8.0-eks-1-27-3 docker://registry.cloud.croc.ru/awesomedev/external-resizer:v1.8.0-eks-1-27-3 -skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/eks-distro/kubernetes-csi/external-snapshotter/csi-snapshotter:v6.2.1-eks-1-27-3 docker://registry.cloud.croc.ru/awesomedev/csi-snapshotter:v6.2.1-eks-1-27-3 -skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/ebs-csi-driver/volume-modifier-for-k8s:v0.1.0 docker://registry.cloud.croc.ru/awesomedev/volume-modifier-for-k8s:v0.1.0 +skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/eks-distro/kubernetes-csi/node-driver-registrar:v2.8.0-eks-1-27-7 docker://registry.cloud.croc.ru/awesomedev/node-driver-registrar:v2.8.0-eks-1-27-7 +skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/eks-distro/kubernetes-csi/livenessprobe:v2.10.0-eks-1-27-7 docker://registry.cloud.croc.ru/awesomedev/livenessprobe:v2.10.0-eks-1-27-7 +skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/eks-distro/kubernetes-csi/external-attacher:v4.3.0-eks-1-27-7 docker://registry.cloud.croc.ru/awesomedev/external-attacher:v4.3.0-eks-1-27-7 +skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/eks-distro/kubernetes-csi/external-provisioner:v3.5.0-eks-1-27-7 docker://registry.cloud.croc.ru/awesomedev/external-provisioner:v3.5.0-eks-1-27-7 +skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/eks-distro/kubernetes-csi/external-resizer:v1.8.0-eks-1-27-7 docker://registry.cloud.croc.ru/awesomedev/external-resizer:v1.8.0-eks-1-27-7 +skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/eks-distro/kubernetes-csi/external-snapshotter/csi-snapshotter:v6.2.2-eks-1-27-7 docker://registry.cloud.croc.ru/awesomedev/csi-snapshotter:v6.2.2-eks-1-27-7 +skopeo copy --dcreds 'awesomedev:secretpassword' docker://public.ecr.aws/ebs-csi-driver/volume-modifier-for-k8s:v0.1.1 docker://registry.cloud.croc.ru/awesomedev/volume-modifier-for-k8s:v0.1.1 ``` 4. В файлах Makefile, charts/aws-ebs-csi-driver/values.yaml, deploy/kubernetes/overlays/stable/ecr/kustomization.yaml и deploy/kubernetes/overlays/stable/gcr/kustomization.yaml везде заменить неймспейс kaas на свой (в примере на awesomedev). @@ -53,21 +53,25 @@ aws --no-verify-ssl --profile default --endpoint-url https://storage.cloud.croc ``` 11. Находясь в каталоге с проектом aws-ebs-csi-driver собрать тестируемый образ, протегировать и залить в свой неймспейс реестра образов. -Пример командя для версии v1.19.0-CROC1: +Пример командя для версии v1.21.0-CROC1: ```sh docker login registry.cloud.croc.ru/awesomedev docker buildx build -t aws-ebs-csi-driver . -docker tag aws-ebs-csi-driver registry.cloud.croc.ru/awesomedev/aws-ebs-csi-driver:v1.19.0-CROC1 -docker push registry.cloud.croc.ru/awesomedev/aws-ebs-csi-driver:v1.19.0-CROC1 +docker tag aws-ebs-csi-driver registry.cloud.croc.ru/awesomedev/aws-ebs-csi-driver:v1.21.0-CROC1 +docker push registry.cloud.croc.ru/awesomedev/aws-ebs-csi-driver:v1.21.0-CROC1 ``` 12. В конфиге тестового стенда облака /etc/c2.deployment.conf, прописать свои регистри и s3 бакет. - в секции KUBERNETES поменять docker_registry_namespace с kaas на awesomedev -- в секции KUBERNETES поменять bucket_address с kaas на awesomekaas +- в секции KUBERNETES поменять bucket_address с kaas/17 на awesomekaas 13. В MongoDB в коллекции kubernetes.versions поменять настройки на свои: ```js -db["kubernetes.versions"].updateOne({"_id": "base"}, {"$set": {"bucket_address": "https://storage.cloud.croc.ru/awesomekaas", "docker_registry_namespace": "awesomedev"}}) +db["kubernetes.versions"].update({"_id": "base"}, {"$set": {"bucket_address": "https://storage.cloud.croc.ru/awesomekaas", "docker_registry_namespace": "awesomedev"}}) +``` +Восстановить как было: +```js +db["kubernetes.versions"].update({"_id": "base"}, {"$set": {"bucket_address": "https://storage.cloud.croc.ru/kaas/v17", "docker_registry_namespace": "kaas"}}) ``` 14. Перезапустить сервисы стенда c2-deploy и все c2-ks-* diff --git a/docs/testing.md b/docs/testing.md index f8411d421f..9ef75b21de 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -10,7 +10,10 @@ ## e2e -В апстриме используетс сложный агрегат под названием [aws-k8s-tester](https://github.com/aws/aws-k8s-tester). Этот инструкмент создает кластер, деплоит в него драйвер и запускает тесты. Инструкции по запуску тестов находятся в tester/*.yaml в секции test. Например в single-az-conifg.yaml инструкции следующие: +В апстриме используется сложный агрегат под названием [aws-k8s-tester](https://github.com/aws/aws-k8s-tester). +Этот инструмент создает кластер, деплоит в него драйвер и запускает тесты. +Инструкции по запуску тестов находятся в tester/*.yaml в секции test. +Например в single-az-conifg.yaml инструкции следующие: ``` go get -u github.com/onsi/ginkgo/ginkgo @@ -54,45 +57,54 @@ $(go env GOBIN)/ginkgo -p -nodes=32 -v --focus="\[ebs-csi-e2e\] \[single-az\]" t |-- integration_test.go |-- README.md `-- setup_test.go -``` +``` -В директории tests есть e2e/e2e-migration/intergration субдиректории. Основная масса тестов находится в e2e. Тесты в е2е функциональные, в основном работют в api k8s и облака (лучшего облака - ц2 облака). +В директории tests есть e2e/e2e-migration/intergration субдиректории. +Основная масса тестов находится в e2e. +Тесты в е2е функциональные, в основном работют в api k8s и облака (лучшего облака - ц2 облака). Для выполнения тестов потребуется: - Для single-az 1 нода мастер и 1 воркер - Для multi-az 3 ноды мастеров в разных аз и 1 воркер в одной аз +Мастер нода должна быть с диском достаточного размера, от 16 Гб Как запустить тесты Для запуска тестов нам понадобится. - [создать](https://docs.cloud.croc.ru/ru/services/kubernetes.html#creating) бубернетес кластер в ц2 кдауде - попасть по ссш на мастер ноду и выполнить ```sudo -i``` - проверить что в руте настроен kubectl - выполнить: ```kubectl get nodes``` - установить голанг: -- - cd /tmp && curl -O https://dl.google.com/go/go1.16.9.linux-amd64.tar.gz -- - tar -xzf go1.16.9.linux-amd64.tar.gz -- - mv go /usr/local -- - export GOROOT=/usr/local/go +- - cd /tmp && curl -O https://dl.google.com/go/go1.20.7.linux-amd64.tar.gz +- - tar -xzf go1.20.7.linux-amd64.tar.gz +- - mv go /usr/local/go1.20.7 +- - export GOROOT=/usr/local/go1.20.7 - - export PATH=$GOROOT/bin:$PATH -- - cd - -- установить gcc (нужно для ginkgo): -- - yum install gcc +- - cd ~ +- установить gcc (нужно для ginkgo) и git: +- - yum install gcc git - склонить эту репу: - - git clone https://github.com/c2devel/aws-ebs-csi-driver.git - задать переменные окружения для подлкючения тестов к облаку: - - export AWS_EC2_ENDPOINT="https://api.cloud.croc.ru" - - export AWS_AVAILABILITY_ZONES="ru-msk-comp1p" -- - Воркер должен быть в той же аз что и указана +- - Воркер должен быть в той же az что и указана - - export AWS_SECRET_ACCESS_KEY="" - - export AWS_ACCESS_KEY_ID="" +- - export AWS_EC2_ENDPOINT_UNSECURE=true - задать переменные окружения для подлючения тестов к k8s: -- - export KUBECONFIG=$HOME/.kube/config +- - export KUBECONFIG=$HOME/.kube/config +- запустить проверку зависимостей +- - cd aws-ebs-csi-driver +- - Выполнить ```go get -u modernc.org/cc@v1.0.0``` (временный воркераунд для версии 1.1, связанный с недоступностью go зависимостей. для версии 1.21 не требуется) +- - make verify-vendor - запустить юнит тесты (проверить что код собирается) -- - cd -- - Выполнить ```go get -u modernc.org/cc@v1.0.0``` (временный воркераунд, связанный с недоступностью go зависимостей) - - make test -- установить ginkgo: -- - go get github.com/onsi/ginkgo/ginkgo@v1.11.0 -- запустить e2e тесты для single az: +- установить ginkgo для нужной версии ebs драйвера: +- - для 1.1: go install github.com/onsi/ginkgo/ginkgo@v1.11.0 +- - для 1.21: go install github.com/onsi/ginkgo/v2/ginkgo@v2.11.0 +- запустить e2e тесты для single az для версии 1.1: - - ~/go/bin/ginkgo -v -progress --focus="\\[ebs-csi-e2e\] \\[single-az\\]" /root/aws-ebs-csi-driver/tests/e2e -- -report-dir=./reports/ -kubeconfig=/root/.kube/config +- - для версии 1.21: +- - ~/go/bin/ginkgo -vv --show-node-events --focus='\[ebs-csi-e2e\] \[single-az\]' /root/aws-ebs-csi-driver/tests/e2e -- -report-dir=./reports/ -kubeconfig=/root/.kube/config - запустить e2e тесты для multi az: - - ~/go/bin/ginkgo -v -progress --focus="\\[ebs-csi-e2e\] \\[multi-az\\]" /root/aws-ebs-csi-driver/tests/e2e -- -report-dir=./reports/ -kubeconfig=/root/.kube/config Какие тесты есть: