github.com/nais/knorten@v0.0.0-20240104110906-55926958e361/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  - Kjør `make init` etter du har kjørt opp Postgres for å populere databasen.
    16  - Kjør `npm install` for å sette opp nødvendig rammeverk for Tailwind.
    17  
    18  ### Lokalt uten tredjeparter
    19  
    20  Kjør `make local` for å kjøre Knorten uten kobling til noe annet enn Postgres.
    21  
    22  ### Lokalt med tredjeparter i eget cluster
    23  
    24  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.
    25  
    26  Sett opp minikube clusteret med: `minikube start --driver=qemu2 --kubernetes-version=v1.27.4`
    27  
    28  Husk å skru på [gcp-auth](https://minikube.sigs.k8s.io/docs/handbook/addons/gcp-auth/) i Minikube.
    29  
    30  PS: Hver gang du logger inn med `gcloud auth login --update-adc` må kjøre `minikube addons enable gcp-auth --refresh` for å oppdatere tokenet.
    31  
    32  #### CRDer for Minikube
    33  
    34  Man må legge til følgende CRDer når man kjører lokalt.
    35  
    36      kubectl apply --context minikube -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/main/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml
    37      kubectl apply --context minikube -f https://raw.githubusercontent.com/GoogleCloudPlatform/gke-networking-recipes/main/gateway-api/config/servicepolicies/crd/standard/healthcheckpolicy.yaml
    38  
    39  ### Generering av CSS
    40  
    41  Man kan generere CSS på en av to måter.
    42  
    43  * `make css` kjører en engangsjobb som ser på template-filene og genererer CSS-klasser ut ifra det som er brukt
    44  * `make css-watch` kjører samme jobb som over hver gang noe endres i template-filer
    45  
    46  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`.
    47  
    48  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.
    49  
    50  ### Designsystemet
    51  
    52  Bruk av designsystemet til NAV krever litt kritisk tenking og manuelt arbeid.
    53  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å.
    54  Likevel finnes det en lur (om ikke litt kjip) måte å finne CSS-regler på.
    55  
    56  * Identifiser ønsket Designsystemkomponent i [Aksel](https://aksel.nav.no/komponenter)
    57  * Scroll ned til eksempler (f.eks. [Button](https://aksel.nav.no/komponenter/core/button#ha8bb240d2c68))
    58  * Høyreklikk på rendret eksempel og inspiser/inspect
    59  
    60  Her vil du se hvilke klasser som ligger på komponenten du ønsker å lage.
    61  Siden vi importerer `@navikt/ds-css` kan disse klassene brukes verbatim i koden vår.
    62  
    63  ### Postgres
    64  
    65  Bruk Docker Compose:
    66  
    67      docker-compose up -d
    68  
    69  eller Docker (med Adminer):
    70  
    71      docker run --name postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres
    72      docker run --link postgres:db -p 8081:8080 -d adminer
    73  
    74  Hvis du allerede har en Postgres-instans kjørende kan du bare lage en ny database for Knorten:
    75  
    76      psql -h localhost -U postgres -c 'CREATE DATABASE knorten;'
    77  
    78  ## Tilgang til Postgres i prod
    79  
    80  Trenger man tilgang til prod-databasen kan man gjøre dette med `gcloud` og `cloud_sql_proxy`.
    81  
    82  ```
    83  CONNECTION_NAME=$(gcloud sql instances describe knorten-north --format="get(connectionName)" --project knada-gcp);
    84  cloud_sql_proxy -enable_iam_login -instances=${CONNECTION_NAME}=tcp:5433
    85  ```
    86  
    87  Trenger man å dumpe hele basen kan man bruke følgende kommandoer:
    88  ```
    89  pg_dump -U knorten -h localhost -p5433 > knorten.sql
    90  psql -U postgres -h localhost -p 5432 -d knorten -f knorten.sql
    91  ```
    92  
    93  PS: Legg merke til at vi bruker port `5433` i kommandoene overnfor, da man mest sannsynligvis har en Postgres-instans kjørende lokalt på `5432`.