目次


IBM UrbanCode を使用してハイブリッド・クラウドに Docker コンテナーをデプロイする: 第 1 回 セットアップ

Comments

この記事は、IBM UrbanCode と Docker Trusted Registry (DTR) を使用してマルチコンテナー DevOps 環境を構築する方法を詳しく説明する、全 2 回からなるハウツー・ガイドの第 1 回です。詳細については、「Deploy containers to on-premises and hybrid clouds with IBM and Docker」というタイトルのブログ投稿を参照してください。このブログ投稿で、マルチコンテナー・アプリケーションの開発と、IBM Bluemix とオンプレミス Docker Swarm クラスターからなるハイブリッド・クラウド環境へのマルチコンテナー・アプリケーションのデプロイメントについて紹介しています。

第 1 回では、UrbanCode を使用して Docker コンテナーをデプロイするために必要な、Bluemix の IBM Containers、Docker Trusted Registry、Docker Swarm、UrbanCode Build をセットアップする方法を順番に説明します。

IBM では、Docker の戦略的パートナーとして企業へのコンテナー・テクノロジーの導入を推進しており、マルチプラットフォームのデプロイメントと、マルチコンテナーのデプロイメントを可能にするために、UrbanCode DevOps オファリングを Docker Trusted Registry 製品に統合しました。また、Docker Trusted Registry に関しては、世界的なサポートを提供しており、企業のお客様に非常に高く評価していただいています。IBM と Docker のパートナーシップに関する詳細は、このリンク先のページを読んでください。

第 1 回では、概要を説明するとともに、UrbanCode を使用して Docker コンテナーをデプロイするために必要な、Bluemix の IBM Containers、Docker Trusted Registry、Docker Swarm、UrbanCode Build をセットアップする方法を順番に説明します。

第 2 回では、UrbanCode Deploy がどのようにして Bluemix および Docker Swarm へのハイブリッド・アプリケーションのデプロイメントをオーケストレーションするかを説明します。

ハイブリッド・デプロイメントを作成するために必要なもの

デモを見るコードを入手する

概要

この記事は、IBM UrbanCode を使用して多層マルチコンテナー・アプリケーションを迅速に作成してハイブリッド・クラウドにデプロイするための詳細なガイドです。このガイドでは、IBM UrbanCode Build、Docker Trusted Registry、そして IBM UrbanCode Deploy 用の新しい Docker プラグインが、どのようにしてオンプレミス・クラウドやハイブリッド・クラウドなどのさまざまな環境への Docker 化されたアプリケーションの配信を自動化し、エンタープライズ・レベルのガバナンス、トレーサビリティー、コントロール、セルフサービスを提供するかを説明します。

IBM Bluemix はパブリック・クラウド環境を提供し、オンプレミス Docker Swarm はプライベート・クラウドとして機能します。この 2 つを組み合わせることで、IBM UrbanCode によってオーケストレーションされるマルチコンテナー・アプリケーション用のハイブリッド環境が実現します。また Docker アプリケーションは IBM Bluemix Secure Gateway サービスを利用して、オンプレミスの Docker Swarm クラスター内で実行されているバックエンド・コンテナーに接続します。

この記事では例として、「The Store」というサンプル e-コマース・アプリケーションの開発とデプロイメントについて説明します。このアプリケーションは、Bluemix 内の IBM Containers 上で実行される Node.js フロントエンド Docker コンテナーと、オンプレミスの Docker Swarm でデプロイされたマルチコンテナー・バックエンドからなります。以下の図に、Bluemix とオンプレミスの両方にまたがる、このハイブリッド・アプリケーションのデプロイメントを示します。

The Store アプリケーションの図
The Store アプリケーションの図

