我正在嘗試探索 vault 企業,但是當我使用 vault 企業時獲得 sidecar 的許可被拒絕,但當我嘗試使用本地 vault 服務器時似乎作業正常。
這是包含本地 vault 
保險庫配置
export VAULT_ADDR="https://vault-cluster.vault.c1c633fa-91ef-4e86-b025-4f31b3f14730.aws.hashicorp.cloud:8200"
export VAULT_NAMESPACE="admin"
#install agent
helm upgrade --install vault hashicorp/vault --set "injector.externalVaultAddr=$VAULT_ADDR"
vault auth enable kubernetes
# get certs & host
VAULT_HELM_SECRET_NAME=$(kubectl get secrets --output=json | jq -r '.items[].metadata | select(.name|startswith("vault-token-")).name')
TOKEN_REVIEW_JWT=$(kubectl get secret $VAULT_HELM_SECRET_NAME --output='go-template={{ .data.token }}' | base64 --decode)
KUBE_CA_CERT=$(kubectl config view --raw --minify --flatten --output='jsonpath={.clusters[].cluster.certificate-authority-data}' | base64 --decode)
KUBE_HOST=$(kubectl config view --raw --minify --flatten --output='jsonpath={.clusters[].cluster.server}')
# set Kubernetes config
vault write auth/kubernetes/config \
token_reviewer_jwt="$TOKEN_REVIEW_JWT" \
kubernetes_host="$KUBE_HOST" \
kubernetes_ca_cert="$KUBE_CA_CERT" \
issuer="https://kubernetes.default.svc.cluster.local" \
disable_iss_validation="true" \
disable_local_ca_jwt="true"
vault auth enable approle
# create admin policy
vault policy write admin admin-policy.hcl
vault write auth/approle/role/admin policies="admin"
vault read auth/approle/role/admin/role-id
# generate secret
vault write -f auth/approle/role/admin/secret-id
#Enable KV
vault secrets enable -version=2 kv
我可以看到角色和政策

管理政策
這是企業的管理策略
path "*" {
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
為 helm 部署腳本
這是部署腳本,嘗試了hcp-root根策略但沒有運氣
RELEASE_NAME=demo-managed
NAMESPACE=default
ENVIRONMENT=develop
export role_id="f9782a53-823e-2c08-81ae-abc"
export secret_id="1de3b8c5-18c7-60e3-24ca-abc"
export VAULT_ADDR="https://vault-cluster.vault.c1c633fa-91ef-4e86-b025-4f31b3f14730.aws.hashicorp.cloud:8200"
export VAULT_TOKEN=$(vault write -field="token" auth/approle/login role_id="${role_id}" secret_id="${secret_id}")
vault write auth/kubernetes/role/${NAMESPACE}-${RELEASE_NAME} bound_service_account_names=${RELEASE_NAME} bound_service_account_namespaces=${NAMESPACE} policies=hcp-root ttl=1h
helm upgrade --install $RELEASE_NAME ../helm-chart --set environment=$ENVIRONMENT --set nameOverride=$RELEASE_NAME
還嘗試使用根令牌
RELEASE_NAME=demo-managed
NAMESPACE=default
ENVIRONMENT=develop
vault write auth/kubernetes/role/${NAMESPACE}-${RELEASE_NAME} bound_service_account_names=${RELEASE_NAME} bound_service_account_namespaces=${NAMESPACE} policies=hcp-root ttl=1h
helm upgrade --install $RELEASE_NAME ../helm-chart --set environment=$ENVIRONMENT --set nameOverride=$RELEASE_NAME
邊車配置
使用命名空間注釋,根據我的理解命名空間是必需的
vault.hashicorp.com/namespace - 配置從 Vault 請求機密時要使用的 Vault Enterprise 命名空間。

Kubernetes 應該可以訪問 vault Enterprise 以進行令牌審查 API 呼叫。正如您所看到的,當 sidecar 向保管庫發出請求時,保管庫企業服務器執行令牌審查 API 呼叫。
使用 /config 端點配置Vault 以與 Kubernetes 對話。使用 kubectl cluster-info 驗證Kubernetes 主機地址和 TCP 埠。
https://www.vaultproject.io/docs/auth/kubernetes
| Error making API request.
|
| URL: PUT https://vault-cluster.vault.c1c633fa-91ef-4e86-b025-4f31b3f14730.aws.hashicorp.cloud:8200/v1/admin/auth/kubernetes/login
| Code: 403. Errors:
|
| * permission denied
backoff=2.99s
此錯誤并不表示存在連接問題,但當保管庫無法與 Kubernetes 集群通信時也會發生這種情況。
kube主機
vault write auth/kubernetes/config \
token_reviewer_jwt="$TOKEN_REVIEW_JWT" \
kubernetes_host="$KUBE_HOST" \
kubernetes_ca_cert="$KUBE_CA_CERT" \
issuer="https://kubernetes.default.svc.cluster.local"
KUBE_HOST 保險庫企業應該可以訪問令牌審查程序。
因此,為了使保管庫與我們的集群通信,我們需要進行一些更改。
minikube start --apiserver-ips=14.55.145.30 --vm-driver=none
現在更新vaul-config.sh檔案
KUBE_HOST=$(kubectl config view --raw --minify --flatten --output='jsonpath={.clusters[].cluster.server}')
將此更改為
KUBE_HOST=""https://14.55.145.30:8443/"
無需手動步驟,首次配置運行
./vault-config.sh
對于 CI/CD 中的其余部署,您可以使用
./vault.sh
每個版本只能訪問自己的機密。
可以在start-minikube-in-ec2 中找到更多詳細資訊
TLDR,
Note: Kubernetes cluster should be reachable to vault enterprise for authentication, so vault enterprise would not able to communicate with your local minikube cluster. Better to test it out on EC2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/348879.html
標籤:Kubernetes hashicorp-保险库 金库 边车
