{"id":22302659,"url":"https://github.com/dataoneorg/gnis-deployment","last_synced_at":"2026-03-19T22:21:55.766Z","repository":{"id":45646726,"uuid":"384291574","full_name":"DataONEorg/gnis-deployment","owner":"DataONEorg","description":"GNIS deployment","archived":false,"fork":false,"pushed_at":"2022-04-20T16:52:24.000Z","size":30,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-01-30T21:17:16.543Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DataONEorg.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-07-09T01:44:13.000Z","updated_at":"2021-12-02T22:06:43.000Z","dependencies_parsed_at":"2022-09-16T20:50:29.198Z","dependency_job_id":null,"html_url":"https://github.com/DataONEorg/gnis-deployment","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataONEorg%2Fgnis-deployment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataONEorg%2Fgnis-deployment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataONEorg%2Fgnis-deployment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataONEorg%2Fgnis-deployment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DataONEorg","download_url":"https://codeload.github.com/DataONEorg/gnis-deployment/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245564903,"owners_count":20636203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-12-03T18:40:35.745Z","updated_at":"2026-01-06T07:06:31.407Z","avatar_url":"https://github.com/DataONEorg.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# GNIS-Deployment\n\n- **License**: [Apache 2](http://opensource.org/licenses/Apache-2.0)\n- [**Submit Bugs and feature requests**](https://github.com/DataONEorg/gnis-deployment/issues)\n\n\nKubernetes deployment files for the gnis-ld.org project.\n\n## Architecture\n\nThe deployment takes place as a single deployment with a single pod, which in turn contains a container for each stack component. For example, there's a container for the triplifier, for the webapp, etc. The webapp is the only pod that communicates with the outside world and has it's port mapping specified in the gnis-service.yaml file. The other containers (triplifier, postgis, GraphDBB) communicate though `localhost` instead of services _because they're in the same pod_.\n\nBecause all of the containers exist in the same pod, each container can be accessed from another with `localhost:port`. For example, the webapp gnis-ld can communicate with GraphDB via `localhost:7200`. This is opposed to a service based communication model, which would be appropriate if the containers were in separate pods. This is exploited in the reverse proxy logic in the webapp, where GraphDB is contacted from the webapp.\n\n## Deployment\n\nTo deploy the gnis deployment, first check to see if there's a valid PVC. From the `gnis` namespace, run\n\n`kubectl get pvc`\n\nIf the PVC exists, there should be a roq entry with State 'Bound'.\n\n\nIf there isn't, create the Persistent Volume (PV) and the Volume Claim (PVC). The PV needs to be created first and with the Kubernetes administrator account in the default namespace. The PVC needs to be created with the `gnis` user in the `gnis` namespace.\n\nOnce the PV \u0026 PVC exist create the deployment,\n\n`kubectl apply -f deployment/gnis-deployment.yaml`\n\nTo create the service to expose the webapp,\n\n`kubectl apply -f networking/gnis-service.yaml`\n\nTo perform a rolling update run,\n\n `kubectl rollout restart deployment gnis`\n\n#### Debugging\nThere are a few commands that will come in handy while debugging the stack.\n\nGet the logs of a gnis container,\n\n`kubectl logs \u003cpod\u003e \u003ccontainer-name\u003e`\n\nIf a container has restarted, the previous logs can be obtained with the `--previous` flag.\n\n`kubectl logs --previous \u003cpod\u003e \u003ccontainer-name\u003e`\n\nTo get a shell in a running pod, run\n\n`kubectl exec -i -t \u003cpod\u003e bash`\n\nTo get a shell in a container, inside a pod, run\n\n`kubectl exec -n gnis -it pod/\u003cpod-name\u003e -c \u003ccontainer-name\u003e -- /bin/sh`\n\nFor debugging networking, the following are useful\n\n`kubectl describe virtualserver -n nginx-ingress`\n\n`kubectl describe virtualserverroute -n gnis`\n\n`kubectl describe service/gnis -n gnis`\n\nAn alternative to the rolling update is doing a restart of the deployment. This doesn't delete the PV \u0026 PVC\n\n```\nkubectl delete deployment gnis\nkubectl apply -f templates/deployment/gnis-deployment.yaml\n```\n\n##### Debugging GraphDB\nIn the case that the GraphDB instance needs debugging and access to the GraphDB Workbench is needed, re-configure the gnis service to direct traffic to GraphDB (change `targetPort` to 7200). This will allow you to access the workbench; be sure to change the port back to the gnis-ld port before re-deploying.\n\n[![dataone_footer](https://www.dataone.org/sites/all/images/DataONE_LOGO.jpg)](https://www.dataone.org)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdataoneorg%2Fgnis-deployment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdataoneorg%2Fgnis-deployment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdataoneorg%2Fgnis-deployment/lists"}