Platform Base requirements
Platform Base installs into an existing Kubernetes cluster. Check the following before you install it.
Cluster
- A running Kubernetes cluster and
kubectlaccess with cluster-admin rights. Platform Base installs CRDs and cluster-scoped resources. - Platform Base is validated against three consecutive Kubernetes minor
versions, listed in
vendor/github.com/RocketPadPlatforms/base/test/integration/k8s-versions.jsonin your repository. The rendered manifests are checked against them and an end-to-end test on a kind cluster converges every Application on each of them.
The default observability profile (small) did not fit on a node with 2 vCPU
and about 7 GB of memory in the end-to-end test: the loki Application never
became healthy. The test uses the singleNode profile, shrinks the Loki
caches and the Mimir ingester further, and turns Kafka off. The singleNode
profile alone requests 700m CPU and 6Gi memory for the Mimir ingester. These numbers are
indicative, size the nodes for your own load. See
Configure observability to choose a
profile.
LoadBalancer
Traefik is the ingress controller and its Service has the type
LoadBalancer. The cluster needs a LoadBalancer implementation (a cloud
provider, MetalLB or similar). Without one the Service never gets an address
and Argo CD does not report the traefik Application as healthy.
Default IngressClass
Traefik creates an IngressClass and marks it as the default. The Ingresses of
Platform Base do not set ingressClassName, so they depend on that default.
Do not install a second default IngressClass.
DNS
Create DNS records for the hostnames Platform Base serves. They all point to the address of the Traefik LoadBalancer Service:
| Hostname | Serves |
|---|---|
argocd.<baseDomain> | Argo CD |
grafana.<baseDomain> | Grafana |
iam.<baseDomain> | Keycloak |
<baseDomain> is the first entry of baseDomains. A wildcard record
(*.<baseDomain>) covers these hostnames and the optional loki.<baseDomain>
and mimir.<baseDomain>, see the
hostnames reference.
Git repository
Argo CD reads your cluster configuration and the vendored Platform Base from a Git repository. It needs network access to that repository, and credentials if the repository is private.
Workstation tools
- vendir to fetch Platform Base into your repository.
- jsonnet (go-jsonnet) to render the bootstrap.
kubectlto apply the bootstrap.
Mandatory configuration
baseDomains is the only mandatory option. Argo CD, Grafana, Keycloak and the
optional Loki and Mimir endpoints derive their hostnames from it.