Opsætningsguides

Hosting-krav ved egen drift

Spørgeskema til drift-teamet før Ressourcify installeres i jeres egen Kubernetes-klynge: database, netværk, certifikater, identitet og image-levering.

Kører I Ressourcify i jeres egen klynge frem for som service, er der en håndfuld forhold vi skal kende på forhånd. Denne side er skrevet til at blive sendt videre til drift-teamet og besvaret punkt for punkt.

Svar på de fem markerede først. De øvrige kan afklares undervejs, men de fem enten blokerer opstart eller viser sig senere som fejl der er svære at spore.

Kort om hvad der installeres

Ressourcify leveres som et Helm-chart og ét container-image. Charten indeholder en Deployment, et migrations-Job der kører før nye pods, en Secret, en ConfigMap og en valgfri Ingress. Databasen er jeres egen — vi bundler ikke Postgres.


1. Klynge og runtime

#Spørgsmål
1.1Hvilken Kubernetes-distribution og version? (GKE, EKS, AKS, Talos, OpenShift, on-prem)
1.2Håndhæves Pod Security Standards? I så fald baseline eller restricted?
1.3Findes der admission-politikker vi skal overholde — påkrævede labels, forbudte capabilities, krav om ressource-limits?
1.4Hvilke ressourcer må pod'en tildeles (CPU og hukommelse, requests og limits)?

Imaget kører som en ikke-privilegeret bruger, bruger ingen hostPath og kræver ingen ekstra capabilities. Vi forventer derfor at passe ind i restricted, men tildeler jeres platform tilfældige UID'er (som OpenShift gør), skal vi vide det inden charten bygges.


2. Database

2.2 er det vigtigste spørgsmål på hele siden. Alle tabeller har Row Level Security slået til, og designet er at applikationens rolle ejer tabellerne og dermed er undtaget. Får vi en begrænset rolle i stedet, blokerer RLS al adgang — og symptomet er en tom applikation uden fejlbeskeder, ikke en fejlmeddelelse.

#Spørgsmål
2.1Hvilken Postgres-version? Minimum 14.
2.2Kan vi få en rolle der ejer sine egne tabeller? Ikke en begrænset applikationsbruger
2.3Har rollen rettigheder til CREATE TABLE og ALTER TABLE? Migrationer kører ved hver opgradering
2.4Er der en connection pooler foran (pgbouncer, RDS Proxy, Cloud SQL Proxy)? I så fald: transaction- eller session-mode?
2.5Hvad er max_connections?
2.6Hvem tager backup, hvor ofte, og hvordan gendannes den?

Om 2.4: kører pooleren i transaction-mode, skal vi have to forbindelsesstrenge — én gennem pooleren til driften, og én uden om til migrationerne, som kræver session-niveau.

Om 2.6: en opgradering kører migrationer der ikke kan rulles tilbage automatisk. Backup før opgradering er jeres ansvar, og det er vejen tilbage hvis noget går galt.


3. Indgående netværk og certifikater

#Spørgsmål
3.1Er der en ingress-controller? Hvilken — nginx, Traefik, GKE Ingress, Istio?
3.2Hvordan udstedes TLS-certifikater? cert-manager, virksomhedens egen CA, eller termineres TLS uden for klyngen?
3.3Kan Let's Encrypt bruges? Og i så fald: kan ACME-udfordringen løses over HTTP-01, eller kræves DNS-01?
3.4Hvilket hostname får installationen?
3.5Overskriver jeres proxy headeren X-Forwarded-For, eller appender den til klientens egen?

TLS er ikke valgfrit. Microsoft Entra ID afviser http://-redirect-URI'er for alt andet end localhost. Uden et gyldigt certifikat kan ingen logge ind.

Om 3.3: HTTP-01 kræver at Let's Encrypt kan nå klyngen udefra. Er installationen kun tilgængelig internt, skal I bruge DNS-01 mod jeres DNS-udbyder, eller udstede fra jeres egen interne CA.

Om 3.4: hostnavnet skal ligge fast, før app-registreringen i Entra kan konfigureres — redirect-URI'en skal matche tegn for tegn.

Om 3.5: for brugere der ikke er logget ind, bruger vi den første IP i headeren som nøgle til rate limiting. Appender jeres proxy klientens egen header frem for at overskrive den, kan en anonym klient omgå grænsen. I nginx betyder det proxy_set_header X-Forwarded-For $remote_addr; — ikke $proxy_add_x_forwarded_for.


4. Udgående netværk

#Spørgsmål
4.1Er udgående trafik begrænset af NetworkPolicy, firewall eller proxy?
4.2Kræver udgående HTTPS en proxy (HTTPS_PROXY)?

Skal whitelistes:

DestinationHvornårHvis blokeret
login.microsoftonline.com
graph.microsoft.com
AltidIngen kan logge ind
portal.ressourcify.dkVed licenshåndhævelseFejler tavst
Jeres JiraHvis Jira-modulet brugesSynkronisering fejler
SMTP-server eller GraphHvis e-mail brugesIngen notifikationer

Licens-opslaget fejler åbent og uden fejlmeddelelse. Installationen kører videre, men licensstatus opdateres aldrig. Tag destinationen med i whitelisten fra begyndelsen — ellers opdages det typisk først længe efter.


5. Microsoft Entra ID

#Spørgsmål
5.1Kan I oprette en app-registrering i jeres egen tenant?
5.2Kan app-registreringen udstede groups-claimen? (Token configuration → Add groups claim)
5.3Har I sikkerhedsgrupper til mindst "alle brugere" og "administratorer"? Hvad er gruppernes Object ID?
5.4Er nogen brugere medlem af mere end ca. 200 grupper?

App-registreringen er 100 % jeres egen — vi deler ikke en registrering på tværs af kunder, og vi får ingen adgang til jeres tenant.

Om 5.2: uden claimen tildeles ingen roller ved login, og alle brugere lander med den laveste adgang. Der findes en nødvej, men den kræver at gruppe-mapningen så udelades helt — ellers fjerner synkroniseringen tildelingen igen.

Om 5.4: overstiger nogen grænsen, udelader Entra claimen helt for dem, og resultatet bliver det samme som i 5.2.


6. Levering af image

#Spørgsmål
6.1Kan I trække fra et privat registry hos os (GitHub Container Registry med et token vi udsteder)?
6.2Eller skal imaget spejles til jeres eget registry (Artifact Registry, ACR, Harbor, ECR)?
6.3Scannes images før deploy? Har I brug for SBOM eller signatur?

Imaget indeholder applikationens kildekode og skal derfor altid ligge i et privat registry — uanset hvilken af de to veje I vælger.


7. Drift

#Spørgsmål
7.1Hvem kører opgraderinger, og hvad er jeres ændringsvindue?
7.2Findes der et staging-miljø hvor opgraderinger kan afprøves først?
7.3Hvor sendes logs hen, og kan vi få adgang ved fejlsøgning?
7.4Hvor mange samtidige brugere forventer I?

De fem der skal besvares først

  1. 2.2 — en rolle der ejer sine egne tabeller
  2. 3.1 — findes der en ingress-controller
  3. 3.2 — hvordan udstedes certifikater
  4. 5.2 — kan groups-claimen udstedes
  5. 6.1 eller 6.2 — hvordan I får fat i imaget

De øvrige kan afklares mens installationen forberedes.

On this page