Skip to content

Kompetansekartlegging: Deployment Guide (CDK)

Kristian Stamland edited this page Mar 30, 2022 · 9 revisions

For å minimere nede tid, gjør først Backend Deploymentstegene og Frontend Deploymentstegene før man oppdaterer Domenenavn.

Requirements

Dette prosjektet krever at man har npm og cdk installert.

Setup

Kjør echo AWS_PROFILE={AWS CLI Profilnavn}
Gå til cdk-mappen
Kjør cdk bootstrap for å installere CDK toolkit i AWS profilen

Backend deploy steg

  1. Kjør npm install i cdk folder, samt i src-folder til funksjoner i backend og i presigup folderen. Alternativt, kjør install.sh scriptet i cdk eller toppfolder

  2. Kjør kommandoen export AWS_PROFILE=xxxx hvor xxxx representerer profilen i aws credentials filen som tilhører AWS kontoen.

  3. I cdk.json, endre ENV til ønsket environment navn. Burde være prod dersom backend blir prodsatt. (Navnet på CDK stacken er KompetanseStack-{ENV})

  4. Lag en fil kalt cdk.context.json

  5. Legg til GOOGLE_ID; Skal inneholde Google client id fra GCP

  6. Legg til GOOGLE_SECRET; Skal inneholde Google Secret Key fra GCP

  7. Legg til AZURE; Skal inneholde Azure Metadata link

Eksempel fil:

{
    "GOOGLE_ID": "xxxxxxx.apps.googleusercontent.com",

    "GOOGLE_SECRET": "xxxxxxxxxxx",

    "AZURE": "https://login.microsoftonline.com/xxxxxxxxxxxxx/federationmetadata/2007-06/federationmetadata.xml?appid=xxxxxx"
}
  1. Kjør npm run deploy (Eller kjør deploybackend.sh scriptet i kompetansekartlegging-app folderen)

NOTE: Produksjons kontekst verdiene kan bli funnet i Parameter Store med navnet ProductionCDK_Context på Kompetansekartlegging-prod-b kontoen (#780493740934)

Ekstra steg ved Prodsetting:

Legg til Custom Domain i Userpool:

  1. Slett CNAME-recorden for auth.kompanse.knowit.no route53
  2. Åpne Cognito i AWS konsollet
  3. Velg Userpoolet
  4. Gå til “Domain Name” siden
  5. Velg “Use your domain”
  6. Dersom det står “Could not find any AWS managed Certificates” på bunnen av siden, trykk “click here”. Dersom det allerede eksisterer et Certificate for auth.kompetanse.knowit.no, velg det.
  7. Dersom man trykket “click here” vil man bli sendt til Amazon Certificate Manager.
    1. Velg “US-east-1” regionen (N. Virginia)
    2. Trykk “Request a certificate”
    3. Trykk “Next”
    4. Skriv inn “auth.kompetanse.knowit.no” under Domain name/Fully Qualified Domain name
    5. Trykk Request
    6. Trykk “View certificate”
    7. Kopier C-NAME name verdien
    8. Åpne kompetanse.knowit.no hosted zonen i Route 53 på kontoen som eier den sonen.
    9. Lag en ny record, velg typen CNAME, lim inn CNAME name verdien fra sertifikatet i Record name og fjern kompetanse.knowit.no. fra den.
    10. Kopier så CNAME value fra sertifikatet og lim inn i CNAME value i Route53.
    11. Trykk “Create Record”
    12. Vent på at Sertifikatet blir godkjent
  8. Velg sertifikatet for auth.kompetanse.knowit.no
  9. Trykk Save changes
  10. Kopier Alias target fra Cognito, gå til Route 53 og lag en record med “auth” i recordname, av type CNAME, med CNAME value lik alias target.

Legge til Custom domain i API Gateway for ExternalAPI

  1. Gå til API Gateway og velg Custom domain names
  2. Trykk Create
  3. Under domain name, skriv api.kompetanse.knowit.no
  4. Dersom det ikke eksisterer et sertifikat for api.kompetanse.knowit.no, trykk Create a new Certificate. Man skal ikke bytte region fra eu-central-1 (frankfurt), men ellers er stegene like med understegene i Cognito steg 5, frem til og med steg 5.l.
  5. Trykk “Create domain name”
  6. Velg så det nye domenet og trykk API Mappings.
  7. Trykk Configure API Mappings
  8. Trykk “Add new mapping”
  9. Under API, velg externalAPI. Under stage, velg “prod”.
  10. Trykk “Save”
  11. Under Configuration til domenet, kopier API Gateway domain name
  12. Gå til Route 53, lag en CNAME record.
  13. Sett record name til “api”
  14. Sett CNAME value til API Gateway domain name verdien du kopierte i steg 11 Ferdig!

Frontend Deployment

  1. Kjør npm install i frontend folderen, og npm install i frontend-cdk folderen. (Alternativt: Kjør install.sh scriptet i kompetansekartlegging-app mappen.)
  2. Dersom man ikke har gjort backend deployment, gjør det nå. Kjør deretter npm run codegen i cdk mappen. (Dersom man bruker kommandoen ./deploybackend.sh full i kompetansekartlegging-app mappen vil codegen bli gjort samtidig med backend deploy)
  3. Bytt over til Frontend mappen
  4. Lag en .env fil dersom det ikke eksisterer.
    1. Legg til REACT_APP_USER_BRANCH=master
  5. kjør npm run build
  6. Kjør cdk deploy i frontend-cdk mappen. Alternativ: Kjør deployfrontend.sh scriptet :)
  7. Følg stegene beskrevet i Oppsett av domenenavn for dev.kompetanse.knowit.no og kompetanse.knowit.no for å koble CloudFront distribusjonen opp mot rett domenenavn. NB! Når man gjør endringer i CloudFront med CDK, vil Alternative Domainname og Sertifikatet bli fjernet, så det må settes opp igjen.

