Configuratie¶
Deze pagina is voor het platformteam. Ze legt uit hoe de portal zijn features en instellingen voor een omgeving selecteert en somt de instellingen op die je het vaakst tegenkomt. Ze beschrijft het referentieontwerp.
Hoe configuratie gelaagd is¶
De portal is één codebase en één container image. De configuratie bepaalt wat hij doet.
| Laag | Bron | Doel |
|---|---|---|
| 1 | app-config.yaml |
Standaardwaarden voor alle omgevingen |
| 2 | app-config.production.yaml |
Productie-instellingen: PostgreSQL met TLS, loglevel, schema van de Application Gateway |
| 3 | app-config.<customer>.yaml |
Instellingen van één klant. Gekozen via de app setting APP_CONFIG_organization_name, die exact met de bestandsnaam moet overeenkomen, inclusief hoofdletters |
| 4 | App settings APP_CONFIG_<path> van de web app |
Waarden uit Terraform (bijvoorbeeld APP_CONFIG_features_moduleRegistry). Secrets worden vanuit Key Vault gerefereerd. |
Een latere laag overschrijft een eerdere. Secrets komen nooit in de bestanden voor. Ze worden geschreven als ${NAME}-placeholders en gevuld vanuit app settings.
Feature flags¶
De flags worden bij het opstarten gelezen en bepalen welke backend plugins laden en welke menu-items zichtbaar zijn.
| Flag of instelling | Effect | Standaard |
|---|---|---|
agents.<name>.enabled |
Schakelt een AI-agent in (spoke, integration, commander, debugger). De AI-agentbackend laadt zodra minstens één agent is ingeschakeld. | Uit |
costInsights.database.server |
De kostenbackend en -pagina's laden alleen als dit is ingesteld | Niet ingesteld |
features.scaffolder |
Schakelt de pagina Create (scaffolder) in. Alleen beschikbaar in de eigen omgeving van de provider, zie hieronder. | Uit |
features.mcp_inspector |
Toont de pagina MCP Inspector | Uit |
features.microsoftGraphGroupNameNormalization |
Neemt alleen groepen op die de naamconventie volgen (Catalog en entity model) | Uit |
features.moduleRegistry |
Toont de pagina Module Registry en laadt de backend ervan | Uit |
features.moduleRegistryUpdate |
Staat upload en verwijderen in de module registry toe | Uit |
features.organisation |
Toont de pagina Organization | Uit |
| TechDocs | Alleen ingeschakeld in de eigen omgeving van de provider en in lokale ontwikkeling | Uit voor klanten |
De menu-items zijn Workloads, Domains, Organization, Docs, Create, AI Agents, Module Registry en MCP Inspector. Welke ervan zichtbaar zijn, hangt af van deze flags.
TechDocs is niet beschikbaar in klantomgevingen
De kernboodschappen in het leveringsmateriaal noemen documentatie als onderdeel van de portal, maar de flag schakelt TechDocs alleen in voor de eigen omgeving van de provider en voor lokale ontwikkeling. Controleer de flag voordat je een klant TechDocs belooft.
Modules die alleen in de eigen omgeving van de provider laden¶
Drie backend feature loaders kiezen plugins per omgeving:
| Loader | Laadt | Wanneer |
|---|---|---|
| Default | Catalog en de modules voor Azure DevOps, Microsoft Graph, Azure Resource Graph, het klantentitymodel en merge; TechDocs en search; de vier insight-backends; de permission backend en standaardpolicy; MCP-acties en -extensies; de AI-agentbackend (als een agent is ingeschakeld); module registry; de kostenbackend (als de databaseserver is ingesteld) | Elke omgeving |
| Customer | De standaard Microsoft sign-in provider | Elke omgeving behalve de eigen omgeving van de provider |
| Provider | Entitymodel voor managed services (het kind Customer), de Azure DevOps-backendplugin, de scaffolder met Git- en Azure Repos-modules, catalog- en gemeenschappelijke scaffolder-modules en een eigen sign-in resolver | Alleen als de organisatienaam gelijk is aan die van de provider, of in lokale ontwikkeling |
| Local | Guest sign-in en nepnetwerkdata | Alleen lokale ontwikkeling |
De scaffolder-acties in de omgeving van de provider zijn azure:repo:clone, azure:repo:push, azure:repo:pr, git:branch, catalog:create, plus catalog-acties voor lezen, schrijven en mergen. Templates voor nieuwe spokes, firewallwijzigingen en API's maken deel uit van de eigen tooling van de provider en horen niet bij een klantomgeving.
Een feature loader toevoegen
Voeg alleen een loader voor een klant toe als een configuratieflag niet kan wat je nodig hebt. De loader staat in packages/backend/src/features/<customer>.ts. Het is een codewijziging die door de normale pipeline gaat en voor de gedeelde codebase geldt.
Schedules¶
Elke ingestietaak heeft een schedule met een frequency en een timeout. Een frequency kan een ISO 8601-duur zijn (PT1H), een cron-expressie of een object ({ minutes: 30 }). Een timeout is een ISO 8601-duur of een object.
catalog:
providers:
azureApplicationGateway:
schedule:
frequency: PT1H
timeout: PT50M
azure:
<providerId>:
enabled: true
schedule:
frequency: PT1H
timeout: PT50M
azureSecurityInsights:
schedule:
frequency: { hours: 1 }
timeout: { minutes: 55 }
azureRegulatoryComplianceInsights:
schedule:
frequency: { hours: 1 }
timeout: { minutes: 55 }
azureNetwork:
schedule:
frequency: { minutes: 10 }
timeout: { minutes: 2 }
Een ingeschakelde provider met een ontbrekend of ongeldig schedule stopt de backend bij het opstarten. Zet enabled: false om een provider uit te schakelen zonder schedule. Zie Operations voor de lijst.
Azure Resource Graph-tags¶
De workload- en domeincatalog wordt opgebouwd uit de tags op Azure subscriptions. Je kunt de tagsleutels per provider hernoemen als je organisatie andere sleutels gebruikt.
catalog:
providers:
azure:
<providerId>:
tags:
workload: <workload-tag>
owner: <owner-tag>
domain: <domain-tag>
name: <name-tag>
description: <description-tag>
externalUris: <external-uris-tag>
spokeMetadataOverridable: false
| Instelling | Betekenis |
|---|---|
tags.* |
Tagsleutels. Standaard: workload, owner, domain, organisation, name, description, external-uris |
spokeMetadataOverridable |
false (standaard): de verborgen spoke-metadatatag wint en de gewone tags workload en owner zijn de terugval. true: de gewone tags winnen. Houd false voor spokes van het managed platform, omdat de spoke deployment de verborgen tag vult. |
Zie Catalog en entity model voor wat de tags betekenen.
GitHub-integratie¶
Maak een GitHub App aan in de organisatie of enterprise, met lees- en schrijfrechten op Contents en Pull requests. Webhooks zijn niet nodig. Genereer een private key en noteer de App ID en de installation ID (het laatste nummer in de installatie-URL).
integrations:
github:
- host: <host>
apiBaseUrl: https://<host>/api/v3
rawBaseUrl: https://<host>/raw
apps:
- appId: ${GITHUB_APP_ID}
installationId: ${GITHUB_APP_INSTALLATION_ID}
webhookSecret: 'webhook' # required by the config, not used
privateKey: ${GITHUB_APP_PRIVATE_KEY}
Hoe het secret de portal bereikt:
- Sla de private key op als repository secret (
GH_APP_PRIVATE_KEY), met regeleinden vervangen door\n. Anders mislukt de deployment. - Noem het secret in
terraform.appSecretNamesop de omgevingsrij (Deployment en omgevingen). - De Terraform root accepteert de variabele
app_secretsen geeft die door aan de moduletenant_configuration, die elke waarde in Key Vault opslaat. - Geef de Key Vault-referenties via
additional_app_settingsdoor aan de modulebackstage, als@Microsoft.KeyVault(SecretUri=...).
De App ID en installation ID zijn niet geheim en worden als letterlijke waarden ingesteld. Zie AI setup voor de kant van de agent.
MCP-server en tools¶
| Instelling | Betekenis |
|---|---|
backend.actions.pluginSources |
Plugins waarvan de acties de MCP-server beschikbaar stelt: auth, catalog-mcp, catalog, azure-security-insights, azure-cost-insights, azure-regulatory-compliance-insights, ai-agent, mcp-extensions, azure-network |
mcpActions.namespacedToolNames |
false: toolnamen krijgen de pluginnaam niet als voorvoegsel |
backend.auth.externalAccess |
Statisch token voor externe clients, met een subject voor MCP-clients. Het token komt uit een app setting. |
auth.experimentalDynamicClientRegistration, auth.clientIdMetadataDocuments |
Ingeschakeld, zodat MCP-clients zich kunnen registreren en met OAuth kunnen aanmelden |
Zie MCP-server.
Module registry¶
Zet features.moduleRegistry en, als upload en verwijderen gewenst zijn, features.moduleRegistryUpdate. Geef de registry-URL, de tokenscope en optioneel de tenant mee via de app settings MODULE_REGISTRY_BASE_URL, MODULE_REGISTRY_TOKEN_SCOPE en MODULE_REGISTRY_TENANT_ID. Zie Module registry.
Thema¶
Een klant kan een eigen thema hebben. Voeg een map met een themaconfiguratie toe in het themespackage, laat de id gelijk zijn aan de waarde van organization.name (hoofdletters maken niet uit) en exporteer die in de themes-index. Zonder passend thema gebruikt de portal het standaardthema van de provider. Dit is een codewijziging die de gedeelde codebase raakt, dus het nieuwe thema maakt deel uit van de volgende release.