# Custom DNS and Istio

Apply these settings through the existing Helm or GitOps owner of the installation.

## Custom DNS Domain

For a domain other than `cluster.local`, configure the Agent and KEDA with the same suffix. This example uses `my-cluster.com` in the Agent chart’s values:

```yaml
agent:
  extraArgs:
    cluster-local-domain: my-cluster.com
keda:
  clusterDomain: my-cluster.com
  operator:
    extraArgs:
      k8s-cluster-domain: my-cluster.com
  metricsServer:
    extraArgs:
      metrics-service-address: keda-operator.%s.svc.my-cluster.com:9666
```

The Agent chart passes `keda` values to its dependent chart. For a separate KEDA release, apply the fields beneath `keda` at that chart’s root.

## Istio Integration

Sidecar injection in the KEDA installation namespace can leave `external.metrics.k8s.io` unavailable with `FailedDiscoveryCheck`. Disable injection and restart the affected deployments:

```bash
kubectl label namespace keda istio-injection=disabled --overwrite
kubectl get namespace keda --show-labels
kubectl get deployments -n keda
# Replace with a reviewed deployment that had an injected sidecar.
kubectl rollout restart deployment/DEPLOYMENT_NAME -n keda
```

## Verify

```bash
kubectl get apiservice v1beta1.external.metrics.k8s.io
```

Confirm `AVAILABLE` is `True`. Continue with [installation verification](https://docs.kedify.io/installation/helm/#verifying-installation) or [workload troubleshooting](https://docs.kedify.io/troubleshooting/workload-scaling/). To route application traffic through Istio, use [HTTP scaling with Istio VirtualServices](https://docs.kedify.io/how-to/http-scaling-with-istio-virtualservice/).

---
Canonical: https://docs.kedify.io/installation/cluster-configuration/
Source: src/content/docs/installation/cluster-configuration.md
Documentation index: https://docs.kedify.io/llms.txt
