Ga naar inhoud

AI Platform: beslissingen

Samengevatte ontwerpbeslissingen van de oplossing, afkomstig uit de projectconventies en de modulecode. De bron bevat geen formele decision records, dus bij elk onderdeel staat de beslissing en de reden die uit de code te lezen is.

Eén gedeeld Foundry-account, één project per workload

Alle workloads delen één account, en elke workload krijgt een project. Het project is de isolatiegrens voor connections, de identity, bestanden en agentdata, terwijl quota en modellen centraal blijven. Status: in gebruik in het ontwerp van de module.

Modeldeployments worden op platformniveau beheerd

De projectmodule maakt geen modeldeployments aan. Zo blijft het quotabeheer centraal en consistent over alle projecten. Gevolg: een workload team vraagt het platformteam om een model of om quota.

Identity in plaats van keys

Op het account staat lokale authenticatie uit, connections gebruiken Entra ID, en het project en de workload hebben elk een user-assigned managed identity. Toegang voor mensen loopt via groepen. Gevolg: geen keys om te roteren, maar de roltoewijzingen moeten kloppen voordat iets werkt.

User-assigned identities

User-assigned identities worden door Terraform aangemaakt vóór de resources die ze gebruiken. Zo kunnen roltoewijzingen vooraf worden gedaan en blijft het aanmaken van identities gescheiden van het aanmaken van resources (de module workload_identity bestaat om die reden).

AzAPI voor Foundry-resources

Account, project, connections en capability host worden met de azapi provider aangemaakt, omdat azurerm ze niet volledig ondersteunt. Gevolg: de API-versie ligt vast in de code en schemavalidatie staat uit, dus review plans zorgvuldig.

Network injection en private endpoints

Agents draaien in een subnet van de spoke (network injection, een eigen subnet in plaats van een door Microsoft beheerd netwerk). Services zijn bereikbaar via private endpoints. Zie Architectuur.

Gedeelde datastores met collections per project

Cosmos DB en AI Search worden gedeeld. Projecten krijgen eigen collections en rolwijzigingen, en een storage account per project. Gevolg: een platformbrede limiet of storing bij deze services raakt alle projecten.

Modules met alleen lookups

Met platform_data en project_data vindt workloadcode platformresources zonder remote state of hard-coded ID's. Afweging: de namen in platform_data liggen per deployment vast (zie Bekende problemen).

Eerst modules, later deploymentcode

De eerste fase levert modules. Daarna volgen de deployment roots, in de volgorde gedeeld platform, projecten, workloads. De backendconfiguratie wordt bij terraform init meegegeven en nooit in de repository opgeslagen.