Kubernetes — Hashicorp Vault Sidecar Завис На Инициализации

  • Автор темы Person565364
  • Обновлено
  • 22, Oct 2024
  • #1

Я создаю развертывание Monstache в Kubernetes, которое использует некоторые секреты Vault, которые будут внедрены через дополнительный модуль. Но развертывание зависло на инициализации, и я не получаю никаких ошибок. Может ли кто-нибудь мне помочь?

Это файл, содержащий мое развертывание Kubernetes:

 
 
 # vault bootstrap.sh
vault policy write -namespace=${VAULT_NAMESPACE} monstache /vault/userconfig/vault-secrets/monstache-policy.hcl

# ...

vault write auth/kubernetes/role/monstache \

bound_service_account_names=monstache \

bound_service_account_namespaces=my-namespace \

policies=monstache \

token_max_ttl=20m \

ttl=10m

vault write -namespace=${VAULT_NAMESPACE} auth/kubernetes/role/monstache \

bound_service_account_names=monstache \

bound_service_account_namespaces=my-namespace \

policies=monstache \

token_max_ttl=20m \

ttl=10m

# ...

vault write -namespace=${VAULT_NAMESPACE} database/config/my-mongodb-database \

plugin_name=mongodb-database-plugin \

allowed_roles="db-app","app2","app3","monstache-mongodb" \

connection_url="mongodb://{{username}}:{{password}}@mongodb-headless.mongodb.svc.cluster.local:27017/?replicaSet=rs0&authSource=admin" \

username=${MONGODB_ROOT_USER} \

password=${MONGODB_ROOT_PASSWORD} \

username_template="mongo-user-{{.RoleName}}-{{random 8}}"

vault write -namespace=${VAULT_NAMESPACE} database/roles/monstache-mongodb \

db_name=my-mongodb-database \

creation_statements='{ "db": "admin", "roles": [{ "role" : "read", "db" : "clients" }, { "role" : "read", "db" : "clients_2" }, { "role" : "readWrite", "db" : "monstache" }] }' \

default_ttl="1h" \

max_ttl="24h"

vault write -namespace=${VAULT_NAMESPACE} database/config/my-elasticsearch-database \

plugin_name="elasticsearch-database-plugin" \

allowed_roles="monstache-elastic" \

username=${ELASTIC_ROOT_USER} \

password=${ELASTIC_ROOT_PASSWORD} \

url=http://elastic-coordinating-only.elastic.svc.cluster.local:9200 \

ca_cert=/vault/userconfig/elastic-coordinating-only-crt/ca.crt \

client_cert=/vault/userconfig/elastic-coordinating-only-crt/tls.crt \

client_key=/vault/userconfig/elastic-coordinating-only-crt/tls.key

vault write -namespace=${VAULT_NAMESPACE} database/roles/monstache-elastic \

db_name=my-elasticsearch-database \

creation_statements='{"elasticsearch_role_definition": {"indices": [{"names":["*"], "privileges":["manage","read","write"]}]}}' \

default_ttl="1h" \

max_ttl="24h"
 

Это политика для ServiceAccount развертывания:

#monstache-policy.hcl path "secret/hashiconf" { capabilities = ["read"] } path "database/creds/monstache-elastic" { capabilities = ["read"] } path "database/creds/monstache-mongodb" { capabilities = ["read"] }

Этот скрипт настраивает HashiCorp Vault при инициализации, я пропустил некоторые команды, например включение Kubernetes:

# Monstache.yaml apiVersion: v1 kind: ServiceAccount metadata: name: monstache namespace: my-namespace labels: app: monstache --- apiVersion: apps/v1 kind: Deployment metadata: name: monstache namespace: my-namespace spec: selector: matchLabels: app: monstache replicas: 1 # restartPolicy: OnFailure template: metadata: labels: app: monstache annotations: # AGENT INJECTOR SETTINGS vault.hashicorp.com/agent-inject: "true" vault.hashicorp.com/agent-inject-status: "update" vault.hashicorp.com/agent-run-as-same-user: "true" # DATABASE SECRET vault.hashicorp.com/agent-inject-secret-monstache-elastic: "database/creds/monstache-elastic" vault.hashicorp.com/agent-inject-template-monstache-elastic: | {{- with secret "database/creds/monstache-elastic" -}} export MONSTACHE_ES_USER={{ .Data.username }} export MONSTACHE_ES_PASS={{ .Data.password }} {{- end -}} vault.hashicorp.com/agent-inject-command-monstache-elastic: "sh -c 'exit 0'" vault.hashicorp.com/agent-inject-secret-monstache-mongodb: "database/creds/monstache-mongodb" vault.hashicorp.com/agent-inject-template-monstache-mongodb: | {{- with secret "database/creds/monstache-mongodb" -}} export MONSTACHE_MONGO_URL=mongodb://{{ .Data.username }}:{{ .Data.password }}@mongodb-headless.mongodb.svc.cluster.local:27017/?replicaSet=rs0&authSource=admin {{- end }} vault.hashicorp.com/agent-inject-command-monstache-mongodb: "sh -c 'exit 0'" # VAULT SETTINGS vault.hashicorp.com/role: "monstache" vault.hashicorp.com/tls-secret: "tls-client" vault.hashicorp.com/ca-cert: "/vault/tls/ca.crt" spec: shareProcessNamespace: true serviceAccountName: monstache terminationGracePeriodSeconds: 5 containers: - name: server image: rwynn/monstache imagePullPolicy: IfNotPresent command: ["source ${MONGO_DB_CREDS_PATH}", "source ${ELASTIC_DB_CREDS_PATH}"] securityContext: runAsUser: 100 runAsGroup: 1000 volumeMounts: - name: elastic-coordinating-only-crt mountPath: "/server/userconfig/elastic-coordinating-only-crt" readOnly: true env: - name: MONGO_DB_CREDS_PATH value: "/vault/secrets/monstache-mongodb" - name: ELASTIC_DB_CREDS_PATH value: "/vault/secrets/tendernedscraper-db" - name: MONSTACHE_CHANGE_STREAM_NS value: "tenderned,clients" - name: MONSTACHE_ES_URLS value: "http://elastic-coordinating-only.elastic.svc.cluster.local:9200" - name: MONSTACHE_ES_PEM value: "/server/userconfig/elastic-coordinating-only-crt/ca.crt" - name: MONSTACHE_ES_PKI_CERT value: "/server/userconfig/elastic-coordinating-only-crt/tls.crt" - name: MONSTACHE_ES_PKI_KEY value: "/server/userconfig/elastic-coordinating-only-crt/tls.key" volumes: - name: elastic-coordinating-only-crt secret: secretName: elastic-coordinating-only-crt optional: false

#kubernetes #hashicorp-vault #minikube

Person565364


Рег
20 Jul, 2022

Тем
72

Постов
208

Баллов
578
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно