Skip to content

Deployment Guide

This guide provides instructions for deploying and managing the FedRAMP High Event-Driven Data Mesh infrastructure.

  • AWS Account with appropriate permissions
  • Terraform 1.0+
  • AWS CLI configured with appropriate credentials
  • kubectl configured for Kubernetes access (if using EKS)
  • Databricks CLI configured with workspace credentials
  1. Clone the repository:
    Terminal window
    git clone https://github.com/frocore/fedramp-data-mesh.git
    cd fedramp-data-mesh
  2. Initialize Terraform:
Terminal window
cd platform/infrastructure/terraform
terraform init -backend-config=environments/dev/backend.tfvars
### 2. Configure Env Variables
Create a .env file with the necessary environment variables:
```bash
# AWS Configuration
export AWS_REGION=us-east-1
export AWS_PROFILE=fedramp-data-mesh
# Databricks Configuration
export DATABRICKS_ACCOUNT_ID=your-account-id
export DATABRICKS_ACCOUNT_USERNAME=your-username
export DATABRICKS_ACCOUNT_PASSWORD=your-password

Source the envars:

Terminal window
source .env
  1. Plan the deployment:
Terminal window
terraform plan -var-file=environments/dev/terraform.tfvars
  1. Apply the changes:
Terminal window
terraform apply -var-file=environments/dev/terraform.tfvars
  1. Take note of the outputs, which include important information about the deployed resources.
  1. Configure kubectl to connect to the newly created EKS cluster:
Terminal window
aws eks update-kubeconfig --name fedramp-data-mesh-eks-dev --region us-east-1
  1. Deploy Kubernetes components:
Terminal window
cd ../kubernetes
kubectl apply -f namespace.yaml
kubectl apply -k schema-registry
kubectl apply -k kafka-connect
kubectl apply -k monitoring
  1. Log in to Databricks:
Terminal window
databricks configure --token
  1. Create catalogs for each domain:
Terminal window
# Create Project Management catalog
databricks unity-catalog catalogs create \
--name project_management \
--comment "Project Management domain catalog"
# Create Financials catalog
databricks unity-catalog catalogs create \
--name financials \
--comment "Financials domain catalog"
  1. Configure Kafka Connect for source databases:
Terminal window
# Create Projects source connector
curl -X POST -H "Content-Type: application/json" \
--data @domains/project-management/producers/project-state/connector-config.json \
http://kafka-connect.fedramp-data-mesh.example.com:8083/connectors
  1. Create a Databricks job for each processor:
Terminal window
# Create Project State Processor job
databricks jobs create --json @domains/project-management/processors/spark/job-config.json
  1. Configure CloudWatch Dashboards:
Terminal window
aws cloudwatch create-dashboard \
--dashboard-name FedRAMP-DataMesh-Overview \
--dashboard-body file://monitoring/cloudwatch-dashboards/overview.json```
2. Set up alerts:
```bash
aws cloudwatch put-metric-alarm \
--alarm-name DataMesh-Kafka-HighLag \
--alarm-description "Alert when Kafka consumer lag is too high" \
--metric-name "kafka-consumer-lag" \
--namespace "AWS/MSK" \
--statistic Average \
--period 300 \
--threshold 1000 \
--comparison-operator GreaterThanThreshold \
--dimensions "Name=ClusterName,Value=fedramp-data-mesh-kafka-dev" \
--evaluation-periods 2 \
--alarm-actions ${SNS_TOPIC_ARN}
  1. Rotate encryption keys:
Terminal window
# Update KMS key for S3
aws kms enable-key-rotation --key-id ${S3_KMS_KEY_ID}
  1. Update Kafka configurations:
Terminal window
aws kafka update-cluster-configuration \
--cluster-arn ${KAFKA_CLUSTER_ARN} \
--current-version ${CURRENT_CLUSTER_VERSION} \
--configuration-info file://kafka-config-updates.json
  1. Patch Kubernetes components:
Terminal window
kubectl apply -k schema-registry
  1. S3 data is automatically versioned and cross-region replicated
  2. Kafka topics should be configured with appropriate replication factor (3)
  3. Critical configurations are stored in version control
  4. Database backups are automated through AWS Backup
  1. In case of region failure, follow these steps:
  • Activate standby infrastructure in secondary region
  • Update DNS to point to secondary region
  • Ensure all credentials and configurations are available
  1. Test DR procedures regularly:
Terminal window
# Run DR test script
./scripts/dr-test.sh
  1. Rotate credentials regularly:
Terminal window
# Rotate service account credentials
./scripts/rotate-credentials.sh
  1. Review access:
Terminal window
# Generate access report
./scripts/access-review.sh > access-review-$(date +%Y-%m-%d).txt
  1. Check GuardDuty findings:
Terminal window
aws guardduty list-findings
  1. Run security scans:
Terminal window
# Run infrastructure security scan
./scripts/security-scan.sh
  • Check security groups
  • Verify credentials
  • Check network connectivity
  • Check job logs
  • Verify access to S3
  • Check schema compatibility issues
  • Verify schema compatibility
  • Check for breaking changes

For more detailed troubleshooting, refer to the Troubleshooting Guide.