-
Notifications
You must be signed in to change notification settings - Fork 50
Improve Agent Injector Vault Address Environment Variable Options #789 #157
Description
(Copy from hashicorp/vault-helm#789)
Describe the bug In environments where we are utilizing vault as part of this helm-chart but using Istio LoadBalancers, or AWS ELBs forwarding traffic to the Vault server the included agent injector deployment is not able to get the correct VAULT_ADDR with the existing options to set AGENT_INJECT_VAULT_ADDR
To Reproduce Steps to reproduce the behavior:
1. Install chart
2. Create secret and serviceAccount and all included options to configure another deployment to utilize a secret from Vault.
3. Add kubernetes labels to inject deployment so it can utilize vault secrets
4. Pod is never able to communicate with Vault because we use our own cert and (E)LB and VAULT_ADDR is set to `https://vault-vault.vault.svc:8200`
Expected behavior Agent Injector VAULT_ADDR endpoint is configurable
Environment
* Kubernetes version: 1.23.8
* Distribution or cloud vendor (OpenShift, EKS, GKE, AKS, etc.): RKE2
* Other configuration options or runtime services (istio, etc.): istio 1.14.2
* vault-helm version: 0.21.0
Chart values:
global:
tlsDisable: false
server:
extraEnvironmentVars:
VAULT_SKIP_VERIFY: "true"
VAULT_LOG_FORMAT: "json"
ha:
enabled: true
replicas: 3
apiAddr: "https://vault.example.com"
raft:
enabled: true
setNodeId: true
config: |
ui = true
seal "awskms" {
region = "us-gov-west-1"
kms_key_id = "XXXXXXXXXXXX"
endpoint = "https://kms.us-gov-west-1.amazonaws.com"
}
listener "tcp" {
tls_disable = false
address = "[::]:8200"
cluster_address = "[::]:8201"
tls_cert_file = "/vault/tls/tls.crt"
tls_key_file = "/vault/tls/tls.key"
telemetry {
unauthenticated_metrics_access = true
}
}
storage "raft" {
path = "/vault/data"
retry_join {
leader_api_addr = "https://vault-vault-0.vault-vault-internal:8200"
leader_client_cert_file = "/vault/tls/tls.crt"
leader_client_key_file = "/vault/tls/tls.key"
leader_tls_servername = "example.com"
}
retry_join {
leader_api_addr = "https://vault-vault-1.vault-vault-internal:8200"
leader_client_cert_file = "/vault/tls/tls.crt"
leader_client_key_file = "/vault/tls/tls.key"
leader_tls_servername = "vault.example.com"
}
retry_join {
leader_api_addr = "https://vault-vault-2.vault-vault-internal:8200"
leader_client_cert_file = "/vault/tls/tls.crt"
leader_client_key_file = "/vault/tls/tls.key"
leader_tls_servername = "vault.example.com"
}
}
telemetry {
prometheus_retention_time = "24h"
disable_hostname = true
}
service_registration "kubernetes"
volumes:
- name: tls
secret:
secretName: vault-tls
volumeMounts: - name: tls
mountPath: "/vault/tls"
readOnly: true
dataStorage:
enabled: true
size: 50Gi
mountPath: "/vault/data"
accessMode: ReadWriteOnce
Additional context Add any other context about the problem here.