15.8. Exécution de tests de latence dans un cluster déconnecté
L'image de tests CNF peut exécuter des tests dans un cluster déconnecté qui n'est pas en mesure d'accéder à des registres externes. Cela nécessite deux étapes :
-
Mise en miroir de l'image
cnf-tests
avec le registre personnalisé déconnecté. - Demander aux tests de consommer les images du registre personnalisé déconnecté.
Mise en miroir des images dans un registre personnalisé accessible depuis le cluster
Un exécutable mirror
est livré avec l'image afin de fournir les données requises par oc
pour reproduire l'image de test dans un registre local.
Exécutez cette commande à partir d'une machine intermédiaire qui a accès au cluster et au registre.redhat.io:
podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ registry.redhat.io/openshift4/cnf-tests-rhel8:v4.12 \ /usr/bin/mirror -registry <disconnected_registry> | oc image mirror -f -
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ registry.redhat.io/openshift4/cnf-tests-rhel8:v4.12 \ /usr/bin/mirror -registry <disconnected_registry> | oc image mirror -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow où :
- <registre_déconnecté>
-
Le registre du miroir déconnecté est-il celui que vous avez configuré, par exemple,
my.local.registry:5000/
.
Lorsque vous avez mis en miroir l'image
cnf-tests
dans le registre déconnecté, vous devez remplacer le registre d'origine utilisé pour récupérer les images lors de l'exécution des tests, par exemple :podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e DISCOVERY_MODE=true -e FEATURES=performance -e IMAGE_REGISTRY="<disconnected_registry>" \ -e CNF_TESTS_IMAGE="cnf-tests-rhel8:v4.12" \ /usr/bin/test-run.sh -ginkgo.focus="\[performance\]\ Latency\ Test"
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e DISCOVERY_MODE=true -e FEATURES=performance -e IMAGE_REGISTRY="<disconnected_registry>" \ -e CNF_TESTS_IMAGE="cnf-tests-rhel8:v4.12" \ /usr/bin/test-run.sh -ginkgo.focus="\[performance\]\ Latency\ Test"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Configurer les tests pour qu'ils consomment des images provenant d'un registre personnalisé
Vous pouvez exécuter les tests de latence à l'aide d'une image de test personnalisée et d'un registre d'images en utilisant les variables CNF_TESTS_IMAGE
et IMAGE_REGISTRY
.
Pour configurer les tests de latence afin d'utiliser une image de test personnalisée et un registre d'images, exécutez la commande suivante :
podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e IMAGE_REGISTRY="<custom_image_registry>" \ -e CNF_TESTS_IMAGE="<custom_cnf-tests_image>" \ -e FEATURES=performance \ registry.redhat.io/openshift4/cnf-tests-rhel8:v4.12 /usr/bin/test-run.sh
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e IMAGE_REGISTRY="<custom_image_registry>" \ -e CNF_TESTS_IMAGE="<custom_cnf-tests_image>" \ -e FEATURES=performance \ registry.redhat.io/openshift4/cnf-tests-rhel8:v4.12 /usr/bin/test-run.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow où :
- <registre_d'images_personnalisé>
-
est le registre de l'image personnalisée, par exemple,
custom.registry:5000/
. - <custom_cnf-tests_image>
-
est l'image personnalisée de cnf-tests, par exemple,
custom-cnf-tests-image:latest
.
Mise en miroir des images vers le registre d'images OpenShift du cluster
OpenShift Container Platform fournit un registre d'images de conteneurs intégré, qui s'exécute comme une charge de travail standard sur le cluster.
Procédure
Obtenir un accès externe au registre en l'exposant à l'aide d'une route :
oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge
$ oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Récupérez le point de terminaison du registre en exécutant la commande suivante :
REGISTRY=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
$ REGISTRY=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un espace de noms pour exposer les images :
oc create ns cnftests
$ oc create ns cnftests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Mettre le flux d'images à la disposition de tous les espaces de noms utilisés pour les tests. Cela est nécessaire pour permettre aux espaces de noms de tests de récupérer les images du flux d'images
cnf-tests
. Exécutez les commandes suivantes :oc policy add-role-to-user system:image-puller system:serviceaccount:cnf-features-testing:default --namespace=cnftests
$ oc policy add-role-to-user system:image-puller system:serviceaccount:cnf-features-testing:default --namespace=cnftests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc policy add-role-to-user system:image-puller system:serviceaccount:performance-addon-operators-testing:default --namespace=cnftests
$ oc policy add-role-to-user system:image-puller system:serviceaccount:performance-addon-operators-testing:default --namespace=cnftests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Récupérez le nom secret de docker et le jeton d'authentification en exécutant les commandes suivantes :
SECRET=$(oc -n cnftests get secret | grep builder-docker | awk {'print $1'}
$ SECRET=$(oc -n cnftests get secret | grep builder-docker | awk {'print $1'}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TOKEN=$(oc -n cnftests get secret $SECRET -o jsonpath="{.data['\.dockercfg']}" | base64 --decode | jq '.["image-registry.openshift-image-registry.svc:5000"].auth')
$ TOKEN=$(oc -n cnftests get secret $SECRET -o jsonpath="{.data['\.dockercfg']}" | base64 --decode | jq '.["image-registry.openshift-image-registry.svc:5000"].auth')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un fichier
dockerauth.json
, par exemple :echo "{\"auths\": { \"$REGISTRY\": { \"auth\": $TOKEN } }}" > dockerauth.json
$ echo "{\"auths\": { \"$REGISTRY\": { \"auth\": $TOKEN } }}" > dockerauth.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Effectuer la mise en miroir de l'image :
podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ registry.redhat.io/openshift4/cnf-tests-rhel8:4.12 \ /usr/bin/mirror -registry $REGISTRY/cnftests | oc image mirror --insecure=true \ -a=$(pwd)/dockerauth.json -f -
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ registry.redhat.io/openshift4/cnf-tests-rhel8:4.12 \ /usr/bin/mirror -registry $REGISTRY/cnftests | oc image mirror --insecure=true \ -a=$(pwd)/dockerauth.json -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exécutez les tests :
podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e DISCOVERY_MODE=true -e FEATURES=performance -e IMAGE_REGISTRY=image-registry.openshift-image-registry.svc:5000/cnftests \ cnf-tests-local:latest /usr/bin/test-run.sh -ginkgo.focus="\[performance\]\ Latency\ Test"
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e DISCOVERY_MODE=true -e FEATURES=performance -e IMAGE_REGISTRY=image-registry.openshift-image-registry.svc:5000/cnftests \ cnf-tests-local:latest /usr/bin/test-run.sh -ginkgo.focus="\[performance\]\ Latency\ Test"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Miroir d'un ensemble différent d'images de test
Vous pouvez éventuellement modifier les images en amont par défaut qui sont mises en miroir pour les tests de latence.
Procédure
La commande
mirror
tente par défaut de refléter les images en amont. Ceci peut être surchargé en passant un fichier au format suivant à l'image :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Transmettez le fichier à la commande
mirror
, par exemple en l'enregistrant localement sousimages.json
. Avec la commande suivante, le chemin local est monté dans/kubeconfig
à l'intérieur du conteneur et peut être transmis à la commande mirror.podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ registry.redhat.io/openshift4/cnf-tests-rhel8:v4.12 /usr/bin/mirror \ --registry "my.local.registry:5000/" --images "/kubeconfig/images.json" \ | oc image mirror -f -
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ registry.redhat.io/openshift4/cnf-tests-rhel8:v4.12 /usr/bin/mirror \ --registry "my.local.registry:5000/" --images "/kubeconfig/images.json" \ | oc image mirror -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow