From b3fe0a35a4f691858ace177278ae685733ebb471 Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Tue, 30 Jan 2024 17:16:18 +0100 Subject: [PATCH] add contents to DTAP section --- docs/architecture/dtap/acceptance.md | 19 ++++++++++++- docs/architecture/dtap/development.md | 10 +++++++ docs/architecture/dtap/index.md | 27 ++++++++++++++++++- docs/architecture/dtap/production.md | 10 ++++++- docs/architecture/dtap/test.md | 17 +++++++++++- includes/glossary.md | 3 +++ mkdocs.yml | 1 + .../vocabularies/geant-jargon/accept.txt | 5 ++-- .../vocabularies/technical-terms/accept.txt | 5 ++++ 9 files changed, 91 insertions(+), 6 deletions(-) create mode 100644 docs/architecture/dtap/development.md diff --git a/docs/architecture/dtap/acceptance.md b/docs/architecture/dtap/acceptance.md index bc010f9..c36f607 100644 --- a/docs/architecture/dtap/acceptance.md +++ b/docs/architecture/dtap/acceptance.md @@ -1,3 +1,20 @@ # Acceptance environment -TBA +Once GAP components have been tested successfully in the test environment, they +are advanced to the UAT environment. In this environment, stakeholders from +other teams such as Network Engineering and Operations are able to perform their +own tests on the system. + +In the UAT environment, only full releases are deployed. This means that +development builds are not included in this environment. Devices targeted by GAP +are physical routers in the lab, to increase accuracy of integration testing. + +The UAT environment has been designed to mimic the ultimate production +environment as close as possible. To achieve this, all VMs are managed in the +same manner using Puppet, and external resources are configured identically. The +external service database is hosted on a distributed Postgres cluster, which is +provided by the DevOps team. The Redis instance is also a cluster, which again +comes from the DevOps team. + +Once testing has been completed, components are ready to move to the production +environment. diff --git a/docs/architecture/dtap/development.md b/docs/architecture/dtap/development.md new file mode 100644 index 0000000..5bb9499 --- /dev/null +++ b/docs/architecture/dtap/development.md @@ -0,0 +1,10 @@ +# Development environments + +For the development of different components of GAP, an environment is needed for +integration testing. This is done by making use of a Proxmox cluster in the +GÉANT lab environment, that facilitates different VMs for each developer. + +Inside a development VM, containerlab is used to emulate virtual routers of both +Juniper and Nokia. Port forwarding then enables the developer to run +applications such as GSO and LSO on their local machine, to help speed up the +development cycle. diff --git a/docs/architecture/dtap/index.md b/docs/architecture/dtap/index.md index 35cd1b5..6b21526 100644 --- a/docs/architecture/dtap/index.md +++ b/docs/architecture/dtap/index.md @@ -1,3 +1,28 @@ # DTAP process -TBA +To stage the different environments used for testing all components of GAP, the +DTAP process ensures that software in the production environment is well-tested +and understood by all parties involved. + +For the deployment of GAP, a set of Ansible playbooks is used to prepare VMs, +install required dependencies, and set up the different components of GAP. There +are four different environments, with their major differences listed in the +table below. + +| Environment | Router topology | Component versioning | Used by | +|-------------|-----------------|----------------------|---------------------| +| Development | containerlab | - | GAP developers | +| Test | EVE-NG | 1.6dev135 | GAP developers | +| UAT | lab devices | 1.5 | Network Engineering | +| Production | production | 1.2 | Operations & OC | + +The development environment runs on a local machine of a developer, and is +therefore highly volatile and unstable. The test environment is less volatile, +but still contains the newest package versions that are merged into `develop`. +The UAT environment is more stable, and only contains released packages. This is +where integration testing with physical devices takes place. + +Once a combination of specific version numbers is deemed compatible and fully +functional, it is deployed as a whole in production. Production could therefore +be multiple releases behind UAT, if this combination of newer versions has not +been tested yet. diff --git a/docs/architecture/dtap/production.md b/docs/architecture/dtap/production.md index 701af60..fc6662c 100644 --- a/docs/architecture/dtap/production.md +++ b/docs/architecture/dtap/production.md @@ -1,3 +1,11 @@ # Production environment -TBA +The production environment contains final, well-tested versions of GAP +components. + +This environment has been designed to be resilient and as stable as reasonably +possible. The used Postgres and Redis services are hosted in distributed +clusters, and GAP is deployed in three different VMs. These VMs share a virtual +IP address, where a specific VM is selected using `keepalived`. If one of the +components of GAP were to go down in one of the VMs, another VM will take over +without the end user experiencing any system downtime. diff --git a/docs/architecture/dtap/test.md b/docs/architecture/dtap/test.md index c28e372..88f17e8 100644 --- a/docs/architecture/dtap/test.md +++ b/docs/architecture/dtap/test.md @@ -1,3 +1,18 @@ # Test environment -TBA +Once development has taken place, and rudimentary unit and system testing was +successful, a merge request is opened in the relevant Git repository. Once this +merge request is approved and included in upstream, it will be on the `develop` +branch. + +The test environment is automatically re-deployed every hour on a VM +infrastructure in the GÉANT lab environment. This ensures that the test +environment always contains the newest versions of all components of GAP. + +The test environment is meant for the GOAT to test new functionality and +the stability of GAP. The routers that are targeted, are virtual routers managed +by an EVE-NG instance. Once testing in the test environment has been concluded +successfully, GAP components are ready to advance to the UAT environment. + +The test environment contains all development builds of components, following +semantic versioning principles. diff --git a/includes/glossary.md b/includes/glossary.md index a90eb03..cc2000a 100644 --- a/includes/glossary.md +++ b/includes/glossary.md @@ -10,6 +10,7 @@ *[GA]: Access Port *[GAN]: Access Node *[GAP]: GÉANT Automation Platform +*[GOAT]: GÉANT Orchestration and Automation Team *[GP]: Physical Port *[GSO]: GÉANT Service Orchestrator *[GUI]: Graphical User Interface @@ -33,4 +34,6 @@ *[SNMP]: Simple Network Management Protocol *[SOT]: Source Of Truth *[TBA]: To be added +*[UAT]: User Acceptance Testing +*[VM]: Virtual Machine *[WFO]: Workflow Orchestrator diff --git a/mkdocs.yml b/mkdocs.yml index 12f6ce6..538f534 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -58,6 +58,7 @@ nav: - LSO: architecture/components/lso/index.md - DTAP: - architecture/dtap/index.md + - Development: architecture/dtap/development.md - Test: architecture/dtap/test.md - Acceptance: architecture/dtap/acceptance.md - Production: architecture/dtap/production.md diff --git a/vale/styles/config/vocabularies/geant-jargon/accept.txt b/vale/styles/config/vocabularies/geant-jargon/accept.txt index b2a4c49..1216a24 100644 --- a/vale/styles/config/vocabularies/geant-jargon/accept.txt +++ b/vale/styles/config/vocabularies/geant-jargon/accept.txt @@ -4,10 +4,11 @@ address BSS CFS configuration as code -components? +[Cc]omponents? contains? GAP -GÉANT( Automation Platform)? +GÉANT Automation Platform +GOAT GSO IFS iptrunk_* diff --git a/vale/styles/config/vocabularies/technical-terms/accept.txt b/vale/styles/config/vocabularies/technical-terms/accept.txt index a07bba6..0c36825 100644 --- a/vale/styles/config/vocabularies/technical-terms/accept.txt +++ b/vale/styles/config/vocabularies/technical-terms/accept.txt @@ -8,6 +8,7 @@ DHCP DNS Dockerfile DTAP +EVE FXP GAN IGP @@ -21,9 +22,13 @@ MTTR MTU [Mm]ultipoint Netbox +Postgres +Proxmox REST|rest SDP SID SOT SNMP +UAT VLAN +VMs? -- GitLab