Ga naar inhoud

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:

  1. Sla de private key op als repository secret (GH_APP_PRIVATE_KEY), met regeleinden vervangen door \n. Anders mislukt de deployment.
  2. Noem het secret in terraform.appSecretNames op de omgevingsrij (Deployment en omgevingen).
  3. De Terraform root accepteert de variabele app_secrets en geeft die door aan de module tenant_configuration, die elke waarde in Key Vault opslaat.
  4. Geef de Key Vault-referenties via additional_app_settings door aan de module backstage, 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.