Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Zatímco mnoho služeb Azure má plug-iny pro Jenkins, většina z nich ukončí podporu k 29. únoru 2024. Azure CLI je aktuálně doporučený způsob integrace Jenkinse se službami Azure. Další informace najdete v článku Moduly plug-in Jenkins pro Azure.
Tento kurz nasadí ukázkovou aplikaci z GitHubu do clusteru Azure Kubernetes Service (AKS) nastavením kontinuální integrace (CI) a průběžného nasazování (CD) v Jenkinse.
V tomto kurzu dokončíte tyto úlohy:
- Nasaďte ukázkovou aplikaci Azure Vote do clusteru AKS.
- Vytvořte základní projekt Jenkinse.
- Nastavte přihlašovací údaje pro Jenkinse pro interakci s ACR.
- Vytvořte úlohu sestavení Jenkinse a webhook GitHubu pro automatizované sestavení.
- Otestujte pipeline CI/CD a aktualizujte aplikaci v AKS na základě commitů kódu na GitHubu.
Požadavky
K dokončení tohoto kurzu potřebujete tyto položky:
Základní znalost Kubernetes, Gitu, CI/CD a obrazů kontejnerů
Cluster AKS a
kubectlnakonfigurovaný pomocí přihlašovacích údajů clusteru AKS.Registr služby Azure Container Registry (ACR), název přihlašovacího serveru ACR a cluster AKS nakonfigurované pro ověření v registru ACR.
Kontroler Jenkins 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 instalovat nebo upgradovat, podívejte se na Install Azure CLI.Docker nainstalovaný ve vývojovém systému
Účet GitHubu, osobní přístupový token GitHubu a klient Git nainstalovaný ve vašem vývojovém systému
Pokud místo této ukázkové skriptované instance zadáte 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á Linuxový pod, který je určen k běhu na uzlu Linux. Tok popsaný v tomto článku funguje také pro pod na Windows Serveru, který je naplánovaný na uzlu Windows Server.
Vytvořte fork uvedeného úložiště GitHub pro ukázkovou aplikaci - https://github.com/Azure-Samples/azure-voting-app-redis. Pokud chcete vytvořit fork úložiště na vlastní účet GitHubu, vyberte tlačítko Fork v pravém horním rohu.
Naklonujte fork do vývojového systému. Při klonování tohoto úložiště nezapomeňte použít adresu URL forku:
git clone https://github.com/<your-github-account>/azure-voting-app-redis.git
Přejděte do adresáře klonovaného forku:
cd azure-voting-app-redis
K vytvoření imagí kontejneru potřebných pro ukázkovou aplikaci použijte soubor docker-compose.yaml s docker-compose:
docker-compose up -d
Požadované základní obrazy jsou staženy a kontejnery aplikací jsou postaveny. Potom můžete k zobrazení vytvořené image použít příkaz docker images . Byly staženy nebo vytvořeny tři image. Image azure-vote-front obsahuje aplikaci a používá nginx-flask image jako základ. 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> vaším přihlašovacím serverem ACR.
Pomocí příkazu značky Dockeru označte image názvem přihlašovacího serveru ACR a číslem v1verze . Použijte vlastní <acrLoginServer> název získaný v předchozím kroku:
docker tag azure-vote-front <acrLoginServer>/azure-vote-front:v1
Nakonec odeslat image azure-vote-front do vašeho registru ACR. Znovu nahraďte <acrLoginServer> 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 manifestu pomocí editoru azure-vote-all-in-one-redis.yaml , například 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
Pak 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 zveřejní 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 --watch .
$ kubectl get service azure-vote-front --watch
Jakmile se adresa EXTERNÍ IP změní z čekající na IP adresu, použijte Control + C k zastavení procesu sledování kubectl.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
Pokud chcete zobrazit aplikaci v akci, otevřete webový prohlížeč na 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í port 80 .
az vm open-port \
--resource-group <Resource_Group_name> \
--name <Jenkins_Controller_VM> \
--port 80 --priority 1020
Nahraďte <Resource_Group_name> a <Jenkins_Controller_VM> příslušnými hodnotami.
SSH do kontroleru Jenkinse
ssh azureuser@<PublicIPAddress>
Nahraďte <PublicIPAddress> IP adresou kontroleru Jenkinse.
Instalace a přihlášení k 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í k AKS
sudo az aks install-cli
sudo az aks get-credentials --resource-group <Resource_Group> --name <AKS_Name>
Nahraďte <Resource_Group> a <AKS_Name> 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
V proměnné prostředí v Jenkinsu je uložen název přihlašovacího serveru ACR. Tato proměnná je používána během úlohy sestavení Jenkins. Pokud chcete vytvořit tuto proměnnou prostředí, proveďte následující kroky:
Na levé straně portálu Jenkinse vyberte Spravovat Systém konfigurace Jenkinse>.
V části Globální vlastnosti vyberte Proměnné prostředí. Přidejte proměnnou s názvem
ACR_LOGINSERVERa hodnotou 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 sestaví nové image kontejneru na základě aktualizací aplikací a potřebuje tyto image odeslat do registru ACR.
Pokud chcete Jenkinsovi povolit posílání aktualizovaných obrazů kontejnerů do služby ACR, musíte zadat přihlašovací údaje pro ACR.
Pro oddělení rolí a oprávnění nakonfigurujte instanční objekt jenkinse s oprávněními přispěvatele k vašemu registru ACR.
Vytvoření služebního principálu pro využití ACR s Jenkinsi
Nejprve pomocí příkazu az ad sp create-for-rbac vytvořte principál služby:
az ad sp create-for-rbac
Tento příkaz vytvoří výstup podobný následujícímu příkladu:
{
"appId": "<app-ID>",
"displayName": "azure-cli-2018-09-28-22-19-34",
"name": "http://azure-cli-2018-09-28-22-19-34",
"password": "<password>",
"tenant": "<tenant-ID>"
}
Poznamenejte si ID aplikace a heslo. Tyto hodnoty se používají v následujících krocích ke konfiguraci prostředku přihlašovacích údajů v Jenkinsi.
Získejte ID zdroje registru ACR pomocí příkazu az acr show a uložte jej do proměnné.
ACR_ID=$(az acr show --resource-group <Resource_Group> --name <acrLoginServer> --query "id" --output tsv)
Nahraďte <Resource_Group> a <acrLoginServer> příslušnými hodnotami.
Vytvořte přiřazení role, které přiřadí oprávnění principálu služby přispěvatele k registru ACR.
az role assignment create --assignee <appID> --role Contributor --scope $ACR_ID
Nahraďte <appId> hodnotou zadanou ve výstupu předchozího příkazu použitého k vytvoření principálu služby.
Vytvořte prostředek přihlašovacích údajů v Jenkins pro hlavní službu ACR
S přiřazením role vytvořeným v Azure teď uložte přihlašovací údaje ACR 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 Spravovat Jenkins>Spravovat přihlašovací údaje>Úložiště Jenkins>Globální přihlašovací údaje (neomezené)>Přidat přihlašovací údaje
Ujistěte se, že je druh přihlašovacích údajů uživatelské jméno s heslem , a zadejte následující položky:
- Uživatelské jméno – Identifikátor aplikace servisního principála vytvořeného pro ověřování pomocí vašeho registru ACR.
- Heslo – heslo identifikačního prvku služby vytvořeného pro ověřování pomocí vašeho registru ACR.
- ID – identifikátor přihlašovacích údajů, jako je acr-credentials
Po dokončení vypadá formulář přihlašovacích údajů jako v následujícím příkladu:
Vyberte OK a vraťte se na portál Jenkins.
Vytvoření projektu Jenkinse
Na domovské stránce portálu Jenkins vyberte na levé straně novou položku :
Jako název úlohy zadejte azure-vote . Zvolte Projekt Freestyle a pak vyberte OK.
V části Obecné vyberte projekt GitHub a zadejte adresu URL rozvětvovaného úložiště, například https://github.com/<váš-github-account>/azure-voting-app-redis.
V části Správa zdrojového kódu vyberte Git, zadejte adresu URL rozvětvovaného úložiště
.git, například https://github.com/<váš-github-account>/azure-voting-app-redis.git.V části Triggery sestavení vyberte spouštěč webhooku GitHub pro dotazování GITscm.
V části Prostředí sestavení vyberte Použít tajné texty nebo soubory.
V části Vazby vyberte Přidat>uživatelské jméno a heslo (oddělené).
Zadejte
ACR_IDproměnnou uživatelského jména aACR_PASSWORDproměnnou hesla.
Zvolte přidání kroku sestavení typu Execute shell a použijte následující text. Tento skript sestaví novou image kontejneru a nasdílí 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 Execute shell a použijte následující text. Tento skript aktualizuje nasazení aplikace v AKS s 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.
Otestování sestavení Jenkinse
Před automatizací úlohy na základě potvrzení GitHubu ručně otestujte sestavení Jenkinse.
Tento build ověří, jestli je úloha správně nakonfigurovaná. Potvrdí, že je zaveden správný ověřovací soubor Kubernetes a že ověřování pro ACR funguje.
V levé nabídce projektu vyberte Sestavit hned.
První sestavení trvá déle, protože vrstvy image Dockeru jsou staženy na server Jenkins.
Sestavení provádějí následující úlohy:
- Klonuje úložiště GitHub.
- Vytvoří novou image kontejneru.
- Přenese obraz kontejneru do registru ACR.
- Aktualizuje obraz využívaný při nasazení 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 sestavení č. 1 v historii sestavení. Vyberte Výstup konzoly a zobrazte výstup z procesu sestavení. Poslední řádek by měl indikovat úspěšné sestavení.
Vytvoření webhooku GitHubu
Po úspěšném ručním sestavení se teď gitHub integruje do sestavení Jenkinse. Pomocí webhooku spusťte úlohu sestavení Jenkins při každém potvrzení kódu na GitHub.
Pokud chcete vytvořit webhook GitHubu, proveďte následující kroky:
Ve webovém prohlížeči přejděte do rozvětvovaného úložiště GitHub.
Vyberte Nastavení a pak vyberte Webhooky na levé straně.
Zvolte přidat webhook. Jako adresu URL datové části zadejte
http://<publicIp:8080>/github-webhook/, kde<publicIp>je IP adresa serveru Jenkins. Nezapomeňte uvést/na konci. Ponechte ostatní výchozí hodnoty pro typ obsahu a aktivujte je u push událostí.Vyberte Přidat webhook.
Otestování kompletního potrubí CI/CD
Nyní můžete otestovat celé CI/CD pipeline. Když nasdílíte potvrzení kódu do GitHubu, dojde k následujícím krokům:
- Webhook GitHubu upozorní Jenkinse.
- Jenkins spustí úlohu sestavení a stáhne nejnovější potvrzení kódu z GitHubu.
- Proces sestavení Dockeru se spustí s aktualizovaným kódem a nový obraz kontejneru je oštítkován nejnovějším číslem buildu.
- Tato nová image kontejneru se odešle do služby Azure Container Registry.
- Vaše aplikace spuštěná ve službě Azure Kubernetes Service aktualizuje nejnovější image ze služby Azure Container Registry.
Na vývojovém počítači otevřete klonovanou aplikaci pomocí editoru kódu. V adresáři /azure-vote/azure-vote otevřete soubor s názvem config_file.cfg. Aktualizujte hodnoty hlasů v tomto souboru na něco jiného než kočky a psy, 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 uložte soubor, potvrďte změny a nasdílejte je do forku úložiště GitHub. Webhook GitHubu aktivuje novou úlohu sestavení v Jenkinsi. Na webovém řídicím panelu Jenkinse monitorujte proces sestavení. Načtení nejnovějšího kódu, vytvoření a nasdílení 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. Zobrazí se změny, jak je znázorněno v následujícím příkladu: