-
Notifications
You must be signed in to change notification settings - Fork 0
Kompetansekartlegging: Deployment Guide (CDK)
For å minimere nede tid, gjør først Backend Deploymentstegene og Frontend Deploymentstegene før man oppdaterer Domenenavn.
Dette prosjektet krever at man har npm og cdk installert.
Kjør echo AWS_PROFILE={AWS CLI Profilnavn}
Gå til cdk-mappen
Kjør cdk bootstrap
for å installere CDK toolkit i AWS profilen
-
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 -
Kjør kommandoen
export AWS_PROFILE=xxxx
hvor xxxx representerer profilen i aws credentials filen som tilhører AWS kontoen. -
I cdk.json, endre ENV til ønsket environment navn. Burde være prod dersom backend blir prodsatt. (Navnet på CDK stacken er KompetanseStack-{ENV})
-
Lag en fil kalt cdk.context.json
-
Legg til GOOGLE_ID; Skal inneholde Google client id fra GCP
-
Legg til GOOGLE_SECRET; Skal inneholde Google Secret Key fra GCP
-
Legg til AZURE; Skal inneholde Azure Metadata link
{
"GOOGLE_ID": "xxxxxxx.apps.googleusercontent.com",
"GOOGLE_SECRET": "xxxxxxxxxxx",
"AZURE": "https://login.microsoftonline.com/xxxxxxxxxxxxx/federationmetadata/2007-06/federationmetadata.xml?appid=xxxxxx"
}
- 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)
- Slett CNAME-recorden for auth.kompanse.knowit.no route53
- Åpne Cognito i AWS konsollet
- Velg Userpoolet
- Gå til “Domain Name” siden
- Velg “Use your domain”
- 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.
- Dersom man trykket “click here” vil man bli sendt til Amazon Certificate Manager.
- Velg “US-east-1” regionen (N. Virginia)
- Trykk “Request a certificate”
- Trykk “Next”
- Skriv inn “auth.kompetanse.knowit.no” under Domain name/Fully Qualified Domain name
- Trykk Request
- Trykk “View certificate”
- Kopier C-NAME name verdien
- Åpne kompetanse.knowit.no hosted zonen i Route 53 på kontoen som eier den sonen.
- Lag en ny record, velg typen CNAME, lim inn CNAME name verdien fra sertifikatet i Record name og fjern kompetanse.knowit.no. fra den.
- Kopier så CNAME value fra sertifikatet og lim inn i CNAME value i Route53.
- Trykk “Create Record”
- Vent på at Sertifikatet blir godkjent
- Velg sertifikatet for auth.kompetanse.knowit.no
- Trykk Save changes
- 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.
- Gå til API Gateway og velg Custom domain names
- Trykk Create
- Under domain name, skriv api.kompetanse.knowit.no
- 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.
- Trykk “Create domain name”
- Velg så det nye domenet og trykk API Mappings.
- Trykk Configure API Mappings
- Trykk “Add new mapping”
- Under API, velg externalAPI. Under stage, velg “prod”.
- Trykk “Save”
- Under Configuration til domenet, kopier API Gateway domain name
- Gå til Route 53, lag en CNAME record.
- Sett record name til “api”
- Sett CNAME value til API Gateway domain name verdien du kopierte i steg 11 Ferdig!
- Kjør
npm install
i frontend folderen, og npm install i frontend-cdk folderen. (Alternativt: Kjør install.sh scriptet i kompetansekartlegging-app mappen.) - 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) - Bytt over til Frontend mappen
- Lag en .env fil dersom det ikke eksisterer.
- Legg til REACT_APP_USER_BRANCH=master
- kjør
npm run build
- Kjør
cdk deploy
i frontend-cdk mappen. Alternativ: Kjør deployfrontend.sh scriptet :) - 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.
- 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.
- 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.
- 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.
- Gå til route53 i prod-kontoen og endre recorden til nye cloudfront-distribusjonen.
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"
}
- Lag en parameters.json fil - fyll inn informasjon (Se eksempel på parameters.json fil ovenfor)
- Kjør import.py
- Dersom det eksisterer en parameters.json fil, pass på at det er en source_userpool_id og en destination_userpool_id i filen.
- Kjør migrate_cognito.py
- Legg til api-nøkler
- Endre navn på gammel userplan til userplan-old
- Flytte brukerne til ny userplan
Slett gammel userplan (userplan-old)
ENV navnet for nåværende prod miljø er "prod", og det er hostet på AWS kontoen kompetansekartlegging-prod-b (#780493740934)