効果的な継続的統合(CI)は、成功する開発チームのコア要件です。 CIは第一線のサービスではないため、通常は中間層または冗長ハードウェアで実行できます。プルリクエスト、自動展開、受け入れテスト、コンテンツアップロード、およびその他の多くのタスクのビルドを追加すると、ビルドコンピュータのリソースがすぐに圧倒される可能性があります。特に、多くの送信および展開アクティビティが開始されようとしている場合はそうです。
この記事では、Dockerを使用して分散ビルドシステムを構築し、Jenkinsイメージを作成して実行し、Rancherを使用してDockerクラスターを調整します。 Jenkinsは、最も有名なオープンソースCIソリューションの1つです。 Dockerはアプリケーションをソフトウェアコンテナに自動的にデプロイし、Rancherは本番環境でのDocker管理のための完全なプラットフォームを提供します。
この記事では、クラウドベースのJenkinsの展開について説明します。ただし、別の方法は、内部Jenkinsマスターと[クラウドサーバー](https://cloud.tencent.com/product/cvm?from=10680)を使用して、より多くのリソースが必要な場合にオーバーフロー容量を提供することです。これがDockerとRancherが本当に優れているところです。Dockerはほぼ同じ展開環境を提供します。Rancherを使用すると、さまざまなクラウドプロバイダーまたは内部サーバーのノードを独自のV **で実行されるクラスターに結合できます。 。このチュートリアルを終了すると、任意の数のスレーブを使用してDockerizedJenkinsデプロイメントを簡単にセットアップできるようになります。
このチュートリアルでは、合計3つのTencent [CVM](https://cloud.tencent.com/product/cvm?from=10680)を使用します。1つはRancherサーバー用、1つはJenkinsマスターサーバーを実行するRancher計算ノード用、もう1つはJenkinsスレーブサーバーを実行する2番目のRancher計算ノード用です。
TencentCVMのこれらのIPアドレスを your_rancher_server_ip
、 your_jenkins_master_ip
、および your_jenkins_slave_ip
に設定します。このチュートリアルでこれらの変数を確認したら、適切なIPアドレスに置き換えてください。
最初に、Rancherサーバー用のTencent CVMを作成します。2つのコンピューティングノードの作成については、後で紹介します。したがって、このチュートリアルを開始するには、次のものが必要です。
Docker 1.5.0イメージオプションは、TencentCVM作成ページの[** SelectImage] の下の[ Application] **タブにあります。このTencentCVMは、ユーザーデータもカスタマイズする必要があります。これを追加するには、[**利用可能な設定] セクションの "**ユーザーデータを有効にする"をクリックし、表示されるテキストボックスに次のスクリプトを入力します。このスクリプトは、起動時にRancherサーバーを実行するようにTencentCVMに指示します。
#! /bin/bash
docker run -d --name rancher-server -p 8080:8080 rancher/server
ランチャーサーバーを作成した後、しばらくすると、 http:// your_rancher_server_ip:8080 /
を指すブラウザーからそのUIにアクセスできるようになります。ランチャーサーバーはインターネットに公開されているため、認証を設定することをお勧めします。このステップでは、現在RancherでサポートされているGithubOAuthベースの認証を設定します。
右上隅にアクセス制御が構成されていませんという警告が表示され、その後に** [設定] **へのリンクが続きます。 ** [設定] **をクリックし、指示に従って新しいアプリケーションをGithubに登録し、[クライアントID]と[シークレット]を対応するテキストフィールドにコピーします。
終了したら、[** Githubを認証に使用**]をクリックし、ポップアップウィンドウで[アプリケーションの承認]をクリックします。完了すると、ページが再読み込みされ、OAuthの設定手順が「**認証の構成」**セクションに置き換えられます。ランチャーへのアクセスを許可する必要がある他のユーザーと組織を追加します。変更が加えられると、許可された構成の保存を読み取るボタンが表示されます。終了したらクリックします。
承認設定を保存した後、右上隅の警告をGithubプロファイルイメージとプロジェクト選択メニュー(元々はデフォルト)に置き換える必要があります。 「**デフォルト」**をクリックしてプロジェクト選択メニューを開き、「**プロジェクトの管理」**をクリックして、最後に「**プロジェクトの作成」**をクリックします。 Jenkinsというプロジェクトを追加し、プロジェクト選択メニューをもう一度使用してJenkinsプロジェクトを選択します。
これにより、Rancherで実行するさまざまなプロジェクトを分離することで、Rancherインターフェイスをクリーンで整然とした状態に保つことができます。同じRancherクラスターでJenkins以外の他のサービスを実行する場合は、他のプロジェクトを作成できます(他の計算ノードが必要です)。また、デフォルトのプロジェクトはログインしたユーザーに固有であるため、複数のユーザーにランチャーエージェントへのアクセスを許可する場合は、デフォルトのプロジェクトを使用しないでください。
サーバーと認証がセットアップされたので、Jenkinsデプロイメントを実行するためにいくつかの計算ノードを登録できます。
注:認証を実行する前に、登録トークンを提供せずにRancher計算ノードを登録できます。ただし、認証を有効にしているため、すべてのエージェントは、クラスターに追加する登録トークンを提供する必要があります。
ランチャーUIで、(左側のメニューの)ホストをクリックし、新しいホストを登録します。ポップアップウィンドウからDockerrunコマンドをコピーして、ウィンドウを閉じます。コントロールパネルに戻り、Docker 1.5.0イメージを使用して、Rancherサーバーなどの他の2つのTencentCVMを作成します。ビルドがリソースを大量に消費する場合は、これら2つのTencentCVMに対してより大きなインスタンスを選択することをお勧めします。
これら2つのTencentCVMのユーザーデータについては、 #!/ bin / bash
を追加し、その後に以前にコピーしたDockerrunコマンドを引き続き追加します。これに似ているはずです。
#! /bin/bash
sudo docker run -d --privileged
- v /var/run/docker.sock:/var/run/docker.sock rancher/agent
http://your_rancher_server_ip:8080/v1/scripts/A2DE06535002ECCAAFCD:1426622400000:iniUzPiTnjyFaXs9lCKauvoZOMQ
数字と文字の最後の長い文字列は、コマンドによって異なります。トークンはプロジェクトごとに一意であるため、[新しいホストの登録]をクリックする前に、プロジェクトが選択されていることを確認してください。
数分後、RancherUIに2つのRancher計算ノードが表示されるはずです。 下の画像にTencentCVMの名前が表示されます。これは画像の** RancherAgent **です。
これで、公式のJenkinsイメージを使用してJenkinsマスターノードを起動する準備が整いました。
コンテナを起動するには、使用する計算ノードの下にある[追加コンテナ]をクリックし、次のオプションを追加します。
次に、[**ポートマッピング] の横にある[ + ]をクリックします。 2つのフィールドに8080と入力し、TCPをプロトコルとして保持します。これにより、Jenkins WebUIにアクセスできるようになります。もう一度 + **をクリックし、2つのフィールドにポート50000を追加し、プロトコルとしてTCPを残します。これにより、スレーブはマスターに接続できます。
次に、[**詳細オプション] **をクリックしてから、[**ボリューム] **タブをクリックします。 「**ボリューム」の横にある「 +」**をクリックし、表示されるテキストボックスに「/ var / jenkins_home」を指定します。 Jenkinsホームディレクトリをボリュームに配置すると、コンテナを再起動したときに構成を保持でき、他のコンテナ機能でボリュームバックアップコンテナを使用できます。
最後に、[**作成] **をクリックしてJenkinsコンテナを起動します。
このステップでは、スレーブJenkinsを起動します。
ブラウザで http:// your_jenkins_master_ip:8080
をポイントして、JenkinsUIをロードします。
Jenkins UIで、左側の** Manage Jenkins を参照し、次のメニューの Manage Nodes を参照し、最後に最後のページの左側の New Node を参照して、ノード構成を作成します。次のメニューで、ノード名の横のテキストボックスにスレーブ名前を入力し(覚えておいてください。後でまた必要になります)、ダムスレーブを選択します。入力して OK **をクリックします。
このノードに関する詳細情報が記載されたページにリダイレクトされます。 リモートルートディレクトリには、「/ var / jenkins」と入力します。 起動方法については、「** JavaWebStart経由でスレーブエージェントを起動する」**を選択してください。スレーブで許可される並列ビルドの数を増やすために、実行者設定をデフォルト値の1よりも高くなるように更新することもできます。残りの設定はデフォルト値のままにしておくことができます。 [**保存] **をクリックして、下位構成を送信します。
これで、スレーブコンテナを起動する準備が整いました。ランチャーUIで、残りの計算ノードで[コンテナーの追加]をクリックし、次のオプションを追加します。
次に、詳細オプションをクリックします。 コマンドタブから始めます。 ** + の横にある Environment Vars をクリックし、 Name が MASTER_HOSTw
、 Value が your_jenkins_master_ip
のエントリを追加します。もう一度 + をクリックし、Jenkinsの部下の名前として NODE
と** value という名前の別のエントリを追加します。これは、前の手順のJenkinsUIでは新規です。ノード**メニューで指定します。
次に、「**ボリューム」**タブをクリックします。 「**ボリューム」の横にある「 +」**をクリックし、表示されるテキストボックスに「/ var / jenkins」を指定します。
最後に、[**作成] **をクリックします。
jenkins-slave
コンテナは、Jenkinsマスターノードからjarファイルをダウンロードし、Jenkinsスレーブノードを実行します。スレーブノードが起動すると、ノードの管理ページを更新した後、そのステータスを確認できるはずです。これはJenkinsUIで停止しました。以下に示すように、スレーブノードに応答時間の値があり、コンピューターアイコンに赤いXが表示されていないことがわかります。
この記事では、DockerとRancherを使用してJenkinsCIデプロイメントをセットアップしました。これで、Jenkinsクラスターをさらに構成およびビルドジョブする準備が整いました。
DockerはJenkinsを実行するための一貫した環境を提供し、Rancherはホスト間のネットワークを提供します。これにより、Dropletに手動でアクセスしたり、サーバーを構成したりすることなく、WebUIからクラスターを管理できます。このツールセットを使用すると、システムリソースをすばやく構築できます。これは、リリースなどの重要な瞬間に目立たないビルドシステムを維持するために不可欠です。
参照:「Ubuntu14.04でRancherを使用してJenkinsを管理する方法」
Recommended Posts