CONTAINERIZED DELIVERY

Docker & K8s

From laptop to cluster.

Zupitrix packages services as Docker images and runs them on Kubernetes when you need several environments, rollouts, and a cluster your team can operate. Health checks, config, and resource limits are part of the workload — not a note in a README.

Start Project
ImageBuilt once in CI
PodProbes and limits
ReleaseRolling update
GitOpsDesired state in Git
ObsMetrics + dashboards

Manifest

Images and Kubernetes workloads that run the same way in CI, staging, and production.

01

One image, promoted

CI builds the image. Staging and production run that digest. We do not rebuild with different flags per environment. We document the approach, name owners, and attach acceptance checks so “One image, promoted” is reviewable in demos and durable after handoff.

02

Config outside the image

Environment-specific values and secrets are injected at runtime. The Dockerfile stays boring. We document the approach, name owners, and attach acceptance checks so “Config outside the image” is reviewable in demos and durable after handoff.

03

Probes that match the app

Readiness means the process can serve traffic. Liveness means it should be restarted. They are not the same check copied twice. We document the approach, name owners, and attach acceptance checks so “Probes that match the app” is reviewable in demos and durable after handoff.

04

Rollouts with a way back

Deployments can pause and undo. Database migrations are called out when they are not backward compatible. We document the approach, name owners, and attach acceptance checks so “Rollouts with a way back” is reviewable in demos and durable after handoff.

Cargo

What we containerize

Docker images

Small, reproducible images for Node, Python, and web apps, built in CI. We document the approach, name owners, and attach acceptance checks so “Docker images” is reviewable in demos and durable after handoff.

Kubernetes workloads

Deployments, services, ingress, and resource settings for the environments you run. We document the approach, name owners, and attach acceptance checks so “Kubernetes workloads” is reviewable in demos and durable after handoff.

Local parity

A compose or local cluster path so engineers can run the same process shape before it hits the cluster. We document the approach, name owners, and attach acceptance checks so “Local parity” is reviewable in demos and durable after handoff.

Conveyor

  1. 01

    Process

    What the app needs: ports, files, env, and a health URL. Exit criteria and owners are written down before the next step starts.

  2. 02

    Image

    Dockerfile and a CI build that publishes a digest. Exit criteria and owners are written down before the next step starts.

  3. 03

    Workload

    Manifests with probes, limits, and config. Exit criteria and owners are written down before the next step starts.

  4. 04

    Promote

    The same image moves from staging to production. Exit criteria and owners are written down before the next step starts.

  5. 05

    Harden

    Validate budgets, failure modes, observability, and rollback before traffic. Exit criteria and owners are written down before the next step starts.

  6. 06

    Handoff

    Runbooks, access, and training so the client team can operate without us. Exit criteria and owners are written down before the next step starts.

Images

  • Docker
  • Kubernetes
  • Helm
  • GitHub Actions
  • EKS
  • NGINX Ingress
  • Prometheus
  • Grafana

Ports

  • Kubernetes Orchestration

    Cluster platform work beyond a single app. Share the journeys and constraints and we will map whether this engagement is the right fit.

  • CI/CD Pipelines

    The pipeline that builds and promotes the image. Share the journeys and constraints and we will map whether this engagement is the right fit.

  • Infrastructure as Code

    Cluster and cloud resources described in code. Share the journeys and constraints and we will map whether this engagement is the right fit.

Outcomes

What we optimize for

Product and engineering goals we keep visible from the first slice through handoff — so velocity never quietly trades away quality.

1 imageBuilt in CI
ProbesReady ≠ live
PromoteSame digest forward
GitOpsDesired state in Git
QuotasNo noisy neighbors
ScannedImages in CI

At a glance

Delivery facts

Typical timelines, coverage, and operating constraints we set expectations against before the build surface expands.

TopicValueNote
Containerize≤1 weekTypical service. Tracked against Docker & Kubernetes delivery milestones.
K8s decisionWhen multi-serviceOr strict ops needs. Tracked against Docker & Kubernetes delivery milestones.
Image ruleBuild oncePromote digest. Tracked against Docker & Kubernetes delivery milestones.
ProbesSplitReady ≠ live. Tracked against Docker & Kubernetes delivery milestones.
DeliveryGitOps/CINo laptop apply. Tracked against Docker & Kubernetes delivery milestones.
ScanCI gateCritical blocked. Tracked against Docker & Kubernetes delivery milestones.

Ecosystem

Technologies that sit beside it

Real stack partners we wire into delivery with clear roles — not decorative logos on a slide.

Docker

Images — integrated deliberately into delivery with Docker.

Kubernetes

Orchestration — integrated deliberately into delivery with Kubernetes.

Helm

Packaging — integrated deliberately into delivery with Helm.

NGINX

Ingress — integrated deliberately into delivery with NGINX.

Prometheus

Metrics — integrated deliberately into delivery with Prometheus.

Grafana

Dashboards — integrated deliberately into delivery with Grafana.

GitHub Actions

Build & promote — integrated deliberately into delivery with GitHub Actions.

Argo CD

GitOps — integrated deliberately into delivery with Argo CD.

AWS EKS

Managed K8s — integrated deliberately into delivery with AWS EKS.

Redis

App dependency — integrated deliberately into delivery with Redis.

PostgreSQL

Stateful data — integrated deliberately into delivery with PostgreSQL.

Terraform

Cluster IaC — integrated deliberately into delivery with Terraform.

Integrations

Systems we commonly connect

CMS, identity, commerce, analytics, and edge services joined with typed contracts, webhooks, and ownership — not ad-hoc glue.

