TimesTenClassicSpecSpec

TimesTenClassicSpecSpec appears in TimesTenClassicSpec.

The TimesTen Operator supports v4, v3, and v2 schema versions.

Note:

The v2 schema version is deprecated. It is fully supported in this release, but will be removed in a future release.
For more information about schema versions, see About TimesTen CRDs.

The following table details the fields for TimesTenClassicSpecSpec. Note the following:

  • The fields are in alphabetical order.

  • The third column indicates the earliest schema version the field was supported in.

  • There are some fields of type quantity. The specified value is of the same format as Kubernetes resource limits. For example, 200Gi, 200G, 1000Mi, 1000M, and so on.

  • There are fields that are reserved for internal use and are not documented in this table. The names of these fields typically begin with zz. For example, zzTestInfo is reserved for internal use.

Table 20-3 TimesTenClassicSpecSpec syntax

Field Type Earliest Schema Version Supported In Description

additionalMemoryRequest

quantity

v2

The amount of memory to request in addition to whatever is required for the TimesTen database.

This memory is used for the TimesTen daemon, subdaemons, agents, and the Client/Server server.

This value is added to databaseMemorySize that was either specified by you or calculated. The sum is the memory request to Kubernetes.

The default is 2Gi.

agentAsyncTimeout

integer

v2

At times the TimesTen Operator needs to perform operations on a TimesTen instance or database. When the TimesTen Operator needs to perform such operations, it asks the TimesTen Agent running in the tt container of the appropriate Pod to perform the operation. The Agent issues TimesTen commands and utilities and, using the TimesTen ttIsql utility, runs SQL operations on the appropriate instance or database.

The Agent runs the operation either synchronously (while the TimesTen Operator waits) or asynchronously (while the TimesTen Operator is not waiting and can perform other operations for other TimesTen objects).

The only operation that is performed asynchronously is duplicate, where a TimesTen Classic database is copied from the active Pod to the standby Pod. This is done as part of the initial rollout of an active standby pair, and at various times during its lifecycle.

These duplicate operations can take a long time, and the amount of time increases as the size of the database increases. If an asynchronous operation does not complete within agentAsyncTimeout seconds, the TimesTen Operator decides that it has failed and acts accordingly.

If your database is large, you may need to increase the default value for agentAsyncTimeout.

The default is 600 and is expressed in seconds.

agentGetTimeout

integer

v2

Time in seconds that the TimesTen Operator waits for an https GET request to be processed by the TimesTen agent. This includes the TCP and the TLS times as well as the time it takes for the TimesTen agent to implement the GET request.

The default is 60. A value of 0 indicates that there is no timeout. If the timeout is exceeded, the TimesTen Operator considers the agent to be down.

agentPostTimeout

integer

v2

Time in seconds that the TimesTen Operator waits for an https POST request to be processed by the TimesTen agent. This includes the TCP and the TLS times as well as the time it takes for the TimesTen agent to implement the POST request. The POST requests may take a long time and the time may be proportional to the size of the database. (An example is a POST request to duplicate a database from the active to the standby.)

The default is 600. A value of 0 indicates that there is no timeout. If the timeout is exceeded, the TimesTen Operator considers the POST request to have failed.

agentTcpTimeout

integer

v2

Time in seconds that the TimesTen Operator waits for a TCP handshake when communicating with the TimesTen agent.

The default is 10. A value of 0 indicates that there is no timeout. If the timeout is exceeded, the TimesTen Operator considers the agent to be down.

agentTlsTimeout

integer

v2

Time in seconds that the TimesTen Operator waits for a TLS (https) credential exchange when communicating with the TimesTen agent.

The default is 10. A value of 0 indicates that there is no timeout. If the timeout is exceeded, the TimesTen Operator considers the agent to be down.

automaticMemoryRequests

boolean

v2

Determines if the TimesTen Operator attempts to set appropriate memory limits and requests for TimesTen Pods.

Valid values:
  • true (default): The TimesTen Operator attempts to set memory limits and requests.

  • false: The TimesTen Operator does not set memory limits and requests.

bothDownBehavior

string

v2

If the TimesTenClassic object enters the BothDown state, the TimesTen Operator examines the bothDownBehavior setting to determine what to do. Acceptable values are Best (default) or Manual. See BothDown.

cacheCleanup

boolean

v2

Determines if the metadata in the Oracle Database should be cleaned up when this TimesTenClassic object is deleted. Use for TimesTen Cache only.

Valid values:

  • true (or not specified): The metadata is cleaned up.

  • false: The metadata is not cleaned up.

See Dropping Oracle Database Objects Used by Cache Groups with Autorefresh in the Oracle TimesTen In-Memory Database Cache Guide.

