-
Notifications
You must be signed in to change notification settings - Fork 2
docs: refresh infra docs for post-Hetzner architecture #57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -3,19 +3,19 @@ | |
| We define as much infrastructure as possible in the form of code, using: | ||
|
|
||
| * [Terraform](https://terraform.io) | ||
| * Kubernetes YAML, managed with [Kustomize](https://kustomize.io/) | ||
| * [Ansible](https://www.ansible.com/) | ||
| * Github Actions | ||
|
|
||
| The infrastructure-as-code is stored in the following directories: | ||
|
|
||
| * `terraform/` — Infrastructure administered by [Infra Maintainers](roles.md), except for resources inside Kubernetes. Most of the infrastructure is defined here. | ||
| * `terraform/` — Infrastructure administered by [Infra Maintainers](roles.md). Most of the cloud-side infrastructure is defined here. | ||
|
|
||
| * `terraform-hisec/` — Infrastructure administered by [Infra Owners](roles.md). This covers for example resources in the `fullstaq-ruby-hisec` Google Cloud project. | ||
| * `terraform-hisec/` — Infrastructure administered by [Infra Owners](roles.md). This covers for example sensitive resources such as the GPG signing key in Azure Key Vault, and the high-security Terraform state backend. | ||
|
|
||
| Because we don't expect the infrastructure in this directory to change very often, we've chosen — for security reasons — not to run Terraform in a CI/CD pipeline. This way we don't have to worry about the security of the CI/CD pipeline's service account. Instead, an [Infra Owner](roles.md) runs Terraform manually, using that person's personal Google Cloud credentials. | ||
| Because we don't expect the infrastructure in this directory to change very often, we've chosen — for security reasons — not to run Terraform in a CI/CD pipeline. This way we don't have to worry about the security of any CI/CD pipeline credentials. Instead, an [Infra Owner](roles.md) runs Terraform manually, using their personal cloud credentials. | ||
|
|
||
| * `kubernetes/` — Kubernetes resources administered by [Infra Maintainers](roles.md). | ||
| * `ansible/` — Configuration of the backend VM (Caddy, the API server, Prometheus, and OS hardening). Administered by [Infra Maintainers](roles.md) and applied manually; see [Deployment guide](deploy.md). | ||
|
|
||
| * `.github/workflows/apiserver.yml` — Deploys the API server. | ||
| * `.github/workflows/apiserver.yml` — Builds and deploys the API server. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nowadays it's .github/workflows/ (multiple workflows that together do the build and deployment). |
||
|
|
||
| Note that not all infrastructure can, or (for security reasons) should, be managed via code. Learn more at [Infrastructure bootstrapping](infrastructure-bootstrapping.md). | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,6 @@ | ||
| # Infrastructure bootstrapping | ||
|
|
||
| We try to codify infrastructure as much as possible using Terraform and Kubernetes YAML. However: | ||
| We try to codify infrastructure as much as possible using Terraform and Ansible. However: | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There should be an instruction step in this document for deploying the API server. |
||
|
|
||
| - Not everything _can_ be automated. For example, we need to setup Azure Blob Storage for storing Terraform state, before we can use Terraform. | ||
| - Not everything _should_ be automated. For example, the `fullstaq-ruby-hisec` project contains such sensitive data, that giving access to CI/CD systems would pose a security risk. | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nowadays it's the entire .github/workflows/ folder (multiple workflows that together do the build and deployment)