Kurz: Nasazení z GitHub do Azure Kubernetes Service pomocí Jenkinse
Důležité
Řada služeb Azure má moduly plug-in Jenkinse. Některé z těchto modulů plug-in nebudou k 29. únoru 2024 podporovat. Azure CLI je aktuálně doporučený způsob integrace Jenkinse se službami Azure. Další informace najdete v článku Moduly plug-in Jenkinse pro Azure.
Tento kurz nasadí ukázkovou aplikaci z GitHub do clusteru Azure Kubernetes Service (AKS) nastavením kontinuální integrace (CI) a průběžného nasazování (CD) v Jenkinsu.
V tomto kurzu dokončíte tyto úlohy:
- Nasaďte ukázkovou aplikaci Azure Vote do clusteru AKS.
- Vytvořte základní projekt Jenkinse.
- Nastavení přihlašovacích údajů pro Jenkinse pro interakci s ACR
- Vytvořte úlohu sestavení Jenkinse a GitHub webhook pro automatizovaná sestavení.
- Otestujte kanál CI/CD a aktualizujte aplikaci v AKS na základě GitHub potvrzení kódu.
Požadavky
K dokončení tohoto kurzu potřebujete tyto položky:
Základní znalost Kubernetes, Gitu, CI/CD a imagí kontejnerů
Cluster AKS a nakonfigurovaný pomocí přihlašovacích údajů clusteru AKS.
Registr Azure Container Registry (ACR),název přihlašovacího serveru ACR a cluster AKS nakonfigurovaný k ověřování pomocí registru ACR.
Kontroler Jenkinse nasazený na virtuální počítač Azure.
Nainstalované a nakonfigurované Rozhraní příkazového řádku Azure CLI verze 2.0.46 nebo novější. Verzi zjistíte spuštěním příkazu
az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.Docker nainstalovaný ve vašem vývojovém systému
Účet GitHub, osobní GitHub tokena klienta Git nainstalovaného ve vašem vývojovém systému
Pokud místo tohoto ukázkového skriptovaného způsobu nasazení Jenkinse poskytnete vlastní instanci Jenkinse, vaše instance Jenkinse potřebuje nainstalované a nakonfigurované Docker a kubectl.
Příprava aplikace
V tomto článku použijete ukázkovou aplikaci Azure Vote, která obsahuje webové rozhraní a Redis pro dočasné úložiště dat.
Před integrací Jenkinse a AKS pro automatizovaná nasazení nejprve ručně připravte a nasaďte aplikaci Azure Vote do clusteru AKS. Toto ruční nasazení umožňuje zobrazit aplikaci v akci.
Poznámka
Ukázková aplikace Azure Vote používá pod Linuxu, který je naplánovaný na spuštění na linuxovém uzlu. Tok popsaný v tomto článku funguje také pro pod Windows Server naplánovaný na uzlu Windows Serveru.
Následující fork GitHub úložiště pro ukázkovou aplikaci https://github.com/Azure-Samples/azure-voting-app-redis – . Pokud chcete vytvořit fork úložiště do svého vlastního účtu GitHub, vyberte tlačítko Fork (Vytvořit fork) v pravém horním rohu.
Naklonování forku do vývojového systému Ujistěte se, že při klonování tohoto umístění používáte adresu URL vašeho forku:
git clone https://github.com/<your-github-account>/azure-voting-app-redis.git
Změňte adresář na naklonovaný fork:
cd azure-voting-app-redis
K vytvoření imagí kontejnerů potřebných pro ukázkovou aplikaci použijte soubor docker-compose.yaml s :
docker-compose up -d
Vyžádá se požadované základní image a kontejnery aplikací se sestaví. Vytvořenou image pak můžete zobrazit pomocí příkazu docker images. Stáhly se nebo se vytvořily tři image. Image azure-vote-front obsahuje aplikaci a jako základ využívá image nginx-flask. Image redis se používá ke spuštění instance Redis:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
azure-vote-front latest 9cc914e25834 40 seconds ago 694MB
redis latest a1b99da73d05 7 days ago 106MB
tiangolo/uwsgi-nginx-flask flask 788ca94b2313 9 months ago 694MB
Přihlaste se ke svému registru kontejneru Azure.
az acr login -n <acrLoginServer>
Nahraďte <acrLoginServer> přihlašovacím serverem ACR.
Pomocí příkazu docker tag označte image názvem přihlašovacího serveru ACR a číslem verze . Použijte vlastní <acrLoginServer> název získaný v předchozím kroku:
docker tag azure-vote-front <acrLoginServer>/azure-vote-front:v1
Nakonec nasíhlaste image azure-vote-front do registru ACR. Znovu <acrLoginServer> nahraďte názvem přihlašovacího serveru vlastního registru ACR, například myacrregistry.azurecr.io :
docker push <acrLoginServer>/azure-vote-front:v1
Nasazení ukázkové aplikace do AKS
K nasazení ukázkové aplikace do clusteru AKS můžete použít soubor manifestu Kubernetes v kořenovém adresáři úložiště Azure Vote. Otevřete soubor azure-vote-all-in-one-redis.yaml manifestu pomocí editoru, jako je vi . Nahraďte microsoft názvem přihlašovacího serveru ACR. Tato hodnota se nachází na řádku 60 souboru manifestu:
containers:
- name: azure-vote-front
image: azuredocs/azure-vote-front
Dále pomocí příkazu kubectl apply nasaďte aplikaci do clusteru AKS:
kubectl apply -f azure-vote-all-in-one-redis.yaml
Vytvoří se služba nástroje pro vyrovnávání zatížení Kubernetes, která aplikaci zpřístupní na internetu. Tento proces může trvat několik minut. Pokud chcete monitorovat průběh nasazení nástroje pro vyrovnávání zatížení, použijte příkaz kubectl get service s argumentem . Jakmile se stav adresy EXTERNAL-IP změní ze stavu Probíhá na hodnotu IP adresa, pomocí klávesové zkratky zastavte sledovací proces kubectl.
$ kubectl get service azure-vote-front --watch
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.215.27 <pending> 80:30747/TCP 22s
azure-vote-front LoadBalancer 10.0.215.27 40.117.57.239 80:30747/TCP 2m
Pokud chcete vidět aplikaci v akci, otevřete ve webovém prohlížeči externí IP adresu vaší služby. Zobrazí se aplikace Azure Vote, jak je znázorněno v následujícím příkladu:

