LATEST VERSION: 0.8 - RELEASE NOTES
Pivotal Greenplum® for Kubernetes v0.8

Greenplum Operator Manifest File

This section describes each of the properties that you can define in a Greenplum Operator manifest file.

Synopsis

apiVersion: "greenplum.pivotal.io/v1"
kind: "GreenplumCluster"
metadata:
  name: <namespace>
spec:
  masterAndStandby:
    hostBasedAuthentication: |
      [ host  <database>  <role>  <address>  <authentication-method> ]
      [ ... ]
    memory: "<memory-limit>"
    cpu: "<cpu-limit>"
    storageClassName: <storage-class>
    storageSize: <size>
    workerSelector:
      <label>: <value>
  segments:
    primarySegmentCount: <int>
    memory: <memory-limit>
    cpu: <cpu-limit>
    storageClassName: <storage-class>
    storageSize: <size>
    workerSelector:
      <label>: <value>

Description

You specify Greenplum cluster configuration properties to the Greenplum Operator via a YAML-formatted manifest file. A sample manifest file is provided in workspace/my-greenplum-cluster.yaml. The current version of the manifest supports configuring the cluster name, number of segments, and the memory, cpu, and storage settings for master and segment pods. See also Deploying a New Greenplum Cluster for information about deploying a new cluster using a manifest file.

Keywords and Values

Cluster Metadata

Name: <namespace>
Sets the namespace label for the Greenplum cluster instance resources. You can use this label to filter the output of kubectl commands. For example, if you set the name to my-greenplum then you can use commands like kubectl get all -l greenplum-cluster=my-greenplum or kubectl get pvc -l greenplum-cluster=my-greenplum. If you do not specify a name, the Greenplum Operator uses the namespace in the current kubectl context.

Segment Configuration

masterAndStandby:, segments:
These sections share many of the same properties to configure memory, CPU, and storage for Greenplum segment pods. masterAndStandby: settings apply only to both the master and standby master pods. All Greenplum for Kubernetes clusters include a standby master. The segments: section applies to each primary segment and mirror segment pod. All Greenplum for Kubernetes clusters use segment mirroring.

hostBasedAuthentication:
Entries to add to the pg_hba.conf file generated for the Greenplum cluster. Each entry (multiple entries are possible) must include the items host <database> <role> <address> <authentication-method> in that order, to enable a role to access the indicated database (or all databases) from the specified CIDR and authentication method. See Allowing Connections to Greenplum Database in the Greenplum Database documentation for more information about pg_hba.conf file entries.

primarySegmentCount: <int>
The number of primary/mirror segment pod pair to create in the Greenplum cluster. All Greenplum for Kubernetes clusters use segment mirroring. Segment pods use the naming format segment-<type>-<number> where the segment <type> is either a for primary segments or b for mirror segments. Segment numbering starts at zero.

memory: <memory-limit>
The amount of memory allocated to a Greenplum segment pod. This value defines a memory limit; if a pod tries to exceed the limit it is removed and replaced by a new pod. You can specify a suffix to define the memory units (for example, 4.5Gi.). See Assign Memory Resources to Containers and Pods in the Kubernetes documentation for more information.

Note: If you do not want to specify a memory limit, comment-out or remove the memory: keyword from the YAML file, or specify an empty string for its value (memory: ""). If the keyword appears in the YAML file, you must assign a valid string value to it.

cpu: <cpu-limit>
The amount of CPU resources allocated to a Greenplum segment pod, specified as a Kubernetes CPU unit (for example, cpu: "1.2"). See Assign CPU Resources to Containers and Pods in the Kubernetes documentation for more information.

Note: If you do not want to specify a cpu limit, comment-out or remove the cpu: keyword from the YAML file, or specify an empty string for its value (cpu: ""). If the keyword appears in the YAML file, you must assign a valid string value to it.

storageClassName: <storage-class>
(Required.) The Storage Class name to use for dynamically provisioning Persistent Volumes (PVs) for the Greenplum segment pod. If the PVs already exist, either from a previous deployment of the Greenplum instance or because you manually provisioned the PVs, then the Greenplum Operator uses the existing PVs. You can configure the Storage Class according to your performance needs. See Storage Classes in the Kubernetes documentation to understand the different configuration options.

For best performance, Pivotal recommends using persistent volumes that are backed by a local SSD with the XFS filesystem, using readahead cache for best performance. Use the mount options rw,nodev,noatime,nobarrier,inode64 to mount the volume. See Creating Local Persistent Volumes for Greenplum for information about manually provisioning local persistent volumes. See Optimizing Persistent Disk and Local SSD Performance in the Google Cloud documentation for information about the performance characteristics of different storage types.

storageSize: <size>
The storage size of the Persistent Volume Claim (PVC) for the Greenplum segment pod. Specify a suffix for the units (for example: 100G, 1T).

workerSelector: <map of key-value pairs>
A selector for the segment pods. Specify label-value pairs to constrain segment pods to nodes having the matching labels. Define the labels as you would for a pod’s nodeSelector attribute.

Examples

See the workspace/my-greenplum-cluster.yaml for an example manifest.

See Also

Deploying a New Greenplum Cluster, Deleting a Greenplum Cluster, Installing Greenplum for Kubernetes.