If your database runs in a Kubernetes cluster, then you can add
sidecar containers to your database cluster using the AlloyDB Omni Kubernetes operator.
AlloyDB Omni operator sidecar containers are regular
Kubernetes
containers that run
independently alongside the main application container within the same Pod.
You can use these sidecar containers to serve requests for application
monitoring, logging, and tracing.
AlloyDB Omni operator sidecar containers are distinct from
Kubernetes built-in
sidecar containers.
To manually add a sidecar container to an existing
AlloyDB Omni installation, you create a sidecar custom
resource (CR) and add it to your database cluster.
CONTAINER_NAME: the name of the container. You
can have multiple containers in the same sidecar CR, and each
container has a different container name, image, command, and
arguments.
To verify that the sidecar CR is created, run the following command:
kubectldescribeSidecar/SIDECAR_CR_NAME
The output is similar to the following:
Name:SIDECAR_CR_NAMELabels:<none>
Annotations:<none>
API Version:alloydbomni.dbadmin.goog/v1Kind:SidecarMetadata:Creation Timestamp:2024-04-15T21:49:00ZFinalizers:sidecars.dbadmin.goog/finalizerGeneration:2Resource Version:2561336UID:e57f2e13-20c5-4905-b13b-39203bab36b4Spec:Sidecars:Args:CONTAINER_ARGSCommand:CONTAINER_COMMANDImage:CONTAINER_IMAGEName:CONTAINER_NAMEResources:Status:Observed Generation:2Reconciled:trueEvents:<none>
Register a sidecar container
To register the sidecar container name to your database cluster, use the
following command to apply the updated specification:
DB_CLUSTER_NAME: the name of your database cluster.
SIDECAR_CR_NAME: the name for your sidecar container.
Access logs from a sidecar container
Create, or modify an existing, sidecar container so that
spec.sidecars.volumeMounts.name is set to obsdisk and
spec.sidecars.volumeMounts.mountPath to a path visible within the
sidecar container.
CONTAINER_ARGS: the arguments for
CONTAINER_COMMAND.
CONTAINER_NAME: the name of the container. You can
have multiple containers in the same sidecar CR, and each container has
a different container name, image, command, and arguments.
LOGS_PATH: the path within the sidecar container that
AlloyDB Omni should output logs to.
Register your new, or modified, sidecar
container.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Use a sidecar container in Kubernetes\n\nSelect a documentation version: 16.8.0keyboard_arrow_down\n\n- [Current (16.8.0)](/alloydb/omni/current/docs/kubernetes-sidecar-container)\n- [16.8.0](/alloydb/omni/16.8.0/docs/kubernetes-sidecar-container)\n- [16.3.0](/alloydb/omni/16.3.0/docs/kubernetes-sidecar-container)\n- [15.12.0](/alloydb/omni/15.12.0/docs/kubernetes-sidecar-container)\n- [15.7.1](/alloydb/omni/15.7.1/docs/kubernetes-sidecar-container)\n- [15.7.0](/alloydb/omni/15.7.0/docs/kubernetes-sidecar-container)\n- [15.5.5](/alloydb/omni/15.5.5/docs/kubernetes-sidecar-container)\n- [15.5.4](/alloydb/omni/15.5.4/docs/kubernetes-sidecar-container)\n- [15.5.2](/alloydb/omni/15.5.2/docs/kubernetes-sidecar-container)\n\n\u003cbr /\u003e\n\n| The information on this page applies only to AlloyDB Omni for Kubernetes. It does not apply to AlloyDB Omni for containers.\n\n\u003cbr /\u003e\n\nIf your database runs in a Kubernetes cluster, then you can add\nsidecar containers to your database cluster using the AlloyDB Omni Kubernetes operator.\nAlloyDB Omni operator sidecar containers are regular\nKubernetes\n[containers](https://kubernetes.io/docs/concepts/containers/) that run\nindependently alongside the main application container within the same Pod.\nYou can use these sidecar containers to serve requests for application\nmonitoring, logging, and tracing.\n\nAlloyDB Omni operator sidecar containers are distinct from\nKubernetes built-in\n[sidecar containers](https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/#pod-sidecar-containers).\n\nTo manually add a sidecar container to an existing\nAlloyDB Omni installation, you create a sidecar custom\nresource (CR) and add it to your database cluster.\n| **Caution:** Making changes to an active sidecar container restarts the Pod that it runs on, which might result in database downtime.\n\nCreate a sidecar CR\n-------------------\n\n1. Apply the following manifest:\n\n apiVersion: alloydbomni.dbadmin.goog/v1\n kind: Sidecar\n metadata:\n name: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eSIDECAR_CR_NAME\u003c/span\u003e\u003c/var\u003e\n spec:\n sidecars:\n - image: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eCONTAINER_IMAGE\u003c/span\u003e\u003c/var\u003e\n command: [\"\u003cvar translate=\"no\"\u003eCONTAINER_COMMAND\u003c/var\u003e\"]\n args: [\"\u003cvar translate=\"no\"\u003eCONTAINER_ARGS\u003c/var\u003e\"]\n name: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eCONTAINER_NAME\u003c/span\u003e\u003c/var\u003e\n\n Replace the following variables:\n - \u003cvar translate=\"no\"\u003eSIDECAR_CR_NAME\u003c/var\u003e: the name for your sidecar container.\n - \u003cvar translate=\"no\"\u003eCONTAINER_IMAGE\u003c/var\u003e: the name of the image file to run in your sidecar container. For example, `busybox`.\n - \u003cvar translate=\"no\"\u003eCONTAINER_COMMAND\u003c/var\u003e: the command for the container that runs in the Pod. The command can be a list of quoted strings. For more information, see [Define a command and arguments when you create a Pod](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/).\n - \u003cvar translate=\"no\"\u003eCONTAINER_ARGS\u003c/var\u003e: arguments for \u003cvar translate=\"no\"\u003eCONTAINER_COMMAND\u003c/var\u003e.\n - \u003cvar translate=\"no\"\u003eCONTAINER_NAME\u003c/var\u003e: the name of the container. You can have multiple containers in the same sidecar CR, and each container has a different container name, image, command, and arguments.\n2. To verify that the sidecar CR is created, run the following command:\n\n kubectl describe Sidecar/\u003cvar translate=\"no\"\u003eSIDECAR_CR_NAME\u003c/var\u003e\n\n The output is similar to the following: \n\n Name: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eSIDECAR_CR_NAME\u003c/span\u003e\u003c/var\u003e\n Labels: \u003cnone\u003e\n Annotations: \u003cnone\u003e\n API Version: alloydbomni.dbadmin.goog/v1\n Kind: Sidecar\n Metadata:\n Creation Timestamp: 2024-04-15T21:49:00Z\n Finalizers:\n sidecars.dbadmin.goog/finalizer\n Generation: 2\n Resource Version: 2561336\n UID: e57f2e13-20c5-4905-b13b-39203bab36b4\n Spec:\n Sidecars:\n Args:\n \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eCONTAINER_ARGS\u003c/span\u003e\u003c/var\u003e\n Command:\n \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eCONTAINER_COMMAND\u003c/span\u003e\u003c/var\u003e\n Image: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eCONTAINER_IMAGE\u003c/span\u003e\u003c/var\u003e\n Name: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eCONTAINER_NAME\u003c/span\u003e\u003c/var\u003e\n Resources:\n Status:\n Observed Generation: 2\n Reconciled: true\n Events: \u003cnone\u003e\n\nRegister a sidecar container\n----------------------------\n\nTo register the sidecar container name to your database cluster, use the\nfollowing command to apply the updated specification: \n\n kubectl patch dbclusters.alloydbomni.dbadmin.goog \u003cvar translate=\"no\"\u003eDB_CLUSTER_NAME\u003c/var\u003e -p '{\"spec\":{\"primarySpec\":{\"sidecarRef\":{\"name\":\"\u003cvar translate=\"no\"\u003eSIDECAR_CR_NAME\u003c/var\u003e\"}}}}' --type=merge\n\nReplace the following variables:\n\n- \u003cvar translate=\"no\"\u003eDB_CLUSTER_NAME\u003c/var\u003e: the name of your database cluster.\n- \u003cvar translate=\"no\"\u003eSIDECAR_CR_NAME\u003c/var\u003e: the name for your sidecar container.\n\nAccess logs from a sidecar container\n------------------------------------\n\n1. Create, or modify an existing, sidecar container so that\n `spec.sidecars.volumeMounts.name` is set to `obsdisk` and\n `spec.sidecars.volumeMounts.mountPath` to a path visible within the\n sidecar container.\n\n apiVersion: alloydbomni.dbadmin.goog/v1\n kind: Sidecar\n metadata:\n name: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eSIDECAR_CR_NAME\u003c/span\u003e\u003c/var\u003e\n spec:\n sidecars:\n - image: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eCONTAINER_IMAGE\u003c/span\u003e\u003c/var\u003e\n command: [\"\u003cvar translate=\"no\"\u003eCONTAINER_COMMAND\u003c/var\u003e\"]\n args: [\"\u003cvar translate=\"no\"\u003eCONTAINER_ARGS\u003c/var\u003e\"]\n name: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eCONTAINER_NAME\u003c/span\u003e\u003c/var\u003e\n volumeMounts:\n - name: obsdisk\n mountPath: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eLOGS_PATH\u003c/span\u003e\u003c/var\u003e\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eSIDECAR_CR_NAME\u003c/var\u003e: the name for your sidecar container.\n - \u003cvar translate=\"no\"\u003eCONTAINER_IMAGE\u003c/var\u003e: the name of the image file to run in your sidecar container. For example, `busybox`.\n - \u003cvar translate=\"no\"\u003eCONTAINER_COMMAND\u003c/var\u003e: the command for the container that runs in the Pod. The command can be a list of quoted strings. For more information, see [Define a command and arguments when you create a Pod](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/).\n - \u003cvar translate=\"no\"\u003eCONTAINER_ARGS\u003c/var\u003e: the arguments for \u003cvar translate=\"no\"\u003eCONTAINER_COMMAND\u003c/var\u003e.\n - \u003cvar translate=\"no\"\u003eCONTAINER_NAME\u003c/var\u003e: the name of the container. You can have multiple containers in the same sidecar CR, and each container has a different container name, image, command, and arguments.\n - \u003cvar translate=\"no\"\u003eLOGS_PATH\u003c/var\u003e: the path within the sidecar container that AlloyDB Omni should output logs to.\n2. [Register](#register-sidecar-container) your new, or modified, sidecar\n container.\n\nWhat's next\n-----------\n\n- [Configure AlloyDB Omni](/alloydb/omni/16.8.0/docs/configure-omni).\n- [Manage and monitor AlloyDB Omni](/alloydb/omni/16.8.0/docs/manage)."]]