Skip to content

ExpediaGroup/apiary-lifecycle

Repository files navigation

Overview

Terraform deployment scripts for Beekeeper.

Includes support for deploying Beekeeper on ECS and Kubernetes. Also includes deployment scripts for a Lambda which notifies Slack when Beekeeper's dead letter queue receives a message (this module is not required to run Beekeeper).

Dependencies

A database password is defined in aws-secrets-manager. The terraform module will use that password for the database (see property k8s_db_password_secret ).

Providers

Name Version
archive n/a
aws n/a
kubernetes n/a
random n/a
template n/a

Inputs

Name Description Type Default Required
allowed_s3_buckets List of S3 Buckets to which Beekeeper will have read-write access. list(string) [] no
apiary_metastore_listener_arn ARN of the Apiary Metastore Listener. string n/a yes
aws_region AWS region to use for resources. string n/a yes
beekeeper_tags A map of tags to apply to resources. map(string) n/a yes
path_cleanup_docker_image Beekeeper Path Cleanup docker image. string "expediagroup/beekeeper-path-cleanup" no
path_cleanup_docker_image_version Beekeeper Path Cleanup docker image version. string "latest" no
path_cleanup_ecs_cpu The amount of CPU used to allocate for the Beekeeper Path Cleanup ECS task.
Valid values: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html
number 2048 no
path_cleanup_ecs_memory The amount of memory (in MiB) used to allocate for the Beekeeper Path Cleanup container.
Valid values: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html
number 4096 no
metadata_cleanup_docker_image Beekeeper Metadata Cleanup docker image. string "expediagroup/beekeeper-metadata-cleanup" no
metadata_cleanup_docker_image_version Beekeeper Metadata Cleanup docker image version. string "latest" no
db_backup_retention The number of days to retain backups for the RDS Beekeeper DB. number 10 no
db_backup_window Preferred backup window for the RDS Beekeeper DB in UTC. string "02:00-03:00" no
db_maintenance_window Preferred maintenance window for the RDS Beekeeper DB in UTC. string "wed:03:00-wed:04:00" no
db_apply_immediately Specifies whether any database modifications are applied immediately, or during the next maintenance window. bool false no
db_performance_insights_enabled Specifies whether Performance Insights are enabled. bool true no
db_password_key Key to acquire the database password for the strategy specified. string n/a yes
db_username Username for the master DB user. string "beekeeper" no
docker_registry_auth_secret_name Docker Registry authentication SecretManager secret name. string "" no
path_cleanup_dry_run_enabled Enable Path Cleanup to perform dry runs of deletions only. string "false" no
metadata_cleanup_dry_run_enabled Enable Metadata Cleanup to perform dry runs of deletions only. string "false" no
graphite_enabled Enable to produce Graphite metrics - true or false. string "false" no
graphite_host Graphite metrics host. string "localhost" no
graphite_port Graphite port. number 2003 no
graphite_prefix Prefix for Graphite metrics. string "" no
metastore_uri URI of the metastore where tables to be cleaned-up are located. Required for Beekeeper Metadata Cleanup. string "" yes
instance_name Beekeeper instance name to identify resources in multi-instance deployments. string "" no
instance_type Service to run Beekeeper on. Supported services: ecs (default), k8s. Leaving this blank will still deploy auxiliary components (e.g. RDS, SQS etc.). string "ecs" no
k8s_app_name Name to give to all Kubernetes resources that are deployed. string "beekeeper" no
k8s_path_cleanup_cpu Total cpu to allot to the Beekeeper Path Cleanup pod. string "500m" no
k8s_path_cleanup_ingress_host Ingress host name for Beekeeper Path Cleanup. string "" no
k8s_path_cleanup_ingress_path Ingress path regex for Beekeeper Path Cleanup. string "" no
k8s_path_cleanup_liveness_delay Liveness delay (in seconds) for the Beekeeper Path Cleanup service. number 60 no
k8s_path_cleanup_memory Total memory to allot to the Beekeeper Path Cleanup pod. string "2Gi" no
k8s_path_cleanup_port Internal port that the Beekeeper Path Cleanup service runs on. number 8008 no
k8s_metadata_cleanup_cpu Total cpu to allot to the Beekeeper Metadata Cleanup pod. string "500m" no
k8s_metadata_cleanup_ingress_host Ingress host name for Beekeeper Metadata Cleanup. string "" no
k8s_metadata_cleanup_ingress_path Ingress path regex for Beekeeper Metadata Cleanup. string "" no
k8s_metadata_cleanup_liveness_delay Liveness delay (in seconds) for the Beekeeper Metadata Cleanup service. number 60 no
k8s_metadata_cleanup_memory Total memory to allot to the Beekeeper Metadata Cleanup pod. string "2Gi" no
k8s_metadata_cleanup_port Internal port that the Beekeeper Metadata Cleanup service runs on. number 9008 no
k8s_image_pull_policy Policy for the Kubernetes orchestrator to pull images. string "Always" no
k8s_ingress_enabled Boolean flag to determine if we should create an ingress or not. (0 = off, 1 = on). number 0 no
k8s_ingress_tls_hosts List of hosts for TLS configuration of a Kubernetes ingress. list(string) [] no
k8s_ingress_tls_secret Secret name for TLS configuration of a Kubernetes ingress. string "" no
k8s_kiam_role_arn KIAM role arn to use for creating a K8S IAM role with the correct assume role permissions. string "" no
k8s_db_password_secret Name of the Kubernetes secret that would store the db password for beekeeper. string "beekeeper-db-password" no
k8s_namespace Namespace to deploy all Kubernetes resources to. string "beekeeper" no
k8s_node_affinity Full node_affinity object as per terraform/Kubernetes docs. object({}) {} no
k8s_node_selector Full node_selector object as per terraform/Kubernetes docs. object({}) {} no
k8s_node_tolerations Full k8s_node_tolerations object as per terraform/Kubernetes docs. object({}) {} no
k8s_scheduler_apiary_cpu Total cpu to allot to the Beekeeper Scheduler Apiary pod. string "500m" no
k8s_scheduler_apiary_ingress_host Ingress host name for Beekeeper Scheduler Apiary. string "" no
k8s_scheduler_apiary_ingress_path Ingress path regex for Beekeeper Scheduler Apiary. string "" no
k8s_scheduler_apiary_liveness_delay Liveness delay (in seconds) for the Beekeeper Scheduling service. number 60 no
k8s_scheduler_apiary_memory Total memory to allot to the Beekeeper Scheduler Apiary pod. string "2Gi" no
k8s_scheduler_apiary_port Internal port that the Beekeeper Scheduler Apiary service runs on. number 8080 no
message_retention_seconds SQS message retention (s). number 604800 no
scheduler_apiary_docker_image Beekeeper Scheduler Apiary image. string "expediagroup/beekeeper-scheduler-apiary" no
scheduler_apiary_docker_image_version Beekeeper Scheduler Apiary image version. string "latest" no
scheduler_apiary_ecs_cpu The amount of CPU used to allocate for the Beekeeper Scheduler Apiary ECS task.
Valid values: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html
number 2048 no
scheduler_apiary_ecs_memory The amount of memory (in MiB) used to allocate for the Beekeeper Scheduler Apiary container.
Valid values: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html
number 4096 no
k8s_api_memory Total memory to allot to the Beekeeper API pod string "1Gi" no
k8s_api_cpu Total cpu to allot to the Beekeeper API pod string "500m" no
k8s_beekeeper_api_port Internal port that the Beekeeper API service runs on number 7008 yes
k8s_api_liveness_delay Liveness delay (in seconds) for the Beekeeper API service number 60 no
k8s_api_ingress_host Ingress host name for Beekeeper API string "" no
k8s_api_ingress_path Ingress path regex for Beekeeper API string "" no
api_docker_image Beekeeper API image string "expediagroup/beekeeper-api" yes
api_docker_image_version Beekeeper API docker image version string "latest" no
prometheus_enabled Enable to pull metrics using Prometheus - true or false. string "false" no
queue_name Beekeeper SQS Queue name. string "apiary-beekeeper" no
queue_stale_messages_timeout Beekeeper SQS Queue Cloudwatch Alert timeout for messages older than this number of seconds. number 1209600 no
rds_allocated_storage RDS allocated storage in GBs. string 10 no
rds_engine_version RDS engine version. string "8.0" no
rds_instance_class RDS instance class. string "db.t2.micro" no
rds_max_allocated_storage RDS max allocated storage (autoscaling) in GBs. string 100 no
rds_parameter_group_name RDS parameter group. string "default.mysql8.0" no
rds_storage_type RDS storage type. string "gp3" no
rds_subnets Subnets in which to provision Beekeeper RDS DB. list(string) n/a yes
receive_wait_time_seconds SQS receive wait time (s). number 20 no
scheduler_apiary_delay_ms Delay between each cleanup job that is scheduled in milliseconds. number 300000 no
slack_channel Slack channel to which alerts about messages landing on the dead letter queue should be sent. string "" no
slack_lambda_enabled Boolean flag to determine if Beekeeper should create a Slack notifying Lambda for the dead letter queue. (0 = off, 1 = on). number 0 no
slack_webhook_url Slack URL to which alerts about messages landing on the dead letter queue should be sent. string "" no
subnets Subnets in which to install Beekeeper. list(string) n/a yes
vpc_id VPC in which to install Beekeeper. string n/a yes

Outputs

No output.

Legal

This project is available under the Apache 2.0 License.

Copyright 2019 Expedia, Inc.