# Install with Argo CD

These Applications render each component’s Helm chart separately. Use Argo CD as their configuration owner. Sync KEDA first to create the namespace and CRDs, then sync the other components.

The OTel and Predictor examples use Argo CD’s [Helm OCI source format](https://argo-cd.readthedocs.io/en/stable/user-guide/helm/#declarative): registry path in `repoURL`, with the chart name in `chart`.

Before syncing, obtain the [organization ID and Agent API key](https://docs.kedify.io/installation/helm/#prepare-installation), select [Versions](https://docs.kedify.io/getting-started/versions/), and replace example values. Supply credentials through your existing secret-management workflow; do not commit real API keys.

## Kedify build of KEDA Installation Manifest with Argo CD

```yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: keda
  namespace: argocd
spec:
  destination:
    namespace: keda
    server: https://kubernetes.default.svc
  project: default
  source:
    chart: keda
    repoURL: https://kedify.github.io/charts
    targetRevision: v2.20.2-0
    helm:
      values: |
        image:
          keda:
            tag: v2.20.2-0
            registry: ghcr.io
            repository: kedify/keda-operator
          metricsApiServer:
            tag: v2.20.2-0
            registry: ghcr.io
            repository: kedify/keda-metrics-apiserver
          webhooks:
            tag: v2.20.2-0
            registry: ghcr.io
            repository: kedify/keda-admission-webhooks
        prometheus:
          operator:
            enabled: true
          metricServer:
            enabled: true
          webhooks:
            enabled: true

        ## Please fill this section with your custom values based on the available options

  syncPolicy:
    automated: {}
    syncOptions:
      - CreateNamespace=true
      - ServerSideApply=true
  ignoreDifferences:
    - kind: APIService
      group: apiregistration.k8s.io
      jqPathExpressions:
        - '.spec.insecureSkipTLSVerify'
    - kind: ValidatingWebhookConfiguration
      group: admissionregistration.k8s.io
      jqPathExpressions:
        - '.webhooks[].clientConfig.caBundle'
```

## HTTP Scaler Installation Manifest with Argo CD

```yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: http-scaler
  namespace: argocd
spec:
  destination:
    namespace: keda
    server: https://kubernetes.default.svc
  project: default
  source:
    chart: keda-add-ons-http
    repoURL: https://kedify.github.io/charts
    targetRevision: v0.11.1-6
    helm:
      values: |
        images:
          tag: v0.11.1-6
          operator: ghcr.io/kedify/http-add-on-operator
          interceptor: ghcr.io/kedify/http-add-on-interceptor
          scaler: ghcr.io/kedify/http-add-on-scaler
        interceptor:
          replicas:
            min: 1
        scaler:
          replicas: 1
        operator:
          replicas: 0

        ## Please fill this section with your custom values based on the available options
```

If you use the [traffic autowiring](https://docs.kedify.io/scalers/http-scaler/#traffic-autowiring) feature of the HTTP Scaler, the kedify-agent will modify live `Ingress` resources in your application namespaces. To prevent Argo CD from reverting these changes, you need to configure `ignoreDifferences` on the Argo CD `Application` that manages your application's `Ingress` resources. See the [Argo CD and GitOps Considerations](https://docs.kedify.io/scalers/http-scaler/#argo-cd-and-gitops-considerations) section in the HTTP Scaler documentation for details.

## Kedify Agent Installation Manifest with Argo CD

```yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: kedify-agent
  namespace: argocd
spec:
  destination:
    namespace: keda
    server: https://kubernetes.default.svc
  project: default
  source:
    chart: kedify-agent
    repoURL: https://kedify.github.io/charts
    targetRevision: v0.7.1
    helm:
      values: |
        keda:
          enabled: false
        keda-add-ons-http:
          enabled: false
        otel-add-on:
          enabled: false
        kedify-predictor:
          enabled: false
        clusterName: my-cluster    # EDIT THIS
        agent:
          orgId: "$YOUR_ORG_ID"    # EDIT THIS
          apiKey: "$YOUR_API_KEY"  # EDIT THIS

        ## Please fill this section with your custom values based on the available options
```

## OTel Scaler Installation Manifest with Argo CD

```yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: kedify-otel-scaler
  namespace: argocd
spec:
  destination:
    namespace: keda
    server: https://kubernetes.default.svc
  project: default
  source:
    chart: otel-add-on
    repoURL: ghcr.io/kedify/charts
    targetRevision: v0.1.4
    helm:
      values: |
        image:
          repository: ghcr.io/kedify/otel-add-on
          tag: v0.1.4

        ## Please fill this section with your custom values based on the available options
```

## Kedify Predictor Installation Manifest with Argo CD

```yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: kedify-predictor
  namespace: argocd
spec:
  destination:
    namespace: keda
    server: https://kubernetes.default.svc
  project: default
  source:
    chart: kedify-predictor
    repoURL: ghcr.io/kedify/charts
    targetRevision: v0.1.6
    helm:
      values: |
        settings:
          logs:
            logLvl: info

        ## Please fill this section with your custom values based on the available options
```

## Verify

Check that the Applications are synced and healthy, then run the [installation checks](https://docs.kedify.io/installation/helm/#verifying-installation). For HTTP traffic autowiring, retain the application-level `ignoreDifferences` configuration described above.

---
Canonical: https://docs.kedify.io/installation/argo-cd/
Source: src/pages/installation/argo-cd.astro
Documentation index: https://docs.kedify.io/llms.txt