Konfigurace kontroleru Jenkinse
Pokud chcete povolit nasazení AKS z kontroleru Jenkinse, použijte následující změny:
Otevřete příchozí 80 port.
az vm open-port \
--resource-group <Resource_Group_name> \
--name <Jenkins_Controller_VM> \
--port 80 --priority 1020
Nahraďte <Resource_Group_name><Jenkins_Controller_VM> a příslušnými hodnotami.
SSH do kontroleru Jenkinse
ssh azureuser@<PublicIPAddres>
Nahraďte <PublicIPAddress> IP adresou kontroleru Jenkinse.
Instalace & loga do AzCLI
curl -L https://aka.ms/InstallAzureCli | bash
az login
Poznámka
Pokud chcete AzCLI nainstalovat ručně, postupujte podle těchto pokynů.
Instalace Dockeru
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y;
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -;
sudo apt-key fingerprint 0EBFCD88;
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable";
sudo apt-get update;
sudo apt-get install docker-ce -y;
Instalace Kubectl a Připojení do AKS
sudo az aks install-cli
sudo az aks get-credentials --resource-group <Resource_Group> --name <AKS_Name>
Nahraďte <Resource_Group><AKS_Name> a příslušnými hodnotami.
Konfigurace přístupu
sudo usermod -aG docker jenkins;
sudo usermod -aG docker azureuser;
sudo touch /var/lib/jenkins/jenkins.install.InstallUtil.lastExecVersion;
sudo service jenkins restart;
sudo cp ~/.kube/config /var/lib/jenkins/.kube/
sudo chmod 777 /var/lib/jenkins/
sudo chmod 777 /var/lib/jenkins/config
Vytvoření proměnné prostředí Jenkinse
Proměnná prostředí Jenkinse se používá k nastavení názvu přihlašovacího serveru ACR. Na tuto proměnnou se odkazuje během úlohy sestavení Jenkinse. Pokud chcete vytvořit tuto proměnnou prostředí, proveďte následující kroky:
Na levé straně portálu Jenkins vyberte Manage Jenkins Configure System (Spravovat systém konfigurace Jenkinse).
V části Globální vlastnostivyberte Proměnné prostředí. Přidejte proměnnou s názvem a
ACR_LOGINSERVERhodnotou přihlašovacího serveru ACR.
Po dokončení vyberte Uložit v dolní části stránky.
Vytvoření přihlašovacích údajů Jenkinse pro ACR
Během procesu CI/CD Jenkins vytváří nové image kontejnerů na základě aktualizací aplikací a pak musí tyto image nasačit do registru ACR.
Pokud chcete Jenkinsovi povolit nasazování aktualizovaných imagí kontejneru do ACR, musíte zadat přihlašovací údaje pro ACR.
Pokud chcete oddělit role a oprávnění, nakonfigurujte pro Jenkinse objekt služby s oprávněními Přispěvatel pro váš registr ACR.
Vytvoření objektu služby pro Jenkinse pro použití ACR
Nejprve vytvořte objekt služby pomocí příkazu az ad sp create-for-rbac:
az ad sp create-for-rbac
{
"appId": "626dd8ea-042d-4043-a8df-4ef56273670f",
"displayName": "azure-cli-2018-09-28-22-19-34",
"name": "http://azure-cli-2018-09-28-22-19-34",
"password": "1ceb4df3-c567-4fb6-955e-f95ac9460297",
"tenant": "72f988bf-86f1-41af-91ab-2d7cd011db48"
}
Poznamenejte si appId a password. Tyto hodnoty se používají v následujících krocích ke konfiguraci prostředku přihlašovacích údajů v Jenkinsu.
Pomocí příkazu az acr show získejte ID prostředku vašeho registru ACR a uložte ho jako proměnnou.
ACR_ID=$(az acr show --resource-group <Resource_Group> --name <acrLoginServer> --query "id" --output tsv)
Nahraďte <Resource_Group><acrLoginServer> a příslušnými hodnotami.
Vytvořte přiřazení role pro přiřazení práv přispěvatele objektu služby k registru ACR.
az role assignment create --assignee <appID> --role Contributor --scope $ACR_ID
Nahraďte <appId> hodnotou zadanou ve výstupu příkazu pervious a vytvořte instanční objekt.
Vytvoření prostředku přihlašovacích údajů v Jenkinsu pro instanční objekt ACR
Po vytvoření přiřazení role v Azure teď přihlašovací údaje ACR uložte do objektu přihlašovacích údajů Jenkinse. Na tyto přihlašovací údaje se odkazuje během úlohy sestavení Jenkinse.
Na levé straně portálu Jenkins vyberte Manage JenkinsManage CredentialsJenkins StoreGlobal credentials (unrestricted) Přidat přihlašovací údaje.
Ujistěte se, že druh přihlašovacích údajů je Uživatelské jméno s heslem, a zadejte následující položky:
- Uživatelské jméno – ID aplikace objektu služby vytvořeného pro ověřování pomocí registru ACR.
- Heslo – heslo objektu služby vytvořeného pro ověřování pomocí registru ACR.
- ID – identifikátor přihlašovacích údajů, například acr-credentials
Po dokončení bude formulář přihlašovacích údajů vypadat jako v následujícím příkladu:

