Operator Runtime

Please be aware that the Operator is currently considered as a preview release, and therefore it should not be used in a production environment.

This section describes important information related to the behavior of the Operator at runtime.

Cluster Deployment

When a cluster is deployed, the Operator automatically takes care of provisioning associated Kubernetes resources. For example:

  • Service

  • Config Map

  • Stateful Set (includes a Persistent Volume Claims)

  • Load Balancer (if the deployment configuration stipulates external access)

Related resources (described above) include the cluster’s name as a prefix. For example, creating a cluster named esdb-cluster results in a esdb-cluster-config Config Map instance being created in the same namespace.

Configuration

The operator will create the ESDB configuration and place it within a ConfigMap instance hosted in the same namespace as the cluster (see Cluster Deployment). An example of the contents can be seen below:

apiVersion: v1
data:
  eventstore.conf: |
    Db: /srv/eventstore/data
    Index: /srv/eventstore/index
    Log: /srv/eventstore/logs
    DisableLogFile: true
    CertificateFile: ""
    CertificatePrivateKeyFile: ""
    TrustedRootCertificatesPath: ""
    CertificateReservedNodeCommonName: ""
    ExtIp: 0.0.0.0
    IntIp: 0.0.0.0
    EnableExternalTcp: true
    EnableAtomPubOverHTTP: true
    ClusterSize: 3
    DiscoverViaDns: false
    GossipSeed:
        - esdb-cluster-0.esdb-cluster.esdb.svc.cluster.local:2113
        - esdb-cluster-1.esdb-cluster.esdb.svc.cluster.local:2113
        - esdb-cluster-2.esdb-cluster.esdb.svc.cluster.local:2113
    Insecure: true
    AllowAnonymousEndpointAccess: true
    AllowUnknownOptions: true
    PrepareTimeoutMs: 3000
    CommitTimeoutMs: 3000
    IntTcpHeartbeatInterval: 1000
    IntTcpHeartbeatTimeout: 2500
    ExtTcpHeartbeatInterval: 1000
    ExtTcpHeartbeatTimeout: 2500
    GossipIntervalMs: 2000
    GossipTimeoutMs: 5000
    LeaderElectionTimeoutMs: 2000
Any changes made to the ConfigMap will not cause the associated pods to be recreated automatically. The pods must be manually restarted for the changes to take effect.