チュートリアル:Jenkins の継続的インテグレーションおよびデプロイを使用して GitHub から Azure Kubernetes Service (AKS) にデプロイするTutorial: Deploy from GitHub to Azure Kubernetes Service (AKS) with Jenkins continuous integration and deployment

このチュートリアルでは、Jenkins で継続的インテグレーション (CI) と継続的デプロイ (CD) を設定して、GitHub から Azure Kubernetes Service (AKS) クラスターにサンプル アプリをデプロイします。This tutorial deploys a sample app from GitHub to an Azure Kubernetes Service (AKS) cluster by setting up continuous integration (CI) and continuous deployment (CD) in Jenkins. このように、GitHub にコミットをプッシュすることでご利用のアプリを更新するときに、Jenkins では新しいコンテナー ビルドを自動的に実行し、Azure Container Registry (ACR) にコンテナー イメージをプッシュして、AKS で自分のアプリを実行します。That way, when you update your app by pushing commits to GitHub, Jenkins automatically runs a new container build, pushes container images to Azure Container Registry (ACR), and then runs your app in AKS.

このチュートリアルでは、以下のタスクを完了します。In this tutorial, you'll complete these tasks:

  • サンプルの Azure 投票アプリを AKS クラスターにデプロイするDeploy a sample Azure vote app to an AKS cluster.
  • 基本的な Jenkins プロジェクトを作成するCreate a basic Jenkins project.
  • ACR とやりとりする Jenkins 用の資格情報を設定するSet up credentials for Jenkins to interact with ACR.
  • Jenkins ビルド ジョブと自動ビルド用の GitHub Webhook を作成するCreate a Jenkins build job and GitHub webhook for automated builds.
  • GitHub コード コミットに基づき、CI/CD パイプラインをテストして AKS でアプリケーションをアップデートするTest the CI/CD pipeline to update an application in AKS based on GitHub code commits.

前提条件Prerequisites

このチュートリアルを完了するには、以下のものが必要です。To complete this tutorial, you need these items:

アプリケーションの準備Prepare your app

この記事では、1 つまたは複数のポッドでホストされる Web アプリケーション、および一時的なデータ ストレージのために Redis をホストしている 2 つ目のポッドを含む Azure 投票アプリケーションをサンプルとして使用します。In this article, you use a sample Azure vote application that contains a web interface hosted in one or more pods, and a second pod hosting Redis for temporary data storage. Jenkins と AKS を自動デプロイ用に統合する前に、まず手動で Azure 投票アプリケーションを準備し、AKS クラスターにデプロイします。Before you integrate Jenkins and AKS for automated deployments, first manually prepare and deploy the Azure vote application to your AKS cluster. この手動展開は、アプリケーションのいずれかのバージョンであるため、アプリケーションの動作を確認しましょう。This manual deployment is version one of the application, and lets you see the application in action.

