Bereitstellung der Infrastruktur
In diesem Abschnitt wird beschrieben, wie Sie Azure-Ressourcen bereitstellen, die für die Bereitstellung von Codebeamer KI (kundenseitig gehostet) erforderlich sind, indem Sie Terraform ausführen.
Schritt 1: Infrastrukturpaket herunterladen (IaC-ZIP)
Laden Sie das Paket cb-ai-chd-infra-<version>.zip unter PTC Software-Download – Codebeamer AI herunter.
Schritt 2: Umgebungsvariablen festlegen
Legen Sie die folgenden Umgebungsvariablen für die Werte des Infrastruktur-Dienstprinzipals fest.
ARM_CLIENT_ID
ARM_CLIENT_SECRET
ARM_TENANT_ID
ARM_SUBSCRIPTION_ID
Schritt 3: Eingabeparameter für die Terraform-Infrastruktur konfigurieren
Konfigurieren Sie die Terraform-Variablendatei infra.tfvars, die für die Bereitstellung erforderlich ist.
Erstellen Sie eine Kopie von infra.tfvars.template mit dem Namen infra.tfvars.
1. Wechseln Sie zur Vorlagendatei terraform/deployment-profiles/infra-templates/infra.tfvars.template.
2. Erstellen Sie eine Kopie, benennen Sie sie in infra.tfvars um, und speichern Sie sie im selben Ordner.
3. Aktualisieren Sie die Datei mit den folgenden erforderlichen Parametern.
Variable
Beschreibung
subscription_id
Azure-Abonnement, in dem Ressourcen bereitgestellt werden
tenant_id
Azure AD-Mandanten-ID
location
Azure-Region, z.B. eastus2.
resource_group_name
Ressourcengruppen-Name. Darf maximal 20 Zeichen, Buchstaben, Zahlen oder Bindestriche enthalten.
aks_admin_group_object_ids
Azure AD‑ bzw. Entra ID‑Gruppenobjekt-IDs für den AKS‑Administratorzugriff
kubernetes_version
AKS Kubernetes-Version, z.B. 1.34
environment
Name der Bereitstellungsumgebung. Der Name muss für jede Umgebung eindeutig sein.
openai_gpt5_mini_capacity
Durchsatzkapazität für GPT-5 Mini
openai_gpt5_nano_capacity
Durchsatzkapazität für GPT-5 Nano
flow_log_storage_resource_group
Ressourcengruppe für Speicherkonto für Datenflussprotokolle
flow_log_storage_account_name
Speicherkonto für Datenflussprotokolle
allowed_ips
CIDR-Bereiche, die auf das AKS-Subnetz zugreifen dürfen
aks_api_server_authorized_ip_ranges
Gibt die Liste der IP‑Bereiche an, die berechtigt sind, auf den AKS‑API‑Server (Kontrollebene) zuzugreifen.
4. Aktualisieren Sie u.U. die folgenden optionalen Parameter basierend auf Ihren spezifischen Anforderungen.
Variable
Beschreibung
aks_host_encryption_enabled
Aktivierung der AKS-Hostverschlüsselung. Auf false festlegen, falls nicht unterstützt.
aks_user_pool_vm_size
VM-Größe für den AKS-Benutzer-Knotenpool
aks_user_pool_min_count
Minimale Knoten im Benutzerpool
aks_user_pool_max_count
Maximale Anzahl von Knoten für automatische Skalierung.
aks_system_pool_vm_size
VM-Größe für System-Knotenpool
aks_system_pool_min_count
Minimale Anzahl von Knoten im Systempool
aks_system_pool_max_count
Maximale Anzahl von Knoten im Systempool
openai_gpt5_mini_sku_name
SKU für GPT-5 Mini. Beispiel: DataZoneStandard, GlobalStandard, PTU SKUs.
openai_gpt5_nano_sku_name
SKU für GPT-5 Nano
openai_gpt5_mini_spillover_sku_name
Spillover-SKU für GPT-5 Mini. Wird nur mit PTU verwendet.
openai_gpt5_mini_spillover_capacity
Spillover-Kapazität für GPT-5 Mini
openai_gpt5_nano_spillover_sku_name
Spillover-SKU für GPT-5 Nano
openai_gpt5_nano_spillover_capacity
Spillover-Kapazität für GPT-5 Nano
flow_log_retention_days
Aufbewahrungszeitraum für Datenflussprotokolle.
Nachfolgend finden Sie ein Beispiel für die Datei.
subscription_id        = "<subscription-id>"
tenant_id = "<tenant-id>"
location = "<region>"
resource_group_name = "<resource_group_name>"
aks_admin_group_object_ids = ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"]
kubernetes_version = "1.34"
environment = "development"
aks_user_pool_vm_size = "Standard_D8as_v5"
aks_user_pool_min_count = 3
aks_user_pool_max_count = 6
aks_system_pool_vm_size = "Standard_D2s_v5"
aks_system_pool_min_count = 2
aks_system_pool_max_count = 3
openai_gpt5_mini_sku_name = "DataZoneStandard"
openai_gpt5_nano_sku_name = "DataZoneStandard"
openai_gpt5_mini_capacity = 10000
openai_gpt5_nano_capacity = 10000
flow_log_storage_resource_group = "my-storage-rg"
flow_log_storage_account_name = "myflowlogsaccount"
flow_log_retention_days = 90
allowed_ips = ["1.2.3.4/32"]
aks_api_server_authorized_ip_ranges = ["1.2.3.4/32"]
Schritt 4: Terraform-Backend konfigurieren – Azure-Speicherkonto
Aktualisieren Sie backend.conf mit den Speicherkontodetails. Weitere Informationen finden Sie unter Voraussetzungen.
Die Datei befindet sich im Ordner terraform\deployment-profiles\infra-templates\backend.conf.
Nachfolgend finden Sie eine Beispielkonfiguration für die Datei.
resource_group_name  = "<resource_group_name>"
storage_account_name = "<storage_account_name>"
container_name = "<container_name>"
key = "<terraform.tfstate>"
Schritt 5: Terraform-Bereitstellung ausführen
1. Wechseln Sie zu den Azure-Ressourcen für Terraform.
cd terraform/deployment-profiles/infra-templates
2. Initialisieren Sie Terraform.
terraform init -backend-config=backend.conf
3. Führen Sie den Terraform-Befehl "plan" aus.
Referenzieren Sie nach Ausführung des Terraform-Befehls "plan" Codebeamer AI (kundenseitig gehostet), um alle Ressourcen, die erstellt werden, zu verifizieren, bevor Sie mit "apply" fortfahren.
terraform plan -var-file=infra.tfvars
4. Wenden Sie Terraform-Aktualisierungen an.
terraform apply -var-file=infra.tfvars
Nachdem Sie die Schritte ausgeführt haben, überprüfen Sie Folgendes:
Die erforderlichen Ressourcen werden erfolgreich geplant und erstellt.
Es sind keine Fehler aufgetreten.
Die Terraform-Ausgabe wird zur späteren Referenz bei Dienst- und Azure Policy-Bereitstellungen gespeichert.
Schritt 6: Anwendungsregistrierung erstellen
Standardmäßig erstellt Terraform keine Entra ID-App-Registrierung, enable_app_registration = false. Dadurch wird vermieden, dass mandantenweite Entra ID-Berechtigungen für Terraform-Dienstprinzipale erforderlich sind.
Nachdem die Terraform-Bereitstellung erfolgreich abgeschlossen wurde, muss der Entra ID-Administrator des Kunden die Anwendungsregistrierung und den Dienstprinzipal manuell erstellen. Notieren Sie die Werte client_id und audience für die Konfiguration des Codebeamer AI Dienstes.
* 
Überspringen Sie diesen Abschnitt, wenn enable_app_registration in infra.tfvars auf true festgelegt wurde. Die Anwendungsregistrierung wird von Terraform erstellt, und die Werte client_id und audience sind in der Terraform-Ausgabe verfügbar.
Registrierung von Entra ID-Apps über das Azure-Portal erstellen
1. Wechseln Sie zu: Azure Portal > Microsoft Entra ID > App registrations > New registration
2. Geben Sie die folgenden Details in das Registrierungsformular ein:
Name: <resource_group_name>-oauth. Zum Beispiel: my-cbai-chd-prod-oauth
Supported account types: Nur Konten in diesem Organisationsverzeichnis.
Redirect URI muss leer bleiben.
3. Klicken Sie auf Register.
4. Kopieren Sie auf der Seite Overview die Application (client) ID, also die client_id.
5. Klicken Sie im linken Menü auf Expose an API.
6. Klicken Sie neben Application ID URI auf Set. Legen Sie diese Option auf api://<client_id> fest. Klicken Sie auf Save.
7. Klicken Sie auf Add a scope. Konfigurieren Sie die folgenden Felder.
Scope name: access_as_application
Who can consent: Admins only
Admin consent display name: Access API
Admin consent description: Access API
State: Enabled
Klicken Sie auf Add scope.
8. Klicken Sie im linken Menü auf Overview. Kopieren Sie die Application ID URI, also die Zielgruppe.
9. Erstellen Sie den Dienstprinzipal.
Gehen Sie zu Microsoft Entra ID > Enterprise applications.
Der Dienstprinzipal wird automatisch erstellt, wenn die App-Registrierung erstellt wird. Überprüfen Sie, ob er angezeigt wird, indem Sie nach <resource_group_name>-oauth suchen.
Entra ID-App-Registrierung über CLI erstellen
1. Erstellen Sie die App-Registrierung.
az ad app create \
--display-name "<resource_group_name>-oauth" \
--sign-in-audience AzureADMyOrg
Kopieren Sie die appId aus der Ausgabe. Dies ist die client_id. Beispiel: "appId": "12345678-abcd-efgh-ijkl-123456789012".
2. Legen Sie den ID-URI für die Anwendung fest. Dies ist die audience, die später beim Erstellen des Dienstprinzipals verwendet wird.
az ad app update \
--id <appId> \
--identifier-uris "api://<appId>"
3. Fügen Sie den OAuth2-Berechtigungsumfang hinzu.
a. Generieren Sie eine eindeutige UUID für die scopeID.
SCOPE_ID=$(uuidgen)
b. Führen Sie den folgenden Befehl aus.
az ad app update \
--id <appId> \
--set api.oauth2PermissionScopes='[{
"id": "'"$SCOPE_ID"'",
"adminConsentDescription": "Access API",
"adminConsentDisplayName": "Access API",
"isEnabled": true,
"type": "Admin",
"value": "access_as_application"
}]'
4. Erstellen Sie den Dienstprinzipal.
az ad sp create --id <appId>
5. Vergewissern Sie sich, dass die Registrierung der Entra ID-App erstellt wurde.
az ad app show --id <appId> \
--query "{clientId: appId, audience: identifierUris[0]}" \
-o table
Weitere Informationen finden Sie unter az ad app | Microsoft Learn
Kopieren Sie nach dem Erstellen der App-Registrierung die folgenden Werte. Diese sind für die Konfiguration von cb-ai-service erforderlich:
Feld
Position
Beispiel
client_id
App Registration > Overview > Application (client) ID
12345678-abcd-efgh-ijkl-123456789012
audience
App Registration > Expose an API > Application ID URI
api://12345678-abcd-efgh-ijkl-123456789012
War dies hilfreich?