準備が整ったら、以下の DevOps プロセスに従って The Store アプリケーションのフロントエンドを更新して再デプロイします (記事のステップの番号は、以下の図の番号に対応しています)。

  1. 開発者がアプリケーションに変更を加えて、Git リポジトリーにプッシュします。
  2. UrbanCode Build に、更新されたコードを含む Git コミットが通知されます。
  3. UrbanCode Build がソフトウェアを新しい Docker イメージにパッケージ化し、オンプレミスの Docker Trusted Registry にプッシュします。すると、UrbanCode Deploy プラグインが、アプリケーション・コンポーネントの更新されたイメージをインポートします。
  4. UrbanCode Deploy が、フロントエンド・コンポーネントのイメージを Bluemix 内の IBM Containers Registry にプッシュします。
  5. UrbanCode Deploy が、オンプレミス Docker Swarm クラスター内のバックエンド Docker コンテナーを起動します。UrbanCode Deploy が、Bluemix 内の IBM Containers 上でフロントエンド Docker コンテナーを起動します。
アプリケーション・シナリオの図
アプリケーション・シナリオの図

以降のステップで、ハイブリッド・アプリケーションのデプロイメント環境に必要なコンポーネントをセットアップする方法を説明します。構成項目の名前は、この記事の例として使用しているだけなので、好きな名前に変更して構いません。

ステップ 1. The Store アプリケーション・コードを入手する

  1. 上掲の「コードを入手する」ボタンをクリックすると表示される The Store アプリケーションのプロジェクトからソース・コードを入手するために Git リポジトリーを複製します。
    	$ git clone https://hub.jazz.net/git/snayak/ucd-dtr
  2. The Store のフロントエンドおよびバックエンドの README.md ファイルに記載されている指示に従って、記述されているようにバックエンド Docker イメージを作成します。

ステップ 2. Bluemix 内で IBM Containers をセットアップする

このステップでは、The Store アプリケーションの Docker 化された Node.js ベースのフロントエンド・アプリケーションを Bluemix 内の IBM Containers にデプロイします。そして、このフロントエンド・アプリケーションが、Bluemix の Secure Gateway サービスを利用して、オンプレミス (Swarm) で実行されているバックエンド・コンテナーに接続するようにします。アプリケーションが新しいビジネス要件を満たすために進化するなかで、このコンテナーもまた Bluemix の第 1 級市民として、アプリケーションの必要に応じて他のどの Bluemix サービス (キャッシュ、アナリティクス、e-メールなど) でも利用することができます。

The Store のフロントエンドをセットアップする

  1. Bluemix アカウントを取得します。Bluemix アカウント名は、Bluemix での組織の名前に設定されます。
  2. デモに使用するスペースを選択します。「dev」という名前のデフォルト・スペースが用意されますが、任意のスペースを使用することができます。
  3. 選択したスペースで、Python などのランタイムを使用して、「SecureBridge」という名前の CloudFoundry アプリケーションを作成します。

セキュア・ゲートウェイを作成する

  1. サービス・カタログから「Secure Gateway」サービスを選んで、SecureBridge アプリケーションにバインドします。
  2. Secure Gateway サービス・インスタンス内で、「Skytap_Swarm」という名前のゲートウェイを作成します。
  3. Skytap_Swarm ゲートウェイの下で、IP:Port = "dockertr.csidemos.com:9081" を指す宛先 Backend_WAS を作成します。
  4. Skytap_Swarm ゲートウェイで、「Connect Gateway (ゲートウェイの接続)」ボタンをクリックし、オンプレミスの Secure Gateway クライアント・コンテナーを起動するコマンド行を確認したら、このコマンド行をコピーします。

