För att effektivisera och automatisera driftsättningen av ett Azure Kubernetes Service-kluster (AKS) i ett befintligt subnät och säkerställa en lyckad installation av Jira behöver du använda en specifik uppsättning verktyg och tekniker.
Polat Kurt
Polat Kurt, a computer science graduate from the University of Applied Sciences in Braunschweig, Germany, spent a decade working as a freelance IT consultant in development and operations. For the last few years, he has been working as a DevOps Engineer.
När du har läst klart det här blogginlägget kan du starta en Jira-instans på ett AKS-kluster som har byggts i ett befintligt subnät i Azure.
Verktyg och teknikstack som används
Varje verktyg spelar en avgörande roll för att hantera olika delar av driftsättningsprocessen:
Bash, Terraform CLI, Helm CLI, Azure CLI, Visual Studio CodeBash automatiserar uppgifter, Terraform CLI etablerar infrastrukturen, Helm CLI driftsätter Jira på Kubernetes, Azure CLI hanterar Azure-resurser och Visual Studio Code underlättar redigering av skript och diagram.
TerraformEtablerar och konfigurerar infrastruktur.
AzureTillhandahåller molnresurserna.
HelmDriftsätter och hanterar Jira på Kubernetes.
JiraTillhandahåller funktioner för projektledning och ärendehantering.
Vad är det önskade läget?
Att konfigurera ett Azure Kubernetes Service-kluster (AKS) är ganska enkelt. Det kan göras med bara några rader kommandon i Azure CLI. Men så snart du behöver göra konfigurationer, som att ställa in nätverkskonfigurationen eller använda olika managed users, blir det komplicerat.
I det här verkliga scenariot bygger vi ett AKS-kluster i Azure med en databas för att köra Jira. Subnäten och den managed user som används finns dock redan. Det är mycket möjligt att du stöter på ett sådant scenario, eftersom ditt team eller din kund förmodligen har en infrastruktur med ett specifikt IP-intervall och fler krav som AKS-klustret ska integreras med.
Tekniskt sett innebär integreringen av AKS i ett befintligt virtuellt nätverk (vnet) att ordningen för att skapa komponenter behöver ändras och att specifika behörigheter måste ges till den managed user som används i förväg, så att Terraform-skriptet kan köras utan problem.
Vårt mål är att automatisera så mycket som möjligt, så vi driftsätter och hanterar vår infrastruktur som Infrastructure as Code (IaC). Det hjälper oss att hålla produktionsmiljön och konfigurationen synkroniserade och undvika avvikelser. Därför skapar vi alla infrastrukturkomponenter med Terraform.
Arkitektur
Komponenterna i resursgruppen rg-jira-fw01 till vänster finns redan.
För att organisera våra resurser och hantera åtkomst har vi tre resursgrupper: en för AKS, en för Application Gateway och en för dess komponenter. Terraform-skriptet driftsätter en node pool med två noder i det befintliga AKS-subnätet, en MSSQL-server med två databaser (Jira och EazyBI) samt en Application Gateway med en offentlig IP-adress som används som ingress för att terminera inkommande SSL-anslutningar. Application Gateway driftsätts i AppGW-subnätet.
Diagrammet nedan visar även komponenterna för Terraform state-filen (tfstate).
Repository
Hela projektet kan klonas från https://github.com/eficode/aks2jira.
Konfigurera miljön
Följ de här stegen för att förbereda din miljö och lagra din Terraform state-fil på distans.
Verktyg/CLI
Vi hoppar över installationen av CLI:erna (se Verktyg och teknikstack som används), eftersom det finns många resurser som visar hur du installerar dem för ditt operativsystem.
Lagra tfstate på distans
Vi rekommenderar att din Terraform state lagras på distans. Att ha den lokalt orsakar inga problem när du arbetar ensam, men så snart ni är fler än en utvecklare bör du lagra den på distans (se Terraform-dokumentationen).
Därför behöver vi:
Skapa en Resource Group.
Skapa ett Storage Account.
Skapa en Blob Container.
Ange en miljövariabel (så att Terraform kan hitta storagekontot).
Konfigurera Terraform.
Alla dessa steg utförs genom att köra bash-skriptet ./scripts/create_tfstate_storage.ps1|sh när du har loggat in på ditt Azure-konto.
Skapa en Terraform-workspace
Vi använder workspaces för att skapa olika miljöer, till exempel dev, int och prod. Namnen på dessa workspaces används senare av Terraform för att definiera komponentnamn i Azure, till exempel resource group och liknande.
Kör följande för att skapa en workspace:
Konfigurera Terraform-skriptet
I variables.tf anger vi namnet på det managed user ID som skapats tidigare och pod CIDR enligt kundens fördefinierade IP-intervall. Eftersom vi har en ny miljö behöver vi också utöka flaggan för dess vm-storlek.
Med hjälp av datablock i modulen network_aks kan vi hämta det befintliga managed user ID-objektet och båda subnäten för AKS och Application Gateway som finns i vnet:et vnet-jira:
Du kan använda de hämtade variablerna i ditt Terraform-skript så här:
Skapa AKS-klustret
De huvudsakliga ändringarna baseras på filen terraform/modules/aks/main.tf. AKS-resursen innehåller all information som krävs för att skapa klustret med önskade inställningar. Eftersom vi har hämtat det befintliga AKS-subnätet måste dess ID anges.
Ange behörigheter
Eftersom nätverksinfrastrukturen inte skapas av själva AKS-klustret behöver vissa behörigheter anges:
Application Gateways Ingress User måste ha rollen Contributor för Application Gateway.
Application Gateways Ingress User måste ha rollen Contributor för den resource group som innehåller Application Gateway.
Application Gateways Ingress User måste ha rollen Network Contributor för AKS-subnätet.
Application Gateways Ingress User måste ha rollen Managed Identity Operator för den managed user.
Application Gateways Ingress User måste ha rollen Managed Contributor för den managed user.
Skapa Application Gateway
När du har skapat den offentliga frontend-IP-adressen behöver du skapa Application Gateway och ange frontend-IP-konfigurationen.
Skapa infrastruktur
Du kan skapa infrastrukturen genom att köra dessa Terraform-kommandon (vi går inte igenom Terraform-kommandona här).
Installera Jira
När infrastrukturen har skapats installerar vi Jira-applikationen via det officiella Helm Chart. Eftersom vi har egna inställningar kan vi ange en values-fil.
Ändra hosts-filen
Om du ännu inte har en egen domän kan du testa valfri domän genom att ange Public IP-adressen (för Application Gateway) tillsammans med en domän, till exempel mydomain.com, i din hosts-fil.
Windows: C:\Windows\System32\Drivers\etc\hostsLinux: /etc/hosts<ip-of-appgw> jira.mydomain.comÄndra Helm values-filen
Jiras konfiguration på applikationsnivå finns i ./terraform/modules/jira/values-jira.yaml. Mer information finns i Atlassians dokumentation, men nedan följer information om några särskilt viktiga inställningar.
Installera Jira med Helm
Kör följande kommandon för att installera Helm Chart med den ändrade values-filen:
Detta lägger till det officiella Atlassian-repositoryt lokalt och installerar applikationen med inställningarna från dina values-filer i ett namespace som heter Jira.
Applikationsarkitektur
Översikten ur applikationsperspektiv ser ut så här:
Genom att följa den här guiden har du nu kunskapen som krävs för att hantera liknande driftsättningar och förvalta din Infrastructure as Code med självförtroende.
- DevOps
- Jira
- Azure AKS
Subscribe to our newsletter
Related blogs