Sign inSign up

phirumseng/knetrahub-work-api

By phirumseng

•Updated 3 days ago

KNetraHub Work API: endpoints and migrations, no background jobs.

Image
0

902

phirumseng/knetrahub-work-api repository overview

⁠phirumseng/knetrahub-work-api

Work API — the request half of Work.

KNetraHub is a self-hosted IT operations portal: a Docker Swarm console, full-stack monitoring, work management, privileged access management, IP address management and a database workspace, behind one sign-in. It ships two ways — as a single monolith image, or as the split stack of one image per service that this image belongs to.

šŸ“– Documentation: https://sengphirum.github.io/KNetraHub/documentation⁠


⁠What this image does

The Work module's HTTP API and realtime (SSE) endpoints, plus its schema migrations. No background jobs.

It bundles the server code of work and nothing else, so the image carries only the module it is named after.

⁠How it works

Serves Work's HTTP endpoints and its realtime stream, and applies that module's own schema migrations at start-up. It opens two database pools: the portal pool it shares with every service, and Work's module pool, which it shares only with that module's worker.

⁠What it deliberately does not do

It runs no background job whatsoever. Nothing here polls, sweeps or drains, so restarting it interrupts requests only — never the work already in flight on the worker.

⁠Privileges

Runs unprivileged with cap_drop: [ALL] and nothing added back.

⁠Which image do I want

ImageServes HTTPRuns background jobsScale it with
knetrahub-work-api (this image)yesnorequest load
knetrahub-work-worker⁠noyesjob volume
knetrahub-app⁠yesyesnothing — it is one process

Scale this with request and dashboard load. Scale work-worker separately when it is the jobs, not the traffic, that are growing.

⁠Settings

Read straight from the stack file that deploys this service, so the list is what the image actually takes. Optional entries ship commented out.

VariableDefault
NUXT_APP_REPLICAS1set
NUXT_DB_POOL_MAX8set
NUXT_MODULE_POOL_REPLICAS2set
NUXT_JWT_SECRETchange-me-to-a-long-random-stringset
NUXT_ENV_MODEstagingoptional
NUXT_DB_HOSTtimescaledbset
NUXT_DB_PORT5432set
NUXT_DB_NAMEknetrahubset
NUXT_DB_USERknetrahubset
NUXT_DB_PASSWORDchange-me-to-a-long-random-stringset
KNETRA_INTERNAL_TOKEN_FILE/run/secrets/knetrahub_internal_tokenoptional
NUXT_WORK_FILES_DIR/app/data/work-filesset
NUXT_WORK_MAX_FILE_MB50optional
NUXT_WORK_FILES_PROVIDERs3optional
NUXT_WORK_S3_ENDPOINThttps://minio.example.comoptional
NUXT_WORK_S3_BUCKETknetrahub-work-filesoptional
NUXT_WORK_S3_ACCESS_KEY_FILE/run/secrets/knetrahub_work_s3_access_keyoptional
NUXT_WORK_S3_SECRET_KEY_FILE/run/secrets/knetrahub_work_s3_secret_keyoptional
NUXT_WORK_FILES_PROVIDERazureoptional
NUXT_WORK_AZURE_ACCOUNTmystorageaccountoptional
NUXT_WORK_AZURE_CONTAINERknetrahub-work-filesoptional
NUXT_WORK_AZURE_ACCOUNT_KEY_FILE/run/secrets/knetrahub_work_azure_keyoptional
NUXT_WORK_FILES_PROVIDERgcsoptional
NUXT_WORK_GCS_BUCKETknetrahub-work-filesoptional
NUXT_WORK_GCS_SERVICE_ACCOUNT_JSON_FILE/run/secrets/knetrahub_work_gcs_sa.jsonoptional
NUXT_WORK_FILES_PROVIDERseaweedfsoptional
NUXT_WORK_SEAWEEDFS_FILERhttp://seaweedfs:8888optional
NUXT_WORK_SEAWEEDFS_JWT_KEY_FILE/run/secrets/knetrahub_work_seaweedfs_jwtoptional
NUXT_PUBLIC_APP_URLhttps://knetrahub.example.comoptional

Anything ending in _FILE reads its value from that path instead, which is how the stack passes Docker secrets.

⁠Deploying it

This is one service of a stack, not a standalone container: it expects the portal database and its siblings on the same overlay network. Deploy it with the stack file that owns it rather than with docker run.

docker stack deploy -c docker/docker-compose.yml knetrahub

Pin a tag or a registry for this one service with KNETRAHUB_WORK_API_IMAGE, which the stack file reads:

export KNETRAHUB_WORK_API_IMAGE=phirumseng/knetrahub-work-api:0.1.11

⁠Supported tags

  • latest — the most recent release
  • x.y.z (e.g. 0.1.11) — immutable release versions

Pin the version in production. A rollback needs a tag that does not move, and every image in the stack is released under the same version so the whole set can be pinned together.

⁠The rest of the stack

Each service is its own image, so one can be updated without restarting the others:

⁠License

Proprietary — Ā© Seng Phirum. All rights reserved.

Tag summary

Content type

Image

Digest

sha256:7ff8c30b5…

Size

60.7 MB

Last updated

3 days ago

docker pull phirumseng/knetrahub-work-api