このドキュメントでは、継続的な統合環境である Jenkins を Alibaba Cloud Kubernetes クラスターにデプロイする方法と、アプリケーションパイプラインビルドを実行する方法について説明します。 このドキュメントの例では、アプリケーションのソースコードのコンパイル、アプリケーションイメージのビルドとプッシュ、およびアプリケーションのデプロイの方法など、パイプラインビルドについて詳しく説明します。

前提条件

Kubernetes クラスターが作成されていること。 詳細は、「Kubernetes クラスターの作成」をご参照ください。

Jenkins のデプロイ

  1. Container Service コンソール にログインします。
  2. 左側のナビゲーションウィンドウで、[コンテナーサービス - Kubernetes] > [ストア] > [アプリのカタログ] を選択します。 次に、[jenkins] をクリックします。
  3. [値] タブをクリックします。
  4. AdminPassword フィールドを変更し、パスワードを設定します。
    パスワードを確実に有効にするには、 AdminPassword の前にある記号 ( #) を削除する必要があります。
    パスワードを設定しない場合、Jenkins のデプロイ後にシステムがパスワードを生成します。 次のコマンドを実行して、パスワードを表示できます。
    $ printf $(kubectl get secret --namespace ci jenkins-ci-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo
  5. 対象となる [クラスター][名前空間] を選択し、[リリース名] を入力します。次に、[デプロイ] をクリックします。
    カスタム名前空間、またはデフォルトの名前空間を選択することを推奨します。 この例では、test という名前のカスタム名前空間が選択されています。
  6. 左側のナビゲーションウィンドウで、[ディスカバリとロードバランシング] > [サービス] を選択します。
  7. Jenkins のデプロイに使用するクラスターと名前空間を選択します。
  8. Jenkins サービスの外部エンドポイントをクリックして Jenkins にログインします。

クラスター証明書とイメージリポジトリ証明書を作成し、アプリケーションをビルドおよびデプロイする

  1. Kubernetes クラスター証明書を作成します。
    1. 左側のナビゲーションウィンドウで、[Manage Jenkins] をクリックします。
    2. [Manage Jenkins] ページで、[Configure System] をクリックします。
    3. [Cloud] エリアで、[Credentials] の右側の [Add] をクリックします。
      資格情報を追加する前に、対象となる Kubernetes クラスターの [Basic Information] タブページの KubeConfig を取得する必要があります。
    4. 表示されたダイアログボックスで、以下のパラメーターを設定します。
      • Kind: [Docker Host Certificate Authentication] を選択します。
      • Client Key:コピーした client-key-data コンテンツを KubeConfig に貼り付けます。
      • Client Certificate: KubeConfig にコピーしたクライアント証明書データコンテンツを貼り付けます。
      • ID: 証明書 ID を入力します。 この例では、k8sCertAuth と入力します。
      • Description : 説明内容を入力します。
    5. [Add] をクリックします。
    6. 接続をテストします。
      [Credentials] ドロップダウンリストから、前の手順で追加された資格情報を選択します。次に、 [Test Connection] をクリックします。
    7. Kubernetes クラスターを設定し、次のようにポッドを動的にビルドします。
    8. Kubernetes ポッドテンプレートを設定します。

      スレーブパイプラインは、4 つのコンテナーを使用して、パイプラインの対応する各ステージを作成します。

      • コンテナー jnlp を次のように設定します。
        jenkins-slave-jnlp を Docker イメージとして使用します。 jenkins-slave-jnlp イメージは、Jenkins マスターを接続するための jnlp ノードを作成するために使用されます。
        registry.cn-beijing.aliyuncs.com/acs-sample/jenkins-slave-jnlp:3.14-1
      • コンテナー kaniko を次のように設定します。
        jenkins-slave-kaniko を Docker イメージとして使用します。 jenkins-slave-kaniko イメージは、イメージを作成してプッシュするために使用されます。
        registry.cn-beijing.aliyuncs.com/acs-sample/jenkins-slave-kaniko:0.6.0
      • コンテナー kubectl を次のように設定します。
        jenkins-slave-kubectl を Docker イメージとして使用します。 jenkins-slave-kubectl イメージは、アプリケーションのデプロイに使用されます。
        registry.cn-beijing.aliyuncs.com/acs-sample/jenkins-slave-kubectl:1.11.5
      • コンテナー maven を次のように設定します。
        jenkins-slave-maven を Docker イメージとして使用します。jenkins-slave-maven イメージは、mvn によってアプリケーションをパッケージ化しビルドするために使用されます。
        registry.cn-beijing.aliyuncs.com/acs-sample/jenkins-slave-maven:3.3.9-jdk-8-alpine
    9. kaniko のイメージリポジトリ権限を次のように設定します。
    10. [Save] をクリックします。
  2. イメージリポジトリ権限を設定するには、kubectl を使用して対象となる Kubernetes クラスターに jenkins-docker-cfg シークレットを作成します。
    この例では、Alibaba Cloud が提供する北京イメージリポジトリが使用されています。
    $ docker login -u xxx -p xxx registry.cn-beijing.aliyuncs.com
    Login Succeeded
    $ kubectl create secret generic jenkins-docker-cfg -n ci --from-file=/root/.docker/config.json
  3. demo-pipeline を作成し、アプリケーション サービスにアクセスします。
    1. Jenkins のホームページで、[demo-pipeline] をクリックします。
    2. 左側のナビゲーションウィンドウで、[Build with Parameters] をクリックします。
    3. イメージリポジトリ情報に従って、パラメーターを変更します。 この例では、ソースコードリポジトリは "master" で、イメージは "registry.cn-beijing.aliyuncs.com/haoshuwei:stable" です。
    4. [Build] をクリックします。
    5. [Build History] をクリックして、結果を確認します。 次の図は、成功を示しています。
    6. Container Service コンソール にログインし、アプリケーションによって提供されるサービスの IP アドレスを表示します。

こちら をクリックして、この例で使用されているソースコードリポジトリを取得します。

詳しくは、「Container Service」をご参照ください。

詳しくは、「kaniko」 をご参照ください。