Wat zijn implementatiestacks?

Voltooid

Een Azure-implementatiestack is een type Azure-resource waarmee u de levenscyclus van een verzameling Azure-resources als één atomische eenheid kunt beheren, zelfs als deze meerdere resourcegroepen of abonnementen omvatten. Het maakt consistente en herhaalbare implementaties mogelijk, vereenvoudigt het beheer en maakt efficiënt schalen en bijwerken van resources mogelijk.

In deze les leert u meer over de resourceorganisatie in Azure en hoe implementatiestacks u kunnen helpen uw resources te beheren op manieren die voorheen niet mogelijk waren.

Organisatie van resources

Er zijn veel manieren om uw resources in Azure te organiseren. U kunt ervoor kiezen om resources te organiseren op basis van een omgeving (productie, fasering, ontwikkeling), een toepassingslevenscyclus of een functie (bijvoorbeeld connectiviteits- of rekenresources). Factoren zoals de grootte van uw organisatie, het aantal toepassingen en de gegevenslocatie beïnvloeden deze beslissingen en er zijn algemene aanbevolen procedures voor elk scenario.

Voor implementatieomgevingen kunt u deze scheiden in verschillende abonnementen of zelfs beheergroepen. Alle onderdelen van een toepassing kunnen bestaan in één resourcegroep, meerdere resourcegroepen of zelfs meerdere abonnementen. Voor azure-resourceorganisatie stellen best practices voor het organiseren van resources in resourcegroepen op basis van de levenscyclus en beveiliging.

Toepassing voor één resourcegroep

Er zijn momenten waarop het gebruik van één resourcegroep voor uw toepassing zinvol is. Als u niet eerder met Azure werkt en net aan de slag gaat met een ontwikkelomgeving of als u een productietoepassing zonder veel resources implementeert, werkt één resourcegroep mogelijk.

Een resourcegroep wordt vaak gebruikt als een beveiligingsgrens voor machtigingen. U kunt één RBAC-toewijzing (op rollen gebaseerd toegangsbeheer) beheren binnen het bereik van de resourcegroep als uw beveiligingsvereisten niet strikt zijn.

Stel dat uw toepassing bestaat uit een app-service, application insights en een SQL-database die is geïmplementeerd in één resourcegroep. Uw organisatie heeft afzonderlijke teams voor het beheren van reken-, webtoepassingen en databases. Als het beveiligingsbeleid van uw organisatie gedetailleerde RBAC vereist, is het nodig om machtigingen voor het bereik van de resource te bepalen in plaats van het bereik van de resourcegroep.

Een diagram dat een toepassing vertegenwoordigt met de bijbehorende resources die zijn geïmplementeerd in één resourcegroep.

Na verloop van tijd is het mogelijk dat resources die niet aan de toepassing zijn gerelateerd, ook in dezelfde resourcegroep worden geïmplementeerd. Een collega van u implementeert bijvoorbeeld een nieuwe Azure Key Vault en kiest per ongeluk de verkeerde resourcegroep op het moment van implementatie. Dit scenario kan het lastig maken om te bepalen welke resources bij welke toepassing horen en kunnen leiden tot problemen, zoals onbedoeld verwijderen van een kritieke resource.

Toepassing voor meerdere resourcegroepen

Wat gebeurt er wanneer uw toepassing wordt geschaald tot het punt waar een wijziging nodig is? Het kan nodig zijn om onderdelen van uw toepassing op te splitsen in afzonderlijke resourcegroepen voor vereenvoudigde beveiligingscontroles. U kunt bijvoorbeeld alle rekenresources in de rekenresourcegroep plaatsen, de toepassingsresources in de toepassingsresourcegroep en alle databases in de databaseresourcegroep plaatsen.

Een diagram dat een toepassing vertegenwoordigt met de bijbehorende resources die zijn geïmplementeerd in meerdere resourcegroepen.

Met dit model kunt u machtigingen instellen voor de reken-, toepassings- en databaseteams voor de juiste resourcegroepen. Hoewel deze praktijk een probleem kan oplossen, hebt u gedecentraliseerd beheer geïntroduceerd. Omdat de meeste implementaties in Azure zijn gericht op de resourcegroep, hebt u niet langer de mogelijkheid om de resources als één eenheid te beheren.

Als toepassingsresources worden geïmplementeerd in afzonderlijke resourcegroepen, kan het lastig zijn om te bepalen welke resources deel uitmaken van de toepassing. U kunt Azure Tags gebruiken om resources in een toepassing te identificeren, maar het is mogelijk dat een resource niet goed is gelabeld.

