Skip to main content

Application Delivery

An ApplicationSet groups services on a ReleaseTrack; an Application (built from source) or ExternalApplication (prebuilt image) defines the service; a DeploymentConfig tunes it per environment.

ApplicationSet

# .../release-track/main-track/application-set/payments/payments.yaml
apiVersion: lowops.manifests.v1
kind: ApplicationSet
metadata:
name: payments
release-track: main-track
organizational-unit: retail-banking
organization: fincorp
spec:
description: "Core payment services released together."

Application (built from a BuildDefinition)

# .../application-set/payments/application/payment-api.yaml
apiVersion: lowops.manifests.v1
kind: Application
metadata:
name: payment-api
application-set: payments
release-track: main-track
organizational-unit: retail-banking
organization: fincorp
spec:
description: "Payment processing API."
target: CLOUD_RUN # CLOUD_RUN | KUBERNETES | COMPUTE
meshStrategy: DISABLED # SIDECAR | PROXYLESS | DISABLED
source: payment-api # a BuildDefinition
container: payment-api # a container produced by that BuildDefinition
project: login-svc

ExternalApplication (prebuilt image)

# .../application-set/payments/external-application/httpbin.yaml
apiVersion: lowops.manifests.v1
kind: ExternalApplication
metadata:
name: httpbin
application-set: payments
release-track: main-track
organizational-unit: retail-banking
organization: fincorp
spec:
description: "Diagnostic echo service."
target: CLOUD_RUN
meshStrategy: SIDECAR
source: docker-io # an ExternalRegistry
container: mccutchen/go-httpbin # the image within that registry
project: login-svc

DeploymentConfig (per environment)

The metadata.name must match the application's name. Create one per environment to vary version, env vars, scaling, ports, and health.

# .../environment/prod/project/login-svc/deployment-config/payment-api.yaml
apiVersion: lowops.manifests.v1
kind: DeploymentConfig
metadata:
name: payment-api # matches the Application name
project: login-svc
environment: prod
organizational-unit: retail-banking
organization: fincorp
spec:
version: v1.4.0
container:
env:
- name: LOG_LEVEL
value: info
ports:
8080: http
scaling:
min: 2
max: 10
health:
liveness:
protocol: HTTP
port: 8080
path: /healthz