From 01d9ab0de49251de2e26a9e2fc18e2ec21f72fbe Mon Sep 17 00:00:00 2001 From: kosiakkatrina <54268893+kosiakkatrina@users.noreply.github.com> Date: Tue, 28 Nov 2023 09:37:09 +0000 Subject: [PATCH] CLDC-2556 Update infrastructure documentation (#2045) * Update gov paas - aws documentation * Remove architecture diagram --- README.md | 4 - docs/adr/adr-020-migration-to-aws.md | 9 + docs/images/architecture.drawio.png | Bin 147172 -> 0 bytes docs/index.md | 2 - docs/infrastructure.md | 313 ++++++--------------------- docs/monitoring.md | 56 +++-- 6 files changed, 122 insertions(+), 262 deletions(-) create mode 100644 docs/adr/adr-020-migration-to-aws.md delete mode 100644 docs/images/architecture.drawio.png diff --git a/README.md b/README.md index cccb080f2..1e5bb10f8 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,6 @@ Ruby on Rails app that handles the submission of lettings and sales of social ho * [API browser](https://communitiesuk.github.io/submit-social-housing-lettings-and-sales-data/api) (using this [OpenAPI specification](docs/api/v1.json)) * [Design history](https://core-design-history.herokuapp.com) -## System architecture - -![View of system architecture](docs/images/architecture.drawio.png) - ## User interface ![View of the logs list](docs/images/service.png) diff --git a/docs/adr/adr-020-migration-to-aws.md b/docs/adr/adr-020-migration-to-aws.md new file mode 100644 index 000000000..f7a900750 --- /dev/null +++ b/docs/adr/adr-020-migration-to-aws.md @@ -0,0 +1,9 @@ +--- +parent: Architecture decisions +--- + +# 020: Migration to AWS + +GOV.UK PaaS is being decomissioned at the end of this year and by 23 December 2023 all services hosted on GOV.UK PaaS will need to have migrated to an alternate hosting platform. + +Like other DLUHC services, we are moving our service directly to DLUHC-owned AWS infrastructure. diff --git a/docs/images/architecture.drawio.png b/docs/images/architecture.drawio.png deleted file mode 100644 index 9f83da64fffb94265aaa72aba5b6d19c57dd8e42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147172 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

|fMTZ^i@oUz{KV80)u`uj=j>(TYJQB8-8 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 bW@|T!roHdjMw2{nM=3NlbT8zegWvui%W~n4 diff --git a/docs/index.md b/docs/index.md index c8811ce76..b41df293c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -12,8 +12,6 @@ Each data collection window runs from 1 April to 1 April the following year (plu ADD (Analytics & Data Directorate) statisticians are the other primary users of the service. The data collected is transferred to DLUHCs consolidated data store (CDS) via nightly XML exports to an S3 bucket. CDS ingests and transforms this data, ultimately storing it in a MS SQL database and exposing it to analysts and statisticians via Amazon Workspaces. -![Diagram of the CORE system architecture](https://raw.githubusercontent.com/communitiesuk/submit-social-housing-lettings-and-sales-data/main/docs/images/architecture.drawio.png) - ## Users External data providing organisations have 2 main user types: diff --git a/docs/infrastructure.md b/docs/infrastructure.md index a4b8b940d..6155dcf50 100644 --- a/docs/infrastructure.md +++ b/docs/infrastructure.md @@ -4,48 +4,51 @@ nav_order: 5 # Infrastructure -## Configuration - -On [GOV.UK PaaS](https://www.cloud.service.gov.uk/), service credentials are appended to the environment variable `VCAP_SERVICES` when services [are bound](https://docs.cloud.service.gov.uk/deploying_services/s3/#bind-an-aws-s3-bucket-to-your-app) to an application. -Such services include datastores and S3 buckets. - -Our application uses S3 and Redis clients and supports two different ways of parsing their configuration: -* Via the environment variable `VCAP_SERVICES` using the `PaasConfigurationService` class -* Via the environment variables `S3_CONFIG` and `REDIS_CONFIG` using the `EnvConfigurationService` class - -`S3_CONFIG` and `REDIS_CONFIG` are populated using a similar structure than `VCAP_SERVICES`: - -S3_CONFIG: -```json -[ - { - "instance_name": "bucket_1", - "credentials": { - "aws_access_key_id": "123", - "aws_secret_access_key": "456", - "aws_region": "eu-west-1", - "bucket_name": "my-bucket" - } - } -] -``` - -REDIS_CONFIG: -```json -[ - { - "instance_name": "redis_1", - "credentials": { - "uri": "redis_uri" - } - } -] -``` - -In order to switch from using [GOV.UK PaaS](https://www.cloud.service.gov.uk/) provided services to external ones, instances of `PaasConfigurationService` need to be replaced by `EnvConfigurationService`. -This assumes that `S3_CONFIG` or/and `REDIS_CONFIG` are available. - -Please check `full_import.rake` and `rack_attack.rb` for examples of how the configuration is used. +## Current infrastructure + +Currently, there are four environments with infrastructure: +- Meta +- Development (Review Apps) +- Staging +- Production + +### Meta +This holds the Terraform “backend” and the ECR(s). +The Terraform “backend” consists of: +- S3 buckets - for storing Terraform state files. One for all non-production environments (including the meta environment itself), and another just for production. +- DynamoDB - for managing access and locking of all state files. + +The ECR(s) are: +- core - holds the application Docker images. +- db-migration - holds the Docker images curated to help migrate a DB from PaaS to AWS. +- s3-migration - holds the Docker images curated to help migrate S3 files from PaaS to AWS. +N.B. the migration ECRs may or may not be present, depending on if the Terraform has been configured to create migration infrastructure. The migration infrastructure is only used to help migrate the DB and S3 from PaaS to AWS, so is usually therefore only temporarily present. + +### Development / Staging / Production +These are the main environments holding the “application” infrastructure. +Though not exhaustive, each of them will generally contain the following key components: +- ECS Fargate cluster +- RDS (PostgreSQL database) +- ElastiCache (Redis data store) +- S3 buckets + - One for Bulk upload (sometimes also to referred to as the CSV bucket) + - One for CDS Export +- VPC +- Private subnets +- Public subnets +- Load Balancer +- Other misc. networking components (e.g. routing tables, gateways) +- CloudFront (Content Delivery Network) +- AWS Shield (DDoS protection, when enabled) +- WAF (Firewall) + +### Development / Review Apps +The development environment is used for Review Apps, and has some infrastructure that is created per-review-app and some that is shared by all apps. +In general, each review app has its own ECS Fargate cluster and Redis instances (plus any infrastructure to enable this), while the rest is shared. + +Where to find the Infrastructure? +The infrastructure is managed as code. +In the terraform folder of the codebase, there will be dedicated sub-folders for each of the aforementioned environments, where all the infrastructure for them is defined. ## Deployment (Pipeline — Recommended) @@ -61,224 +64,50 @@ To deploy you need to: 6. Post success message on Slack. 7. Tag tickets as ‘Released’ and move tickets to done on JIRA. -## Deployment (Manual) - -It is unlikely you will need to deploy manually as the GitHub actions method supersedes this one. This application is running on [GOV.UK PaaS](https://www.cloud.service.gov.uk/). To deploy you need to: - -1. Contact your organisation manager to get an account in `dluhc-core` organization and in the relevant spaces (staging/production). - -2. [Install the Cloud Foundry CLI](https://docs.cloudfoundry.org/cf-cli/install-go-cli.html) - -3. Login: - - ```bash - cf login -a api.london.cloud.service.gov.uk -u - ``` - -4. Set your deployment target (staging/production): - - ```bash - cf target -o dluhc-core -s - ``` - -5. Deploy: - - ```bash - cf push dluhc-core --strategy rolling - ``` - - This will use the [manifest file](https://github.com/communitiesuk/submit-social-housing-lettings-and-sales-data/blob/main/manifest.yml) - -Once the app is deployed: - -1. Get a Rails console: - - ```bash - cf ssh dluhc-core-staging -t -c "/tmp/lifecycle/launcher /home/vcap/app 'rails console' ''" - ``` - -2. Check logs: - - ```bash - cf logs dluhc-core-staging --recent - ``` - -### Troubleshooting deployments - -A failed Github deployment action will occasionally leave a Cloud Foundry deployment in a broken state. As a result all subsequent Github deployment actions will also fail with the message `Cannot update this process while a deployment is in flight`. - -```bash -cf cancel-deployment dluhc-core -``` - -You would then need to check the logs and fix the issue that caused the initial deployment to fail. ## CI/CD When a commit is made to `main` the following GitHub action jobs are triggered: 1. **Test**: RSpec runs our test suite -2. **Deploy**: If the Test stage passes, this job will deploy the app to our GOV.UK PaaS account using the Cloud Foundry CLI +2. **AWS Deploy**: If the Test stage passes, this job will deploy the app to AWS When a pull request is opened to `main` only the Test stage runs. ## Review apps -When a pull request is opened a review app will be spun up. The reviews apps connect to their own PostgreSQL and Redis instances with its own worker. +When a pull request is opened a review app will be spun up. Each review app has its own ECS Fargate cluster and Redis instances (plus any infrastructure to enable this), while the rest is shared. The review app github pipeline is independent of any test pipeline and therefore it will attempt to deploy regardless of the state the code is in. The usual seeding process takes place when the review app boots so there will be some minimal data that can be used to login with. 2FA has been disabled in the review apps for easier access. -The app boots in a new environment called `review`. As such this is the environment you should filter by for sentry errors or to change any config. +The app boots in a new environment called `development`. As such this is the environment you should filter by for sentry errors or to change any config. After a sucessful deployment a comment will be added to the pull request with the URL to the review app for your convenience. When a pull request is updated e.g. more code is added it will re-deploy the new code. Once a pull request has been closed the review app infrastructure will be tore down to save on any costs. Should you wish to re-open a closed pull request the review app will be spun up again. -### How to fix review app deployment failures - -One reason a review app deployment might fail is that it is attempting to run migrations which conflict with data in the database. For example you might have introduced a unique constraint, but the database associated with the review app has duplicate data in it that would violate this constraint, and so the migration cannot be run. There are two main ways to remedy this: - -**Method 1 - Edit database via console** -1. Log in to Cloud Foundry - ```bash - cf login -a api.london.cloud.service.gov.uk -u - ``` - * Your username should be the email address you signed up to GOVUK PaaS with. - * Choose the dev environment whilst logging in. -2. If you were already logged in then Cloud Foundry, then instead just target the dev environment - ```bash - cf target -o dluhc-core -s dev - ``` -3. Find the name of your app - ```bash - cf apps - ``` - * The app name will be in this format: `dluhc-core-review-`. -4. Open a console for your app - ```bash - cf ssh -t -c "/tmp/lifecycle/launcher /home/vcap/app 'rails console' ''" - ``` -5. Edit the database as appropriate, e.g. delete dodgy data and recreate correctly - -**Method 2 - Nuke and restart** - -1. Find the name of your app - ```bash - cf apps - ``` - * The app name will be in this format: `dluhc-core-review-`. -2. Delete the app - ```bash - cf delete - ``` -3. Find the name of the matching Postgres service - ```bash - cf services - ``` - * The service name will be in this format: `dluhc-core-review--postgres`. -4. Delete the service - ```bash - cf delete-service - ``` - * Use `cf services` or `cf service ` to check the operation status. - * There's no need to delete the Redis service. -5. Re-run the whole review app pipeline in GitHub - * If it fails it's likely that the deletion from the previous step hadn't completed yet. So just wait a few minutes and re-run the pipeline again. - -## Setting up Infrastructure for a new environment - -### Staging - -1. Login: - - ```bash - cf login -a api.london.cloud.service.gov.uk -u - ``` - -2. Set your deployment target (staging): - - ```bash - cf target -o dluhc-core -s staging - ``` - -3. Create required Postgres, Redis and S3 bucket backing services (this will take ~15 mins to finish creating): - - ```bash - cf create-service postgres tiny-unencrypted-13 dluhc-core-staging-postgres - cf create-service redis micro-6.x dluhc-core-staging-redis - cf create-service aws-s3-bucket default dluhc-core-staging-csv-bucket - cf create-service aws-s3-bucket default dluhc-core-staging-import-bucket - cf create-service aws-s3-bucket default dluhc-core-staging-export-bucket - ``` - -4. Deploy manifest: - - ```bash - cf push dluhc-core-staging --strategy rolling - ``` - -5. Bind S3 services to app: - - ```bash - cf bind-service dluhc-core-staging dluhc-core-staging-csv-bucket - cf bind-service dluhc-core-staging dluhc-core-staging-redis - cf bind-service dluhc-core-staging dluhc-core-staging-import-bucket -c '{"permissions": "read-write"}' - cf bind-service dluhc-core-staging dluhc-core-staging-export-bucket -c '{"permissions": "read-write"}' - ``` - -6. Create a service keys for accessing the S3 bucket from outside Gov PaaS: - - ```bash - cf create-service-key dluhc-core-staging-csv-bucket csv-bucket -c '{"allow_external_access": true}' - cf create-service-key dluhc-core-staging-import-bucket data-import -c '{"allow_external_access": true}' - cf create-service-key dluhc-core-staging-export-bucket data-export -c '{"allow_external_access": true, "permissions": "read-only"}' - ``` - -### Production - -1. Login: - - ```bash - cf login -a api.london.cloud.service.gov.uk -u - ``` - -2. Set your deployment target (production): - - ```bash - cf target -o dluhc-core -s production - ``` - -3. Create required Postgres, Redis and S3 bucket backing services (this will take ~15 mins to finish creating): - - ```bash - cf create-service postgres small-ha-13 dluhc-core-production-postgres - cf create-service redis micro-ha-6.x dluhc-core-production-redis - cf create-service aws-s3-bucket default dluhc-core-production-csv-bucket - cf create-service aws-s3-bucket default dluhc-core-production-import-bucket - cf create-service aws-s3-bucket default dluhc-core-production-export-bucket - ``` - -4. Deploy manifest: - - ```bash - cf push dluhc-core-production --strategy rolling - ``` - -5. Bind S3 services to app: - - ```bash - cf bind-service dluhc-core-production dluhc-core-production-csv-bucket - cf bind-service dluhc-core-production dluhc-core-production-redis - cf bind-service dluhc-core-production dluhc-core-production-import-bucket -c '{"permissions": "read-write"}' - cf bind-service dluhc-core-production dluhc-core-production-export-bucket -c '{"permissions": "read-write"}' - ``` - -6. Create a service keys for accessing the S3 bucket from outside Gov PaaS: - - ```bash - cf create-service-key dluhc-core-production-csv-bucket dluhc-core-production-csv-bucket-service-key -c '{"allow_external_access": true}' - cf create-service-key dluhc-core-production-import-bucket data-import -c '{"allow_external_access": true}' - cf create-service-key dluhc-core-production-export-bucket data-export -c '{"allow_external_access": true, "permissions": "read-only"}' - ``` +### Review app deployment failures + +One reason a review app deployment might fail is that it is attempting to run migrations which conflict with data in the database. For example you might have introduced a unique constraint, but the database associated with the review app has duplicate data in it that would violate this constraint, and so the migration cannot be run. + +## Destroying/recreating infrastructure + +Things to watch out for when destroying/creating infra: +- All resources + - The lifecycle meta-argument prevent_destroy will stop you destroying things. Best to set this to false before trying to destroy! +- Database + - skip_final_snapshot being false will prevent you from destroying the db without creating a final snapshot. +- Load Balancer + - Sometimes when creating infra, you may see the error message: failure configuring LB attributes: InvalidConfigurationRequest: Access Denied for bucket: . Please check S3bucket permission during a terraform apply. To get around this you may have wait a few minutes and try applying again to ensure everything is fully updated (the error shouldn’t appear on the second attempt). It’s unclear what the exact cause is, but as this is related to infra that enables load balancer access logging, it is suspected there might be a delay with the S3 bucket permissions being realised or the load balancer recognising it can access the bucket. +- S3 + - Terraform won’t let you delete buckets that have objects in them. +- Secrets + - If you destroy secrets, they will actually be marked as ‘scheduled to delete’ which will take effect after a minimum of 7 days. You can’t recreate secrets with the same name during this period. If you want to destroy immediately, you need to do it from the command line (using your staging developer role, rather than your MHCLG-wide role used to apply Terraform) with this command: aws secretsmanager delete-secret --force-delete-without-recovery --secret-id . (Note that if a secret is marked as scheduled to delete, you can undo this in the console to make it an ‘active’ secret again.) + - You may need to manually re-enter secret values into Secrets Manager at some point. When you do, just paste the secret value as plain text (don’t enter a key name, or format it as JSON). +- ECS + - Sometimes task definitions don’t get deleted. You may need to manually delete them. + - After destroying the db, you’ll need to make sure the ad hoc ECS task which seeds the database gets run in order to set up the database correctly. +- SNS + - When creating an email subscription in an environment, Terraform will look up the email to use as the subscription endpoint from Secrets Manager. If you haven’t already created this (e.g. by running terraform apply -target="module.monitoring" -var="create_secrets_first=true") then this will lead to the subscription creation erroring, because it can’t retrieve the value of the secret (because it doesn’t exist yet). If this happens, remember you’ll need to go to Secrets Manager in the console and enter the desired email (as plaintext, no quotation marks or anything else required) as the value of the secret (which is most likely called MONITORING_EMAIL). Then run another apply with Terraform and this time it should succeed. diff --git a/docs/monitoring.md b/docs/monitoring.md index ac1a12f83..dd2234743 100644 --- a/docs/monitoring.md +++ b/docs/monitoring.md @@ -2,20 +2,48 @@ nav_order: 6 --- -# Monitoring - -We use self-hosted Prometheus and Grafana for monitoring infrastructure metrics. These are run in a dedicated Gov PaaS space called "monitoring" and are deployed as Docker images using GitHub action pipelines. The repository for these and more information is here: [dluhc-data-collection-monitoring](https://github.com/communitiesuk/dluhc-data-collection-monitoring). - -## Performance monitoring and alerting - -For application error and performance monitoring we use managed [Sentry](https://sentry.io/organizations/dluhc-core). You will need to be added to the DLUHC account to access this. It triggers slack notifications to the #team-data-collection-alerts channel for all application errors in staging and production and for any controller endpoints that have a P95 transaction duration > 250ms over a 24 hour period. - +# Logs and Debugging ## Logs +Logs can be found in two locations: +- AWS CloudWatch (for general application / infrastructure logging) +- Sentry (for application error logging) + +### CloudWatch +The CloudWatch service can be accessed from the AWS Console. You should authenticate onto the infrastructure environment whose logs you want to check. +From CloudWatch, navigate to the desired log group (e.g. for the app task running on ECS) and open the desired log stream, in order to read its log “events”. +Alternatively, you can also navigate to a specific AWS service / resource in question (e.g. ECS tasks), selecting the instance of interest (e.g. a specific ECS task), and finding the “logs” tab (or similar) to view the log “events”. + +### Sentry +To access Sentry, ensure you have been added to the DLUHC account. +Generally error logs in Sentry will also be present somewhere in the CloudWatch logs, but they will be easier to assess here (e.g. number of occurrences over a time period). The logs in Sentry are created by the application when it makes Rails.logger.error calls. + +## Debugging +### Application infrastructure +For debugging / investigating infrastructure issues you can use the AWS CloudWatch automatic dashboards. (e.g. is there a lack of physical space on the database, how long has the ECS had very high compute usage for etc.) +They can be found in the CloudWatch service on AWS console, by going to dashboards → automatic dashboards, and selecting the desired dashboard (e.g. Elastic Container Service). +Alternatively, you can also navigate to the AWS resource in question (e.g. RDS database), selecting the instance of interest, and selecting the “monitoring” / ”metrics” tab (or similar), as this can provide alternate useful information also. + +### Exec into a container +You can open a terminal directly on a running container / app, in order to run some commands that may help with debugging an issue. +To do this, you will need to “exec” into the container. + +#### Prerequisites +- AWS CLI +- AWS Session manager plugin Install the Session Manager plugin for the AWS CLI - AWS Systems Manager +- AWS access + +#### Accessing the rails console +1. Find the cluster name of the relevant cluster +2. Find the task arn of a relevant task +3. In a shell using suitable AWS credentials for the relevant account (e.g. the development, staging, or production account), run `aws ecs execute-command --cluster cluster-name --task task-arn --interactive --command "rails c"` + +N.B. You can run other commands on the container similarly. -For log persistence we use a managed ELK (Elasticsearch, Logstash, Kibana) stack provided by [Logit](https://logit.io/). You will need to be added to the DLUHC account to access this. Longs are retained for 14 days with a daily limit of 2GB. - -Logs are also available from Gov PaaS directly via CLI: - -```bash -cf logs --recent ``` +env=staging +taskArns=$(aws ecs list-tasks --cluster "core-$env-app" --query "taskArns[*]") +aws ecs describe-tasks --cluster "core-$env-app" --tasks "${taskArns[@]}" --query "tasks[*].{arn:taskArn, status:lastStatus, startedAt:startedAt, group:group, image:containers[0].image}" --output text +``` + +### Database +In order to investigate or look more closely at the database, you can exec into a container as above, and use the rails console to query the database. \ No newline at end of file