Schedule icon
Script icon
If icon
Create icon
SlackIncomingWebhook icon
Log icon

HashiCorp Vault Seal Status and HA Cluster Sentinel

Monitor HashiCorp Vault cluster seal status and HA readiness with Kestra. Query sys/health endpoints, log GitHub incident issues, and alert SecOps on Slack.

Categories
CloudInfrastructure

Enterprise secrets management relies entirely on HashiCorp Vault to supply database credentials, API tokens, and encryption keys to production microservices. When a Vault node restarts, unseal keys must be provided via Shamir secret sharing or cloud KMS unseal (AWS KMS, Azure Key Vault, GCP Cloud KMS). If an unexpected seal occurs, all downstream applications immediately fail secrets retrieval. This blueprint probes HashiCorp Vault's /v1/sys/health endpoint on an aggressive schedule, detects sealed or uninitialized cluster states, files an automated P1 GitHub tracking issue, and alerts on-call SecOps engineers via Slack.

How it works

  1. check_vault_health_frequent (io.kestra.plugin.core.trigger.Schedule) initiates the audit every 5 minutes (shipped disabled for safe verification).
  2. probe_vault_sys_health (io.kestra.plugin.scripts.python.Script) interrogates the unauthenticated Vault /v1/sys/health API endpoint, reading sealed, initialized, cluster_name, and version fields.
  3. branch_on_vault_status (io.kestra.plugin.core.flow.If) evaluates whether Vault is sealed or uninitialized (is_critical == true):
    • then: Automatically files a P1 GitHub tracking issue via create_vault_outage_issue (io.kestra.plugin.github.issues.Create) and alerts the SecOps Slack channel via alert_secops_slack (io.kestra.plugin.slack.notifications.SlackIncomingWebhook).
    • else: Emits an informational log entry (log_vault_healthy) confirming normal cluster operations.
  4. log_audit_complete (io.kestra.plugin.core.log.Log) records the final health summary.
  5. The errors block alerts Slack if network connectivity or DNS resolution fails.

What you get

  • Automated, continuous visibility into Vault cluster availability and seal status.
  • Zero delayed response when unexpected node reboots leave Vault locked.
  • Consolidated GitHub incident tickets with cluster names, versions, and initialization details.
  • Real-time Slack notifications with direct ticket hyperlinks.

Who it's for

  • DevSecOps and Platform Security Engineers operating Vault clusters.
  • Site Reliability Engineers ensuring continuous secrets availability.
  • Cloud Infrastructure leads establishing automated incident runbooks.

Why orchestrate this with Kestra

Kestra bridges unauthenticated cluster health probing, conditional escalation, issue ticketing, and team alerting in a single declarative workflow. It provides complete execution history, and eliminates the need for standalone monitoring daemons or fragmented bash cron scripts.

Prerequisites

  • A HashiCorp Vault cluster accessible over HTTPS.
  • A GitHub Personal Access Token with repository issue creation permissions.
  • A Slack incoming webhook URL for notifications.

Secrets

  • GITHUB_TOKEN: GitHub token used to open incident issues.
  • SLACK_WEBHOOK: Incoming Webhook URL for security alerts.

Inputs

  • vault_address (STRING, default https://vault.internal.company.com:8200): HashiCorp Vault cluster URL.
  • target_repository (STRING, default my-org/security-infrastructure): Target GitHub repository for logging incident issues.

Outputs

  • outputs.probe_vault_sys_health.vars.is_sealed: Boolean indicating if Vault is currently sealed.
  • outputs.probe_vault_sys_health.vars.is_initialized: Boolean indicating if Vault is initialized.
  • outputs.probe_vault_sys_health.vars.cluster_name: Registered cluster name identifier.

Quick start

  1. Configure GITHUB_TOKEN and SLACK_WEBHOOK in your Kestra namespace.
  2. Import this flow and set vault_address to match your cluster endpoint.
  3. Run the flow manually to verify health extraction and Slack notification delivery.
  4. Enable the check_vault_health_frequent trigger for continuous cluster monitoring.

How to extend

  • Add an automated unseal task utilizing cloud KMS or transit auto-unseal mechanisms.
  • Route critical alerts to PagerDuty or Opsgenie for high-priority on-call paging.
  • Probe individual node IP addresses behind the load balancer to catch standby node seal drift.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.