Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
vault [2023/08/09 10:33] admin created |
vault [2024/01/26 17:33] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Vault ====== | ||
| + | |||
| + | |||
| + | ===== Configure TLS ===== | ||
| + | |||
| + | Create a TLS secret used by Vault and Traefik to communicate with vault service | ||
| + | |||
| + | < | ||
| + | export CERT_DIR=cert | ||
| + | export SECRET_NAME=vault-server-tls | ||
| + | </ | ||
| + | |||
| + | ==== Generate certificate via Kubernetes CertificateSigningRequest ==== | ||
| + | |||
| + | Generate key: | ||
| + | < | ||
| + | openssl genrsa -out ${CERT_DIR}/ | ||
| + | </ | ||
| + | |||
| + | Generate server.csr: | ||
| + | < | ||
| + | openssl req -config ${CERT_DIR}/ | ||
| + | </ | ||
| + | |||
| + | Generate CertificateSigningRequest | ||
| + | Create ${CERT_DIR}/ | ||
| + | <code | download> | ||
| + | apiVersion: certificates.k8s.io/ | ||
| + | kind: CertificateSigningRequest | ||
| + | metadata: | ||
| + | name: vault-csr | ||
| + | spec: | ||
| + | groups: | ||
| + | - system: | ||
| + | request: $(cat ${CERT_DIR}/ | ||
| + | signerName: beta.eks.amazonaws.com/ | ||
| + | usages: | ||
| + | - digital signature | ||
| + | - key encipherment | ||
| + | - server auth | ||
| + | </ | ||
| + | |||
| + | Apply CertificateSigningRequest & approve: | ||
| + | < | ||
| + | kubectl create -f ${CERT_DIR}/ | ||
| + | # Approve the Self-Signed Certificate by K8S CA | ||
| + | kubectl certificate approve vault-csr | ||
| + | # Write public certificate to file | ||
| + | kubectl get csr vault-csr -o jsonpath=' | ||
| + | </ | ||
| + | |||
| + | Retrieve Kubernetes CA certificate | ||
| + | < | ||
| + | kubectl config view \ | ||
| + | --raw \ | ||
| + | --minify \ | ||
| + | --flatten \ | ||
| + | -o jsonpath=' | ||
| + | | base64 -d > ${CERT_DIR}/ | ||
| + | </ | ||
| + | |||
| + | ==== Create Kubernetes secret containing TLS certificate & CA ==== | ||
| + | |||
| + | < | ||
| + | kubectl create secret generic ${SECRET_NAME} \ | ||
| + | --namespace vault \ | ||
| + | --from-file=vault.key=${CERT_DIR}/ | ||
| + | --from-file=vault.crt=${CERT_DIR}/ | ||
| + | --from-file=ca.crt=${CERT_DIR}/ | ||
| + | </ | ||
| + | |||
| + | ==== Update Vault Helm values ==== | ||
| + | |||
| + | |||
| + | < | ||
| + | vault: | ||
| + | server: | ||
| + | extraEnvironmentVars: | ||
| + | VAULT_CACERT: | ||
| + | extraVolumes: | ||
| + | - type: secret | ||
| + | name: vault-server-tls | ||
| + | | ||
| + | ha: | ||
| + | raft: | ||
| + | config: | | ||
| + | ui = true | ||
| + | |||
| + | listener " | ||
| + | address = " | ||
| + | cluster_address = " | ||
| + | tls_cert_file = "/ | ||
| + | tls_key_file = "/ | ||
| + | tls_client_ca_file = "/ | ||
| + | } | ||
| + | | ||
| + | storage " | ||
| + | path = "/ | ||
| + | retry_join { | ||
| + | leader_tls_servername = " | ||
| + | leader_api_addr = " | ||
| + | leader_client_cert_file = "/ | ||
| + | leader_client_key_file = "/ | ||
| + | leader_ca_cert_file = "/ | ||
| + | } | ||
| + | | ||
| + | retry_join { | ||
| + | leader_tls_servername = " | ||
| + | leader_api_addr = " | ||
| + | leader_client_cert_file = "/ | ||
| + | leader_client_key_file = "/ | ||
| + | leader_ca_cert_file = "/ | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| ===== Setup Vault backup kubernetes cronjob ===== | ===== Setup Vault backup kubernetes cronjob ===== | ||