VerticaScrutinize custom resource definition
The VerticaScrutinize custom resource (CR) runs scrutinize
on a VerticaDB CR, which collects diagnostic information about the VerticaDB cluster and packages it in a tar file. This diagnostic information is commonly requested when resolving a case with Vertica Support.
When you create a VerticaScrutinize CR in your cluster, the VerticaDB operator creates a short-lived pod and runs scrutinize in two stages:
- An init container runs scrutinize on the VerticaDB CR. This produces a tar file named
VerticaScrutinize.
timestamp
.tar
that contains the diagnostic information. Optionally, you can define one or more init containers that perform additional processing after scrutinize completes. - A main container persists the tar file in its file system in the
/tmp/scrutinize/
directory. This main container lives for 30 minutes.
When resolving a support case, Vertica Support might request that you upload the tar file to a secure location, such as Vertica Advisor Report.
Prerequisites
- Deploy a VerticaDB CR that uses VerticaDB API version
v1
withvclusterops
. - Deploy a VerticaDB operator version 2.0 and higher.
Create a VerticaScrutinize CR
A VerticaScrutinize CR spec
requires only the name of the VerticaDB CR for which you want to collect diagnostic information. The following example defines the CR as a YAML-formatted file named vscrutinize-example.yaml
:
apiVersion: vertica.com/v1beta1
kind: VerticaScrutinize
metadata:
name: vscrutinize-example
spec:
verticaDBName: verticadb-name
For a complete list of parameters that you can set for a VerticaScrutinize CR, see Custom resource definition parameters.
Apply the manifest
After you create the VerticaScrutinize CR, apply the manifest in the same namespace as the CR specified by verticaDBName
:
$ kubectl apply -f vscrutinize-example.yaml
verticascrutinize.vertica.com/vscrutinize-example created
The operator creates an init container that runs scrutinize:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
...
verticadb-operator-manager-68b7d45854-22c8p 1/1 Running 0 3d17h
vscrutinize-example 0/1 Init:0/1 0 14s
After the init container completes, a new container is created, and the tar file is stored in its file system at /tmp/scrutinize
. This container persists for 30 minutes:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
...
verticadb-operator-manager-68b7d45854-22c8p 1/1 Running 0 3d20h
vscrutinize-example 1/1 Running 0 21s
Add init containers
When you apply a VerticaScrutinize CR, the VerticaDB operator creates an init container that prepares and runs the scrutinize command. You can add one or more init containers to perform additional steps after scrutinize creates a tar file and before the tar file is saved in the main container.
For example, you can define an init container that sends the tar file to another location, such as an S3 bucket. The following manifest defines an initContainer
field that uploads the scrutinize tar file to an S3 bucket:
apiVersion: vertica.com/v1beta1
kind: VerticaScrutinize
metadata:
name: vscrutinize-example-copy-to-s3
spec:
verticaDBName: verticadb-name
initContainers:
- command:
- bash
- '-c'
- 'aws s3 cp $(SCRUTINIZE_TARBALL) s3://k8test/scrutinize/'
env:
- name: AWS_REGION
value: us-east-1
image: 'amazon/aws-cli:2.2.24'
name: copy-tarfile-to-s3
securityContext:
privileged: true
Note
Before you can send the tar file to an S3 bucket, make sure you can write to the S3 bucket. The scrutinize pod assumes the same service account as the Vertica pod.In the previous example, initContainers.command
executes a command that accesses the SCRUTINIZE_TARBALL
environment variable. The operator sets this environment variable in the scrutinize pod, and it defines the location of the tar file in the main container.