clientTLS

TimesTenClassicSpecSpecClientTLS

v4

If specified, the TimesTen Operator can automatically create self-signed certificates and configure TimesTen to use those certificates for client/server encryption. The fields for the clientTLS object are defined in TimesTenClassicSpecSpecClientTLS.

For more information about how the TimesTen Operator automatically generates certificates and configures client/server TLS connections, see Automatically Configure Client/Server TLS.

createASReadinessProbe

boolean

v2

Determines if the TimesTen Operator creates a readiness probe for a replicated TimesTenClassic object.

Valid values:

  • true (default): The TimesTen Operator creates a readiness probe.

  • false: The TimesTen Operator does not create a readiness probe.

See About Readiness Probes for TimesTen Containers.

daemonLogCPURequest

quantity

v2

The amount of CPU requested for the daemonlog container.

The default is 200m (one-fifth of a CPU).

daemonLogMemoryRequest

quantity

v2

The amount of memory requested for the daemonlog container.

The default is 200Mi.

daemonLogSidecar

boolean

v2

Determines if a daemon log container is created in each TimesTen Pod. This container writes the TimesTen daemon logs (from ttmesg.log) to stdout. This causes Kubernetes to record these logs.

Valid values:

  • true (or not specified): A daemon log container is created.

  • false: A daemon log container is not created.

databaseCPURequest

quantity

v2

Specify this value to tell the TimesTen Operator how much CPU your tt containers require. This includes CPU used by the TimesTen daemon, subdaemons, replication agents, cache agents, and the Client/Server server.

There is no default.

databaseMemorySize

quantity

v2

You can specify this value to tell the TimesTen Operator how much shared memory your database requires.

If you specify a value, that value will be used. If you do not specify a value, the TimesTen Operator attempts to determine the required size from the provided db.ini file.

If the TimesTen Operator cannot determine the database size, the value 580911104 is used. This is the size required for a default database with a PermSize of 200Mbyte, rounded up to 2Mi. This may be useful for experimentation, but is likely insufficient for production purposes.

TimesTen recommends that you provide a db.ini file to the TimesTen Operator by using a Configmap or Secret, and that you not specify databaseMemorySize.

Note:

If you provide a db.ini file by using an init container, you must specify databaseMemorySize.

dbConfigMap

array of strings

v2

Name of one or more ConfigMaps to be included in a projected volume. This projected volume is mounted as /ttconfig in the TimesTen containers. If you do not specify dbConfigMap or dbSecret, you must place the metadata files into the /ttconfig directory by using other means. See Populate the /ttconfig Directory.

dbSecret

array of strings

v2

Name of one or more Secrets to be included in a projected volume. This projected volume is mounted as /ttconfig in the TimesTen containers. If you do not specify dbSecret or dbConfigMap, you must place the metadata files into the /ttconfig directory by using other means. See Populate the /ttconfig Directory.

deleteDbOnNotReadyNode

integer

v3

When specified, this datum directs the TimesTen Operator to detect situations where a Node is not ready (or unknown) for a specific period of time. When detected, the TimesTen Operator takes appropriate action to remedy the situation. Specifically, the TimesTen Operator checks to see if the Node's not ready condition has existed for more than deleteDbOnNotReadyNode seconds. If so, the TimesTen Operator deletes the Pod and the PVCs associated with the Pod. This causes Kubernetes to create a new Pod and new PVCs on a surviving Node. Once the Pod is scheduled and started by Kubernetes, the TimesTen Operator configures it as usual.

The value is expressed in seconds and must be greater than pollingInterval.

By default, this datum is not specified in your TimesTenClassic object definition. You must specify it.

Note: Use caution when specifying this datum. Specifying this datum could result in the TimesTen Operator deleting PVCs. Deleting PVCs discards the on-disk copy of TimesTen databases.

For more information, see How the TimesTen Kubernetes Operator Handles Node Failure.

exporterCPURequest

quantity

v2

The amount of CPU requested for the exporter container (if provisioned).

The default is 200m (one-fifth of a CPU).

exporterMemoryRequest

quantity

v2

The amount of memory requested for the exporter container (if provisioned).

The default is 200Mi.

image

string

v2

Name of the TimesTen image that is executed in the created containers.

There is no default. You must specify the name of the image.

imagePullPolicy

string

v2

Determines if and when Kubernetes pulls the TimesTen image from the image repository.

Valid values:

  • Always

  • IfNotPresent (default)

  • Never

Note: Values are case sensitive.

imagePullSecret

string

v2

Image pull secret that is used to authenticate and give permission to Kubernetes to fetch the specified TimesTen image from its image repository.

