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

前提条件

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

Jenkins のデプロイ

  1. Jenkins デプロイファイルをダウンロードするには、次のコマンドを実行します。
    $ git clone https://github.com/AliyunContainerService/jenkins-on-serverless.git
    $ cd jenkins-on-serverless
  2. jenkins_home ディレクトリを永続化します。
    サーバーレス Kubernetes クラスターは、クラウドディスクをサポートしていません。 jenkins_home ディレクトリを永続化するには、nfs ボリュームを作成します。 serverless-k8s-jenkins-deploy.yaml ファイルを変更し、次のフィールドアノテーションを追加して、nfs パラメーターを設定します。
    #volumeMounts:
            #  - mountPath: /var/jenkins_home
            #    name: jenkins-home
          .....
          #volumes:
          #  - name: jenkins-home
          #    nfs:
          #      path: /
          #      server:
  3. 以下のコマンドを実行し、Jenkins をデプロイします。
    $ kubectl apply -f serverless-k8s-jenkins-deploy.yaml
  4. Jenkins にログインします。
    1. Container Service コンソール にログインします。
    2. 左側のナビゲーションウィンドウで、[ディスカバリとロードバランシング] > [サービス] を選択します。
    3. Jenkins サービスの外部エンドポイントをクリックして Jenkins にログインします。
    4. Jenkins ログオン ページで、ユーザー名とパスワードを入力します。 デフォルトのユーザー名とパスワードはどちらも "admin" です。 Jenkins にログインした後で変更することを推奨します。

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

  1. Kubernetes クラウドパラメーターを設定して、スレーブ ポッドを動的に作成します。
    1. 左側のナビゲーションウィンドウで、[Manage Jenkins] をクリックします。
    2. [Configure System] をクリックします。
    3. [Cloud] エリアで、Kubernetes URL として、KubeConfig に API サーバー URL を入力します。
    4. [Credentials] の右側で、[Add] をクリックします。
      資格情報を追加する前に、対象となる Kubernetes クラスターの [Basic Information] タブページの KubeConfig を取得する必要があります。
      表示されたダイアログボックスで、以下のパラメーターを設定します。
      • 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. Jenkins サービスの外部エンドポイントを Jenkins URL として入力します。 jenkins-agent service の外部ポイントを Jenkins tunnel として入力します。
    8. [Save] をクリックします。
  2. イメージリポジトリ権限を設定するには、kubectl を使用して、対象となるサーバーレス Kubernetes クラスターに jenkins-docker-cfg secret を作成します。
    この例では、Alibaba Cloud が提供する北京イメージリポジトリが使用されています。
    $ docker login -u xxx -p xxx registry.cn-beijing.aliyuncs.com
    Login Succeeded
    $ kubectl create secret generic jenkins-docker-cfg  --from-file=/root/.docker/config.json
  3. demo-pipeline を作成し、アプリケーション サービスにアクセスします。
    1. Jenkins のホームページで、[demo-pipeline] をクリックします。
    2. 左側のナビゲーションウィンドウで、[Build with Parameters] をクリックします。
    3. イメージリポジトリ情報に従って、パラメーターを変更します。 この例では、ソースコードリポジトリブランチは "serverless" で、イメージは "registry.cn-beijing.aliyuncs.com/haoshuwei:stable" です。
    4. [Build] をクリックします。
    5. [Build History] をクリックして、結果を確認します。 次の図は、成功を示しています。
    6. Container Service コンソール にログインし、アプリケーションによって提供されるサービスの IP アドレスを表示します。

このドキュメントで使用されているソース コードリポジトリは、https://github.com/AliyunContainerService/jenkins-demo にあります。