このドキュメントでは、継続的な統合環境である Jenkins を Alibaba Cloud サーバーレス Kubernetes クラスターにデプロイする方法と、アプリケーションパイプラインビルドを実行する方法について説明します。 このドキュメントの例では、アプリケーションのソースコードのコンパイル、アプリケーションイメージのビルドとプッシュ、およびアプリケーションのデプロイの方法など、パイプラインビルドについて詳しく説明します。
前提条件
サーバーレス Kubernetes クラスターが作成されていること。 詳細については、「サーバーレス Kubernetes クラスターの作成」をご参照ください。
Jenkins のデプロイ
- Jenkins デプロイファイルをダウンロードするには、次のコマンドを実行します。
$ git clone https://github.com/AliyunContainerService/jenkins-on-serverless.git $ cd jenkins-on-serverless
- 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:
- 以下のコマンドを実行し、Jenkins をデプロイします。
$ kubectl apply -f serverless-k8s-jenkins-deploy.yaml
- Jenkins にログインします。
- Container Service コンソール にログインします。
- 左側のナビゲーションウィンドウで、 を選択します。
- Jenkins サービスの外部エンドポイントをクリックして Jenkins にログインします。
- Jenkins ログオン ページで、ユーザー名とパスワードを入力します。 デフォルトのユーザー名とパスワードはどちらも "admin" です。 Jenkins にログインした後で変更することを推奨します。
クラスター証明書とイメージリポジトリ証明書を作成し、アプリケーションをビルドおよびデプロイする
- Kubernetes クラウドパラメーターを設定して、スレーブ ポッドを動的に作成します。
- 左側のナビゲーションウィンドウで、[Manage Jenkins] をクリックします。
- [Configure System] をクリックします。
- [Cloud] エリアで、Kubernetes URL として、KubeConfig に API サーバー URL を入力します。
- [Credentials] の右側で、[Add] をクリックします。資格情報を追加する前に、対象となる Kubernetes クラスターの [Basic Information] タブページの KubeConfig を取得する必要があります。表示されたダイアログボックスで、以下のパラメーターを設定します。
- Kind: [Docker Host Certificate Authentication] を選択します。
- Client Key:コピーした client-key-data コンテンツを KubeConfig に貼り付けます。
- Client Certificate: KubeConfig にコピーしたクライアント証明書データコンテンツを貼り付けます。
- ID: 証明書 ID を入力します。 この例では、k8sCertAuth と入力します。
- Description: 説明を入力します。
- [Add] をクリックします。
- 接続をテストします。
[Credentials] ドロップダウンリストから、前の手順で追加された資格情報を選択します。次に、[Test Connection] をクリックします。
- Jenkins サービスの外部エンドポイントを Jenkins URL として入力します。 jenkins-agent service の外部ポイントを Jenkins tunnel として入力します。
- [Save] をクリックします。
- イメージリポジトリ権限を設定するには、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
- demo-pipeline を作成し、アプリケーション サービスにアクセスします。
- Jenkins のホームページで、[demo-pipeline] をクリックします。
- 左側のナビゲーションウィンドウで、[Build with Parameters] をクリックします。
- イメージリポジトリ情報に従って、パラメーターを変更します。 この例では、ソースコードリポジトリブランチは "serverless" で、イメージは "registry.cn-beijing.aliyuncs.com/haoshuwei:stable" です。
- [Build] をクリックします。
- [Build History] をクリックして、結果を確認します。 次の図は、成功を示しています。
- Container Service コンソール にログインし、アプリケーションによって提供されるサービスの IP アドレスを表示します。
このドキュメントで使用されているソース コードリポジトリは、https://github.com/AliyunContainerService/jenkins-demo にあります。