Skip to content

Commit

Permalink
update testing and debugging documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
CrocBomber committed Aug 16, 2023
1 parent 9690d1e commit 8f093e3
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 32 deletions.
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,13 @@

см. [release process](docs/release.md)

## Инструкция по запуску тестов

см. [testing](docs/testing.md)

## Инструкция по отладке

см. [debuging](docs/debuging.md)
см. [debuging](docs/debugging.md)

## Overview

Expand Down
30 changes: 17 additions & 13 deletions docs/debuging.md → docs/debugging.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down Expand Up @@ -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-*
Expand Down
2 changes: 1 addition & 1 deletion docs/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Docker version 19.03.12, build 48a66213fe
```
kubectl kustomize ./deploy/kubernetes/overlays/stable/ > ./deploy/kubernetes/overlays/stable/k_bundle.yaml
```
- собранный бандл файл k_bundle.yaml надо скопировать в репозиторий kaas-resource-initializer в файлы ebs/ebs.yaml каждой версии kubenetes
- собранный бандл файл k_bundle.yaml надо скопировать в репозиторий kaas-resource-initializer в каталог ebs/ каждой версии kubenetes

Для создания докер имаджа необходимы установленный и настроенный докер демон - https://docs.docker.com/get-docker/ . Для сборки имаджа необходимо:
- находясь в руте репы выполнить:
Expand Down
46 changes: 29 additions & 17 deletions docs/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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="<secret_key>"
- - export AWS_ACCESS_KEY_ID="<access_key>"
- - 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/[email protected]``` (временный воркераунд для версии 1.1, связанный с недоступностью go зависимостей. для версии 1.21 не требуется)
- - make verify-vendor
- запустить юнит тесты (проверить что код собирается)
- - cd <repo_base_dir>
- - Выполнить ```go get -u modernc.org/[email protected]``` (временный воркераунд, связанный с недоступностью go зависимостей)
- - make test
- установить ginkgo:
- - go get github.com/onsi/ginkgo/[email protected]
- запустить e2e тесты для single az:
- установить ginkgo для нужной версии ebs драйвера:
- - для 1.1: go install github.com/onsi/ginkgo/[email protected]
- - для 1.21: go install github.com/onsi/ginkgo/v2/[email protected]
- запустить 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
Какие тесты есть:
Expand Down

0 comments on commit 8f093e3

Please sign in to comment.