Kubernetes Configurations - Custom Property Keys
These are all the properties you can set in the Custom Properties section on the Kubernetes Configs tab for your connector. Enter the key exactly as shown and provide a value in the format indicated.
Notation
<name> - replace with the actual resource name (e.g. rocksdb, data-storage) <VAR_NAME> - replace with the environment variable name (e.g. MY_API_TOKEN) - Boolean - enter
true or false (no quotes) - Group - JSON object
{"key": "value"}, merges with existing entries - List - JSON array
[...], always fully replaces existing entries
Replicas & Lifecycle
| Key | Type | Example value | What it controls |
replicaCount | Number | 3 | Number of running pod copies |
terminationGracePeriodSeconds | Number | 60 | Seconds to wait before force-stopping a pod |
App Identity
| Key | Type | Example value | What it controls |
app.labels | Group | {"team":"platform","env":"prod"} | Extra labels applied to all created resources |
app.annotations | Group | {"owner":"team-x"} | Extra annotations applied to all created resources |
Container Image
| Key | Type | Example value | What it controls |
image.hub | Text | 404161567772.dkr.ecr.us-east-1.amazonaws.com | Container registry URL |
image.repository | Text | privacera/connector | Image repository name |
image.tag | Text | v3.5.1 | Image tag; overrides the version deployed |
image.pullPolicy | Text | Always | Always, IfNotPresent, or Never |
image.pullSecrets | List | [{"name":"ecr-registry-secret"}] | Image pull secrets for private registries |
Deployment Strategy
| Key | Type | Example value | What it controls |
deployment.annotations | Group | {"deployment.kubernetes.io/revision":"3"} | Annotations on the Deployment object metadata |
deployment.labels | Group | {"tier":"backend"} | Extra labels on the Deployment object |
deployment.updateStrategy.type | Text | Recreate | RollingUpdate or Recreate |
deployment.updateStrategy.rollingUpdate.maxSurge | Text/Number | 50% | Extra pods created during a rolling update (e.g. 25% or 1) |
deployment.updateStrategy.rollingUpdate.maxUnavailable | Text/Number | 1 | Max pods unavailable during an update (e.g. 0 or 25%) |
Resources (CPU & Memory)
| Key | Type | Example value | What it controls |
resources.requests.cpu | Text | 500m | Minimum CPU guaranteed (millicores or cores) |
resources.requests.memory | Text | 4Gi | Minimum memory guaranteed |
resources.limits.cpu | Text | 2000m | Maximum CPU; connector is throttled if exceeded |
resources.limits.memory | Text | 4Gi | Maximum memory; connector is restarted if exceeded |
Main Container
| Key | Type | Example value | What it controls |
mainContainer.command | List | ["java"] | Override container entrypoint command |
mainContainer.args | List | ["-jar","/app/service.jar"] | Arguments passed to the container command |
mainContainer.containerPort | Number | 8080 | Primary container port (used by service and health probes) |
mainContainer.ports | List | [{"containerPort":9090,"name":"metrics"}] | Additional container ports |
mainContainer.envFrom | List | [{"configMapRef":{"name":"app-env-config"}}] | Inject all keys from a ConfigMap or Secret as env vars |
mainContainer.lifecycle | Group | {"preStop":{"exec":{"command":["/bin/sh","-c","sleep 10"]}}} | Lifecycle hooks (preStop, postStart) |
Health Probes
| Key | Type | Example value | What it controls |
livenessProbe | Group | {"httpGet":{"path":"/health","port":8080},"initialDelaySeconds":30,"periodSeconds":30} | Restarts the container if it fails |
readinessProbe | Group | {"httpGet":{"path":"/ready","port":8080},"periodSeconds":10} | Removes the pod from Service endpoints if it fails |
startupProbe | Group | {"httpGet":{"path":"/health","port":8080},"failureThreshold":30,"periodSeconds":10} | Delays liveness/readiness until the app has started |
| Probe field | Example value | Meaning |
httpGet.path | /health | HTTP endpoint to check |
httpGet.port | 8080 | Port to call |
initialDelaySeconds | 30 | Wait before first check |
periodSeconds | 30 | Check interval |
failureThreshold | 3 | Failures before action is taken |
Environment Variables
| Key | Type | Example value | What it controls |
env.enabled | Boolean | true | Enable environment variable injection |
env.variables | Group | {"LOG_LEVEL":"INFO","APP_NAME":"my-svc"} | Map of env vars - merges with existing |
env.variables.<VAR_NAME> | Text or Group | my-plain-value | Single env var; value can be a string or {"valueFrom":{...}} |
ConfigMaps
| Key | Type | Example value | What it controls |
configMaps.app-config.enabled | Boolean | true | Enable the built-in app-config ConfigMap |
configMaps.app-config.mountPath | Text | /app/config | Directory where the ConfigMap is mounted |
configMaps.app-config.defaultFileName | Text | application.properties | Name of the generated properties file |
configMaps.app-config.annotations | Group | {"owner":"platform"} | Annotations on the ConfigMap resource |
configMaps.app-config.labels | Group | {"env":"prod"} | Extra labels on the ConfigMap resource |
configMaps.<name>.enabled | Boolean | true | Enable a custom-named ConfigMap |
configMaps.<name>.mountPath | Text | /app/db-config | Mount path for a custom ConfigMap |
Secrets
| Key | Type | Example value | What it controls |
secrets.enabled | Boolean | true | Enable creation of a Kubernetes Secret resource |
secrets.data | Group | {"DB_PASSWORD":"bXlzZWNyZXQ="} | Key-value pairs; values must be base64-encoded strings |
Service (Internal)
| Key | Type | Example value | What it controls |
service.enabled | Boolean | false | Create the Kubernetes Service for this connector |
service.name | Text | my-connector-svc | Override the service name |
service.type | Text | LoadBalancer | ClusterIP, NodePort, or LoadBalancer |
service.port | Number | 8080 | Port the service listens on |
service.targetPort | Number | 8080 | Container port the service forwards to |
service.protocol | Text | TCP | TCP, UDP, or SCTP |
service.ports | List | [{"name":"metrics","port":9090,"targetPort":9090}] | Additional named ports on the service |
service.annotations | Group | {"service.beta.kubernetes.io/aws-load-balancer-type":"nlb"} | Annotations on the Service resource |
service.labels | Group | {"team":"platform"} | Extra labels on the Service resource |
service.headless.enabled | Boolean | true | Make the service headless (no cluster IP) |
External Service
| Key | Type | Example value | What it controls |
externalService.enabled | Boolean | true | Create an additional external Service |
externalService.name | Text | my-connector-external | External service name |
externalService.type | Text | LoadBalancer | ClusterIP, NodePort, or LoadBalancer |
externalService.port | Number | 443 | External service port |
externalService.targetPort | Number | 8080 | Container port to forward to |
externalService.protocol | Text | TCP | Protocol |
externalService.annotations | Group | {"service.beta.kubernetes.io/aws-load-balancer-ssl-cert":"arn:aws:acm:..."} | External service annotations |
externalService.labels | Group | {"visibility":"public"} | Extra labels on the external service |
Ingress
| Key | Type | Example value | What it controls |
ingress.enabled | Boolean | true | Create a Kubernetes Ingress resource |
ingress.hostname | Text | connector.mycompany.com | Primary hostname for routing |
ingress.path | Text | / | URL path for the primary routing rule |
ingress.pathType | Text | Prefix | Prefix, Exact, or ImplementationSpecific |
ingress.annotations | Group | {"alb.ingress.kubernetes.io/scheme":"internet-facing"} | Controller annotations (ALB, NGINX, GCE, etc.) |
ingress.ingressClassName | Text | alb | IngressClass name |
ingress.tls | List | [{"secretName":"my-tls-secret","hosts":["connector.mycompany.com"]}] | TLS configuration |
ingress.extraPaths | List | [{"path":"/admin","pathType":"Prefix","port":8080}] | Additional paths on the same host |
ingress.extraRules | List | [{"host":"admin.mycompany.com","paths":[{"path":"/","pathType":"Prefix"}]}] | Additional rules for other hostnames |
Pod Security Context
| Key | Type | Example value | What it controls |
securityContext.enabled | Boolean | false | Apply a pod-level security context |
securityContext.fsGroup | Number | 2000 | Group ID for ownership of mounted volumes |
securityContext.runAsNonRoot | Boolean | true | Reject containers that run as root |
securityContext.runAsUser | Number | 1001 | User ID to run all containers as |
securityContext.runAsGroup | Number | 1001 | Group ID to run all containers as |
Container Security Context
| Key | Type | Example value | What it controls |
mainContainer.securityContext.enabled | Boolean | true | Apply a container-level security context |
mainContainer.securityContext.readOnlyRootFilesystem | Boolean | true | Make the container's root filesystem read-only |
mainContainer.securityContext.allowPrivilegeEscalation | Boolean | false | Allow privilege escalation inside the container |
mainContainer.securityContext.runAsNonRoot | Boolean | true | Reject running as root (container level) |
mainContainer.securityContext.runAsUser | Number | 1001 | User ID for this container |
mainContainer.securityContext.runAsGroup | Number | 1001 | Group ID for this container |
Service Account
| Key | Type | Example value | What it controls |
serviceAccount.enabled | Boolean | true | Mount a service account in the pod |
serviceAccount.create | Boolean | false | Create the ServiceAccount (false = use an existing one) |
serviceAccount.name | Text | my-connector-sa | Service account name |
serviceAccount.annotations | Group | {"eks.amazonaws.com/role-arn":"arn:aws:iam::123:role/x"} | Annotations on the service account |
serviceAccount.annotations.[eks.amazonaws.com/role-arn] | Text | arn:aws:iam::123456789012:role/my-connector-role | AWS IRSA role ARN |
serviceAccount.annotations.[iam.gke.io/gcp-service-account] | Text | my-sa@project.iam.gserviceaccount.com | GCP Workload Identity service account |
serviceAccount.enableAdminRoleOnNS | Boolean | true | Grant namespace-admin Role+RoleBinding (requires create=true) |
serviceAccount.useAzureWorkloadIdentity | Boolean | true | Add AKS Workload Identity pod label |
Network Policy
| Key | Type | Example value | What it controls |
networkPolicy.enabled | Boolean | true | Create a Kubernetes NetworkPolicy |
networkPolicy.policyTypes | List | ["Ingress","Egress"] | Which traffic directions to enforce |
networkPolicy.ingress | List | [{"from":[{"podSelector":{"matchLabels":{"app":"frontend"}}}],"ports":[{"port":8080}]}] | Rules controlling inbound traffic to the pod |
networkPolicy.egress | List | [{"to":[],"ports":[{"protocol":"UDP","port":53}]}] | Rules controlling outbound traffic from the pod |
Autoscaling (HPA)
| Key | Type | Example value | What it controls |
autoscaling.enabled | Boolean | true | Create a HorizontalPodAutoscaler |
autoscaling.minReplicas | Number | 2 | Minimum replicas |
autoscaling.maxReplicas | Number | 20 | Maximum replicas |
autoscaling.targetCPUUtilizationPercentage | Number | 70 | CPU utilization % that triggers a scale-up |
autoscaling.targetMemoryUtilizationPercentage | Number | 75 | Memory utilization % that triggers a scale-up |
KEDA Autoscaling
| Key | Type | Example value | What it controls |
scaledobject.enabled | Boolean | true | Create a KEDA ScaledObject |
scaledobject.app.type | Text | Deployment | Deployment or StatefulSet |
scaledobject.app.pollingInterval | Number | 15 | Metric check interval (seconds) |
scaledobject.app.cooldownPeriod | Number | 120 | Time between scale operations (seconds) |
scaledobject.app.minReplicaCount | Number | 2 | Minimum replicas |
scaledobject.app.maxReplicaCount | Number | 50 | Maximum replicas |
scaledobject.triggers | List | [{"type":"kafka","metadata":{"bootstrapServers":"kafka:9092","topic":"events","lagThreshold":"100"}}] | Trigger definitions |
Pod Disruption Budget
| Key | Type | Example value | What it controls |
podDisruptionBudget.enabled | Boolean | true | Create a PodDisruptionBudget |
podDisruptionBudget.spec | Group | {"minAvailable":2} | PDB spec - minAvailable or maxUnavailable |
Topology Spread Constraints
| Key | Type | Example value | What it controls |
topologySpreadConstraints.default.enabled | Boolean | false | Enable the default spread constraint |
topologySpreadConstraints.default.maxSkew | Number | 2 | Max pod count difference between topology domains |
topologySpreadConstraints.default.topologyKey | Text | topology.kubernetes.io/zone | Node label key for topology domains |
topologySpreadConstraints.default.whenUnsatisfiable | Text | DoNotSchedule | ScheduleAnyway or DoNotSchedule |
topologySpreadConstraints.additional.enabled | Boolean | true | Enable additional custom spread constraints |
topologySpreadConstraints.additional.constraints | List | [{"maxSkew":1,"topologyKey":"kubernetes.io/hostname","whenUnsatisfiable":"ScheduleAnyway"}] | Custom constraint list |
Node Scheduling
| Key | Type | Example value | What it controls |
nodeSelector | Group | {"node-type":"connector-pool","environment":"production"} | Restrict the pod to nodes with matching labels |
tolerations | List | [{"key":"dedicated","operator":"Equal","value":"connector-pool","effect":"NoSchedule"}] | Allow the pod to run on tainted nodes (always fully replaced) |
affinity | Group | {"podAntiAffinity":{"preferredDuringSchedulingIgnoredDuringExecution":[{"weight":100,"podAffinityTerm":{"labelSelector":{"matchLabels":{"app":"connector"}},"topologyKey":"kubernetes.io/hostname"}}]}} | Pod/node affinity and anti-affinity rules |
Monitoring & Observability
| Key | Type | Example value | What it controls |
podAnnotations | Group | {"prometheus.io/scrape":"true","prometheus.io/port":"9090"} | Annotations on the pod |
podLabels | Group | {"team":"platform","cost-center":"engineering"} | Extra labels on the pod |
| Common annotation | Example value | Tool |
prometheus.io/scrape | "true" | Prometheus |
prometheus.io/port | "9090" | Prometheus |
prometheus.io/path | "/metrics" | Prometheus |
Storage Class
| Key | Type | Example value | What it controls |
storageClass.enabled | Boolean | true | Create a StorageClass resource |
storageClass.name | Text | my-namespace-efs-storage | StorageClass name |
storageClass.provisioner | Text | efs.csi.aws.com | CSI driver (required when enabled) |
storageClass.parameters | Group | {"fileSystemId":"fs-xxxxxxxxxxxxx"} | Provisioner-specific parameters |
storageClass.reclaimPolicy | Text | Retain | Delete or Retain |
storageClass.volumeBindingMode | Text | WaitForFirstConsumer | Immediate or WaitForFirstConsumer |
storageClass.allowVolumeExpansion | Boolean | true | Allow PVCs using this class to be expanded |
storageClass.mountOptions | List | ["rw","sync"] | Volume mount options |
storageClass.labels | Group | {"storage-tier":"fast"} | Extra labels on the StorageClass resource |
storageClass.annotations | Group | {"owner":"infra-team"} | Extra annotations on the StorageClass resource |
Persistent Volume Claims
PVC Name
Replace <name> with the PVC identifier (e.g. rocksdb): persistentVolumeClaims.rocksdb.size
| Key | Type | Example value | What it controls |
persistentVolumeClaims.<name>.enabled | Boolean | true | Enable this PVC |
persistentVolumeClaims.<name>.name | Text | my-connector-data | Custom PVC name |
persistentVolumeClaims.<name>.size | Text | 10Gi | Storage size (cannot be reduced after first deployment) |
persistentVolumeClaims.<name>.accessModes | List | ["ReadWriteOnce"] | Access modes |
persistentVolumeClaims.<name>.storageClass | Text | gp2 | StorageClass to use |
persistentVolumeClaims.<name>.mountPath | Text | /app/data | Mount path in the container |
persistentVolumeClaims.<name>.subPath | Text | data | Mount only a subdirectory of the volume |
persistentVolumeClaims.<name>.labels | Group | {"backup-policy":"daily"} | Extra labels on the PVC resource |
persistentVolumeClaims.<name>.annotations | Group | {"owner":"infra-team"} | Extra annotations on the PVC resource |
PVC Size
PVC size cannot be reduced after the first deployment. Only increases are supported.
Empty Dir Volumes
Empty Dir Name
Replace <name> with the volume identifier (e.g. temp-workdir).
| Key | Type | Example value | What it controls |
emptyDirVolumes.<name>.enabled | Boolean | true | Enable this emptyDir volume |
emptyDirVolumes.<name>.mountPath | Text | /tmp/work | Mount path in the container |
emptyDirVolumes.<name>.medium | Text | Memory | "" (disk) or Memory (RAM-based tmpfs) |
emptyDirVolumes.<name>.sizeLimit | Text | 512Mi | Size cap; unlimited when omitted |