There is no default. You must specify the name of the image pull secret.

imageUpgradeStrategy

string

v2

Determines if the TimesTen Operator performs automated upgrades.

Valid values:

  • Auto (or not specified): The TimesTen Operator performs automated upgrades.

  • Manual: The TimesTen Operator does not perform an automated upgrade.

Values are case sensitive. See Perform Upgrades.

logStorageClassName

string

v2

Name of the storage class that is used to request persistent volumes for the TimesTen database transaction log files. This field is optional.

logStorageSelector

metav1.LabelSelector

v2

When choosing to use a persistent volume to store the TimesTen transaction logs, the primary determinant of what volumes to use is the logStorageClassName field that you specify. You can optionally specify a label selector by using the logStorageSelector field. This label selector further filters the set of volumes. See:

https://kubernetes.io/docs/concepts/storage/persistent-volumes/#selector

logStorageSize

string

v2

Amount of storage to be provisioned for the TimesTen transaction logs. For information on determining the amount of storage needed for the transaction log files, see Storage Provisioning for TimesTen in the Oracle TimesTen In-Memory Database Operations Guide

The default is 50Gi. This default value may be suitable when you are experimenting with the product or using it for demonstration purposes. However, in a production environment, consider choosing a value greater than 50Gi. The examples in this book assume a production environment and use a value of 250Gi.

memoryWarningPercent

integer

v2

At runtime, if a container's memory usage is more than its percentage of its limit (both as reported by cgroups), the TimesTen Operator generates Events to inform you of this occurrence.

The memory usage refers to the container's memory allocation.

The default is 90.

pollingInterval

integer

v2

Determines how often (expressed in seconds) that the TimesTen Operator checks the status of the TimesTenClassic object. For example, if you set this value to 10, the TimesTen Operator checks the status of the TimesTenClassic object every ten seconds.

This value interacts with unreachableTimeout. The pollingInterval value should be smaller than the unreachableTimeout value.

The value must be a positive integer (greater than 0). The default is 5.

prometheus

TimesTenClassicSpecSpecPrometheus

v2

Determines if the TimesTen Exporter is deployed. If specified, the Exporter is deployed. The fields for the prometheus object are defined in TimesTenClassicSpecSpecPrometheus.

readOnlyRootFilesystem

boolean

v2

Determines if the TimesTen Operator causes the container image to be mounted read-only in TimesTen containers. In addition, determines if the TimesTen Operator provisions an empty directory and mounts it on top of the /tmp directory in all TimesTen containers in all TimesTen Pods. This includes the tt, daemonlog, and exporter containers in each Pod.

Valid values:

  • true (default): The TimesTen Operator provisions an empty directory and mounts it on top of the /tmp directory. In addition, the TimesTen Operator creates these containers with container images mounted as read-only.

  • false: The TimesTen Operator does not provision an empty directory and does not create containers with container images mounted as read-only.

If you provide your own containers, the TimesTen Operator does not automatically mount your container images as read-only.

If you upgrade a v1 TimesTenClassic object and if the Pods associated with that TimesTenClassic object are replaced, the replacements do not have readOnlyRootFilesystem set.

reexamine

string

v2

When a TimesTenClassic object is in the ManualInterventionRequired state, the TimesTen Operator examines the reexamine value every pollingInterval seconds. If the value has changed since the last iteration for this object, the TimesTen Operator examines the state of the TimesTen containers for this object. See About the ManualInterventionRequired State for Replicated Objects and About Bringing Up One Database.

repCreateStatement

string

v2

The repReturnServiceAttribute and the repStoreAttribute fields provide some control over the CREATE ACTIVE STANDBY statement that you use to configure your active standby pair replication scheme. However, these fields do not provide a mechanism to set all the replication options.

The repCreateStatement field provides more control over the active standby pair replication configuration. If you choose to define a replication scheme, you must choose either the repCreateStatement approach or the repReturnServiceAttribute and the repStoreAttribute approach. You cannot use both approaches simultaneously in a single TimesTenClassic object definition. For example, you cannot use the repCreateStatement and the repReturnServiceAttribute fields in a single TimesTenClassic object definition. However, you can use the repReturnServiceAttribute and the repStoreAttribute fields in a single TimesTenClassic object definition.

Example of using repCreateStatement:

apiVersion: timesten.oracle.com/v4
kind: TimesTenClassic
metadata:
 name: sample
spec:
  ttspec:
 repCreateStatement: |
      create active standby pair
        "{{tt-name}}" on "{{tt-node-0}}",
        "{{tt-name}}" on "{{tt-node-1}}"
      RETURN TWOSAFE
      store "{{tt-name}}" on "{{tt-node-0}}"
        PORT {{tt-rep-port}} FAILTHRESHOLD 10 TIMEOUT 5 
        DISABLE RETURN ALL 10
      store "{{tt-name}}" on "{{tt-node-1}}"
        PORT {{tt-rep-port}} FAILTHRESHOLD 10 TIMEOUT 5 
        DISABLE RETURN ALL 10

The TimesTen Operator does the substitutions for you.

  • {{tt-name}}: The name of the TimesTenClassic object. (For example, sample.)

  • {{tt-node-0}}: The fully qualified DNS name of the -0 Pod for the TimesTenClassic object. (For example, sample-0.sample.mynamespace.svc.cluster.local.)

  • {{tt-node-1}}: The fully qualified DNS name of the -1 Pod for the TimesTenClassic object. (For example, sample-1.sample.mynamespace.svc.cluster.local.)

  • {{tt-rep-port}}: The TCP port either chosen by the TimesTen Operator or specified in the repPort field.

When you use the repCreateStatement field, you have nearly complete control over the replication configuration. The TimesTen Operator executes the statement you define (after substituting a number of values into it). Since the TimesTen Operator is using the CREATE statement that you define, ensure that the statement you specify is correct and appropriate. If the creation of your active standby pair replication scheme fails, your TimesTenClassic object transitions from the Initializing state to the Failed state. You must then delete the TimesTenClassic object to clean up the resources it holds. See About the High Level State of TimesTenClassic Objects.

The configuration has the following restrictions:

  • Must be an active standby pair.

  • Must not be configured with subscribers.

See CREATE ACTIVE STANDBY PAIR in the Oracle TimesTen In-Memory Database SQL Reference and Defining an Active Standby Pair Replication Scheme in the Oracle TimesTen In-Memory Database Replication Guide.

replicas

integer

v2

Valid for non-replicated database configurations.

Number of TimesTen Pods to provision.

You can only specify replicas if the value of replicationTopology is none.

The minimum value is 1. The maximum value is 3. The default is 1.

You cannot change the value of replicas once the TimesTenClassic object is created.

For more information, see Create TimesTen Classic Databases.

replicationCipherSuite

string

v2

Determines the encryption algorithm to be used by TimesTen replication. If specified, replication traffic is encrypted.

You can specify one or more cipher suites. Specify the desired cipher suites, comma-separated and in order of preference. The supported cipher suites are as follows:

  • SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

  • SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

  • SSL_RSA_WITH_AES_128_CBC_SHA256

See Configuration for TLS for Client/Server in the Oracle TimesTen In-Memory Database Security Guide.

replicationSSLMandatory

integer

v2

Determines if SSL encryption is mandatory for replication.

Valid values:

  • 0 (or not specified): SSL encryption is not mandatory for replication.

  • 1: SSL encryption is mandatory for replication.

This field is only examined if replicationCipherSuite is specified.

See About Using Certificates with Client/Server in the Oracle TimesTen In-Memory Database Security Guide.

replicationTopology

string

v2

Determines if replication should be configured.

Valid values:
  • activeStandbyPair (default): The TimesTen Operator configures an active standby pair replication scheme.

  • none: The TimesTen Operator does not configure replication. Instead, it configures a non-replicated configuration and uses the replicas field to determine how many TimesTen Pods to create.

For more information, see Create TimesTen Classic Databases.

repPort

integer

v2

TCP port used for replication. The default is 4444.

repReturnServiceAttribute

string

v2

You can use the repReturnServiceAttribute field to specify the ReturnServiceAttribute clause. This clause is part of the syntax for the CREATE ACTIVE STANDBY PAIR statement. The information you specify is included in your active standby pair's CREATE ACTIVE STANDBY PAIR statement by the TimesTen Operator. Do not specify the repReturnServiceAttribute field if you have specified the repCreateStatement field.

If you do not specify the repReturnServiceAttribute field (or the repCreateStatement field), the default is NO RETURN.

See CREATE ACTIVE STANDBY PAIR in the Oracle TimesTen In-Memory Database SQL Reference and Defining an Active Standby Pair Replication Scheme in the Oracle TimesTen In-Memory Database Replication Guide for information on the CREATE ACTIVE STANDBY PAIR statement and the ReturnServiceAttribute clause.

repStateTimeout

integer

v2

Time in seconds a replicated database remains in the recovering replication state as reported by the TimesTen ttRepStateGet built-in procedure. The recovering replication state indicates the database is in the process of synchronizing updates with the active database after a failure. See ttRepStateGet in the Oracle TimesTen In-Memory Database Reference.

