TimesTenClassicSpecSpec

TimesTenClassicSpecSpec appears in TimesTenClassicSpec.

The following table describes the syntax for TimesTenClassicSpecSpec. 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.

Note:

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

Table 17-3 TimesTenClassicSpecSpec syntax

Field Type Description

additionalMemoryRequest

quantity

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

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

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

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

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

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

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

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

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.

daemonLogCPURequest

quantity

The amount of CPU requested for the daemonlog container.

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

daemonLogMemoryRequest

quantity

The amount of memory requested for the daemonlog container.

The default is 200Mi.

daemonLogSidecar

boolean

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

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

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

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

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.

exporterCPURequest

quantity

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

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

exporterMemoryRequest

quantity

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

The default is 200Mi.

image

string

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

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

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

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

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

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

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

logStorageSize

string

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

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

Determines how often (expressed in seconds) that the TimesTen Operator checks the status of the TimesTenClassic active standby pair 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

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

reexamine

string

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 and About Bringing Up One Database.

repCreateStatement

string

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

The repCreateStatement datum 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 datum and the repReturnServiceAttribute datum in a single TimesTenClassic object definition. However, you can use the repReturnServiceAttribute and the repStoreAttribute datum in a single TimesTenClassic object definition.

Example of using the repCreateStatement datum:

apiVersion: timesten.oracle.com/v1
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 datum.

When you use the repCreateStatement datum, 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 Monitoring the Health of an Active Standby Pair of Databases.

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.

replicationCipherSuite

string

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

You can specify one or more values. Possible values include the following:

  • SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

  • SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

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

replicationSSLMandatory

integer

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 value is only examined if replicationCipherSuite is specified.

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

repPort

integer

TCP port used for replication. The default is 4444.

repReturnServiceAttribute

string

You can use the repReturnServiceAttribute datum 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 datum if you have specified the repCreateStatement datum.

If you do not specify the repReturnServiceAttribute datum (or the repCreateStatement datum), 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

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

You can use the repStoreAttribute datum 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 datum if you have specified the repCreateStatement datum.

If you do not specify the repStoreAttribute datum (or the repCreateStatement datum), 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 datum (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

The resetUpgradeState datum allows an online upgrade to be canceled.

stopManaging

string

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 and About Bringing Up One Database.

storageClassName

string

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

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

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.

unreachableTimeout

integer

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

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 Monitoring the Health of an Active Standby Pair of Databases.