Implementatiebewerkingen moeten mogelijk meerdere keren worden uitgevoerd in het model voor meerdere resourcegroepen. Wanneer u resources implementeert, afhankelijk van uw implementatiemethode, kan het nodig zijn om meerdere implementatieopdrachten uit te voeren. De meeste implementaties in Azure zijn gericht op de resourcegroep, dus het is nodig om eerst uw netwerkresources te implementeren, gevolgd door uw toepassingsresources. Hetzelfde geldt voor verwijderbewerkingen. Als u alle resourcegroepen met betrekking tot de toepassing wilt verwijderen, moet u mogelijk meerdere verwijderbewerkingen uitvoeren.

Implementatiestacks invoeren

Implementatiestacks veranderen hoe u denkt over resourceorganisatie in resourcegroepen en abonnementen. Met een implementatiestack kunt u alle resources groeperen waaruit uw toepassing bestaat, ongeacht waar ze zich in de organisatiehiërarchie van uw Azure-resource bevinden. U kunt ze beheren als één eenheid. Met implementatiestacks kunt u levenscyclusbewerkingen uitvoeren op de verzameling resources waaruit de stack bestaat.

U kunt implementatiestacks beschouwen als een reeks aanwijzers die de resources van uw toepassing in één eenheid groepeert. Implementatiestacks kunnen worden gemaakt op verschillende bereiken, zoals resourcegroepen, abonnementen en beheergroepen.

Een diagram dat de resources van een toepassing vertegenwoordigt die worden beheerd door een implementatiestack en wordt geïmplementeerd in meerdere resourcegroepen.

Bekijk het voorbeeld van eerder. Door uw toepassing en de bijbehorende resources te implementeren met één stack, gericht op abonnementsniveau en in resourcegroepen, kunt u de toepassing nu als één eenheid beheren. Elke resourcegroep en de bijbehorende resources worden beheerd door de stack.

Implementatiestacks gebruiken

Welke bewerkingen kunnen worden uitgevoerd op implementatiestacks? U kunt implementatiestacks maken, weergeven, bijwerken en verwijderen. Voor resources kunt u de resources in de stack bekijken, resources binnen de stack toevoegen en verwijderen en de stack en de bijbehorende resources beveiligen tegen verwijdering.

Het maken en implementeren van een implementatiestack en de bijbehorende resources is bijna identiek aan een standaard Azure-implementatie en maakt gebruik van dezelfde ARM JSON-sjablonen, Bicep-bestanden of sjabloonspecificaties die u gewend bent. Voorbeeld:

De Azure CLI-opdracht voor het implementeren van een Bicep-bestand in een resourcegroep is:

az deployment group create \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep

De Azure CLI-opdracht voor het maken van een implementatiestack binnen het bereik van de resourcegroep is:

az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none

Implementatiestacks maken efficiënt opschonen van omgevingen mogelijk. Met implementatiestacks kunt u de stack en alle bijbehorende resources verwijderen via één API-aanroep, zonder dat u afhankelijkheden hoeft te begrijpen. Deze functie vereenvoudigt het verwijderen van de resources op een betrouwbare manier, waardoor de snelheid van het verwijderen van resources wordt verbeterd. Voorbeeld:

De Azure CLI-opdracht voor het verwijderen van een implementatiestack binnen het bereik van de resourcegroep en de bijbehorende resources is:

az stack group delete \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --action-on-unmanage detachAll

Notitie

U kunt implementaties in de volledige modus al gebruiken als onderdeel van een bestaande implementatiestrategie. Als u dit doet, kunt u overwegen implementatiestacks te gebruiken als de volgende evolutie, evenals een veiligere optie.

Beheerde resources

Wanneer u een Bicep-bestand, ARM JSON-sjabloon of sjabloonspecificatie naar een implementatiestack verzendt, wordt de stack verantwoordelijk voor het beheer van de resources die in het bestand worden beschreven. Resources die worden beheerd door de stack worden beheerde resources genoemd, maar deze resources worden nog steeds gewijzigd via de oorspronkelijke sjabloonbestanden.

Als een resource niet meer door de implementatiestack hoeft te worden beheerd, kunt u de stack wijzigen zodat deze de resource niet meer bevat. De actie over onbeheerd gedrag van een implementatiestack bepaalt wat er gebeurt met een resource die wordt verwijderd uit de definitie van de implementatiestack. Dit gedrag, dat verderop in de eenheid wordt besproken, bepaalt of een resource, resourcegroep of beheergroepen worden losgekoppeld of verwijderd uit de stack.

Instellingen weigeren

Daarnaast kunt u een 'instelling weigeren' configureren voor de stack en de bijbehorende resources die niet-geautoriseerde wijzigingen voorkomen. Deze weigeringstoewijzingen kunnen worden aangepast. U kunt de modus instellen op geen vlag, verwijderen weigeren of schrijven en verwijderen weigeren, wat kan lijken op Azure-vergrendelingen. Daarnaast kunt u specifieke acties of service-principals uitsluiten van de weigeringstoewijzingen. Overweeg instellingen voor weigeren een extra beveiligingslaag tegen onbedoelde wijzigingen en verwijderingen.