Vyberte OK a vraťte se na portál Jenkinse.
Vytvoření projektu Jenkinse
Na domovské stránce portálu Jenkinse vyberte na levé straně Nová položka:
Jako název úlohy zadejte azure-vote. Zvolte Freestyle project (Volný projekt)a pak vyberte OK.
V části Obecné vyberte GitHub a zadejte adresu URL forku úložiště, například your-github-account /azure-voting-app-redis.
V části Source code management (Správa zdrojového kódu) vyberte Gita zadejte adresu URL forku úložiště, například your-github-account /azure-voting-app-redis.git.
V části Build Triggers (Triggery sestavení) vyberte trigger GitHub hook pro cyklické dotazování GITscm.
V části Build Environment(Prostředí sestavení) vyberte Use secret texts or files (Použít tajné texty nebo soubory).
V části Vazbyvyberte Přidat uživatelskéjméno a heslo (oddělené).
Jako
ACR_IDProměnnáACR_IDzadejte aACR_PASSWORDjakoACR_PASSWORD
Zvolte přidání kroku sestavení typuSpustit prostředí a použijte následující text. Tento skript sestaví novou image kontejneru a nasoudí ji do registru ACR.
# Build new image and push to ACR. WEB_IMAGE_NAME="${ACR_LOGINSERVER}/azure-vote-front:kube${BUILD_NUMBER}" docker build -t $WEB_IMAGE_NAME ./azure-vote docker login ${ACR_LOGINSERVER} -u ${ACR_ID} -p ${ACR_PASSWORD} docker push $WEB_IMAGE_NAMEPřidejte další krok sestavení typu Spustit prostředí a použijte následující text. Tento skript aktualizuje nasazení aplikace v AKS o novou image kontejneru z ACR.
# Update kubernetes deployment with new image. WEB_IMAGE_NAME="${ACR_LOGINSERVER}/azure-vote-front:kube${BUILD_NUMBER}" kubectl set image deployment/azure-vote-front azure-vote-front=$WEB_IMAGE_NAMEPo dokončení klikněte na Uložit.
Testování sestavení Jenkinse
Před automatizací úlohy na základě GitHub potvrzení ručně otestujte sestavení Jenkinse.
Toto sestavení ověří, že je úloha správně nakonfigurovaná. Potvrdí, že je na místě správný ověřovací soubor Kubernetes a že ověřování v ACR funguje.
V nabídce vlevo projektu vyberte Build Now (Sestavit).