ステップ 3. Docker Trusted Registry をセットアップする

  1. このリンク先に記載されているインストール手順に従って Docker Trusted Registry をインストールします。デフォルトのファイル・システム・ストレージを使用すると、作業を単純なものに維持することができます。DTR をインストールして実行するには、Docker CS (Commercially Supported) Engine を使用する必要があります。Docker Trusted Registry ラインセンスには、1 本の DTR ノード・ライセンスと、10 本の Docker CS Engine ライセンスが含まれています。

    注意する点として、このレジストリーからプッシュ/プルするすべてのノードも Docker CS Engine を使用する必要があります。従って、DTR とやりとりするすべてのノードにこのエンジンを忘れずにインストールしておいてください。

  2. Docker Trusted Registry をインストールした後は、これを使用できるようにするために、以下の作業も必要になります。
    • DTR に対して有効なドメイン名を設定します。ドメイン名として、この記事では dtr.yourdomain.com を使用します。
    • DTR ライセンスを追加します。
  3. 前に作成した The Store アプリケーションのバックエンド Docker イメージにタグを付けて、Docker Trusted Registry にプッシュします。

ステップ 4. Docker Swarm をセットアップする

サンプル・アプリケーションが Swarm クラスター上で実行するバックエンド・コンテナーは、WebSphere Application Server、MySQL、DB2 の 3 つです。この記事を執筆している時点では、Docker CS Engine はデフォルトでマルチホスト・ネットワーキングをサポートしていないので、1 ノードの Swarm クラスターが使用されますが、UrbanCode Deploy による Swarm クラスターのオーケストレーションをデモするにはこれで十分です。UrbanCode Deploy は Swarm Manager とやりとりすることから、マルチノード Swarm クラスターの場合でも UrbanCode Deploy によるオーケストレーションは同じように機能します。

  1. Swarm Manager ホストにログインします (このホストは、Swarm Manager であると同時に Swarm ノードでもあります)。
  2. Docker CS エンジンをインストールします。
  3. このリンク先のインストール手順に従って Docker Trusted Registry 証明書をインストールします。
  4. 以下のコマンドを使用して、Swarm ID を取得し、コマンドから返された token をメモします。
    $ docker run --rm swarm create
    <token>
  5. /etc/default/docker を編集して DOCKER_OPTS"-H tcp://0.0.0.0:2375" を追加します。
  6. Docker を再起動します。
    $ sudo service docker restart.
  7. Swarm クラスターに参加します。
    $ docker run -d swarm join --addr=192.168.56.30:2375 token://<token>.
  8. この Swarm クラスターの Swarm Manager を実行します。
    $ docker run -d -p 3375:2375 swarm manage token://<token>
  9. リモート・ホストから Swarm API を呼び出して、Swarm API が応答することを確認します。
    $ docker -H tcp://<Swarm ホストの IP アドレス>:3375 info
  10. このホスト上で Secure Gateway Client コンテナーを実行します。それには、上記の「セキュア・ゲートウェイを作成する」セクションの終わりでコピーしたコマンド行を貼り付けます。この Docker Trusted Registry ホストのドメイン名を dockertr.csidemos.com に設定します。Secure Gateway の構成は、バックエンドの WebSphere Application Server コンテナーを使用できるホストおよびポートと一致していなければなりません。

