Skip to content
This repository was archived by the owner on Jun 17, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,15 @@
# POSTGRES_PASSWORD=adminpass

# K8s container service provider (profile: k8s-container)
# K8S_CONTAINER_SP_KUBECONFIG=/path/to/kubeconfig
# K8S_CONTAINER_SP_NAMESPACE=default
# K8S_CONTAINER_SP_NAME=k8s-container-provider
# K8S_CONTAINER_SP_EXTERNAL_SVC_TYPE=NodePort

# Three-tier demo app service provider (profile: three-tier)
# Same kubeconfig + cluster namespace as k8s-container (K8S_CONTAINER_SP_* above).
# THREE_TIER_SP_NAME=three-tier-provider

# ACM cluster service provider (profile: acm-cluster)
# Supports two platforms: KubeVirt (default) and BareMetal.
# Both enabled by default (SP_ENABLED_PLATFORMS=kubevirt,baremetal).
Expand All @@ -28,4 +35,5 @@
# POLICY_MANAGER_VERSION=main
# KUBEVIRT_SERVICE_PROVIDER_VERSION=main
# K8S_CONTAINER_SERVICE_PROVIDER_VERSION=main
# ACM_CLUSTER_SERVICE_PROVIDER_VERSION=main
# ACM_CLUSTER_SERVICE_PROVIDER_VERSION=main
# THREE_TIER_DEMO_SERVICE_PROVIDER_VERSION=main
79 changes: 53 additions & 26 deletions RUN.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,34 @@ export ACM_CLUSTER_SP_DEFAULT_INFRA_ENV="my-infra-env"
export ACM_CLUSTER_SP_AGENT_NAMESPACE="my-agent-namespace"
```

### Three-tier demo app service provider

To include the `three-tier-demo-service-provider`, set the required environment variables and
activate the `three-tier` profile:

```bash
export K8S_CONTAINER_SP_KUBECONFIG="/path/to/kubeconfig"
make run-with-providers PROFILES=three-tier
```

When using Kind, complete the k8s-container setup (steps 1–5 in [K8s Container
SP with Kind](docs/k8s-container-sp-kind.md)) first.
For Pet Clinic usage, see [Three-Tier Demo App with Kind](docs/three-tier-app-kind.md).

Optionally override the provider name or cluster namespace (`K8S_CONTAINER_SP_NAMESPACE` applies
to both k8s-container and three-tier SPs):

```bash
export THREE_TIER_SP_NAME=my-provider
export K8S_CONTAINER_SP_NAMESPACE=default
```

### All providers

To start all providers at once, set the required environment variables and run:

```bash
export KUBERNETES_KUBECONFIG="/path/to/kubeconfig"
export KUBEVIRT_KUBECONFIG="/path/to/kubeconfig"
export K8S_CONTAINER_SP_KUBECONFIG="/path/to/kubeconfig"
export ACM_CLUSTER_SP_KUBECONFIG="/path/to/kubeconfig"
export ACM_CLUSTER_SP_PULL_SECRET="<base64-encoded-dockerconfigjson>"
Expand All @@ -92,12 +114,14 @@ export ACM_CLUSTER_SP_AGENT_NAMESPACE="my-agent-namespace"
make run-with-providers
```

This defaults to the `providers` Compose profile (all service providers). To start a single provider instead, pass `PROFILES=`:
This defaults to the `providers` Compose profile (all service providers, including the
three-tier demo SP). To start a single provider instead, pass `PROFILES=`:

```bash
make run-with-providers PROFILES=kubevirt
make run-with-providers PROFILES=k8s-container
make run-with-providers PROFILES=acm-cluster
make run-with-providers PROFILES=three-tier
```

## Verifying the deployment
Expand Down Expand Up @@ -131,29 +155,32 @@ make compose-down

## Configuration

| Variable | Default | Description |
| ---------------------------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------- |
| `POSTGRES_USER` | `admin` | PostgreSQL username |
| `POSTGRES_PASSWORD` | `adminpass` | PostgreSQL password |
| `KUBERNETES_NAMESPACE` | `default` | Kubernetes namespace for KubeVirt VMs |
| `KUBERNETES_KUBECONFIG` | `~/.kube/config` | Path to kubeconfig on the host |
| `K8S_CONTAINER_SP_KUBECONFIG` | `~/.kube/config` | Path to kubeconfig on the host for the k8s-container-service-provider |
| `K8S_CONTAINER_SP_NAMESPACE` | `default` | Kubernetes namespace for k8s containers |
| `K8S_CONTAINER_SP_NAME` | `k8s-container-provider` | Provider name for the k8s-container-service-provider |
| `K8S_CONTAINER_SP_EXTERNAL_SVC_TYPE` | `NodePort` | Kubernetes Service type for external ports (`NodePort` or `LoadBalancer`) |
| `ACM_CLUSTER_SP_KUBECONFIG` | `~/.kube/config` | Path to kubeconfig on the host for the acm-cluster-service-provider |
| `ACM_CLUSTER_SP_NAMESPACE` | `default` | Kubernetes namespace for ACM hosted clusters |
| `ACM_CLUSTER_SP_NAME` | `acm-cluster-sp` | Provider name for the acm-cluster-service-provider |
| `ACM_CLUSTER_SP_BASE_DOMAIN` | _(none)_ | Base DNS domain for hosted clusters; can be overridden per-request via `provider_hints.acm.base_domain` |
| `ACM_CLUSTER_SP_PULL_SECRET` | _(required)_ | Base64-encoded dockerconfigjson pull secret for ACM hosted clusters |
| `ACM_CLUSTER_SP_DEFAULT_INFRA_ENV` | _(none)_ | **BareMetal only.** Default InfraEnv name; can be overridden per-request via `provider_hints.acm.infra_env` |
| `ACM_CLUSTER_SP_AGENT_NAMESPACE` | _(none)_ | **BareMetal only.** Namespace where Agent resources are located |
| `SERVICE_PROVIDER_MANAGER_VERSION` | `main` | Image tag for service-provider-manager |
| `CATALOG_MANAGER_VERSION` | `main` | Image tag for catalog-manager |
| `POLICY_MANAGER_VERSION` | `main` | Image tag for policy-manager |
| `PLACEMENT_MANAGER_VERSION` | `main` | Image tag for placement-manager |
| `KUBEVIRT_SERVICE_PROVIDER_VERSION` | `main` | Image tag for kubevirt-service-provider |
| `K8S_CONTAINER_SERVICE_PROVIDER_VERSION` | `main` | Image tag for k8s-container-service-provider |
| `ACM_CLUSTER_SERVICE_PROVIDER_VERSION` | `main` | Image tag for acm-cluster-service-provider |
| Variable | Default | Description |
| ------------------------------------------ | --------------------------- | ----------------------------------------------------------------------------------------------------------- |
| `POSTGRES_USER` | `admin` | PostgreSQL username |
| `POSTGRES_PASSWORD` | `adminpass` | PostgreSQL password |
| `KUBERNETES_NAMESPACE` | `default` | Kubernetes namespace for KubeVirt VMs |
| `KUBERNETES_KUBECONFIG` | `~/.kube/config` | Path to kubeconfig on the host |
| `KUBEVIRT_PROVIDER_NAME` | `kubevirt-service-provider` | Provider name and Compose service `container_name` |
| `K8S_CONTAINER_SP_KUBECONFIG` | `~/.kube/config` | Path to kubeconfig on the host for the k8s-container-service-provider |
| `K8S_CONTAINER_SP_NAMESPACE` | `default` | Kubernetes namespace for k8s containers |
| `K8S_CONTAINER_SP_NAME` | `k8s-container-provider` | Provider name for the k8s-container-service-provider |
| `K8S_CONTAINER_SP_EXTERNAL_SVC_TYPE` | `NodePort` | Kubernetes Service type for external ports (`NodePort` or `LoadBalancer`) |
| `ACM_CLUSTER_SP_KUBECONFIG` | `~/.kube/config` | Path to kubeconfig on the host for the acm-cluster-service-provider |
| `ACM_CLUSTER_SP_NAMESPACE` | `default` | Kubernetes namespace for ACM hosted clusters |
| `ACM_CLUSTER_SP_NAME` | `acm-cluster-sp` | Provider name for the acm-cluster-service-provider |
| `ACM_CLUSTER_SP_BASE_DOMAIN` | _(none)_ | Base DNS domain for hosted clusters; can be overridden per-request via `provider_hints.acm.base_domain` |
| `ACM_CLUSTER_SP_PULL_SECRET` | _(required)_ | Base64-encoded dockerconfigjson pull secret for ACM hosted clusters |
| `ACM_CLUSTER_SP_DEFAULT_INFRA_ENV` | _(none)_ | **BareMetal only.** Default InfraEnv name; can be overridden per-request via `provider_hints.acm.infra_env` |
| `ACM_CLUSTER_SP_AGENT_NAMESPACE` | _(none)_ | **BareMetal only.** Namespace where Agent resources are located |
| `SERVICE_PROVIDER_MANAGER_VERSION` | `main` | Image tag for service-provider-manager |
| `CATALOG_MANAGER_VERSION` | `main` | Image tag for catalog-manager |
| `POLICY_MANAGER_VERSION` | `main` | Image tag for policy-manager |
| `PLACEMENT_MANAGER_VERSION` | `main` | Image tag for placement-manager |
| `KUBEVIRT_SERVICE_PROVIDER_VERSION` | `main` | Image tag for kubevirt-service-provider |
| `K8S_CONTAINER_SERVICE_PROVIDER_VERSION` | `main` | Image tag for k8s-container-service-provider |
| `ACM_CLUSTER_SERVICE_PROVIDER_VERSION` | `main` | Image tag for acm-cluster-service-provider |
| `THREE_TIER_DEMO_SERVICE_PROVIDER_VERSION` | `main` | Image tag for three-tier-demo-service-provider |
| `THREE_TIER_SP_NAME` | `three-tier-provider` | Provider name for the three-tier-demo-service-provider |

See [Image versions](README.md#image-versions) in the README for available tag formats and how to update.
26 changes: 25 additions & 1 deletion compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ services:
postgres: { condition: service_healthy }

k8s-container-service-provider:
profiles: ["providers", "k8s-container"]
profiles: ["providers", "k8s-container", "three-tier"]
image: quay.io/dcm-project/k8s-container-service-provider:${K8S_CONTAINER_SERVICE_PROVIDER_VERSION:-main}
pull_policy: always
environment:
Expand Down Expand Up @@ -184,6 +184,30 @@ services:
depends_on:
gateway: { condition: service_started }

three-tier-demo-service-provider:
profiles: ["providers", "three-tier"]
image: quay.io/dcm-project/three-tier-app-demo-service-provider:${THREE_TIER_DEMO_SERVICE_PROVIDER_VERSION:-main}
pull_policy: always
environment:
<<: *db-common
DB_NAME: three-tier-sp
CONTAINER_SP_URL: "http://k8s-container-service-provider:8080"
SP_NAME: ${THREE_TIER_SP_NAME:-three-tier-provider}
SP_ENDPOINT: "http://three-tier-demo-service-provider:8080"
DCM_REGISTRATION_URL: "http://service-provider-manager:8080/api/v1alpha1"
SP_NATS_URL: "nats://nats:4222"
SP_K8S_NAMESPACE: ${K8S_CONTAINER_SP_NAMESPACE:-default}
SP_K8S_KUBECONFIG: /kubeconfig
expose:
- "8080"
volumes:
- ${K8S_CONTAINER_SP_KUBECONFIG:-~/.kube/config}:/kubeconfig:ro,z
depends_on:
service-provider-manager: { condition: service_started }
nats: { condition: service_started }
k8s-container-service-provider: { condition: service_started }
postgres: { condition: service_healthy }

volumes:
postgres_data: {}
nats_data: {}
Loading