Canary-releaser med Actions
Implementera Canary-releasemönster för att gradvis lansera nya funktioner till en delmängd användare och övervaka prestanda och stabilitet.
Canary-releaser med Actions är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Introduktion till canary-releaser
Föreställ Er att Ni lanserar en ny funktion eller uppdatering. Vad händer om den innehåller en bugg som påverkar alla användare? Läskigt, eller hur?
Canary-releaser bidrar till att minska denna risk genom att först rulla ut ändringar gradvis till en liten delmängd användare. Det är som att skicka in en "kanariefågel i en kolgruva" för att testa luften innan alla andra går in.
Fördelar med canary-releaser
Canary-releaser erbjuder flera viktiga fördelar:
- Minskad risk: Begränsa problemens påverkan till en liten användargrupp.
- Återkoppling från verkligheten: Få produktionsdata om prestanda och stabilitet.
- Snabb återställning: Om problem uppstår kan Ni snabbt återställa endast den lilla canary-gruppen eller hela tjänsten.
- Kontrollerad exponering: Öka gradvis antalet användare i takt med att förtroendet växer.
Canary jämfört med blue/green
Ni kanske minns blue/green-distributioner, där trafiken växlas omedelbart mellan två identiska miljöer.
Canary-releaser fungerar annorlunda. I stället för en omedelbar växling innebär de en gradvis trafikförskjutning. En ny version körs parallellt med den gamla, och inledningsvis ser bara en liten andel av användarna den nya versionen. Detta möjliggör detaljerad övervakning innan en fullständig utrullning.
Så fungerar canary-releaser
Här är det grundläggande flödet för en canary-release:
- Distribuera den nya versionen: En ny version av applikationen distribueras till en liten uppsättning servrar eller instanser parallellt med den befintliga stabila versionen.
- Dirigera en liten del av trafiken: En lastbalanserare eller service mesh konfigureras för att skicka en liten andel (till exempel 5–10 %) av användartrafiken till den nya versionen.
- Övervaka: Prestanda, felfrekvenser och användarfeedback övervakas noggrant för canary-gruppen.
- Befordra eller återställ: Om allt ser bra ut ökas trafiken gradvis, eller så befordras den nya versionen till 100 %. Om problem uppstår återställs canary-versionen och trafiken dirigeras tillbaka till den stabila versionen.
Orkestrering med GitHub Actions
GitHub Actions kan orkestrera hela canary-releaseprocessen. Det hanterar inte trafiken direkt (det är infrastrukturens uppgift), men utlöser stegen:
- Bygga och testa applikationen.
- Distribuera den nya versionen till en canary-miljö.
- Initiera trafikförskjutningar via API-anrop till lastbalanseraren eller service mesh.
- Vänta på övervakningsresultat eller manuella godkännanden.
- Flytta canary-versionen till full produktion eller utlösa en rollback.
Översikt över ett canary-arbetsflöde
Ett typiskt GitHub Actions-arbetsflöde för en canary-release kan se ut så här:
name: Canary Deployment
on: push
jobs:
build:
# ... build and test steps ...
deploy-canary:
needs: build
steps:
- name: Deploy to Canary Group
# ... call script/tool to deploy and shift 10% traffic ...
monitor-canary:
needs: deploy-canary
# ... wait for monitoring/approval ...
promote-or-rollback:
needs: monitor-canary
# ... conditionally promote to 100% or rollback ...Varje steg skulle interagera med era distributionsverktyg.
Simulera logiken för en canary-utrullning
GitHub Actions orkestrerar processen, men den faktiska beslutslogiken och distributionskommandona körs ofta i skript. Här är ett Python-exempel som simulerar logiken bakom en canary-utrullning. Föreställ er att en Action kör det här skriptet:
def deploy_version(version, traffic_percent):
print(f"Deploying {version} to {traffic_percent}% traffic.")
if traffic_percent == 100:
print("Full rollout complete!")
elif traffic_percent > 0:
print("Canary deployed. Monitoring for stability...")
else:
print("Version removed (rollback).")
if __name__ == "__main__":
print("--- Starting Canary Workflow ---")
new_app_version = "v2.1-canary"
stable_app_version = "v2.0"
# Step 1: Deploy new version to 10% traffic
deploy_version(new_app_version, 10)
# Step 2: Simulate monitoring (e.g., waiting for metrics)
print("Monitoring canary performance...")
import random
canary_successful = random.choice([True, True, True, False]) # 75% chance of success
if canary_successful:
print("Canary looks good! Proceeding to full rollout.")
# Step 3a: Promote new version to 100%
deploy_version(new_app_version, 100)
else:
print("Canary issues detected! Rolling back.")
# Step 3b: Rollback to stable version
deploy_version(stable_app_version, 100)
print("--- Canary Workflow Finished ---")Övervaka er canary
Effektiv övervakning är avgörande. GitHub Actions-arbetsflödet kan integreras med övervakningssystem på flera sätt:
- API-anrop: Fråga övervakningsverktyg (t.ex. Datadog, Prometheus) efter viktiga mätvärden.
- Hälsokontroller: Fråga applikationens health-endpoints med jämna mellanrum.
- Manuella grindar: Pausa arbetsflödet för mänsklig granskning och godkännande.
- Tidsbaserade väntetider: Vänta en angiven period tills mätvärdena stabiliseras.
Arbetsflödet använder sedan dessa signaler för att avgöra om canary-versionen ska flyttas till full produktion eller om en rollback ska göras.
Villkorad promotion eller rollback
Efter övervakningsfasen använder GitHub Actions villkorslogik för att avgöra nästa steg. Ni kan använda if-satser i definitionerna av jobb eller steg.
promote-or-rollback:
needs: monitor-canary
if: success() && needs.monitor-canary.outputs.canary_ok == 'true'
steps:
- name: Promote Full Rollout
# ... command to shift 100% traffic to new version ...
rollback:
needs: monitor-canary
if: failure() || needs.monitor-canary.outputs.canary_ok == 'false'
steps:
- name: Rollback to Stable
# ... command to shift 100% traffic to old version ...Detta säkerställer en automatisk reaktion på canary-versionens prestanda.
Kontroll av canary-release
Ni har lärt er om fördelarna med och mekanismerna bakom canary-releaser. Nu testar vi er förståelse.
Sammanfattning: Canary-releaser med Actions
I den här lektionen har ni lärt er om canary-releaser, en kraftfull distributionsstrategi för att gradvis rulla ut nya programvaruversioner till en delmängd av användarna.
- Canary-releaser minimerar riskerna och ger återkoppling från verklig användning.
- GitHub Actions orkestrerar stegen för bygg, distribution till canary, övervakning samt villkorad promotion eller rollback.
- Effektiv övervakning och villkorslogik är nyckeln till framgångsrika canary-pipelines.
Med canary-releaser kan ni distribuera med större trygghet och kontroll!
Lär dig DevOps-bootcamp med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Canary-releaser med Actions” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Canary-releaser med Actions”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Canary-releaser med Actions”?
Implementera Canary-releasemönster för att gradvis lansera nya funktioner till en delmängd användare och övervaka prestanda och stabilitet. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Canary-releaser med Actions”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Blue/Green-distributioner
- Canary-releaser med Actions
- Återställningar och katastrofåterställning
- Feature flags och stegvisa utrullningar