ステップ 5. IBM UrbanCode Build をセットアップする

  1. IBM Knowledge Center で概説されている手順に従って、IBM UrbanCode Build のサーバーとエージェントをインストールして起動します。
  2. 以下の資格情報を使用してログインします。
    • ユーザー名: admin
    • パスワード: admin
  3. Git リポジトリーを構成します。
    1. 「System (システム)」 > 「Repositories (リポジトリー)」 > 「Create New Repository (新規リポジトリーの作成)」の順にナビゲートします。
    2. Git プラグインをダウンロードし、「Settings (設定)」 > 「Plug-ins (プラグイン)」の順に選択して、このプラグインをツールにロードします。
    3. リポジトリーを構成するために、以下の項目を設定します。
      • Name (名前): : dtr.yourdomain.com
      • Repository Base URL (リポジトリー・ベース URL): : /src/store
      UrbanCode Build リポジトリーの設定画面のスクリーンショット
      UrbanCode Build リポジトリーの設定画面のスクリーンショット
  4. Dockerfile をビルドするためのジョブを作成します。
    • 「Templates (テンプレート)」 > 「Jobs (ジョブ)」の順にナビゲートします。
    • 「Create (作成)」をクリックして、「Build Docker Image (Docker イメージのビルド)」という名前の新規ジョブを作成します。
    • 「Create Step (ステップの作成)」をクリックして、以下に示す複数のステップを追加します。以下の図に示すようにフィールドに入力し、「Save (保存)」をクリックして次に進みます。
      1. 「Build (ビルド)」 > 「Create Stamp (スタンプの作成)」の順にナビゲートします。 「Stamp (スタンプ)」ステップのスクリーンショット
        「Stamp (スタンプ)」ステップのスクリーンショット
      2. 「Source (ソース)」 > 「Clean Workspace (ワークスペースのクリーンアップ)」の順にナビゲートします。 「Clean Workspace (ワークスペースのクリーンアップ)」ステップのスクリーンショット
        「Clean Workspace (ワークスペースのクリーンアップ)」ステップのスクリーンショット
      3. 「Source (ソース)」 > 「Populate Workspace (ワークスペースへのデータ取り込み)」の順にナビゲートします。 「Populate Workspace (ワークスペースへのデータ取り込み)」ステップのスクリーンショット
        「Populate Workspace (ワークスペースへのデータ取り込み)」ステップのスクリーンショット
      4. 「Source (ソース)」 > 「Get Changelog (変更ログの取得)」の順にナビゲートします。「Get Changelog (変更ログの取得)」ステップのスクリーンショット
        「Get Changelog (変更ログの取得)」ステップのスクリーンショット
      5. 「Build (ビルド)」 > 「Build Tools (ビルド・ツール)」 > 「Docker」 > 「Docker Build (Docker のビルド)」の順にナビゲートします。「Docker Build (Docker のビルド)」ステップのスクリーンショット
        「Docker Build (Docker のビルド)」ステップのスクリーンショット
      6. 「Scripting (スクリプト記述)」 > 「Shell (シェル)」 > 「Shell (シェル)」の順にナビゲートします。「Shell (シェル)」ステップのスクリーンショット
        「Shell (シェル)」ステップのスクリーンショット
      7. 「Build (ビルド)」 > 「Assign Status (状況の割り当て)」の順にナビゲートします。「Assign Status (状況の割り当て)」ステップのスクリーンショット
        「Assign Status (状況の割り当て)」ステップのスクリーンショット
  5. ワークフロー・テンプレートを作成します。
    1. 「Templates (テンプレート)」 > 「Workflows (ワークフロー)」の順にナビゲートします。
    2. 「Create (作成)」をクリックし、名前として「Docker build Workflow (Docker のビルド・ワークフロー)」と入力してから「DONE (終了)」をクリックします。
    3. 緑色の矢印の「START (開始)」ボックスをクリックし、表示されるポップアップから「Insert Job After (次の後にジョブを挿入)」を選択します。「Docker build Workflow (Docker のビルド・ワークフロー)」のスクリーンショット
      「Docker build Workflow (Docker のビルド・ワークフロー)」のスクリーンショット
    4. 「Create Job (ジョブの作成)」ダイアログで以下の項目を選択してから、「Insert Job (ジョブの挿入)」をクリックします。
      • Job (ジョブ):Build Docker Image (Docker イメージのビルド)
      • Pre-Condition (前提条件):All Ancestor Jobs Success (すべての先行ジョブが成功していること)
      • Agent Pool Selection (エージェント・プールの選択):All Build Agents (すべてのビルド・エージェント)
      • Working Directory (作業ディレクトリー):Source Config's Work Directory (ソース構成の作業ディレクトリー)
      「Create Job (ジョブの作成)」ステップのスクリーンショット
      「Create Job (ジョブの作成)」ステップのスクリーンショット
    5. 「Templates (テンプレート)」 > 「Source (ソース)」の順にナビゲートして、「Source Template (ソース・テンプレート)」という名前の Git を作成し、以下のように構成してから「Done (完了)」をクリックします。 Git ソース・テンプレートの作成ステップのスクリーンショット
      Git ソース・テンプレートの作成ステップのスクリーンショット
    6. 「Templates (テンプレート)」 > 「Properties (プロパティー)」の順に選択し、このサブタブ内でデフォルトのオプションを使用して「git.project」という名前のプロパティーを作成し、「Create (作成)」をクリックします。
    プロパティーの作成ステップのスクリーンショット
    プロパティーの作成ステップのスクリーンショット
  6. 「Docker Build Process (Docker ビルド・プロセス)」という名前のプロセス・テンプレートを作成し、ビルド・プロセス・テンプレートのワークフローとして Docker ビルド・ワークフローを選択します。「tag」という名前のプロセス・プロパティーを作成し、デフォルト値として以下の値を設定します。
    dhe.cork.ie.ibm.com/store/store_ssh:1.0.${p:buildlife/id}.
  7. 「Agent Pool (エージェント・プール)」以外の項目には、デフォルトのオプションを使用して、プロジェクト・テンプレートを作成します。「Agent Pool (エージェント・プール)」の設定は、「Agent Pool Selection (エージェント・プールの選択)」 > 「All Agents (すべてのエージェント)」の順に選択することで行います。
  8. store_frontend」という名前のプロジェクトと、「Build Docker Image (Docker イメージのビルド)」という名前のビルド・プロセスを作成し、ステップ 5.1 から 5.7 で作成したテンプレートを使用してソース構成を作成します。
  9. ソースへのコミットの後に新規ビルドを開始するリポジトリー・トリガーを作成します。
    1. 「Projects (プロジェクト)」 > 「store_fronted」 > 「Build Docker Image (Docker イメージのビルド)」 > 「Triggers (トリガー)」の順にナビゲートします。
    2. タイプを「Repository Trigger (リポジトリー・トリガー)」に設定した新規トリガーを作成します。
    3. 保存したら、トリガー URL 値をコピーします。
    4. 以下の curl コマンドを使用して、コミット後のフックを作成します。
      curl -u UBUILD_USER:UBUILD_PASS_OR_TOKEN -X POST <URL_from_step_9.c>

