Deploying Db2 using the Db2uInstance custom resource
Once the Db2 Operator is installed, the Db2uInstance custom resource (CR) provides the interface required to deploy Db2. This CR is supported by a Red Hat OpenShift CR definition.
- Access the Db2uInstance custom resource
- Configure the Db2 version
- Configure the database name
- Deploy on a dedicated node
- Configure memory and CPU consumption
- Configure storage
- Use existing persistent storage claims
- Enabling 4K support
- Internal LDAP
- Disable the Node Port service
- Deploy a Db2 instance with limited privileges
- Deploy Db2 with a custom service account
- Specifying a license certificate key
- Override the default database settings
- Override the Db2 database configuration (dbConfig) settings
- Set the Db2 registry variable
- Example of a complete Db2uInstance CR
Access the Db2uInstance custom resource
- Through the Red Hat® OpenShift® console.
- Through the Red Hat OpenShift command-line tool.
- Through the command-line tool of a Kubernetes cluster.
The following sections cover CR options that can be included in the YAML file. An example of a completed Db2uInstance CR is also included.
Configure the Db2 version
spec:
version: "s11.5.9.0<container layer release number>"Configure the database name
Specifies the name of the desired Db2 database.
spec:
environment:
dbType: db2oltp
databases:
- name: BLUDBDeploy on a dedicated node
Specifies how to target labels on specific nodes for dedicated deployments. Deploying on dedicated nodes is a best practice in production. See Setting up dedicated nodes for your Db2 deployment.
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: database
operator: In
values:
- db2u-affinity
tolerations:
- key: "database"
operator: "Equal"
value: "db2u-affinity"
effect: "NoSchedule"Configure memory and CPU consumption
When deploying Db2 using the Db2 Operator, you have the ability to assign a CPU and Memory profile. This assigns CPU/MEM values to the container running the Db2 Common SQL Engine.
spec:
podTemplate:
db2u:
resource:
db2u:
limits:
cpu: 5
memory: 8Gi
Configure storage
- meta shared storage volume for db2 meta data.
- data non-shared storage volume for database storage.
- backup shared storage volume for backing up the database (optional).
- activelogs non-shared storage volume for transactional logs (optional). This is supported only for single-mode (SMP) deployment and not MPP. For more information, see Creating separate storage for database transaction logs.
- tempts non-shared storage volume for temporary table spaces (optional). For more information, see Creating separate storage for temporary table spaces.
- archivelogs shared storage volume for archive logs is mandatory. For more information, see Creating separate storage for database archive logs.
The CR calls that you make depend on whether you are configuring new or existing storage, or configuring template storage.
spec:
storage:
- name: meta
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
storageClassName: ocs-storagecluster-cephfs
type: create
- name: backup
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
storageClassName: ocs-storagecluster-cephfs
type: create
- name: archivelogs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
storageClassName: ocs-storagecluster-cephfs
type: createIf you are deploying Q Replication, note that the following custom resource (CR) calls only work on Db2uInstance for Db2 Warehouse SMP or MPP. The calls will not work with Q Replication deployed on a Db2uInstance for online transaction processing (OLTP).
data, activelogs,
or tempts, then you need to add the following CR calls under the
databases section: databases:
- name: BLUDB
storage:
- name: data
type: template
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
storageClassName: ocs-storagecluster-ceph-rbd
- name: activelogs
type: template
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: ocs-storagecluster-ceph-rbdSee Certified storage options for Db2 for a full list of for supported storage solutions.
Use existing persistent storage claims
Existing claims can be used also for deployment of any of the storage categories.
storage:
- claimName: <meta-pvc-name>
name: meta
spec:
resources: {}
type: existing
- claimName: <data-pvc-name>
name: data
spec:
resources: {}
type: existing
- claimName: <backup-pvc-name>
name: backup
spec:
resources: {}
type: existing
- claimName: <activelogs-pvc-name>
name: activelogs
spec:
resources: {}
type: existing
- claimName: <tempts-pvc-name>
name: tempts
spec:
resources: {}
type: existing
- claimName: <archivelogs-pvc-name>
name: archivelogs
spec:
resources: {}
type: existing
Enabling 4K support
When your Db2 on OpenShift deployment is configured to use either OpenShift Data Foundation (ODF) or Portworx container storage (PX), ensure that you have enabled 4K support.
spec:
environment:
...
instance:
registry:
DB2_4K_DEVICE_SUPPORT: "ON"Internal LDAP
spec:
environment:
authentication:
ldap:
enabled: falseDb2uInstance on version s11.5.8.0-cn1 with LDAP disabled and
have an existing instance with LDAP enabled, or you are trying to disable LDAP on s11.5.8.0-cn2, see
this troubleshooting doc first: Recovering a
Db2u deployment from failure due to missing user-mgmt
secret.External LDAP
spec:
environment:
authentication:
ldap:
enabled: true
admin: bluadmin
externalLdap:
server: "my-ldap-server.example.com"
port: "389"
userGroup: usergrp
adminGroup: admingrpDisable the Node Port service
environment:
disableNodePortService: trueDeploy a Db2 instance with limited privileges
unsafe sysctls:spec:
account:
securityConfig:
privilegedSysctlInit: false
The following example shows how to set
limited privileges by setting IPC kernel parameters on the nodes: spec:
account:
securityConfig:
privilegedSysctlInit: false
advOpts:
hostIPC: trueDeploy Db2 with a custom service account
A service account is an OpenShift Container Platform account that allows a component to directly access the CR. You can set parameters in your CR to create the Db2 instance with a custom service account.
spec:
account:
serviceAccountName: ${SERVICE_ACCOUNT}
Override the default database settings
spec:
environment:
databases:
- name: BLUDB
settings:
dftTableOrg: "COLUMN"
dftPageSize: "32768"
encrypt: "NO"
codeset: "UTF-8"
territory: "US"
collation: "IDENTITY"
Override the Db2 database configuration (dbConfig) settings
spec:
environment:
databases:
- name: BLUDB
dbConfig:
LOGPRIMARY: "50"
LOGSECOND: "35"
APPLHEAPSZ: "25600"
STMTHEAP: "51200 AUTOMATIC"Set the Db2 registry variable
spec:
environment:
instance:
registry:
DB2_ATS_ENABLE: "NO"
DB2_OBJECT_STORAGE_SETTINGS: "OFF"
DB2_DISPATCHER_PEEKTIMEOUT: "2"
DB2_COMPATIBILITY_VECTOR: "ORA"Example of a complete Db2uInstance CR
- Database name: BLUDB.
- 4 CPUs.
- 16 GB of memory.
- 5 storage volumes (meta, data, backup, archivelogs, and tempts).
- DB2 4K SUPPORT enabled.
- LDAP disabled.
- Privileged instance.
apiVersion: db2u.databases.ibm.com/v1
kind: Db2uInstance
metadata:
name: db2-example
spec:
account:
privileged: true
environment:
authentication:
ldap:
enabled: false
databases:
- dbConfig:
APPLHEAPSZ: "25600"
LOGPRIMARY: "50"
LOGSECOND: "35"
STMTHEAP: 51200 AUTOMATIC
name: BLUDB
storage:
- name: data
type: template
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
storageClassName: ocs-storagecluster-ceph-rbd
- name: activelogs
type: template
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: ocs-storagecluster-ceph-rbd
dbType: db2oltp
instance:
dbmConfig:
DIAGLEVEL: "2"
registry:
DB2_4K_DEVICE_SUPPORT: "ON"
DB2_ATS_ENABLE: "NO"
DB2_DISPATCHER_PEEKTIMEOUT: "2"
DB2_OBJECT_STORAGE_SETTINGS: "OFF"
partitionConfig:
dataOnMln0: true
total: 1
volumePerPartition: true
license:
accept: true
nodes: 1
podTemplate:
db2u:
resource:
db2u:
limits:
cpu: 4
memory: 16Gi
storage:
- name: meta
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: ocs-storagecluster-cephfs
type: create
- name: backup
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: ocs-storagecluster-cephfs
type: create
- name: archivelogs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
storageClassName: ocs-storagecluster-cephfs
type: create
version: s11.5.9.0-cn2