The default is 30.

repStoreAttribute

string

v2

You can use the repStoreAttribute field to specify the StoreAttribute clause. This clause is part of the CREATE ACTIVE STANDBY PAIR statement. The information you specify is included in your active standby pair's CREATE ACTIVE STANDBY PAIR statement by the TimesTen Operator. Do not specify the repStoreAttribute field if you have specified the repCreateStatement field.

If you do not specify the repStoreAttribute field (or the repCreateStatement field), the default is: PORT repPort FAILTHRESHOLD 0.

If you specify the repStoreAttribute, you must specify the port. This port is used by replication. The port must match the port provided in the repPort field (or must match the default value if repPort is not specified). If the ports do not match, the TimesTenClassic object enters the Failed state.

See CREATE ACTIVE STANDBY PAIR in the Oracle TimesTen In-Memory Database SQL Reference and Defining an Active Standby Pair Replication Scheme in the Oracle TimesTen In-Memory Database Replication Guide for information on the CREATE ACTIVE STANDBY PAIR statement and the StoreAttribute clause.

resetUpgradeState

string

v2

The resetUpgradeState field allows an online upgrade to be canceled.

rollingUpdatePartition

integer

v2

Specific to upgrading a non-replicated configuration. Kubernetes upgrades Pods with an ordinal value that is greater than or equal to the rollingUpdatePartition value. Pods with an ordinal value that is less than rollingUpdatePartition are not upgraded.

For example, if you have three non-replicated Pods (replicas = 3 and Pods are samplerep-0, samplerep-1, and samplerep-2) and you set rollingUpdatePartition to 1, the samplerep_1 and samplerep-2 Pods are upgraded, but the samplerep-0 Pod is not.

The default is 0.

For more information, see Perform Upgrades in this book and Partitioned rolling updates in the Kubernetes documentation.

stopManaging

string

v2

If you change the value of stopManaging for the TimesTenClassic object, the TimesTen Operator places the object in the ManualInterventionRequired state. See About the ManualInterventionRequired State for Replicated Objects and About Bringing Up One Database.

storageClassName

string

v2

Name of the storage class that is used to request persistent volumes for the TimesTen database.

There is no default. You must specify the name of the storage class.

storageSelector

metav1.LabelSelector

v2

When choosing to use a persistent volume to store a TimesTen database, the primary determinant of what volumes to use is the StorageClassName that you specify. You can optionally specify a label selector by using the storageSelector field. This label selector further filters the set of volumes. See:

https://kubernetes.io/docs/concepts/storage/persistent-volumes/#selector

storageSize

string

v2

Amount of storage to be provisioned for TimesTen and the database. For information on determining the amount of storage needed for TimesTen, see Storage Provisioning for TimesTen in the Oracle TimesTen In-Memory Database Operations Guide .

The default is 50Gi. This default value may be suitable when you are experimenting with the product or using it for demonstration purposes. However, in a production environment, consider choosing a value greater than 50Gi. The examples in this book assume a production environment and use a value of 250Gi.

storePassword

string

v4

The TimesTen Operator stores its security certificates in Java Keystores. In order to create and use Java Keystores, they must be secured with a known password (storePassword). The password must be known by both the TimesTen Operator who creates and reads the keystore and the TimesTen Agent who also reads it.

The default value is a hard-coded string that is not documented.

Although not recommended, you can use the storePassword datum to set the password to a different value than the default and control the password setting. Once set, you cannot change storePassword. If it is changed, the TimesTen Operator generates a warning in the form of a Kubernetes Event and ignores the changed value.

terminationGracePeriod

integer

v2

Amount of time (in seconds) that Kubernetes waits for a Pod to gracefully shut down before being forcefully terminated.

The default varies depending on your configuration:
  • Replicated (Active Standby Pair): Default is 10 seconds.

  • Non-replicated: Default is 300 seconds.

unreachableTimeout

integer

v2

Number of seconds that a TimesTen instance or TimesTen database is unavailable before the TimesTen Operator takes action to fail over or otherwise recover from the issue.

This value interacts with pollingInterval. The pollingInterval value should be smaller than the unreachableTimeout value.

The value must be a positive integer (greater than 0). The default is 30.

upgradeDownPodTimeout

integer

v2

Maximum amount of seconds that the TimesTenClassic object remains in the WaitingForActive state. After this period of time, if the TimesTenClassic object is still in the WaitingForActive state, it transitions to the ManualInterventionRequired state.

The default is 0 (which means there is no timeout. The TimesTenClassic object waits forever, if required).

For information on the WaitingForActive and the ManualInterventionRequired states, see About the High Level State of TimesTenClassic Objects.