まとめ

この全 2 回からなる記事の第 1 回では、多層マルチコンテナー・アプリケーションをオンプレミスで迅速に開発し、オンプレミスの Docker Swarm クラスターと、オフプレミスのクラウド環境 (Bluemix 内の IBM Containers など) の両方に継続的にデプロイできるようにする方法を説明しました。そのために、IBM UrbanCode Build と IBM UrbanCode Deploy のエンタープライズ機能を、Docker イメージ用の信頼できるリポジトリーとして IBM でサポートしている Docker Trusted Registry オファリングとともに使用しました。

また、IBM UrbanCode 製品に Docker Trusted Registry を統合する方法や、標準的な DevOps パイプラインの一環として IBM UrbanCode 製品によって、複数のクラウド環境への複数のコンテナーのデプロイメントをオーケストレーションして自動化する方法、さらには Bluemix 内の IBM Containers で実行されているアプリケーションをオンプレミスのインフラストラクチャーにセキュアに接続するために、Bluemix の Secure Gateway サービスを (場合によっては Bluxmix の膨大なカタログの中から選んだ他のサービスとともに) 利用する方法を説明しました。

この記事の続きへ進む準備はできていますか?素晴らしい!第 2 回では、UrbanCode Deploy が Bluemix および Docker Swarm へのハイブリッド・アプリケーションのデプロイメントをオーケストレーションする方法を説明します。

コメントを投稿することで、この全 2 回からなる記事に関するフィードバックをお寄せください。私たちの目標は、企業のお客様がクラウド環境で Docker コンテナー化を最大限利用できるようサポートすることです。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=DevOps, Cloud computing
ArticleID=1022858
ArticleTitle=IBM UrbanCode を使用してハイブリッド・クラウドに Docker コンテナーをデプロイする: 第 1 回 セットアップ
publish-date=12032015