k8s/archive_2

Jenkins Pipeline(Blue Green)構築

YOOANT 2026. 4. 21. 00:03

Jenkins Pipeline構築

0. New view 作成

- 0-1. 2121ジョブに対して、[New view]を作成する。

 

- 0-2.  221の[New View] 作成

* 次は追加作業なしで[保存]


1. Jenkins Pipelineの基本構成を作成する(Step 1)- 2211

 

- 1-2. item name 入力 および Pipeline 選択

2211-jenkins_pipeline-step1

 

- 1-3. Script コピー

▶Pipeline script

- DOCKERHUB_USERNAMEおよび GITHUB_USERNAMEに自分のUsernameを入力する。

pipeline {
    agent any

    tools {
        gradle 'gradle-7.6.1'
        jdk 'jdk-17'
    }

    environment {
        // ご自身のusernameを入力してください。
        DOCKERHUB_USERNAME = "suhwanyoo"
        GITHUB_USERNAME = "lioncubKR"

        // 以下の部分は変更しないでください
        GITHUB_URL = "https://github.com/${GITHUB_USERNAME}/kubernetes-anotherclass-sprint2.git"
        CLASS_NUM = '2211'
    }

    stages {
        stage('Source Build') {
            steps {
                // ソースファイルをチェックアウト(Source Repoは変更せずそのまま使用)
                git branch: 'main', url: 'https://github.com/k8s-1pro/kubernetes-anotherclass-api-tester.git'

                // ソースビルド
                // 755権限が必要(WindowsでGitにアップロードした場合、権限は644)
                sh "chmod +x ./gradlew"
                sh "gradle clean build"
            }
        }

        stage('Container Build') {
            steps {	
                // リリースファイルをチェックアウト
                checkout scmGit(branches: [[name: '*/main']], 
                    extensions: [[$class: 'SparseCheckoutPaths', 
                    sparseCheckoutPaths: [[path: "/${CLASS_NUM}"]]]], 
                    userRemoteConfigs: [[url: "${GITHUB_URL}"]])

                // jarファイルをコピー
                sh "cp ./build/libs/app-0.0.1-SNAPSHOT.jar ./${CLASS_NUM}/build/docker/app-0.0.1-SNAPSHOT.jar"

                // コンテナのビルドおよびアップロード
                sh "docker build -t ${DOCKERHUB_USERNAME}/api-tester:v1.0.0 ./${CLASS_NUM}/build/docker"
                // 動画と異なり、if文は削除され、常に自身のDocker Hubにビルドされるように修正されています
                sh "docker push ${DOCKERHUB_USERNAME}/api-tester:v1.0.0"
            }
        }

        stage('K8S Deploy') {
            steps {
                // Kubernetesへデプロイ
                sh "kubectl apply -f ./${CLASS_NUM}/deploy/k8s/namespace.yaml"
				sh "kubectl apply -f ./${CLASS_NUM}/deploy/k8s/configmap.yaml"
				sh "kubectl apply -f ./${CLASS_NUM}/deploy/k8s/secret.yaml"
				sh "kubectl apply -f ./${CLASS_NUM}/deploy/k8s/service.yaml"
				sh "kubectl apply -f ./${CLASS_NUM}/deploy/k8s/deployment.yaml"
            }
        }
    }
}
 

 

- 1-4. [Build]実行および Stage View結果確認

Jenkins Pipeline Agent 設定ガイド

Agent

パイプライン、または特定のステージが実行される環境を定義する。

  • agent any
    • 説明: 利用可能な任意(Available)のエージェントでステージを実行する。マスター、またはスレーブのどちらでも実行される可能性がある。
    • 意味: 特定の実行環境を指定せず、空いているリソースを自動的に割り当てる設定。
  • agent { label 'labelName' }
    • 説明: 指定されたラベルを持つノード(エージェント)でステージを実行する。
    • 意味: OS(Linux/Windows)や用途(ビルド用/テスト用)に応じて、実行するサーバーを固定する場合に使用する。
  • agent { docker 'imageName' }
    • 説明: 指定されたDockerイメージのコンテナ環境内でステージを実行する。
    • 意味: エージェントサーバー自体にビルドツールをインストールせず、コンテナ内の環境を利用してビルドを行う。
  • agent { dockerfile true }
    • 説明: リポジトリ内の Dockerfile を利用して実行用コンテナをビルドし、その中でステージを実行する。
    • 意味: ソースコードに含まれる Dockerfile の定義通りに、動的にビルド環境を構築する場合に使用する。

2. GitHub 連携およびパイプラインの細分化 (Step 2) - 2212

- 2-1. item name 入力およびPipeline選択

2212-jenkins_pipeline-step2
 

- 2-2. Configure > General > GitHub projectに Project url 入力

Project url : https://github.com/lioncubKR/kubernetes-anotherclass-sprint2/

- 2-2. Configure > Advanced Project Options > Pipeline 構成 (1/2)

Repository URL : https://github.com/lioncubKR/kubernetes-anotherclass-sprint2.git

- 2-2. Configure > Advanced Project Options > Pipeline (2/2)

Branch Specifier : */main
Path : 2212
Script Path : 2212/Jenkinsfile

- 2-3. [保存] 、 [Build] を実行 → ビルドできない

 

- 2-4. 「パラメータ付きビルド」を選択し、自身の DockerHub および GitHub の Username を入力後、「ビルド(ビルド実行)」をクリック。


3. Blue/Green 配布 (Step 3) - 2213

- 3-1. item name入力およびPipeline選択

Enter an item name : 2213-jenkins_pipeline-step3
Copy from : 2212-jenkins_pipeline-step2

- 3-2. Configure > Additional Behaviours および Script Path 修正後保存

 

Path : 2213
Script Path : 2213/Jenkinsfile
 

- 3-3. Master Nodeで version 照会を開始

# while true; do curl http://192.168.1.71:32213/version; sleep 1; echo '';  done;

- 3-4. [ビルド] 実行

- 3-5. [手動配布] yes クリック - Greenが配布される

 

- 3-6. V2 Service 呼び出し可能

# curl http://192.168.71.1:32223/version

- 3-7. [Green 切り替え] yesクリックおよび v2にバージョン変更確認。

 

- 3-8. ロールバックの可否を選択。

 

  • done:Blueデプロイ削除
  • rollback:Blueへ再切り替え

- 3-9. Blue/Greenに必要な要素

 

  • Blue-Greenデプロイを考慮したDeploymentの命名が必要
  • Blue-Greenデプロイのための追加ラベルおよびセレクターが必要

 


4. Blue/Green自動デプロイスクリプトの作成(Step 4)- 2214

- 4-1. item name入力およびPipeline選択

Enter an item name : 2214-jenkins_pipeline-step4
Copy from : 2213-jenkins_pipeline-step3

- 4-2. Configure > Additional Behaviours およびScript Path 修正後保存

Path : 2214
Script Path : 2214/Jenkinsfile

- 4-3. Master Node에서 version 照会開始

# while true; do curl http://192.168.1.71:32214/version; sleep 1; echo '';  done;

 

- 4-4. [ビルド] 実行

- 4-5. [自動配布開始] yesクリック

- [Greenに配布確認] v2.0.0に変更されている。

'k8s > archive_2' 카테고리의 다른 글

HelmとKustomize  (0) 2026.04.24
デプロイの前に必ず確認すべきこと  (0) 2026.04.20
CICD-SERVER構築/検証  (0) 2026.04.19
Probe,Service,Secret,HPA  (0) 2026.04.18
PV/PVC、Deployment、Service  (0) 2026.04.16

日本語