Setup consul & vault on kubernetes helm
Use helm repo confluentinc
$ helm repo add confluentinc https://confluentinc.github.io/cp-helm-charts
Helm consul values
global:
enabled: true
logJSON: true
# Configure ACLs.
acls:
# This requires Consul >= 1.4.
manageSystemACLs: true
server:
enabled: "-"
replicas: 3
storage: 20Gi
resources:
requests:
memory: "100Mi"
cpu: "100m"
limits:
memory: "100Mi"
cpu: "100m"
ui:
enabled: "-"
service:
enabled: true
ingress:
enabled: true
ingressClassName: "nginx"
pathType: Prefix
hosts:
- host: consul.devops.kiev.ua
paths:
- /
tls:
- hosts:
- consul.devops.kiev.ua
secretName: consul-tls
annotations: |
cert-manager.io/cluster-issuer: consul-tls
Helm vault values
server:
enabled: "-"
resources:
requests:
memory: 256Mi
cpu: 250m
limits:
memory: 256Mi
cpu: 250m
ingress:
enabled: true
annotations:
cert-manager.io/cluster-issuer: vault-tls
ingressClassName: "nginx"
pathType: Prefix
activeService: true
hosts:
- host: vault.devops.kiev.ua
paths:
- /
tls:
- secretName: vault-tls
hosts:
- vault.devops.kiev.ua
dataStorage:
enabled: false
standalone:
enabled: false
ha:
enabled: true
replicas: 3
config: |
ui = true
listener "tcp" {
tls_disable = 1
address = "[::]:8200"
cluster_address = "[::]:8201"
}
storage "consul" {
path = "vault"
address = "consul-consul-server.consul:8500"
token = "${consulToken}"
}
service_registration "kubernetes" {}
seal "awskms" {
region = "eu-central-1"
kms_key_id = "${kmsID}"
}
serviceAccount:
create: true
annotations:
'eks.amazonaws.com/role-arn': 'arn:aws:iam::<account id>:role/vault'
Post command installation
$ kubectl exec -ti vault-0 -- vault operator init
Install consul & vault
$ helm install consul
$ helm install vault
Cousul policies for vault
{
"key_prefix": {
"vault": {
"policy": "write"
}
},
"service": {
"vault": {
"policy": "write"
}
},
"agent_prefix": {
"": {
"policy": "read"
}
},
"session_prefix": {
"": {
"policy": "write"
}
}
}
Update ingress
tcp:
8500: "consul/consul-consul-server:8500"
setup vault client
$ export VAULT_ADDR="http://vault.devops.kiev.ua:8200"
Setup vault & microsoft azure ad
Enable oidc auth
# create file with permission
cat <<EOF > oidc.hcl
path "sys/*" {
capabilities = ["deny"]
}
path "kv/*" {
capabilities = ["list","create","read","update","delete"]
}
EOF
$ vault auth enable oidc
$ vault policy write oidc oidc.hcl
$ export AZURE_SECRET=""
$ export AZURE_CLIENT_ID=""
$ export AZURE_TENANT_ID=""
$ vault write auth/oidc/config oidc_discovery_url="https://login.microsoftonline.com/${ AZURE_TENANT_ID}/v2.0" oidc_client_id="${AZURE_CLIENT_ID}" oidc_client_secret="${AZURE_SECRET}" default_role="oidc"
vault write auth/oidc/role/oidc user_claim="email" allowed_redirect_uris="http://localhost:8250/oidc/callback,https://vault.devops.kiev.ua/ui/vault/auth/oidc/oidc/callback" groups_claim="groups" oidc_scopes="https://graph.microsoft.com/.default" policies=default,oidc