サンプル アプリケーション (https://github.com/Azure-Samples/azure-voting-app-redis) の GitHub リポジトリをフォークします。Fork the following GitHub repository for the sample application - https://github.com/Azure-Samples/azure-voting-app-redis. 自身の GitHub アカウントにリポジトリをフォークするには、右上隅の [Fork] ボタンを選択します。To fork the repo to your own GitHub account, select the Fork button in the top right-hand corner.

開発システム用にフォークの複製を作成します。Clone the fork to your development system. このリポジトリを複製するときに、フォークの URL を使用するようにします。Make sure you use the URL of your fork when cloning this repo:

git clone https://github.com/<your-github-account>/azure-voting-app-redis.git

複製したフォークのディレクトリに変更します。Change to the directory of your cloned fork:

cd azure-voting-app-redis

サンプル アプリケーションに必要なコンテナー イメージを作成するには、docker-composedocker-compose.yaml ファイルを使用します。To create the container images needed for the sample application, use the docker-compose.yaml file with docker-compose:

docker-compose up -d

必要な基本イメージがプルされ、アプリケーション コンテナーがビルドされます。The required base images are pulled and the application containers built. 次に docker images コマンドを使って、作成されたイメージを確認します。You can then use the docker images command to see the created image. 3 つのイメージがダウンロードまたは作成されました。Three images have been downloaded or created. azure-vote-front イメージはアプリケーションを含み、nginx-flask イメージをベースとして使用します。The azure-vote-front image contains the application and uses the nginx-flask image as a base. redis イメージは、Redis インスタンスを起動するために使用されます。The redis image is used to start a Redis instance:

$ 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

azure-vote-front コンテナー イメージを ACR にプッシュする前に、ACR ログイン サーバーを az acr list コマンドを使って取得します。Before you can push the azure-vote-front container image to ACR, get your ACR login server with the az acr list command. 次の例では、myResourceGroup という名前のリソース グループでレジストリの ACR ログイン サーバー アドレスを取得します。The following example gets the ACR login server address for a registry in the resource group named myResourceGroup:

az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table

docker tag コマンドを使って、ACR ログイン サーバー名とバージョン番号 v1 でイメージにタグを付けます。Use the docker tag command to tag the image with the ACR login server name and a version number of v1. 前のステップで取得した独自の <acrLoginServer> 名を指定します。Provide your own <acrLoginServer> name obtained in the previous step:

docker tag azure-vote-front <acrLoginServer>/azure-vote-front:v1

最後に、azure-vote-front イメージを ACR レジストリにプッシュします。Finally, push the azure-vote-front image to your ACR registry. ここでも、<acrLoginServer>myacrregistry.azurecr.io などの独自の ACR レジストリのログイン サーバー名と置き換えます。Again, replace <acrLoginServer> with the login server name of your own ACR registry, such as myacrregistry.azurecr.io:

docker push <acrLoginServer>/azure-vote-front:v1

サンプル アプリケーションを AKS にデプロイするDeploy the sample application to AKS

サンプル アプリケーションを AKS クラスターにデプロイするには、Azure 投票リポジトリのルートにある Kubernetes マニフェスト ファイルを使用します。To deploy the sample application to your AKS cluster, you can use the Kubernetes manifest file in the root of the Azure vote repository repo. vi などのエディターを使用して azure-vote-all-in-one-redis.yaml マニフェスト ファイルを開きます。Open the azure-vote-all-in-one-redis.yaml manifest file with an editor such as vi. microsoft は、実際の ACR ログイン サーバー名に置き換えてください。Replace microsoft with your ACR login server name. この値は、マニフェスト ファイルの 47 行にあります。This value is found on line 47 of the manifest file:

containers:
- name: azure-vote-front
  image: microsoft/azure-vote-front:v1

次に、kubectl apply コマンドを使用してアプリケーションを AKS クラスターにデプロイします。Next, use the kubectl apply command to deploy the application to your AKS cluster:

kubectl apply -f azure-vote-all-in-one-redis.yaml

アプリケーションをインターネットに公開するための Kubernetes ロード バランサー サービスが作成されます。A Kubernetes load balancer service is created to expose the application to the internet. このプロセスには数分かかることがあります。This process can take a few minutes. ロード バランサーの展開の進行状況を監視するには、kubectl get serviceコマンドを --watch 引数を指定して使用します。To monitor the progress of the load balancer deployment, use the kubectl get service command with the --watch argument. EXTERNAL-IP アドレスが "保留中" から "IP アドレス" に変わったら、Control + C を使用して kubectl ウォッチ プロセスを停止します。Once the EXTERNAL-IP address has changed from pending to an IP address, use Control + C to stop the kubectl watch process.

$ 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

アプリケーションが動作していることを確認するには、Web ブラウザーを開いてサービスの外部 IP アドレスにアクセスします。To see the application in action, open a web browser to the external IP address of your service. 次の例に示すように、Azure 投票アプリケーションが表示されます。The Azure vote application is displayed, as shown in the following example:

AKS で実行されているサンプルの Azure 投票アプリケーション

Azure VM に Jenkins をデプロイするDeploy Jenkins to an Azure VM

この記事で使用する Jenkins をすばやくデプロイするには、次のスクリプトを使用して Azure 仮想マシンをデプロイし、ネットワーク アクセスを構成して、Jenkins の基本的なインストールを完了します。To quickly deploy Jenkins for use in this article, you can use the following script to deploy an Azure virtual machine, configure network access, and complete a basic installation of Jenkins. Jenkins と AKS クラスターの間の認証では、スクリプトによって開発システムから Jenkins システムに Kubernetes 構成ファイルがコピーされます。For authentication between Jenkins and the AKS cluster, the script copies your Kubernetes configuration file from your development system to the Jenkins system.

警告

このサンプル スクリプトの目的は、Azure VM で実行される Jenkins 環境の迅速なプロビジョニングを示すことです。This sample script is for demo purposes to quickly provision a Jenkins environment that runs on an Azure VM. それは、Azure カスタム スクリプト拡張機能を使用して VM を構成した後、必要な資格情報を表示します。It uses the Azure custom script extension to configure a VM and then display the required credentials. ~/.kube/config が Jenkins VM にコピーされます。Your ~/.kube/config is copied to the Jenkins VM.

次のコマンドを実行し、スクリプトをダウンロードして実行します。Run the following commands to download and run the script. これを実行する前に、スクリプトの内容を確認する必要があります- https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/jenkins-tutorial/deploy-jenkins-vm.shYou should review the contents of any script prior to running it - https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/jenkins-tutorial/deploy-jenkins-vm.sh.

curl https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/jenkins-tutorial/deploy-jenkins-vm.sh > azure-jenkins.sh
sh azure-jenkins.sh

VM を作成し、Docker と Jenkins の必要なコンポーネントをデプロイするまで数分かかります。It takes a few minutes to create the VM and deploy the required components for Docker and Jenkins. スクリプトが完了したらは、次の出力例に示すように、Jenkins サーバーのアドレスと、ダッシュ ボードのロックを解除するキーが出力されます。When the script has completed, it outputs an address for the Jenkins server and a key to unlock the dashboard, as shown in the following example output:

Open a browser to http://40.115.43.83:8080
Enter the following to Unlock Jenkins:
667e24bba78f4de6b51d330ad89ec6c6

表示される URL への Web ブラウザーを開き、ロックの解除キーを入力します。Open a web browser to the URL displayed and enter the unlock key. 画面上の指示に従って、Jenkins 構成を完了します。Follow the on-screen prompts to complete the Jenkins configuration:

  • [Install suggested plugins](推奨されるプラグインのインストール) を選択しますChoose Install suggested plugins
  • 最初の管理者ユーザーを作成します。Create the first admin user. azureuser などのユーザー名を入力し、独自の安全なパスワードを入力します。Enter a username, such as azureuser, then provide your own secure password. 最後に、フル ネームとメール アドレスを入力します。Finally, type a full name and e-mail address.
  • [Save and Finish](保存して終了する) を選択しますSelect Save and Finish
  • Jenkins が準備ができたら、[Start using Jenkins](Jenkins の使用を開始する) を選択しますOnce Jenkins is ready, select Start using Jenkins
    • Jenkins の使用を開始したときに Web ブラウザーに空白のページが表示された場合は、Jenkins サービスを再起動します。If your web browser displays a blank page when you start using Jenkins, restart the Jenkins service. サービスを再起動するには、Jenkins インスタンスのパブリック IP アドレスに SSH して sudo service jenkins restart を入力します。To restart the service, SSH to the public IP address of your Jenkins instance and type sudo service jenkins restart. サービスの再起動後、Web ブラウザーを更新します。Once the service has restarted, refresh you web browser.
  • インストール プロセスで作成したユーザー名とパスワードで Jenkins にサインインします。Sign in to Jenkins with the username and password you created in the install process.

Jenkins の環境変数を作成するCreate a Jenkins environment variable

ACR ログイン サーバー名を保持するために Jenkins の環境変数が使用されます。A Jenkins environment variable is used to hold the ACR login server name. この変数は、Jenkins のビルド ジョブ中に参照されます。This variable is referenced during the Jenkins build job. この環境変数を作成するには、次の手順を完了します。To create this environment variable, complete the following steps:

  • Jenkins ポータルの左側にある [Jenkins の管理] > [システムの構成] を選択します。On the left-hand side of the Jenkins portal, select Manage Jenkins > Configure System

  • [グローバル プロパティ][環境変数] を選択します。Under Global Properties, select Environment variables. 名前 ACR_LOGINSERVER と ACR ログイン サーバーの値で変数を追加します。Add a variable with the name ACR_LOGINSERVER and the value of your ACR login server.

    Jenkins の環境変数

  • 完了したら、Jenkins 構成ページの下の [保存] をクリックします。When complete, click Save at the bottom of the Jenkins configuration page.

ACR の Jenkins 資格情報を作成するCreate a Jenkins credential for ACR

Jenkins が更新されたコンテナー イメージをビルドして ACR にプッシュできるようにするには、ACR の資格情報を指定する必要があります。To allow Jenkins to build and then push updated container images to ACR, you need to specify credentials for ACR. この認証では、Azure Active Directory サービス プリンシパルを使用できます。This authentication can use Azure Active Directory service principals. 前提条件として、ACR レジストリへの Reader アクセス許可で AKS クラスターのサービス プリンシパルを構成しました。In the pre-requisites, you configured the service principal for your AKS cluster with Reader permissions to your ACR registry. これらのアクセス許可では、AKS クラスターが ACR レジストリからイメージをプルできます。These permissions allow the AKS cluster to pull images from the ACR registry. CI/CD プロセス中に、Jenkins がアプリケーションの更新プログラムに基づいて新しいコンテナーのイメージをビルドし、その後これらのイメージを ACR レジストリにプッシュする必要があります。During the CI/CD process, Jenkins builds new container images based on application updates, and needs to then push those images to the ACR registry. ロールとアクセス許可を分離するために、ここで、ACR レジストリへの Contributor アクセス許可で Jenkins 用のサービス プリンシパルを構成します。For separation of roles and permissions, now configure a service principal for Jenkins with Contributor permissions to your ACR registry.

ACR を使用する Jenkins 用のサービス プリンシパルを作成するCreate a service principal for Jenkins to use ACR

まず、az ad sp create-for-rbac コマンドを使用して、サービス プリンシパルを作成します。First, create a service principal using the az ad sp create-for-rbac command:

$ az ad sp create-for-rbac --skip-assignment

{
  "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"
}

出力に表示されている appIdpassword を書き留めます。Make a note of the appId and password shown in your output. これらの値は、Jenkins で資格情報リソースを構成する次の手順で使用します。These values are used in following steps to configure the credential resource in Jenkins.

az acr show コマンドを使用して ACR レジストリのリソース ID を取得し、それを変数として保存します。Get the resource ID of your ACR registry using the az acr show command, and store it as a variable. 次のリソース グループ名と ACR を指定します。Provide your resource group name and ACR name:

ACR_ID=$(az acr show --resource-group myResourceGroup --name <acrLoginServer> --query "id" --output tsv)

ここで、サービス プリンシパルの Contributor 権限を ACR レジストリに割り当てるためのロールの割り当てを作成します。Now create a role assignment to assign the service principal Contributor rights to the ACR registry. 次の例では、サービス プリンシパルを作成する前のコマンドの出力に表示された独自の appId を提供します。In the following example, provide your own appId shown in the output a previous command to create the service principal:

az role assignment create --assignee 626dd8ea-042d-4043-a8df-4ef56273670f --role Contributor --scope $ACR_ID

ACR サービス プリンシパル用の資格情報リソースを Jenkins に作成するCreate a credential resource in Jenkins for the ACR service principal

Azure で作成したロールの割り当てを使用して、ACR の資格情報を Jenkins 資格情報オブジェクトに保存します。With the role assignment created in Azure, now store your ACR credentials in a Jenkins credential object. これらの資格情報は、Jenkins ビルド ジョブの間に参照されます。These credentials are referenced during the Jenkins build job.

Jenkins ポータルの左側に戻り、[Credentials](資格情報) > [Jenkins] > [Global credentials (unrestricted)](グローバル資格情報 (無制限)) > [Add Credentials](資格情報の追加) の順にクリックしますBack on the left-hand side of the Jenkins portal, click Credentials > Jenkins > Global credentials (unrestricted) > Add Credentials

資格情報の種類が [Username with password](ユーザー名とパスワード) であることを確認し、次の項目を入力します。Ensure that the credential kind is Username with password and enter the following items:

  • [Username](ユーザー名) - ACR レジストリでの認証に作成されるサービス プリンシパルの appId です。Username - The appId of the service principal created for authentication with your ACR registry.
  • パスワード - ACR レジストリでの認証に作成されるサービス プリンシパルのパスワードです。Password - The password of the service principal created for authentication with your ACR registry.
  • ID - acr-credentials などの資格情報の識別子ID - Credential identifier such as acr-credentials

完了すると、資格情報の形式は、次の例のようになります。When complete, the credentials form looks like the following example:

サービス プリンシパル情報を使用して、Jenkins 資格情報オブジェクトを作成する

[OK] をクリックして、Jenkins ポータルに戻ります。Click OK and return to the Jenkins portal.

Jenkins プロジェクトを作成するCreate a Jenkins project

Jenkins ポータルのホーム ページから左側の [新しい項目] を選択します。From the home page of your Jenkins portal, select New item on the left-hand side:

  1. ジョブ名として azure-vote を入力します。Enter azure-vote as job name. Freestyle プロジェクトを選択し、[OK] をクリックしますChoose Freestyle project, then select OK

  2. [General](一般) セクションで [GitHub project](GitHub プロジェクト) を選択し、フォークしたリポジトリの URL (例: https://github.com/<your-github-account>/azure-voting-app-redis) を入力しますUnder the General section, select GitHub project and enter your forked repo URL, such as https://github.com/<your-github-account>/azure-voting-app-redis

  3. [Source code management](ソース コードの管理) セクションで [Git] を選択し、フォークしたリポジトリの .git の URL を入力します (例: https://github.com/<your-github-account>/azure-voting-app-redis.git)Under the Source code management section, select Git, enter your forked repo .git URL, such as https://github.com/<your-github-account>/azure-voting-app-redis.git

  4. [Build Triggers] セクションから GitHub hook trigger for GITscm polling を選択しますUnder the Build Triggers section, select GitHub hook trigger for GITscm polling

  5. [Build Environment](ビルド環境) で、[Use secret texts or files](シークレット テキストまたはファイルを使用する) を選びますUnder Build Environment, select Use secret texts or files

  6. [Bindings](バインド) で、[Add](追加) > [Username and password (separated)](ユーザー名とパスワード (別)) を選びますUnder Bindings, select Add > Username and password (separated)

    • [Username Variable](ユーザー名変数) に「ACR_ID」と入力し、[Password Variable](パスワード変数) に「ACR_PASSWORD」と入力しますEnter ACR_ID for the Username Variable, and ACR_PASSWORD for the Password Variable

      Jenkins のバインド

  7. 実行シェルタイプのビルド ステップを追加し、次のテキストを使います。Choose to add a Build Step of type Execute shell and use the following text. このスクリプトは、新しいコンテナー イメージをビルドし、ACR レジストリにプッシュします。This script builds a new container image and pushes it to your ACR registry.

    # 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_NAME
    
  8. 実行シェルタイプのビルド ステップをもう 1 つ追加し、次のテキストを使います。Add another Build Step of type Execute shell and use the following text. このスクリプトは、AKS のアプリケーションの展開を ACR からの新しいコンテナー イメージで更新します。This script updates the application deployment in AKS with the new container image from 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_NAME --kubeconfig /var/lib/jenkins/config
    
  9. 終了したら、[Save](保存) をクリックします。Once completed, click Save.

Jenkins のビルドをテストするTest the Jenkins build

GitHub のコミットに基づいてジョブを自動化する前に、まず Jenkins ビルドを手動でテストします。Before you automate the job based on GitHub commits, first manually test the Jenkins build. この手動のビルドでは、ジョブが正しく構成されて、適切な Kubernetes 認証ファイルがあること、および ACR による認証が機能していることを検証します。This manual build validates that the job has been correctly configured, the proper Kubernetes authentication file is in place, and that the authentication with ACR works.

プロジェクトの左側にあるメニューの [Build Now](今すぐビルド) をクリックします。On the left-hand menu of the project, select Build Now.

Jenkins のテスト ビルド

Docker イメージ レイヤーが Jenkins サーバーにプルダウンされるため、最初のビルド時間は 1 分または 2 分かかります。The first build takes a minute or two as the Docker image layers are pulled down to the Jenkins server. その後のビルドでは、キャッシュされたイメージ レイヤーを使用してビルド時間を短縮できます。Subsequent builds can use the cached image layers to improve the build times.

このビルド プロセスの間に、GitHub リポジトリが Jenkins ビルド サーバーに複製されます。During the build process, the GitHub repository is cloned to the Jenkins build server. 新しいコンテナー イメージがビルドされて、ACR レジストリにプッシュされます。A new container image is built and pushed to the ACR registry. 最後に、AKS クラスターで実行されている Azure 投票アプリケーションが新しいイメージを使うように更新されます。Finally, the Azure vote application running on the AKS cluster is updated to use the new image. アプリケーション コードが変更されていないため、Web ブラウザーでサンプル アプリを表示する場合、アプリケーションは変更されません。Because no changes have been made to the application code, the application is not changed if you view the sample app in a web browser.

ビルド ジョブが完了したら、ビルド履歴の下のビルド #1をクリックします。Once the build job is complete, click on build #1 under build history. [コンソール出力] を選択し、ビルド プロセスからの出力を表示します。Select Console Output and view the output from the build process. 最後の行でビルドの成功が示されている必要があります。The final line should indicate a successful build.

GitHub Webhook の作成Create a GitHub webhook

手動ビルドが完了したら、ここで GitHub を Jenkins ビルドに組み込みます。With a successful manual build complete, now integrate GitHub into the Jenkins build. Webhook を使用して、コード コミットが GitHub で行われるたびに Jenkins ビルド ジョブを実行できます。A webhook can be used to run the Jenkins build job each time a code commit is made in GitHub. GitHub Webhook を作成するには、次の手順を完了します。To create the GitHub webhook, complete the following steps:

  1. Web ブラウザーで、フォークされた GitHub リポジトリに移動します。Browse to your forked GitHub repository in a web browser.

  2. [Settings](設定) を選択して、左側の [Integrations & services](統合とサービス) を選択します。Select Settings, then select Webhooks on the left-hand side.

  3. [Add webhook](Webhook の追加) を選択します。Choose to Add webhook. [Payload URL](ペイロード URL) に、「http://<publicIp:8080>/github-webhook/」と入力します。<publicIp> は、Jenkins サーバーの IP アドレスです。For the Payload URL, enter http://<publicIp:8080>/github-webhook/, where <publicIp> is the IP address of the Jenkins server. 末尾のスラッシュ (/) を含めていることを確認します。Make sure to include the trailing /. 他の規定値 ([Content type](コンテンツの種類) と push イベントでトリガー) は既定値のままにします。Leave the other defaults for content type and to trigger on push events.

  4. [Add webhook](Webhook の追加) を選択します。Select Add webhook.

    Jenkins 用の GitHub Webhook を作成する

完全な CI/CD パイプラインをテストするTest the complete CI/CD pipeline

ここで CI/CD パイプライン全体をテストできます。Now you can test the whole CI/CD pipeline. コード コミットを GitHub にプッシュすると、次のステップが行われます。When you push a code commit to GitHub, the following steps happen:

  1. GitHub Webhook が Jenkins に到達します。The GitHub webhook reaches out to Jenkins.
  2. Jenkins がビルド ジョブを開始し、GitHub から最新のコード コミットをプルします。Jenkins starts the build job and pulls the latest code commit from GitHub.
  3. Docker ビルドが更新されたコードを使用して開始され、新しいコンテナー イメージが最新のビルド番号でタグ付けされます。A Docker build is started using the updated code, and the new container image is tagged with the latest build number.
  4. この新しいコンテナー イメージが Azure Container Registry にプッシュされます。This new container image is pushed to Azure Container Registry.
  5. Azure Kubernetes Service のレジストリにデプロイされたアプリケーションは、Azure Container Registry レジストリからの最新コンテナー イメージで更新されます。Your application deployed to Azure Kubernetes Service updates with the latest container image from the Azure Container Registry registry.

開発マシンで、複製されたアプリケーションをコード エディターで開きます。On your development machine, open up the cloned application with a code editor. /azure-vote/azure-vote ディレクトリで、config_file.cfg という名前のファイルを開きます。Under the /azure-vote/azure-vote directory, open the file named config_file.cfg. 次の例に示すように、このファイルの投票値を cats と dogs 以外のものに更新します。Update the vote values in this file to something other than cats and dogs, as shown in the following example:

# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'

更新したら、ファイルを保存し、変更をコミットして、GitHub リポジトリのフォークにこれらをプッシュします。When updated, save the file, commit the changes, and push these to your fork of the GitHub repository. GitHub Webhook は、Jenkins の新しいビルド ジョブをトリガーします。The GitHub webhook triggers a new build job in Jenkins. Jenkins Web ダッシュ ボードでビルド プロセスを監視します。In the Jenkins web dashboard, monitor the build process. 最新のコードをプルし、更新されたイメージを作成してプッシュして、AKS で更新されたアプリケーションをデプロイするには数秒かかります。It takes a few seconds to pull the latest code, create and push the updated image, and deploy the updated application in AKS.

ビルドが完了したら、サンプルの Azure 投票アプリケーションの Web ブラウザーを更新します。Once the build is complete, refresh your web browser of the sample Azure vote application. 次の例に示すように、変更内容が表示されます。Your changes are displayed, as shown in the following example:

Jenkins ビルド ジョブで更新された AKS のサンプル Azure 投票

次の手順Next steps

この記事では、CI/CD ソリューションの一部として Jenkins を使用する方法について説明しました。In this article, you learned how to use Jenkins as part of a CI/CD solution. Azure DevOps ProjectAnsible による AKS クラスターの作成 など、AKS では他の CI/CD ソリューションや自動ツールと統合できます。AKS can integrate with other CI/CD solutions and automation tools, such as the Azure DevOps Project or creating an AKS cluster with Ansible.