github.com/navikt/knorten@v0.0.0-20240419132333-1333f46ed8b6/README.md (about) 1 # Knorten 2 3 > KNADA sin port for bestilling av tjenester 4 5 ## Produksjon 6 7 Oppsett for Azure AD er satt opp i [navikt/aad-iac](https://github.com/navikt/aad-iac/blob/master/prod/knorten.yaml). 8 Ellers blir Knorten satt opp gjennom [nais/knada-gcp](https://github.com/nais/knada-gcp/blob/main/knorten.tf). 9 10 ## Utvikling 11 12 For å jobbe med Knorten lokalt trenger man å ha Postgres kjørende, og basen må prepouleres med litt data. 13 I tillegg benytter vi et oppsett med Tailwind og Designsystemet. 14 15 - `docker-compose up -d db` for å starte Postgres. 16 - Kjør `make init` etter du har kjørt opp Postgres for å populere databasen. 17 - Kjør `npm install` for å sette opp nødvendig rammeverk for Tailwind. 18 19 ### Lokalt uten tredjeparter 20 21 Kjør `make local` for å kjøre Knorten uten kobling til noe annet enn Postgres. 22 23 ### Lokalt med tredjeparter i eget cluster 24 25 Har man behov for å teste mot et cluster så kan man bruke `make local-online`, dette kobler deg opp til `nada-dev-db2e`, og et lokalt [Minikube](https://minikube.sigs.k8s.io/) cluster. 26 27 Sett opp minikube clusteret med: `minikube start --driver=qemu2 --kubernetes-version=v1.27.4` 28 29 Husk å skru på [gcp-auth](https://minikube.sigs.k8s.io/docs/handbook/addons/gcp-auth/) i Minikube. 30 31 PS: Hver gang du logger inn med `gcloud auth login --update-adc` må kjøre `minikube addons enable gcp-auth --refresh` for å oppdatere tokenet. 32 33 #### CRDer for Minikube 34 35 Man må legge til følgende CRDer når man kjører lokalt. 36 37 kubectl apply --context minikube -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/main/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml 38 kubectl apply --context minikube -f https://raw.githubusercontent.com/GoogleCloudPlatform/gke-networking-recipes/main/gateway-api/config/servicepolicies/crd/standard/healthcheckpolicy.yaml 39 40 ### Generering av CSS 41 42 Man kan generere CSS på en av to måter. 43 44 * `make css` kjører en engangsjobb som ser på template-filene og genererer CSS-klasser ut ifra det som er brukt 45 * `make css-watch` kjører samme jobb som over hver gang noe endres i template-filer 46 47 Idéelt sett kan man spinne opp `make css-watch` i en annen terminal samtidig som man kjører Knorten med f.eks. `make local-online`. 48 49 Filen som styrer hva som genereres finner du i `local/tailwind.css`, her kan du legge inn [Tailwind-regler](https://tailwindcss.com/docs/functions-and-directives#layer) som vanlig dersom nødvendig. Designsystem-regler blir generert uansett ved hjelp av `@import`-regelen i toppen av den filen. 50 51 ### Designsystemet 52 53 Bruk av designsystemet til NAV krever litt kritisk tenking og manuelt arbeid. 54 Siden designsystemet i all hovedsak sikter på React-komponenter mens vi kun benytter CSS derfra, kan det være vanskelig å finne ut hvilke CSS-regler som faktisk gjelder for det vi ønsker å oppnå. 55 Likevel finnes det en lur (om ikke litt kjip) måte å finne CSS-regler på. 56 57 * Identifiser ønsket Designsystemkomponent i [Aksel](https://aksel.nav.no/komponenter) 58 * Scroll ned til eksempler (f.eks. [Button](https://aksel.nav.no/komponenter/core/button#ha8bb240d2c68)) 59 * Høyreklikk på rendret eksempel og inspiser/inspect 60 61 Her vil du se hvilke klasser som ligger på komponenten du ønsker å lage. 62 Siden vi importerer `@navikt/ds-css` kan disse klassene brukes verbatim i koden vår. 63 64 ### Postgres 65 66 Bruk Docker Compose: 67 68 docker-compose up -d 69 70 eller Docker (med Adminer): 71 72 docker run --name postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres 73 docker run --link postgres:db -p 8081:8080 -d adminer 74 75 Hvis du allerede har en Postgres-instans kjørende kan du bare lage en ny database for Knorten: 76 77 psql -h localhost -U postgres -c 'CREATE DATABASE knorten;' 78 79 ## Tilgang til Postgres i prod 80 81 Trenger man tilgang til prod-databasen kan man gjøre dette med `gcloud` og `cloud_sql_proxy`. 82 83 ``` 84 CONNECTION_NAME=$(gcloud sql instances describe knorten-north --format="get(connectionName)" --project knada-gcp); 85 cloud_sql_proxy -enable_iam_login -instances=${CONNECTION_NAME}=tcp:5433 86 ``` 87 88 Trenger man å dumpe hele basen kan man bruke følgende kommandoer: 89 ``` 90 pg_dump -U knorten -h localhost -p5433 > knorten.sql 91 psql -U postgres -h localhost -p 5432 -d knorten -f knorten.sql 92 ``` 93 94 PS: Legg merke til at vi bruker port `5433` i kommandoene ovenfor, da man mest sannsynligvis har en Postgres-instans kjørende lokalt på `5432`.