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 thecluster-namevalue 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=trueTo install Kompass with ArgoCD:
Put values.yaml in the kompass/ directory of your repository.
Commit and push the changes to your Git repository.Create the ArgoCD Application:
Create an application.yaml file in the kompass/ directory to define how ArgoCD manages the installation.
Use the example configuration file.
Deploy the application:
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.
(Optional) Verify the installation:
Check the status in ArgoCD:
kubectl -n argocd get applicationsConfirm the status is Synced and Healthy.
Check the cluster components to ensure Pods are running:
kubectl -n zesty-system get pods
(Optional) Enable Pod rightsizing
Add the following to kompass/values.yaml:
rightsizing: enabled: true global: useHelmPriorityHooks: falseCommit and push the changes to Git.
ArgoCD will detect the changes and trigger a Helm upgrade to deploy the rightsizing components(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:
Update the ArgoCD ConfigMap:
Edit the configuration file:
kubectl -n argocd edit configmap argocd-cmAdd this configuration to the file:
resource.customizations.ignoreDifferences.all: | managedFieldsManagers: - action-taker --- resource.customizations: | all: syncOptions: - RespectIgnoreDifferences=true
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