První sestavení bude delší, protože vrstvy image Dockeru se stahuje na server Jenkins.
Sestavení prochádí následující úlohy:
- Klonuje GitHub úložiště.
- Sestavení nové image kontejneru
- Nasoudí image kontejneru do registru ACR.
- Aktualizuje image použítou nasazením AKS.
Vzhledem k tomu, že v kódu aplikace nebyly provedeny žádné změny, webové uživatelské rozhraní se nezmění.
Po dokončení úlohy sestavení vyberte build #1 v historii sestavení. Vyberte Výstup konzoly a zobrazte výstup procesu sestavení. Poslední řádek by měl obsahovat úspěšné sestavení.
Vytvoření GitHub webhooku
Po úspěšném ručním sestavení teď integrujte GitHub do sestavení Jenkinse. Pomocí webhooku spusťte úlohu sestavení Jenkinse pokaždé, když se kód GitHub.
Pokud chcete vytvořit GitHub webhook, proveďte následující kroky:
Přejděte do svého forku GitHub ve webovém prohlížeči.
Vyberte Nastavenía pak na levé straně vyberte Webhooks (Webhooky).
Zvolte Přidat webhook. Jako adresu URL datové částizadejte , kde je IP adresa serveru
<publicIp>Jenkins. Nezapomeňte zahrnout koncovou/. Ostatní výchozí hodnoty pro typ obsahu a pro aktivaci při událostech nabízených oznámení ponechte.Vyberte Add webhook (Přidat webhook).

Otestování kompletního kanálu CI/CD
Teď můžete otestovat celý kanál CI/CD. Při zápisu potvrzení kódu do GitHub, dojde k následujícím krokům:
- Webhook GitHub jenkinse upozorní.
- Jenkins spustí úlohu sestavení a přetáhne nejnovější potvrzení kódu z GitHub.
- Sestavení Dockeru se zahájilo pomocí aktualizovaného kódu a nová image kontejneru je označena číslem nejnovějšího sestavení.
- Tato nová image kontejneru se nasa Azure Container Registry.
- Vaše aplikace spuštěná v Azure Kubernetes Service aktualizuje nejnovější image z Azure Container Registry.
Na vývojovém počítači otevřete klonované aplikace pomocí editoru kódu. V adresáři /azure-vote/azure-vote otevřete soubor config_file.cfg. Aktualizujte hodnoty vote v tomto souboru na něco jiného než kočky a psi, jak je znázorněno v následujícím příkladu:
# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'
Po aktualizaci soubor uložte, potvrďte změny a nasazte je do svého forku úložiště GitHub úložiště. Webhook GitHub v Jenkinse novou úlohu sestavení. Na webovém řídicím panelu Jenkinse monitorujte proces sestavení. Natažení nejnovějšího kódu, vytvoření a nasazování aktualizované image a nasazení aktualizované aplikace v AKS trvá několik sekund.
Po dokončení sestavení aktualizujte webový prohlížeč ukázkové aplikace Azure Vote. Změny se zobrazí, jak je znázorněno v následujícím příkladu:
