Django API for resolver data, deployed on Sigma2 NIRD (nird-lmd) in namespace gbif-no-ns8095k.
Create environment settings in dev.env (one KEY=value per line), then run:
docker compose -f docker-compose.dev.yml upRun tests:
docker compose -f docker-compose.test.yml up --abort-on-container-exit --exit-code-from web- Namespace:
gbif-no-ns8095k - Deployment:
resolver-web - Service:
resolver-web - Ingress hosts:
resolver.gbif.no(public canonical host)resolver.gbif-no.sigma2.no(platform host)
- K8s manifests:
k8s/nird/
Detailed cluster setup notes are in k8s/nird/README.md.
- Configure kubectl context
nird-lmdwithnird-toolkit-auth-helper. - Ensure
resolver-envsecret exists ingbif-no-ns8095k:
kubectl create secret generic resolver-env \
-n gbif-no-ns8095k \
--from-env-file=prod.env \
--dry-run=client -o yaml | kubectl apply -f -- Build and push a tagged image:
export IMAGE_TAG=$(git rev-parse --short HEAD)
docker buildx build --platform linux/amd64 -t gbifnorway/resolver:${IMAGE_TAG} --push .- Update deployment image and wait for rollout:
kubectl --context nird-lmd -n gbif-no-ns8095k set image deploy/resolver-web resolver-web=gbifnorway/resolver:${IMAGE_TAG}
kubectl --context nird-lmd -n gbif-no-ns8095k rollout status deploy/resolver-web- Verify:
kubectl --context nird-lmd -n gbif-no-ns8095k get pods,svc,ingress
curl -fsS https://resolver.gbif-no.sigma2.no/?format=json | headThis repo has GitHub Actions to test and publish gbifnorway/resolver:latest on push to main.
After CI publishes, restart deployment to pull the new image:
kubectl --context nird-lmd -n gbif-no-ns8095k rollout restart deploy/resolver-web
kubectl --context nird-lmd -n gbif-no-ns8095k rollout status deploy/resolver-webIf a deploy fails:
kubectl --context nird-lmd -n gbif-no-ns8095k rollout history deploy/resolver-web
kubectl --context nird-lmd -n gbif-no-ns8095k rollout undo deploy/resolver-web
kubectl --context nird-lmd -n gbif-no-ns8095k rollout status deploy/resolver-web