Oppsett av domenenavn dev.kompetanse.knowit.no og kompetanse.knowit.no

  1. I Amazon Credentials Manager (ACM) på det miljøet som skal settes opp (prod-a eller prod-b osv.) må det lages et sertifikat for relevant domenenavn, om dette ikke allerede eksisterer.
  2. I Kompetansekartlegging-kontoen må man legge til disse sertifikatene i Route 53. Lag en ny record i kompetanse.knowit.no hostedsonen, set base navn til å være CNAME-verdien minus kompetanse.knowit.no, og cvalue til å være cvalue fra sertifikatet.
  3. Gå så inn på CloudFront i den gjeldende kontoen (prod-a, prod-b, osv.). Gå inn i distribusjonen, trykk edit, legg til gjeldende custom SSL certificate, og skriv url-en under Alternative Domain Name.
  4. Gå til route53 i prod-kontoen og endre recorden til nye cloudfront-distribusjonen.

Migrasjonsscripts

Parameters.json eksempel:

{
    "source_iam_user":"EUCentralAmplify",
    "source_graphql_api_id": "2izuv7sucjcjpj4zvqrm3r6nfe",
    "source_env":"migrate",
    "source_userpool_id": "eu-central-1_mQpy9cuyE",
    "destination_userpool_id": "eu-central-1_BBWYsJYGz",
    "destination_iam_user":"EUCentralAmplify",
    "destination_graphql_api_id":"KompetanseStack",
    "destination_env":"ksandbox"
}

Migrere Dynamodb

  1. Lag en parameters.json fil - fyll inn informasjon (Se eksempel på parameters.json fil ovenfor)
  2. Kjør import.py

Migrere Cognito

  1. Dersom det eksisterer en parameters.json fil, pass på at det er en source_userpool_id og en destination_userpool_id i filen.
  2. Kjør migrate_cognito.py

API-nøkler

  1. Legg til api-nøkler
  2. Endre navn på gammel userplan til userplan-old
  3. Flytte brukerne til ny userplan

Cleanup

Slett gammel userplan (userplan-old)

Nåværende prod

ENV navnet for nåværende prod miljø er "prod", og det er hostet på AWS kontoen kompetansekartlegging-prod-b (#780493740934)

Clone this wiki locally