GitHub Actions

Build images — integrated deliberately into delivery with GitHub Actions.

AWS ECR

Registry — integrated deliberately into delivery with AWS ECR.

cert-manager

TLS — integrated deliberately into delivery with cert-manager.

NGINX Ingress

Ingress — integrated deliberately into delivery with NGINX Ingress.

Sentry

App errors — integrated deliberately into delivery with Sentry.

Terraform

Cluster — integrated deliberately into delivery with Terraform.

Architecture

Layers we design explicitly

Boundaries, ops knobs, and rollback policy for each layer — so one team can change without rewriting everything.

01

Build

CI builds, scans, pushes digest.

  • Dockerfile
  • Trivy
  • Registry
02

Package

Helm/Kustomize values per env.

  • Helm
  • Kustomize
  • Secrets
03

Deliver

GitOps or pipeline apply.

  • Argo CD
  • Actions
  • Promote
04

Run

Deployments, jobs, probes, HPA.

  • Pods
  • Services
  • HPA
05

Observe

Metrics, logs, alerts.

  • Prom
  • Grafana
  • Logs

Capabilities

What we actually deliver

Concrete workstreams with owners, acceptance checks, and a path for your engineers to extend after handoff.

Reproducible images

Built once in CI; digests promoted — not rebuilt per env.

Health that matches the app

Readiness and liveness are different checks on purpose.

Config outside the image

Secrets and env injected at runtime.

Resource governance

CPU/memory requests so noisy neighbors do not win.

Ingress & TLS

Traffic entry with certificates and routing rules.

Observability hooks

Metrics and logs to the platform you already watch.

GitOps workflows

Desired state in Git with PR review.

Namespace tenancy

Teams isolated with quotas and network policies.

Job & cron patterns

Finite workloads with backoff and history limits.

Patterns

Approaches we reach for

Reference implementations and conventions in the repo — so reviews reject one-off variants that bypass the agreed shape.

01

Build once, promote often

Environment differences are config, not rebuilds.

Reference implementation of “Build once, promote often” lives in the repo, not only slides.
02

Readiness vs liveness

Wrong probes cause thrash — we separate them.

Reference implementation of “Readiness vs liveness” lives in the repo, not only slides.
03

Requests before limits

Scheduler needs honest requests.

Reference implementation of “Requests before limits” lives in the repo, not only slides.
04

Secrets as references

Not layers in the image.

Reference implementation of “Secrets as references” lives in the repo, not only slides.
05

Git as control plane

Cluster state is reviewable.

Reference implementation of “Git as control plane” lives in the repo, not only slides.
06

Namespace budgets

Quotas keep multi-team clusters fair.

Reference implementation of “Namespace budgets” lives in the repo, not only slides.

Industries

Domains we apply this in

Same technical playbook, different module depth — regulation, uptime, and partner APIs baked in early.

01

SaaS multi-service

APIs, workers, web in one cluster.

Typical systems (identity, payments, CMS, partners) listed with owners.
02

Regulated deploys

Auditable GitOps trails.

Typical systems (identity, payments, CMS, partners) listed with owners.
03

High-traffic APIs

HPA and careful rollouts.

Typical systems (identity, payments, CMS, partners) listed with owners.
04

Data jobs

Cron/batch with resource caps.

Typical systems (identity, payments, CMS, partners) listed with owners.
05

Agency multi-tenant

Namespaced client workloads.

Typical systems (identity, payments, CMS, partners) listed with owners.
06

Edge-adjacent apps

Ingress, TLS, canaries.

Typical systems (identity, payments, CMS, partners) listed with owners.

Decide with us

Choose vs avoid

Defaults we defend in architecture reviews — and shortcuts we challenge before they become expensive.

Choose

Docker first; K8s when needed

Avoid

K8s for a single static site

  • Default on Docker & Kubernetes because it keeps ownership and reviews objective.
Choose

Promote digests

Avoid

Rebuild per environment

  • Default on Docker & Kubernetes because it keeps ownership and reviews objective.
Choose

Split probes

Avoid

One endpoint for ready and live

  • Default on Docker & Kubernetes because it keeps ownership and reviews objective.
Choose

Scan in CI

Avoid

Unsigned mystery images

  • Default on Docker & Kubernetes because it keeps ownership and reviews objective.
Choose

GitOps for prod

Avoid

kubectl apply from laptops

  • Default on Docker & Kubernetes because it keeps ownership and reviews objective.

Tooling

Day-to-day instruments

Lint, test, preview, and observability tools that stay in the repo — not optional add-ons after launch.

Docker ComposeLocal parity — integrated deliberately into delivery with Docker Compose.
k9sCluster UI — integrated deliberately into delivery with k9s.
TrivyImage scan — integrated deliberately into delivery with Trivy.
HarborRegistry — integrated deliberately into delivery with Harbor.
HelmCharts — integrated deliberately into delivery with Helm.
Argo CDGitOps — integrated deliberately into delivery with Argo CD.
PrometheusMetrics — integrated deliberately into delivery with Prometheus.
GrafanaDashboards — integrated deliberately into delivery with Grafana.

FAQ

Ready to containerize a service?

Tell us what runs today and how you deploy it. We will separate the image, the config, and whether Kubernetes is the right host.

Start Project
Contact Us

Get In Touch

Let's build something amazing together. Contact us to discuss your project and see how we can help bring your vision to life.

New project inquiry

Start project.
We'd love to help.

Fill in the form and we'll respond within one business day — personally, not with a template.

Your info stays private