Skip to content

Commit

Permalink
Oppsett av produksjonsmiljøet
Browse files Browse the repository at this point in the history
  • Loading branch information
magnars committed Oct 19, 2023
1 parent 334b5df commit 2907e0d
Show file tree
Hide file tree
Showing 5 changed files with 152 additions and 0 deletions.
76 changes: 76 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,79 @@ sammen komponenter og UI-elementer. Denne kan du kjøre ved å gjøre noe slikt:
```
make start-transactor
```

### Oppsett av produksjonsmiljøet

Du må ha noen verktøy:

```sh
brew install terraform gh
```

For å sette opp miljøet må du ha en GCP-konto og tilgang til relevante
prosjekter.

Du må være autentisert mot GCP. Deretter setter du parenteser-prosjektet som
default og autentiserer maskinen din mot dette prosjektet:

```sh
gcloud auth login
gcloud config set project matvaretabellen-b327
gcloud auth application-default login
```

Terraform henter noen moduler over https-git som ikke er åpne. For at det skal
funke kan du bruke github sin CLI for å autentisere deg for https:

```sh
gh auth login
```

Velg HTTPS og fullfører flyten som følger.

NÅ! Nå, er du klar for å kjøre opp ting:

```sh
cd tf
terraform init
terraform plan
terraform apply
```

Dette vil sette opp nødvendig infrastruktur. Merk at [terraform-oppsettet
vårt](./tf/main.tf) har et "hello world" image. Dette imaget brukes kun ved
første gangs oppsett. [Github
Actions-arbeidsflyten](.github/workflows/build.yml) ber CloudRun om å kjøre nye
images ved push.

### Github Actions

Verdt å merke seg: prosjekt-id-en som brukes med `workload_identity_provider`
når vi autentiserer oss mot GCP for å oppdatere Cloud Run-konfigurasjonen vår
kan finnes på følgende vis:

```sh
gcloud projects list \
--filter="$(gcloud config get-value project)" \
--format="value(PROJECT_NUMBER)"
```

### Bygge og publisere lokalt

Det skal normalt ikke være nødvendig å hverken bygge eller publisere Docker
images fra lokal maskin. Allikevel ønsker man av og til å gjøre nettopp det -
kanskje for å sjekke akkurat hvilke ting som ikke fungerer eller lignende.

Bygging er rett frem:

```sh
make docker
```

For å publisere må du først logge deg selv inn i GCP, og deretter sørge for at
Docker-prosessen også får være med på moroa:

```sh
gcloud auth login
gcloud auth configure-docker europe-north1-docker.pkg.dev
```
42 changes: 42 additions & 0 deletions tf/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
locals {
service_name = "matvaretabellen"
fqdn = "${var.dns_zone_name}.mattilsynet.io"
}

module "matvaretabellen-ui" {
source = "git@github.com:Mattilsynet/map-tf-cloudrun?ref=v0.7.3"

create_cloudrun_service_account_only = false
service_name = local.service_name
service_location = var.region
service_project_id = var.project_id
service_image = "gcr.io/cloudrun/hello"
ignore_image = true

replicas = {
minScale = 1
maxScale = 2
}

container_limits = {
"cpu": "256m",
"memory": "256Mi"
}

run_under_shared_lb = false
allow_unauthenticated = true
ingress = "internal-and-cloud-load-balancing"

dedicated_lb = {
managed_zone_name = "${var.dns_zone_name}-dns-managed-zone"
fqdn = local.fqdn
}
}

output "fqdn" {
value = local.fqdn
}

output "service" {
value = local.service_name
}
17 changes: 17 additions & 0 deletions tf/settings.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
terraform {
required_version = ">= 1.1.7"
backend "gcs" {
bucket = "tf-state-matvaretabellen-b327"
prefix = "tf"
}
}

provider "google" {
region = "europe-north1"
impersonate_service_account = "tf-admin-sa@matvaretabellen-b327.iam.gserviceaccount.com"
}

provider "google-beta" {
region = "europe-north1"
impersonate_service_account = "tf-admin-sa@matvaretabellen-b327.iam.gserviceaccount.com"
}
3 changes: 3 additions & 0 deletions tf/vars.auto.tfvars
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
dns_zone_name = "matvaretabellen"
region = "europe-north1"
project_id = "matvaretabellen-b327"
14 changes: 14 additions & 0 deletions tf/vars.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
variable "project_id" {
type = string
description = ""
}

variable "region" {
type = string
description = ""
}

variable "dns_zone_name" {
type = string
description = ""
}

0 comments on commit 2907e0d

Please sign in to comment.