The Principal uses TLS for secure communication. You can configure certificates via Kubernetes Secrets or direct file paths.
Key Security Modes:
- Standard TLS: Uses
--tls-secret-name (default: argocd-agent-principal-tls) or overrides with --tls-cert and --tls-key file paths. - Insecure Plaintext: Use
--insecure-plaintext to run the gRPC server without TLS. This is required for service mesh deployments using header authentication. - Development Mode: Use
--insecure-tls-generate to generate temporary, non-persistent TLS certificates.
Client Authentication:
To enforce identity, use --require-client-certs to mandate client certificates, and optionally use --client-cert-subject-match to ensure the certificate subject matches the agent name.
# TLS Configuration Reference
| Setting | CLI Flag | Environment Variable | ConfigMap Entry | Default |
|---|---|---|---|---|
| TLS Secret Name | `--tls-secret-name` | `ARGOCD_PRINCIPAL_TLS_SECRET_NAME` | `principal.tls.secret-name` | `argocd-agent-principal-tls` |
| TLS Cert Path | `--tls-cert` | `ARGOCD_PRINCIPAL_TLS_SERVER_CERT_PATH` | `principal.tls.server.cert-path` | `""` |
| TLS Key Path | `--tls-key` | `ARGOCD_PRINCIPAL_TLS_SERVER_KEY_PATH` | `principal.tls.server.key-path` | `""` |
| Insecure TLS Gen | `--insecure-tls-generate` | `ARGOCD_PRINCIPAL_TLS_SERVER_ALLOW_GENERATE` | `principal.tls.server.allow-generate` | `false` |
| Insecure Plaintext | `--insecure-plaintext` | `ARGOCD_PRINCIPAL_INSECURE_PLAINTEXT` | `principal.tls.insecure-plaintext` | `false` |
| TLS CA Secret | `--tls-ca-secret-name` | `ARGOCD_PRINCIPAL_TLS_SERVER_ROOT_CA_SECRET_NAME` | `principal.tls.server.root-ca-secret-name` | `argocd-agent-ca` |
| Require Client Certs | `--require-client-certs` | `ARGOCD_PRINCIPAL_TLS_CLIENT_CERT_REQUIRE` | `principal.tls.client-cert.require` | `false` |
| Min TLS Version | `--tls-min-version` | `ARGOCD_PRINCIPAL_TLS_MIN_VERSION` | `principal.tls.min-version` | `tls1.3` |