- Reorganize docs into 'Core deployment guides' and 'Setup and configuration' subdirectories - Consolidate redundant documentation files (ACR, pipelines, deployment guides) - Add documentation consolidation plan - Update backend database factory and logger services - Update migration script and docker-compose configurations - Add PostgreSQL setup script
11 KiB
Azure Container Registry - Quick Start Guide
Snelstart guide om zelf Azure Container Registry aan te maken en te configureren voor productie.
🚀 Stap 1: Azure Container Registry Aanmaken
Optie A: Met Script (Aanbevolen)
# Run het script
./scripts/create-acr.sh
# Of met custom parameters:
./scripts/create-acr.sh rg-cmdb-gui zuyderlandcmdbacr westeurope Basic
Het script doet automatisch:
- ✅ Checkt of je ingelogd bent bij Azure
- ✅ Maakt resource group aan (als nodig)
- ✅ Controleert of ACR naam beschikbaar is
- ✅ Maakt ACR aan met Basic SKU
- ✅ Toont credentials
- ✅ Test Docker login
Optie B: Handmatig via Azure CLI
# Login bij Azure
az login
# Resource group aanmaken
az group create --name rg-cmdb-gui --location westeurope
# Check of naam beschikbaar is
az acr check-name --name zuyderlandcmdbacr
# ACR aanmaken (Basic SKU - ~€5/maand)
az acr create \
--resource-group rg-cmdb-gui \
--name zuyderlandcmdbacr \
--sku Basic \
--admin-enabled true
# Credentials ophalen
az acr credential show --name zuyderlandcmdbacr
Optie C: Via Azure Portal
- Ga naar Azure Portal
- Klik "Create a resource"
- Zoek "Container Registry"
- Klik "Create"
- Vul in:
- Resource group:
rg-cmdb-gui(of maak nieuwe) - Registry name:
zuyderlandcmdbacr(moet uniek zijn, alleen kleine letters en cijfers, geen streepjes) - Location:
West Europe - SKU:
Basic⭐ (aanbevolen - ~€5/maand) - Domain name label scope:
- "Unsecure" ⭐ (aanbevolen) - DNS naam wordt:
zuyderlandcmdbacr.azurecr.io - "Resource Group Reuse" (voor extra security) - DNS naam wordt:
zuyderlandcmdbacr-abc123.azurecr.io(met hash) - ⚠️ Let op: Als je een hash gebruikt, moet je alle configuraties aanpassen met de volledige DNS naam!
- "Unsecure" ⭐ (aanbevolen) - DNS naam wordt:
- Role assignment permissions mode:
- "RBAC Registry Permissions" ⭐ (aanbevolen - eenvoudigst)
- "RBAC Registry + ABAC Repository Permissions" (alleen als je per-repository permissions nodig hebt)
- Resource group:
- Klik "Review + create" → "Create"
💡 Aanbeveling: Kies "Unsecure" voor de eenvoudigste setup. Zie docs/AZURE-ACR-DNL-SCOPE.md voor details.
Noteer je ACR naam! Je hebt deze nodig voor de volgende stappen.
🔧 Stap 2: Pipeline Variabelen Aanpassen
Pas azure-pipelines.yml aan met jouw ACR naam:
variables:
# Pas deze aan naar jouw ACR naam
acrName: 'zuyderlandcmdbacr' # ← Jouw ACR naam hier
repositoryName: 'cmdb-insight'
# Service connection naam (maak je in volgende stap)
dockerRegistryServiceConnection: 'zuyderland-cmdb-acr-connection'
imageTag: '$(Build.BuildId)'
Commit en push:
git add azure-pipelines.yml
git commit -m "Configure ACR in pipeline"
git push origin main
🔗 Stap 3: Service Connection Aanmaken in Azure DevOps
Deze connection geeft Azure DevOps toegang tot je ACR.
- Ga naar je Azure DevOps project
- Klik op ⚙️ Project Settings (onderaan links)
- Ga naar Service connections (onder Pipelines)
- Klik op "New service connection"
- Kies "Docker Registry"
- Kies "Azure Container Registry"
- Vul in:
- Azure subscription: Selecteer je Azure subscription
- Azure container registry: Selecteer je ACR (bijv.
zuyderlandcmdbacr) - Service connection name:
zuyderland-cmdb-acr-connection - Description: Optioneel (bijv. "ACR for CMDB GUI")
- Klik "Save"
✅ Noteer de service connection naam! Deze moet overeenkomen met dockerRegistryServiceConnection in azure-pipelines.yml.
🎯 Stap 4: Pipeline Aanmaken en Run
- Ga naar je Azure DevOps project
- Klik op Pipelines (links in het menu)
- Klik op "New pipeline" of "Create Pipeline"
- Kies "Azure Repos Git" (of waar je code staat)
- Selecteer je repository: "CMDB Insight"
- Kies "Existing Azure Pipelines YAML file"
- Selecteer:
- Branch:
main - Path:
/azure-pipelines.yml
- Branch:
- Klik "Continue"
- Review de pipeline configuratie
- Klik "Run" om de pipeline te starten
✅ Stap 5: Verifiëren
In Azure Portal:
- Ga naar je Container Registry (
zuyderlandcmdbacr) - Klik op "Repositories"
- Je zou moeten zien:
cmdb-insight/backendcmdb-insight/frontend
- Klik op een repository om de tags te zien (bijv.
latest,123)
Via Azure CLI:
# Lijst repositories
az acr repository list --name zuyderlandcmdbacr
# Lijst tags voor backend
az acr repository show-tags --name zuyderlandcmdbacr --repository cmdb-insight/backend
# Lijst tags voor frontend
az acr repository show-tags --name zuyderlandcmdbacr --repository cmdb-insight/frontend
🐳 Stap 6: Images Lokaal Testen (Optioneel)
# Login bij ACR
az acr login --name zuyderlandcmdbacr
# Pull images
docker pull zuyderlandcmdbacr.azurecr.io/cmdb-insight/backend:latest
docker pull zuyderlandcmdbacr.azurecr.io/cmdb-insight/frontend:latest
# Test run (met docker-compose)
docker-compose -f docker-compose.prod.acr.yml pull
docker-compose -f docker-compose.prod.acr.yml up -d
📋 Checklist
- Azure Container Registry aangemaakt
- ACR naam genoteerd
azure-pipelines.ymlvariabelen aangepast- Service Connection aangemaakt in Azure DevOps
- Pipeline aangemaakt en gerund
- Images succesvol gebouwd en gepusht
- Images geverifieerd in Azure Portal
🔄 Automatische Triggers
De pipeline triggert automatisch bij:
- Push naar
mainbranch → Bouwtlatesttag - Git tags die beginnen met
v*→ Bouwt versie tag (bijv.v1.0.0)
Voorbeeld:
# Tag aanmaken en pushen
git tag v1.0.0
git push origin v1.0.0
# → Pipeline triggert automatisch en bouwt versie 1.0.0
🚨 Troubleshooting
Pipeline Fails: "Service connection not found"
Oplossing:
- Controleer of de service connection naam in
azure-pipelines.ymlovereenkomt met de naam in Azure DevOps - Ga naar Project Settings → Service connections en verifieer de naam
Pipeline Fails: "ACR not found"
Oplossing:
- Controleer of de
acrNamevariabele correct is inazure-pipelines.yml - Verifieer dat de ACR bestaat:
az acr list
Pipeline Fails: "Permission denied"
Oplossing:
- Controleer of de service connection de juiste permissions heeft
- Verifieer dat je Azure subscription toegang heeft tot de ACR
- Probeer de service connection opnieuw aan te maken
ACR Naam Niet Beschikbaar
Oplossing:
- ACR namen moeten uniek zijn wereldwijd
- Probeer een andere naam:
zuyderlandcmdbacr1zuyderlandcmdbprodcmdbzuyderlandacrzuyderlandcmdbgui
💰 Kosten & SKU Keuze
Aanbeveling: Basic SKU ⭐ (~€5/maand)
Basic SKU (Aanbevolen voor jouw situatie)
Inclusief:
- ✅ 10GB storage - Ruim voldoende voor backend + frontend images met meerdere versies
- ✅ 1GB/day webhook throughput - Voldoende voor CI/CD
- ✅ Unlimited pulls - Geen extra kosten voor image pulls
- ✅ Admin user enabled - Voor development/productie
- ✅ RBAC support - Role-based access control
- ✅ Content trust - Image signing support
- ✅ Kosten: ~€5/maand
Limitaties:
- ❌ Geen geo-replicatie
- ❌ Geen security scanning (vulnerability scanning)
- ❌ Geen content trust storage
Wanneer gebruiken:
- ✅ Jouw situatie - 20 gebruikers, corporate tool
- ✅ Development en productie omgevingen
- ✅ Kleine tot middelgrote teams
- ✅ Budget-conscious deployments
Standard SKU (~€20/maand)
Inclusief (alles van Basic +):
- 100GB storage
- 10GB/day webhook throughput
- Geo-replicatie
- Niet nodig voor jouw situatie
Premium SKU (~€50/maand)
Inclusief (alles van Standard +):
- 500GB storage
- Security scanning
- Private endpoints
- Overkill voor 20 gebruikers
Voor jouw situatie (20 gebruikers): Basic is perfect! ✅
🔐 Permissions Mode
Aanbeveling: RBAC Registry Permissions ⭐
RBAC Registry Permissions (Aanbevolen)
Hoe het werkt:
- Permissions worden ingesteld op registry niveau
- Alle repositories binnen de registry delen dezelfde permissions
- Gebruikers hebben toegang tot alle repositories of geen
Voordelen:
- ✅ Eenvoudig - Minder complexiteit
- ✅ Makkelijk te beheren - Eén set permissions voor de hele registry
- ✅ Voldoende voor de meeste scenario's - Perfect voor jouw situatie
- ✅ Standaard keuze - Meest gebruikte optie
Wanneer gebruiken:
- ✅ Jouw situatie - 20 gebruikers, corporate tool
- ✅ Kleine tot middelgrote teams
- ✅ Alle repositories hebben dezelfde toegangsvereisten
- ✅ Eenvoudige permission structuur gewenst
RBAC Registry + ABAC Repository Permissions
Wanneer gebruiken:
- Als je per-repository permissions nodig hebt
- Grote teams met verschillende toegangsvereisten
- Complexe permission structuur
Voor jouw situatie: RBAC Registry Permissions is perfect! ✅
🔄 Shared ACR Setup (Optioneel)
Als je al een ACR hebt voor andere applicaties, kun je deze hergebruiken:
Voordelen:
- ✅ Cost Savings: Eén ACR voor alle applicaties (€5-20/month vs multiple ACRs)
- ✅ Centralized Management: All images in one place
- ✅ Easier Collaboration: Teams can share images
Hoe het werkt:
- ACR is shared, maar elke applicatie gebruikt een unique repository name
- Repository name (
cmdb-insight) scheidt jouw app van anderen - Images zijn georganiseerd per applicatie:
acr.azurecr.io/app-name/service:tag
Voorbeeld structuur:
zuyderlandacr.azurecr.io/
├── cmdb-insight/ ← Deze applicatie
│ ├── backend:latest
│ └── frontend:latest
├── other-app/ ← Andere applicatie
│ └── api:latest
└── shared-services/ ← Gedeelde base images
└── nginx:latest
Setup:
# Gebruik bestaande ACR
ACR_NAME="your-existing-acr"
ACR_RESOURCE_GROUP="rg-shared-services"
# Verifieer dat het bestaat
az acr show --name $ACR_NAME --resource-group $ACR_RESOURCE_GROUP
# Update pipeline variabelen met bestaande ACR naam
📚 Meer Informatie
- Deployment Guide:
docs/AZURE-APP-SERVICE-DEPLOYMENT.md - Azure DevOps Setup:
docs/AZURE-DEVOPS-SETUP.md - Deployment Guide:
docs/PRODUCTION-DEPLOYMENT.md
🎯 Volgende Stappen
Nu je images in ACR staan, kun je ze deployen naar:
- Azure Container Instances (ACI) - Eenvoudig, snel
- Azure App Service (Container) - Managed service
- Azure Kubernetes Service (AKS) - Voor complexere setups
- VM met Docker Compose - Volledige controle
Zie docs/AZURE-APP-SERVICE-DEPLOYMENT.md voor deployment opties.