60 lines
1.9 KiB
Markdown
60 lines
1.9 KiB
Markdown
# Topologies Catalog
|
|
|
|
A `Topology` is the logical representation of your infrastructure and its `Capabilities`. You select a `Topology` in your Harmony project to define _where_ your `Scores` will be applied.
|
|
|
|
<!--toc:start-->
|
|
|
|
- [Topologies Catalog](#topologies-catalog)
|
|
- [HAClusterTopology](#haclustertopology)
|
|
- [K8sAnywhereTopology](#k8sanywheretopology)
|
|
|
|
<!--toc:end-->
|
|
|
|
### HAClusterTopology
|
|
|
|
- **`HAClusterTopology::autoload()`**
|
|
|
|
This `Topology` represents a high-availability, bare-metal cluster. It is designed for production-grade deployments like OKD.
|
|
|
|
It models an environment consisting of:
|
|
|
|
- At least 3 cluster nodes (for control plane/workers)
|
|
- 2 redundant firewalls (e.g., OPNsense)
|
|
- 2 redundant network switches
|
|
|
|
**Provided Capabilities:**
|
|
This topology provides a rich set of capabilities required for bare-metal provisioning and cluster management, including:
|
|
|
|
- `K8sClient` (once the cluster is bootstrapped)
|
|
- `DnsServer`
|
|
- `LoadBalancer`
|
|
- `DhcpServer`
|
|
- `TftpServer`
|
|
- `Router` (via the firewalls)
|
|
- `Switch`
|
|
- `NetworkManager` (for host-level network config)
|
|
|
|
---
|
|
|
|
### K8sAnywhereTopology
|
|
|
|
- **`K8sAnywhereTopology::from_env()`**
|
|
|
|
This `Topology` is designed for development and application deployment. It provides a simple, abstract way to deploy to _any_ Kubernetes cluster.
|
|
|
|
**How it works:**
|
|
|
|
1. By default (`from_env()` with no env vars), it automatically provisions a **local K3D (k3s-in-docker) cluster** on your machine. This is perfect for local development and testing.
|
|
2. If you provide a `KUBECONFIG` environment variable, it will instead connect to that **existing Kubernetes cluster** (e.g., your staging or production OKD cluster).
|
|
|
|
This allows you to use the _exact same code_ to deploy your application locally as you do to deploy it to production.
|
|
|
|
**Provided Capabilities:**
|
|
|
|
- `K8sClient`
|
|
- `HelmCommand`
|
|
- `TenantManager`
|
|
- `Ingress`
|
|
- `Monitoring`
|
|
- ...and more.
|