{"id":38298753,"url":"https://github.com/epic-gateway/dev-test-environment","last_synced_at":"2026-01-17T02:22:03.053Z","repository":{"id":197842362,"uuid":"690691183","full_name":"epic-gateway/dev-test-environment","owner":"epic-gateway","description":"Scripts and Vagrant/Ansible config to set up a local EPIC Gateway environment for development and test.","archived":false,"fork":false,"pushed_at":"2025-03-17T17:51:28.000Z","size":488,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T18:48:51.871Z","etag":null,"topics":["ansible","developer-tools","development-environment","vagrant"],"latest_commit_sha":null,"homepage":"https://www.epic-gateway.org/","language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/epic-gateway.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-12T17:17:05.000Z","updated_at":"2025-03-17T17:51:32.000Z","dependencies_parsed_at":"2023-10-03T00:12:24.742Z","dependency_job_id":"077d739d-6697-4fbb-a4b2-909a97a0395e","html_url":"https://github.com/epic-gateway/dev-test-environment","commit_stats":{"total_commits":372,"total_committers":4,"mean_commits":93.0,"dds":"0.14247311827956988","last_synced_commit":"cf094d42f4faac79a76f14c833e78c804adb43cb"},"previous_names":["epic-gateway/dev-test-environment"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/epic-gateway/dev-test-environment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epic-gateway%2Fdev-test-environment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epic-gateway%2Fdev-test-environment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epic-gateway%2Fdev-test-environment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epic-gateway%2Fdev-test-environment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/epic-gateway","download_url":"https://codeload.github.com/epic-gateway/dev-test-environment/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epic-gateway%2Fdev-test-environment/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28492222,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T00:50:05.742Z","status":"online","status_checked_at":"2026-01-17T02:00:07.808Z","response_time":85,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","developer-tools","development-environment","vagrant"],"created_at":"2026-01-17T02:22:02.937Z","updated_at":"2026-01-17T02:22:03.036Z","avatar_url":"https://github.com/epic-gateway.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EPIC Gateway Development/Test Environment\n\nThis project provides scripts to install and configure EPIC Gateway development/test environments. There are two environments:\n\n* This environment; a minimal environment with two single-VM Kubernetes clusters: one running EPIC, and one running a Gateway API client for testing. The two VMs use the Vagrant management network to talk to one another. This environment is a good starting place if you'd like to learn about EPIC Gateway.\n* [Multinode](multinode/): a more realistic (but much more complex) environment with two 3-node clusters, a private internal bridge, a private external bridge, and a router for access to the bridge. Multinode is only recommended if you know you need it.\n\n# Prerequisites\n\n[Vagrant](https://www.vagrantup.com/) and [libvirt](https://libvirt.org/) manage the virtual machines so you'll need to ensure that both are installed and configured for your operating system. Vagrant uses [Ansible](https://www.ansible.com/) to configure the virtual machines that it creates.\n\n_Hint_: on a recent Debian or Ubuntu system this command will install the tools that you need:\n```sh\n# apt-get update \u0026\u0026 apt-get install -y git ansible vagrant-libvirt qemu-kvm\n```\n\n# Setup\n\n```sh\n$ git clone https://github.com/epic-gateway/dev-test-environment.git\n$ cd dev-test-environment\n$ vagrant up          # create/configure the VMs\n```\n\nThis clones the repo, creates two VMs called ```gateway``` and ```gwclient```, installs a Kubernetes cluster on each of them, installs the EPIC Gateway on ```gateway```, and installs our Kubernetes Gateway API implementation on ```gwclient```.\n\n# Use\n\nThe ```gateway``` VM runs the EPIC Gateway cluster. You can use ```vagrant ssh``` to access it. For example:\n\n```sh\n$ vagrant ssh gateway -- kubectl get nodes\nNAME           STATUS   ROLES                  AGE   VERSION\nepic-gateway   Ready    control-plane,master   31m   v1.23.5\n```\n\n```gwclient``` runs the EPIC Gateway client. You can use ```vagrant ssh``` to access it. For example:\n\n```sh\n$ vagrant ssh gwclient -- kubectl get gatewayclassconfig gwdev-http4 -oyaml\napiVersion: puregw.epic-gateway.org/v1\nkind: GatewayClassConfig\n\n  ... etc etc ...\n\nstatus:\n  conditions:\n  - lastTransitionTime: \"2023-10-26T17:06:23Z\"\n    message: EPIC connection succeeded\n    observedGeneration: 1\n    reason: Valid\n    status: \"True\"\n    type: Accepted\n```\n\nThe status from the previous command should contain a condition with the message ```EPIC connection succeeded```. This means that the Gateway client is able to communicate with the Gateway server.\n\nCreating a Gateway is a good next step:\n\n```sh\n$ vagrant ssh gwclient -- kubectl apply -f - \u003c files/gateway_v1a2_gateway-devtest.yaml\ndeployment.apps/devtest created\nservice/devtest created\ngateway.gateway.networking.k8s.io/devtest created\nhttproute.gateway.networking.k8s.io/devtest-1 created\n```\n\nNow you can check the status of the gateway:\n\n```sh\n$ vagrant ssh gwclient -- kubectl get gateways devtest\nNAME      CLASS         ADDRESS        READY   AGE\ndevtest   gwdev-http4   192.168.77.2   True    93s\n```\n\nIf your gateway is ready you can make an http request to the gateway address. EPIC will proxy the request to the client which is running an http echo server:\n\n```sh\n$ vagrant ssh gateway -- curl -s 192.168.77.2/get\n{\n  \"args\": {},\n  \"headers\": {\n    \"Accept\": [\n      \"*/*\"\n    ],\n    \"Host\": [\n      \"192.168.77.2\"\n    ],\n\n  ... etc etc ...\n\n  \"method\": \"GET\",\n  \"origin\": \"192.168.121.83\",\n  \"url\": \"http://192.168.77.2/get\"\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepic-gateway%2Fdev-test-environment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fepic-gateway%2Fdev-test-environment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepic-gateway%2Fdev-test-environment/lists"}