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.