Add a Google Cloud CDN in front of the Registry service
DRI: @jarv
## Status 2022-01-28
CDN switchover complete
## Overview
To save on costs we would like put a Google Cloud CDN in front of Registry storage bucket.
- Cloud storage egress pricing https://cloud.google.com/storage/pricing : `$0.08/GB`
- CDN cached egress pricing: `$0.02/GB`
Instead of clients receiving a pre-signed URL to fetch objects directly from Google Object Storage, they will fetch them from the CDN as described in https://gitlab.com/groups/gitlab-org/-/epics/7212#note_783527197
## Team members in Reliability assigned to these issues
- @jarv
- @ahmadsherif
## Status
- **2022-01-06**: Scoping the work and adding issues to the Epic
- **2022-01-06**: Started to provision preprod for validation
- **2022-01-07**: We have validated preprod and are reviewing Terraform changes that can be used for other environments.
- **2022-01-11**: All infrastructure is deployed on Staging and Preprod and signed URLs have been tested in both environments. Next we will perform end-to-end testing in Pre.
- **2022-01-14**: CDN is fully enabled on Staging and PreProd and has been verified with end-to-end tests.
- **2022-01-18**: Starting production build out and readiness review
- **2022-01-26**: Enabling the CDN in Production
- **2022-01-28**: CDN switchover complete
The following environments will be updated to use the Cloud CDN for Registry:
- [x] Preprod
- [x] Staging
- [x] Production
## 🚫 Blockers
| Blockers |
| --- |
## :book: References
1. https://medium.com/cognite/configuring-google-cloud-cdn-with-terraform-ab65bb0456a9
1. https://cloud.google.com/cdn/docs/cdn-terraform-examples
1. Generate a Google CDN signing key (https://cloud.google.com/cdn/docs/using-signed-urls).
```
/label ~"team::Reliability" ~"rapid action" ~"rapid action::reduce ci costs"
/epic gitlab-com/gl-infra&657
```
epic