The PostgresClusterInstance Resource¶
PostgresClusterInstance is the cluster-scoped version of the
PostgresInstance resource and is used almost exactly
the same way. However, since it is cluster-scoped, the passwordSecretRef must
reference a secret residing in the operator namespace. The operator
namespace is the namespace kompost runs in (defaults to "kompost")
apiVersion: v1
kind: Secret
metadata:
name: server-credentials
namespace: kompost
stringData:
password: secure-password
The PostgresClusterInstance then references the secret in spec.passwordSecretRef:
apiVersion: kompost.chuge.li/v1alpha1
kind: PostgresClusterInstance
metadata:
name: staging-server
namespace: default
spec:
hostname: postgres.svc
port: 5432
username: postgres
passwordSecretRef:
name: server-credentials
key: password
ssl:
enabled: false
Limiting Allowed Namespaces¶
By default, the PostgresClusterInstance can be referenced by
PostgresDatabase resources from any namespace. Access can be limited to a set
of namespaces throug the kompost.chuge.li/allowed-namespaces annotation. This
annotation can be set to a list of namespaces as regular expressions.
Note
Note that Kompost wraps all regular expressions in $ and ^ anchors if
they aren't already.
Examples¶
The following resource can be referenced by PostgresDatabase resources in
exactly two namespaces: default and staging.
apiVersion: kompost.chuge.li/v1alpha1
kind: PostgresClusterInstance
metadata:
name: staging-server
namespace: default
annotations:
kompost.chuge.li/allowed-namespaces: "default, staging"
spec:
hostname: postgres.svc
port: 5432
username: postgres
passwordSecretRef:
name: server-credentials
key: password
The following resource can be referenced by PostgresDatabase resources in
namespace staging, any namespace starting with test- and any namespace
ending in -alpha.
apiVersion: kompost.chuge.li/v1alpha1
kind: PostgresClusterInstance
metadata:
name: staging-server
namespace: default
annotations:
kompost.chuge.li/allowed-namespaces: "staging, test-.*, .*-alpha"
spec:
hostname: postgres.svc
port: 5432
username: postgres
passwordSecretRef:
name: server-credentials
key: password
Referencing Cluster Intances¶
When declaring the PostgresDatabase resource, use the field .spec.clusterInstanceRef
to reference a cluster instance: