Install and enable Kompass components with ArgoCD

Prev Next

This topic describes how to install the Kompass Insights agent with ArgoCD and Helm in a GitOps workflow.

In this architecture, configuration is stored in Git and automatically deployed by ArgoCD to your Kubernetes cluster.

You can also enable Pod rightsizing, either as an additional step as documented here, or by adding the enablement lines to values.yaml to run together with installing the Insights agent.

When Pod rightsizing is enabled on a cluster running a K8s version earlier than v1.33, applications may appear OutOfSync. You can add optional configurations to ignore these errors. From v1.33 and above, the platform supports in-place Pod vertical scaling, and this workaround is no longer necessary.

Install and enable Kompass components

Prerequisites

  • Zesty prerequisites:

    • The cloud service provider account is onboarded to Zesty.

    • You have a Kompass onboarding values.yaml file.
      You can use the same values.yaml for different clusters in one account. For each cluster, adjust the cluster-name value in the configuration file.
      If your account was onboarded using Terraform, you can find values.yaml in your environment. You can also download values.yaml from the UI by beginning the Install Kompass Insights agent procedure. Do not continue to install the agent.

  • ArgoCD prerequisites:

    • ArgoCD is installed.

    • The target cluster is registered in ArgoCD.

    • ArgoCD has access to your Git repository.

Repository structure

Use the following recommended repository layout to organize your configuration:

  • repo-root

    • kompass

      • values.yaml

      • Application.yaml

Example configuration file

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: kompass
  namespace: argocd
spec:
  project: default
  sources:
  - chart: kompass
    repoURL: https://zesty-co.github.io/kompass
    targetRevision: 0.1.127
    helm:
      releaseName: kompass
      valueFiles:
      - $values/kompass/values.yaml
  - repoURL: https://github.com/<org>/<repo>.git
    targetRevision: main
    ref: values
  destination:
    name: <cluster-name>
    namespace: zesty-system
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true
    - ApplyOutOfSyncOnly=true

To install Kompass with ArgoCD:

  1. Put values.yaml in the kompass/ directory of your repository.
    Commit and push the changes to your Git repository.

  2. Create the ArgoCD Application:

    1. Create an application.yaml file in the kompass/ directory to define how ArgoCD manages the installation.

      Use the example configuration file.

  3. Deploy the application:

    1. Apply the application manifest from the cluster where ArgoCD is running.
      kubectl apply -f kompass/application.yaml
      ArgoCD will now install the Insights agent automatically.

  4. (Optional) Verify the installation:

    1. Check the status in ArgoCD:
      kubectl -n argocd get applications

    2. Confirm the status is Synced and Healthy.

    3. Check the cluster components to ensure Pods are running:
      kubectl -n zesty-system get pods

  5. (Optional) Enable Pod rightsizing

    1. Add the following to kompass/values.yaml:

      rightsizing:
        enabled: true
      global:
        useHelmPriorityHooks: false
      
    2. Commit and push the changes to Git.
      ArgoCD will detect the changes and trigger a Helm upgrade to deploy the rightsizing components

    3. (Optional) Verify the deployment:
      kubectl -n zesty-system get pods | grep rightsizing

Optional configurations for EKS earlier than v1.33

For Amazon EKS clusters running Kubernetes versions prior to v1.33, ArgoCD might detect differences caused by the Pod rightsizing controller modifying resource fields. This can cause applications to appear OutOfSync.

To prevent this, configure ArgoCD to ignore changes made by the Pod rightsizing action-taker and respect ignore rules during synchronization.

To configure ArgoCD to ignore OutOfSync errors:

  1. Update the ArgoCD ConfigMap:

    1. Edit the configuration file:
      kubectl -n argocd edit configmap argocd-cm

    2. Add this configuration to the file:

      resource.customizations.ignoreDifferences.all: |
        managedFieldsManagers:
        - action-taker
      ---
      resource.customizations: |
        all:
          syncOptions:
          - RespectIgnoreDifferences=true
      
  2. Restart the ArgoCD server to apply the configuration:
    kubectl -n argocd rollout restart deployment argocd-server

Applications will remain Synced while Pod rightsizing safely modifies resource requests.

Additional ArgoCD configurations

You can use the relevant parts of the following code to ignore other synchronization “errors.”

# ArgoCD ConfigMap Customizations for Pod Rightsizing with ApplicationSets
#
# This configuration enables Pod Rightsizing to modify pod resources without ArgoCD
# reverting those changes when using ApplicationSets. The configuration applies
# pinpointed ignoreDifferences and RespectIgnoreDifferences sync options only to
# resource types that Pod Rightsizing modifies.
#
# Usage:
# Add these entries to your ArgoCD ConfigMap (typically argocd-cm in argocd namespace)
# or pass them via Helm values when deploying ArgoCD.
#
# Supported resource types:
# - HorizontalPodAutoscaler (autoscaling)
# - ScaledObject (KEDA)
# - Deployment, StatefulSet, DaemonSet, ReplicaSet (apps)
# - Pod (core)
# - Rollout (Argo Rollouts)
# - Job, CronJob (batch)
#

# HPA
resource.customizations.ignoreDifferences.autoscaling_HorizontalPodAutoscaler: |
  managedFieldsManagers:
  - action-taker
resource.customizations.autoscaling_HorizontalPodAutoscaler: |
  syncOptions:
  - RespectIgnoreDifferences=true

# KEDA ScaledObject
resource.customizations.ignoreDifferences.keda.sh_ScaledObject: |
  managedFieldsManagers:
  - action-taker
resource.customizations.keda.sh_ScaledObject: |
  syncOptions:
  - RespectIgnoreDifferences=true

# Deployment
resource.customizations.ignoreDifferences.apps_Deployment: |
  managedFieldsManagers:
  - action-taker
resource.customizations.apps_Deployment: |
  syncOptions:
  - RespectIgnoreDifferences=true

# StatefulSet
resource.customizations.ignoreDifferences.apps_StatefulSet: |
  managedFieldsManagers:
  - action-taker
resource.customizations.apps_StatefulSet: |
  syncOptions:
  - RespectIgnoreDifferences=true

# DaemonSet
resource.customizations.ignoreDifferences.apps_DaemonSet: |
  managedFieldsManagers:
  - action-taker
resource.customizations.apps_DaemonSet: |
  syncOptions:
  - RespectIgnoreDifferences=true

# ReplicaSet
resource.customizations.ignoreDifferences.apps_ReplicaSet: |
  managedFieldsManagers:
  - action-taker
resource.customizations.apps_ReplicaSet: |
  syncOptions:
  - RespectIgnoreDifferences=true

# Pod
resource.customizations.ignoreDifferences.Pod: |
  managedFieldsManagers:
  - action-taker
resource.customizations.Pod: |
  syncOptions:
  - RespectIgnoreDifferences=true

# Argo Rollout
resource.customizations.ignoreDifferences.argoproj.io_Rollout: |
  managedFieldsManagers:
  - action-taker
resource.customizations.argoproj.io_Rollout: |
  syncOptions:
  - RespectIgnoreDifferences=true

# Job
resource.customizations.ignoreDifferences.batch_Job: |
  managedFieldsManagers:
  - action-taker
resource.customizations.batch_Job: |
  syncOptions:
  - RespectIgnoreDifferences=true

# CronJob
resource.customizations.ignoreDifferences.batch_CronJob: |
  managedFieldsManagers:
  - action-taker
resource.customizations.batch_CronJob: |
  syncOptions:
  - RespectIgnoreDifferences=true

© 2026 Zesty. All Rights Reserved

info@zesty.co