All pages
Powered by GitBook
1 of 1

Loading...

Insight Point (Helm Chart)

Deploy an Insight Point to a Kubernetes cluster

An Insight Point is a lightweight agent that runs in your environment to securely connect Veza to internal data sources, relay webhooks, route Lifecycle Management actions, and support OAA custom integrations. Veza provides a Helm chart to deploy and manage an Insight Point on Kubernetes. Once deployed, the Insight Point can serve any integration that requires private network connectivity, including the Kubernetes integration for cluster RBAC discovery.

Configuration Options

The Insight Point Helm chart accepts the following configuration parameters via --set flags. Typically only key is required. To pull from a different registry, such as a mirror or private registry, or your Veza tenant's own registry domain (a mirror hosted by Veza), set the image parameter to your image reference; see Pulling Insight Point images from your tenant domain for options and prerequisites.

Parameter
Description
Default
Example
  • key is your unique Insight Point registration key, generated in the Veza UI.

    • Create a key in Veza: Integrations > Insight Points > Create

    • Store this value securely as it cannot be recovered if lost

If your Insight Point needs to trust custom Certificate Authorities (for example, when connecting through a corporate proxy with SSL inspection, or when the control plane uses certificates signed by a private CA), you can provide a custom CA bundle.

The CA bundle should be in PEM format and can contain multiple certificates.

Important: Do not use skipVerify=true in production. Instead, add your custom CA certificates using this feature. The skipVerify option should only be used for testing and development.

Create a file ca-values.yaml with the certificate contents:

Install or upgrade with:

To use an existing ConfigMap containing your CA bundle:

Note: The custom CA bundle is mounted to /etc/ssl/certs/ca-certificates.crt inside the container, which is the standard location for Go applications. This will replace the default system CA bundle, so ensure your custom bundle includes any default certificates you need to trust.

When using an HTTPS inspection proxy:

  • Set addr to your proxy's address if different from the Veza endpoint. This value overrides the default request authority.

  • Ensure your proxy can connect to your Veza deployment.

  • authority specifies the domain name to use for TLS certificate validation and is only required when addr

You can inject additional environment variables into the Insight Point pod using the env parameter. This is required by integrations that read configuration from the pod environment, such as Active Directory with .

In your values.yaml:

Or using --set flags:

Some integrations require credential files to be present at specific paths on the Insight Point pod. The Helm chart does not support arbitrary volume mounts. The /tmp directory is available as an ephemeral volume inside the container and can be used to place credential files.

Use kubectl cp to copy files to a running pod:

Tags are custom key-value labels that help organize and categorize your Insight Point instances. For an overview of tags, their use cases, and requirements, see in the main Insight Point documentation.

Create or edit your values.yaml:

Then install:

The Insight Point Helm chart supports high availability (HA) deployment to ensure continuous operation and resilience against node failures or pod disruptions. By default, the chart deploys three replicas of the Insight Point. You can customize the HA settings based on your requirements.

For high availability, deploy multiple Insight Point replicas:

  • Single Instance: Use replicaCount: 1 for basic deployments

  • High Availability: Use replicaCount: 2 or higher for production environments

  • Recommended: replicaCount: 3

When running multiple replicas, configure pod anti-affinity to distribute pods across nodes or availability zones:

Parameter
Description
Values
Default
  • Soft Anti-Affinity: Kubernetes will try to place pods on different nodes/zones but will allow co-location if necessary

  • Hard Anti-Affinity: Kubernetes will never place pods on the same node/zone, which may prevent scheduling if insufficient resources

Control the number of pods that can be disrupted simultaneously during maintenance:

Parameter
Description
Default

The PodDisruptionBudget ensures that at least one Insight Point remains available during cluster updates, node maintenance, or voluntary pod evictions.

The webhook relay service allows the Insight Point to forward webhook requests to destinations in your private network. For an overview of webhook relay, when to use it, security considerations, and supported host formats, see in the main Insight Point documentation.

The following parameters configure webhook relay behavior:

Parameter
Description
Default
Example

Configure webhook relay when installing or upgrading the Insight Point:

Or when upgrading an existing deployment:

Create or edit a values.yaml file with webhook relay configuration:

Then install or upgrade with the values file:

To verify webhook relay is configured correctly:

  1. Check the Helm values:

  2. Check the pod environment variables:

If webhook relay is enabled but not working:

  • Verify the allowed hosts are in the correct format

  • Check that the destination is included in the allowed hosts list

  • Review the Insight Point logs for validation or connection errors:

  • Ensure the destination is actually reachable from the Insight Point's network

By default, the Helm chart creates a ClusterRole, ServiceAccount, and ClusterRoleBinding to enable the Insight Point to discover Kubernetes RBAC entities. The ClusterRole grants the following permissions:

Resource
API Group
Verbs
Purpose

When enableSecrets=true is set, the ClusterRole additionally grants list access to secrets across all namespaces.

Disabling RBAC resource creation: If your organization manages RBAC separately, set createClusterRole=false. When disabled, the chart skips all three RBAC resources — the ClusterRole, ClusterRoleBinding, and ServiceAccount. The pod will use the namespace default ServiceAccount. Create your own ServiceAccount, ClusterRole, and ClusterRoleBinding in the veza namespace before deploying.

The Insight Point can retrieve credentials from external secrets vault providers (such as Azure Key Vault) instead of requiring credentials to be passed directly. This is configured using the secretsVaultsConfig parameter or a reference to an existing Kubernetes secret.

If the secrets vault configuration already exists as a Kubernetes secret:

Parameter
Description
Default

Only one of secretsVaultsConfig or secretsVaultsConfigSecretRef can be set.

The Helm chart supports standard Kubernetes scheduling parameters for controlling pod placement.

Constrain Insight Point pods to nodes with specific labels:

Allow pods to schedule on tainted nodes:

Control how pods are distributed across topology domains:

The Helm chart applies a pod-level that runs the Insight Point as the non-root nonroot user (UID/GID 1001) baked into the container image. The defaults are:

Parameter
Description
Default

The defaults reproduce the chart's prior hard-coded settings. Existing deployments that do not override this value are unaffected

On OpenShift, assign UID/GID ranges per namespace and reject pods whose IDs fall outside the assigned range. The chart's default IDs (1001) are unlikely to be inside the range, so the pod is rejected at admission.

To let the platform assign IDs, override podSecurityContext and set the ID fields to null. The runAsNonRoot and seccompProfile assertions should be kept:

To omit the pod-level security context entirely and let the platform inject everything (including a default seccomp profile), set the value to null:

The Helm chart sets fixed resource requests and limits of 2 CPU cores and 4 GB RAM per pod. These values match the and cannot be overridden via Helm values. If your workload requires different resource allocation, contact Veza support.

Insight Point pods are configured to pull images on start, but a running pod keeps using the image it started with until it is restarted. The Helm chart includes a CronJob that periodically restarts the Insight Point to pull the latest image to keep it current with bug fixes and security patches.

This job is enabled by default and runs weekly (Sundays at 04:00 in the cluster timezone). The restart is graceful: pods are replaced one at a time, and Kubernetes waits for each replacement to become ready before continuing. In high-availability deployments (replicaCount greater than 1), the Insight Point remains available throughout the restart.

Parameter
Description
Default

To change the schedule — for example, to refresh daily at 02:00 — set imageRefresh.schedule:

To disable the scheduled refresh entirely:

When enabled, the chart creates a Role, ServiceAccount, and RoleBinding scoped to the install namespace, granting permission to restart only the Insight Point's own workload. These are removed when the feature is disabled.

A Kubernetes Helm chart is a package format used to define, install, and upgrade applications in Kubernetes. Helm is often referred to as a package manager for Kubernetes. To install the chart, you will need:

  • System Resources: Ensure your Kubernetes cluster has sufficient resources to meet the (minimum: 2 CPU cores, 4 GB RAM per Insight Point pod).

  • Insight Point Key: You will need to generate a secret key for the Insight Point. To create one, go to Veza Integrations > Insight Point > Create.

  • Insight Point Version: Note the most recent Insight Point version from .

  1. Customize Values and Install the Insight Point:

    Use the helm install command to install the Insight Point into the Kubernetes cluster. Replace <NAME>, <VERSION>, <KEY>, and key with your specific values:

    • --namespace <NAMESPACE>

--set addr=customer.vezacloud.com

skipVerify

Disable TLS certificate validation

false

--set skipVerify=true

authority

Overrides the request authority for certificate validation

""

--set authority=veza.example.com

caBundle

Custom CA certificate bundle in PEM format (inline)

""

See

caBundleConfigMapRef

Reference to existing ConfigMap containing CA bundle

""

--set caBundleConfigMapRef=custom-ca-bundle

env

List of additional environment variables to inject into the pod

[]

See

replicaCount

Number of Insight Point replicas for high availability

3

--set replicaCount=1

createClusterRole

Create ClusterRole for Kubernetes integration RBAC

true

--set createClusterRole=false

roleName

Name of the ClusterRole created when createClusterRole is enabled

veza-insight-point

--set roleName=custom-veza-role

enableSecrets

Enable Kubernetes Secrets extraction via ClusterRole permissions

false

--set enableSecrets=true

nodeSelector

Constrain pods to nodes with specific labels

{}

--set nodeSelector.disktype=ssd

tolerations

Allow pods to schedule on tainted nodes

[]

See

topologySpreadConstraints

Control pod distribution across topology domains

[]

See

imageRefresh.enabled

Periodically restart the Insight Point to pull the latest image

true

--set imageRefresh.enabled=false

imageRefresh.schedule

Cron schedule for the periodic image refresh (cluster timezone)

0 4 * * 0

--set imageRefresh.schedule="0 4 * * 0"

skipVerify (TLS_INSECURE_SKIP_VERIFY) should only be set to true to disable certificate validation for testing/troubleshooting.

points to a proxy instead of directly to Veza. Must be a specific domain (wildcards not supported).
  • Use the custom CA bundle feature (above) to trust your proxy's CA certificate.

  • (default) provides good balance of availability and resource usage

    kubernetes.io/hostname (nodes) or topology.kubernetes.io/zone (zones)

    kubernetes.io/hostname

    ""

    --set 'webhookRelay.allowedHosts[0]=172.17.0.0/24' --set 'webhookRelay.allowedHosts[1]=172.16.0.*' --set 'webhookRelay.allowedHosts[3]=*.example.com'

    get

    Read configuration

    clusterroles

    rbac.authorization.k8s.io

    list

    Discover RBAC roles

    clusterrolebindings

    rbac.authorization.k8s.io

    list

    Discover role assignments

    roles

    rbac.authorization.k8s.io

    list

    Discover namespace-scoped roles

    rolebindings

    rbac.authorization.k8s.io

    list

    Discover namespace-scoped role assignments

    podSecurityContext.runAsUser

    User ID the container process runs as; matches the nonroot user in the image

    1001

    podSecurityContext.runAsGroup

    Primary group ID for the container process; matches the nonroot user in the image

    1001

    podSecurityContext.seccompProfile.type

    Seccomp profile applied to the container; RuntimeDefault uses the container runtime's default, restricting the syscalls the container can invoke

    RuntimeDefault

    Access to the Kubernetes Cluster: Ensure you have the necessary permissions and access credentials to interact with the target Kubernetes cluster.

  • Helm Installed: Ensure Helm version 3.8 or greater is installed on your local machine. You can install Helm by following the official documentation: Helm Installation.

  • Your organization security policies must allow chart installation from the VEZA ECR public.ecr.aws/veza

  • : required if installing the Insight Point into a different namespace than the default.
  • --create-namespace: required if the namespace does not exist yet.

  • --set enableSecrets=true: optional field, required to enable Kubernetes Secrets extraction. Secrets are not extracted by default.

  • A Veza Insight Point Key must be provided. To do this, you can specify the value with the --set key=<registration-key> option when installing the chart.

    Example:

  • Verify Installation:

    Verify the status of the installation by running:

    helm list -n <NAMESPACE>

    This command will return a list of Helm releases, including the Insight Point you just installed. Ensure the STATUS is "DEPLOYED."

  • Get Insight Point Logs:

    If the Insight Point fails to initialize or can't connect to Veza, you can get more details by reviewing the container logs. You can retrieve this using the terminal:

    kubectl logs -l app=<veza-insight-point> -n <NAMESPACE>
  • Upgrade and Maintain:

    Over time, you may need to upgrade the Insight Point to newer versions or adjust its configuration. Use the helm upgrade command to make these changes.

    Standard upgrade:

    helm upgrade <veza-insight-point> oci://public.ecr.aws/veza/helm-chart/insight-point --version <VERSION> --namespace <NAMESPACE>

    Note that newer versions can introduce breaking changes (e.g., replacing Kubernetes resources with others), which can cause a brief unavailability of the Insight Point.

  • Uninstall the Insight Point:

    If you need to uninstall the Insight Point, you can do so using the helm uninstall command:

    helm uninstall <veza-insight-point> --namespace <NAMESPACE>
  • key

    Insight Point Registration key for connecting to Veza

    ""

    --set key=abc123

    image

    Container image to deploy

    public.ecr.aws/veza/insight_point:latest

    --set image=my-registry/insight_point:v1

    addr

    Address for Veza API connection, overriding the one provided by the key

    caBundle: |
      -----BEGIN CERTIFICATE-----
      MIIDXTCCAkWgAwIBAgIJAKZ...
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      MIIDXTCCAkWgAwIBAgIJAKZ...
      -----END CERTIFICATE-----
    helm install veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point \
      --version <VERSION> \
      --namespace veza \
      --create-namespace \
      --set key=<your-registration-key> \
      --values ca-values.yaml
    # Create ConfigMap from your CA certificate file
    kubectl create configmap custom-ca-bundle \
      --from-file=ca-certificates.crt=/path/to/your/ca-bundle.crt \
      -n veza
    
    # Reference in helm install
    helm install veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point \
      --version <VERSION> \
      --namespace veza \
      --create-namespace \
      --set key=<your-registration-key> \
      --set caBundleConfigMapRef=custom-ca-bundle
    env:
      - name: KRB5_CONFIG
        value: /tmp/krb5.conf
      - name: KRB5CCNAME
        value: /tmp/krb5cc_go
      - name: LDAP_CERTIFICATE
        value: /tmp/ldap_cert.pem
    helm upgrade veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point \
      --version <VERSION> \
      --namespace veza \
      --reuse-values \
      --set env[0].name=KRB5_CONFIG \
      --set env[0].value=/tmp/krb5.conf \
      --set env[1].name=KRB5CCNAME \
      --set env[1].value=/tmp/krb5cc_go
    # Find the pod name
    kubectl get pods -n veza -l app=veza-insight-point
    
    # Copy the Kerberos configuration and LDAP certificate
    kubectl cp krb5.conf veza/<pod-name>:/tmp/krb5.conf
    kubectl cp ldap_cert.pem veza/<pod-name>:/tmp/ldap_cert.pem
    # Custom tags
    tags:
      environment: production
      datacenter: us-west-1
      team: platform-engineering
      owner: ops-team@company.com
    helm install veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point \
      --version <VERSION> \
      -f values.yaml \
      --namespace veza
    helm install veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point \
      --version <VERSION> \
      --set key=<your-registration-key> \
      --set tags.environment=production \
      --set tags.datacenter=us-west-1 \
      --set tags.team=platform-engineering \
      --namespace veza
    helm upgrade veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point \
      --version <VERSION> \
      --reuse-values \
      --set tags.environment=production \
      --set tags.new_key=new_value \
      --namespace veza

    podAntiAffinity.type

    Anti-affinity enforcement

    soft (preferred) or hard (required)

    soft

    podAntiAffinity.topologyKey

    podDisruptionBudget.enabled

    Enable PodDisruptionBudget

    true

    podDisruptionBudget.minAvailable

    Minimum pods that must remain available

    1

    webhookRelay.enabled

    Enable the webhook relay service

    false

    --set webhookRelay.enabled=true

    webhookRelay.allowedHosts

    helm install veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point \
      --version <VERSION> \
      --namespace <NAMESPACE> \
      --set key=<KEY> \
      --set webhookRelay.enabled=true \
      --set webhookRelay.allowedHosts[0]="webhook.site" \
      --set webhookRelay.allowedHosts[1]="*.example.com" \
      --set webhookRelay.allowedHosts[2]="172.17.0.0/24"
    helm upgrade veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point \
      --version <VERSION> \
      --namespace <NAMESPACE> \
      --set webhookRelay.enabled=true \
      --set webhookRelay.allowedHosts[0]="webhook.site" \
      --set webhookRelay.allowedHosts[1]="*.example.com"
    key: "<your-insight-point-key>"
    
    webhookRelay:
      enabled: true
      allowedHosts:
        - "webhook.site"
        - "*.example.com"        # Wildcard domain
        - "172.17.0.100"         # IP address
        - "10.0.0.0/8"           # CIDR range
        - "172.16.*"             # Wildcard IP
    helm install veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point \
      --version <VERSION> \
      --namespace <NAMESPACE> \
      --values values.yaml
    helm get values veza-insight-point -n <NAMESPACE>
    kubectl get pods -n <NAMESPACE> -l app=veza-insight-point -o jsonpath='{.items[0].spec.containers[0].env}' | jq
    kubectl logs -l app=veza-insight-point -n <NAMESPACE>

    namespaces

    ""

    list

    Discover cluster namespaces

    configmaps

    secretsVaultsConfig:
      vaults:
        - name: example-vault
          vault_provider: azure_key_vault
          auth_type: client_secret
          auth_config:
            vault_uri: https://my-vault.vault.azure.net
            tenant_id: <tenant-id>
            client_id: <client-id>
            client_secret: <client-secret>
    helm install veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point \
      --version <VERSION> \
      --namespace veza \
      --create-namespace \
      --set key=<your-registration-key> \
      --set secretsVaultsConfigSecretRef=my-vault-config

    secretsVaultsConfig

    Inline YAML configuration for secrets vault providers

    {}

    secretsVaultsConfigSecretRef

    Reference to an existing Kubernetes secret with vault config

    ""

    nodeSelector:
      disktype: ssd
      node-role.kubernetes.io/compute: "true"
    tolerations:
      - key: dedicated
        operator: Equal
        value: insight-point
        effect: NoSchedule
    topologySpreadConstraints:
      - maxSkew: 1
        topologyKey: topology.kubernetes.io/zone
        whenUnsatisfiable: DoNotSchedule
        labelSelector:
          matchLabels:
            app: insight-point
    podSecurityContext:
      fsGroup: 1001
      runAsNonRoot: true
      runAsUser: 1001
      runAsGroup: 1001
      seccompProfile:
        type: RuntimeDefault

    podSecurityContext.fsGroup

    Group ID applied to files in mounted volumes so the container process can write to them; matches the nonroot user in the image

    1001

    podSecurityContext.runAsNonRoot

    Prevents the pod from running as root even if the image is misconfigured to do so

    true

    podSecurityContext:
      fsGroup: null
      runAsUser: null
      runAsGroup: null
      runAsNonRoot: true
      seccompProfile:
        type: RuntimeDefault
    podSecurityContext: null

    imageRefresh.enabled

    Enable the scheduled image refresh

    true

    imageRefresh.schedule

    Cron schedule for the refresh (cluster timezone)

    0 4 * * 0

    helm upgrade veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point \
      --version <VERSION> \
      --namespace <NAMESPACE> \
      --reuse-values \
      --set imageRefresh.schedule="0 2 * * *"
    helm upgrade veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point \
      --version <VERSION> \
      --namespace <NAMESPACE> \
      --reuse-values \
      --set imageRefresh.enabled=false
    helm install <NAME> oci://public.ecr.aws/veza/helm-chart/insight-point --version <VERSION> --namespace <NAMESPACE> --create-namespace  --set key=<KEY>

    Custom CA Certificate Bundle

    Option 1: Inline CA Bundle

    Option 2: Reference to existing ConfigMap

    Proxy Configuration

    Custom environment variables

    Placing credential files on the pod

    The Insight Point container uses a minimal base image without a shell or additional binaries. Tools like kinit are not available inside the container. Generate Kerberos credential caches on an external host and copy the resulting cache file to the pod using kubectl cp.

    Files in /tmp are stored in an ephemeral volume and are lost if the pod restarts. Re-copy credential files after any pod restart. Plan a process to renew the credential cache before tickets expire — the default lifetime is 5 days, subject to the maximum configured on your domain controller.

    Configuring Tags

    Using values.yaml File

    Using Command-Line Flags

    Updating Tags on Existing Deployment

    High Availability Configuration

    Replica Count

    Pod Anti-Affinity

    Pod Disruption Budget

    Webhook Relay Configuration

    Configuration options

    Configuration via Command Line

    Configuration via values.yaml

    Verifying Webhook Relay Configuration

    RBAC and Kubernetes Permissions

    Secrets Vault Configuration

    Inline configuration

    Reference to existing secret

    Scheduling Constraints

    Node Selector

    Tolerations

    Topology Spread Constraints

    Pod Security Context

    The container-level security context (readOnlyRootFilesystem: true, non-root, dropped Linux capabilities, and the seccomp profile) is enforced by the chart independently and is not affected by podSecurityContext.

    OpenShift and other SCC-managed platforms

    Helm merges the podSecurityContext value with the chart defaults field-by-field. A partial override (for example, setting only runAsNonRoot: true) does not remove the default IDs — they remain in place and the pod is still rejected. You must explicitly set each ID field to null to clear it.

    Resource Allocation

    Scheduled Image Refresh

    The Insight Point continuously checks for and applies updates to its core agent independently of the cron operation. The scheduled image refresh is intended for updating the underlying container image (for example, operating-system security patches), which the in-place update does not change.

    The refresh job runs the Insight Point's own image and does not pull any additional images, so it works in air-gapped environments and registry mirrors without extra configuration.

    Requirements

    Install Insight Point (Helm Chart)

    Kerberos Token Authentication
    Tags
    Webhook Relay
    PodSecurityContext
    Security Context Constraints
    system requirements
    Insight Point system requirements
    Veza's OCI repository

    ""

    Distribution topology

    A list of allowed destinations (supports multiple formats as documented in )

    ""

    helm install veza-insight-point oci://public.ecr.aws/veza/helm-chart/insight-point --version <VERSION> --namespace veza --create-namespace --set enableSecrets=true --set key=<YOUR_KEY>
    Custom CA Certificates
    Custom environment variables
    Scheduling
    Scheduling
    Webhook Relay