diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 3c955079d6ce8ab6a3a621c7badcd316ea62299b..84436a27d860aebfd17c2d1c4b381b4b8af4ea30 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -5,7 +5,7 @@ "build": { "dockerfile": "Dockerfile", "args": { - "_CLAB_VERSION": "0.53.0" + "_CLAB_VERSION": "0.54.2" } }, "features": { diff --git a/Makefile b/Makefile index 32e74a97253268594e1d25ca2eee9d0430075f9e..6bc9584ac5bc5400f512a32e566f4401f5cf194f 100644 --- a/Makefile +++ b/Makefile @@ -85,6 +85,13 @@ dev-env-start: generate-gnmi-target-certs generate-gosdn-certs containerize-gosd dev-env-stop: ./scripts/simple-dev-setup.sh --mode stop --topology dev_env_data/clab/basic_two_gnmi_targets.yaml +basic-compose-up: generate-certs containerize-gosdn containerize-plugin-registry + docker-compose -f dev_env_data/docker-compose/basic_docker-compose.yml down + docker-compose -f dev_env_data/docker-compose/basic_docker-compose.yml up -d + +basic-compose-down: + docker-compose -f dev_env_data/docker-compose/basic_docker-compose.yml down + generate-certs: generate-gnmi-target-certs generate-gosdn-certs integration-tests: generate-certs containerize-gosdn containerize-plugin-registry diff --git a/README.md b/README.md index 7500a5f5a2e1d2e78e39f6d60472a71dd1a05a1b..c413c1f318154d7de8cc29b81972514b000bb592 100644 --- a/README.md +++ b/README.md @@ -136,11 +136,32 @@ system. With the help of [containerlab](https://containerlab.dev/) we provide simple test environments to play around with. +```sh +# start containerlab +make containerlab-slim-start + +# stop the containerlab topology +make containerlab-slim-stop +``` + +If you don't want to install containerlab, you can also use a docker-compose config. For most tasks it works as well, but it is missing the static IP and link configurations. + +```sh +# start the environment +make basic-compose-up + +# stop the environment +make basic-compose-down +``` + + +### Labs + The environment Lab 01 contains two [Arista cEOS](https://www.arista.com/en/products/software-controlled-container-networking), a goSDN, a gNMI target, a plugin-registry, a MongoDB and a RabbitMQ. -The environment Lab 00 contains two gNMI targets used as switches, s goSDN, two Linux servers, a plugin-registry, a MongoDB and a RabbitMQ. Lab 00 is lighter than Lab 01. +The environment Lab 00 contains two gNMI targets used as switches, goSDN, two Linux servers, a plugin-registry, a MongoDB and a RabbitMQ. Lab 00 is lighter than Lab 01. > If you're a member of the danet group you should have access to the > containers repo. Don't forget to `sudo docker login @@ -153,14 +174,6 @@ The environment Lab 00 contains two gNMI targets used as switches, s goSDN, two > cEOS image by yourself. Don't forget to change the image name (line `11` in > the `gosdn.clab.yml` file) to the local one you've downloaded. -```sh -# starts the containerlab topology which contains two Arista cEOS, an cSBI orchestrator, a goSDN controller and gNMI target. -make containerlab-start - -# stop the containerlab topology -make containerlab-stop -``` - ### Additional services There are optional and mandatory services that can be used with the controller. They can be started via the provided `docker-compose.yml`: diff --git a/controller/configs/basic-docker-compose.toml b/controller/configs/basic-docker-compose.toml new file mode 100644 index 0000000000000000000000000000000000000000..2708de32e81c6101ffcf2da807de72ee86065d4d --- /dev/null +++ b/controller/configs/basic-docker-compose.toml @@ -0,0 +1,21 @@ +amqphost = 'rabbitmq' +amqppassword = 'guest' +amqpport = '5672' +amqpprefix = 'amqp://' +amqpuser = 'guest' +basepnduuid = '5f20f34b-cbd0-4511-9ddc-c50cf6a3b49d' +config = './gosdn/controller/configs/integration-test-gosdn.toml' +csbi-orchestrator = 'localhost:55056' +databaseconnection = 'mongodb://root:example@mongo:27017' +defaultjwtduration = 24 +filesystempathtostores = 'stores' +gnmisubscriptionspath = 'configs/gNMISubscriptions.txt' +help = false +log-level = 'debug' +plugin-folder = 'plugins' +plugin-registry = 'plugin-registry:55057' +security = 'insecure' +socket = ':55055' +tlscacertfile = '/ssl/ca.crt' +tlscertfile = '/ssl/certs/gosdn-selfsigned.crt' +tlskeyfile = '/ssl/private/gosdn-selfsigned.key' diff --git a/dev_env_data/docker-compose/basic_docker-compose.yml b/dev_env_data/docker-compose/basic_docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..4e7664161a7a65487281e203f52d866271815d7c --- /dev/null +++ b/dev_env_data/docker-compose/basic_docker-compose.yml @@ -0,0 +1,79 @@ +# Only use via makefile as otherwise goSDN isn't rebuild! + +services: + mongo: + image: mongo:7 + environment: + MONGO_INITDB_ROOT_USERNAME: root + MONGO_INITDB_ROOT_PASSWORD: example + volumes: + - mongo-db-basic:/data/db + + mongo-express: + image: mongo-express:0.54.0 + ports: + - 127.0.0.1:8083:8081 + environment: + ME_CONFIG_MONGODB_ADMINUSERNAME: root + ME_CONFIG_MONGODB_ADMINPASSWORD: example + + rabbitmq: + image: rabbitmq:3-management + ports: + - 127.0.0.1:5672:5672 + - 127.0.0.1:15672:15672 + healthcheck: + test: rabbitmq-diagnostics -q ping + interval: 30s + timeout: 10s + retries: 5 + + plugin-registry: + image: plugin-registry + + gosdn: + image: gosdn + ports: + - 127.0.0.1:55055:55055 + - 127.0.0.1:8080:8080 + - 127.0.0.1:40000:40000 + depends_on: + gnmi-target_A: + condition: service_started + gnmi-target_B: + condition: service_started + mongo: + condition: service_started + plugin-registry: + condition: service_started + rabbitmq: + condition: service_healthy + command: + --config /app/configs/basic_docker-compose.toml --security secure + environment: + GOSDN_ADMIN_PASSWORD: TestPassword + volumes: + - ../../artifacts/ssl/gosdn:/app/ssl + + gnmi-target_A: + privileged: true + image: registry.code.fbi.h-da.de/danet/gnmi-target/debian:master + ports: + - 127.0.0.1:3919:7030 + volumes: + - ../../artifacts/ssl/gnmi-target:/etc/gnmi-target/ssl + command: + start --cert /etc/gnmi-target/ssl/certs/gnmi-target-selfsigned.crt --key /etc/gnmi-target/ssl/private/gnmi-target-selfsigned.key --ca_file /etc/gnmi-target/ssl/ca.crt + + gnmi-target_B: + privileged: true + image: registry.code.fbi.h-da.de/danet/gnmi-target/debian:master + ports: + - 127.0.0.1:3920:7030 + volumes: + - ../../artifacts/ssl/gnmi-target:/etc/gnmi-target/ssl + command: + start --cert /etc/gnmi-target/ssl/certs/gnmi-target-selfsigned.crt --key /etc/gnmi-target/ssl/private/gnmi-target-selfsigned.key --ca_file /etc/gnmi-target/ssl/ca.crt + +volumes: + mongo-db-basic: diff --git a/dev_env_data/docker-compose/integration-test_docker-compose.yml b/dev_env_data/docker-compose/integration-test_docker-compose.yml index 1ad6b265c30808c47e6e3a4ae4459c338e117835..4c2c624e8b720303066017122d1fef3ea3434fd2 100644 --- a/dev_env_data/docker-compose/integration-test_docker-compose.yml +++ b/dev_env_data/docker-compose/integration-test_docker-compose.yml @@ -34,9 +34,9 @@ services: gosdn: image: gosdn ports: - - 55055:55055 - - 8080:8080 - - 40000:40000 + - 127.0.0.1:55055:55055 + - 127.0.0.1:8080:8080 + - 127.0.0.1:40000:40000 depends_on: gnmi-target_A: condition: service_started @@ -59,7 +59,7 @@ services: privileged: true image: registry.code.fbi.h-da.de/danet/gnmi-target/debian:master ports: - - 3919:7030 + - 127.0.0.1:3919:7030 volumes: - ../../artifacts/ssl/gnmi-target:/etc/gnmi-target/ssl command: @@ -69,7 +69,7 @@ services: privileged: true image: registry.code.fbi.h-da.de/danet/gnmi-target/debian:master ports: - - 3920:7030 + - 127.0.0.1:3920:7030 volumes: - ../../artifacts/ssl/gnmi-target:/etc/gnmi-target/ssl command: