Champions」。2019に選出された平岡大祐氏に、その知見・ノウハウを体感できる記事を執筆していただいた。Cloud」の実践的な活用方法をお届けする。Champions」DX(デジタルトランスフォーメーション)トレンドが進展し、ビジネスが「ITを使った体験価値の競争」に変容して久しい。テクノロジーはビジネスのコアとなり、それを使いこなすエンジニアこそが、ビジネスの推進役となる時代が到来したといえるだろう。Champions」だ。IBMのソリューションやソフトウェアに対し、年間を通してテクニカルコミュニティーに優れた貢献をしたエンジニアを表彰する制度で2008年に創設。2018年までにグローバルで650人、うち日本人は51人が選出されている。Champions」の6部門で表彰。IBMのグローバルイベント、公式サイト、ブログなどを通じた意見発信の機会が与えられる。2019に選出された平岡大祐氏に、その知見・ノウハウを体感できる記事を執筆していただいた。Cloud」の実践的な活用方法をお届けする。手を動かして“最先端の視点”を体感してはいかがだろうか。20192002年からエンジニアとして、業務系、基幹系システム、プロダクトの設計、開発、運用などさまざまな業務に従事。CloudのベアメタルサーバにOpenShift環境を構築し、2017年1月から本番環境で稼働させ、運用する業務を経験。以降、コンテナやOpenShiftの業務を多く経験するようになる。Docker/Kubernetesで作るクラウド時代のシステム基盤』(翔泳社)に、OpenShiftに関する章の共著で参加。Administration」を取得している。Service(IKS)」が成熟し始めていて、OpenShiftはKubernetesの機能拡張といえるものなので、IKSの上にOpenShiftを乗せたものが出てくるのではないかと予想していました。CloudとOpenShiftを組み合わせる環境の構築、運用してきた経験から言いますと、Kubernetes、CI/CD(継続的インテグレーション/継続的デプロイ)、運用監視といった環境を自前で構築するのではなく、簡単に借りられるというのは、大きなコスト削減につながるでしょう。OpenShiftでアプリケーションを開発すると、オンプレミスとパブリッククラウドで行き来がしやすくなるのもポイントです。近年のDXトレンドと今エンジニアに求められている役割についてある企業で働いていたときに、経営者が「プロダクトのリリーススピードを速めたい」と言っていましたが、そういったDXトレンドに乗っているような企業では、事業部門がIT部門に業務理解を求めていましたね。今に限らず昔からそういう企業はあったと思います。企業によっては、IT部門やエンジニアに、変革を迫るところもありますし、従来通りコスト削減だけを求めるところもあります。いずれにせよ、今のエンジニアにはリリーススピードと自動化が求められていると思います。Cloudは、必要な情報を入力してボタンをクリックするだけで複雑なマルチゾーンのOpenShiftクラスタでも簡単に作成できます。運用エンジニアはKubernetesの学習や環境構築にかかるコストを下げ、運用監視に集中できます。開発では、いったん設定を済ませば、コーディング後にGitリポジトリにプッシュすると、自動でビルド、デプロイが行われます。開発者はCI/CD、Kubernetesやコンテナの学習にコストをかける必要がなく、ビジネスロジックのコーディングに集中できるようになります。Cloudによる環境構築の簡単さを見てもらえればと思います。※以下は日本アイ・ビー・エムから提供されたコンテンツを、許諾を得て転載したものです。このため、用字用語の統一ルールなどは@ITのそれとは一致しません。Hat買収完了という歴史的な発表がありました。OpenShift」上で動作するよう最適化した(かつ、していく)ことを発表しました。Paks」と呼ばれ、IBMが自社のミドルウェアをコンテナ化、そしてパッケージ化してOpenShift対応を進めたものです。これらの事実から見てもIBMは、企業がアプリケーションを最新にする方法を簡素化し、特にこれまでクラウドへの移行に障壁があったミッションクリティカルなシステムのクラウド移行を重視していることがわかります。OpenShiftは、もともとオンプレミス、パブリック/プライベート・クラウドで動作するように柔軟に設計されています。Cloudなど)、プライベート・クラウド、オンプレミスを問わず、そのアプリケーションを実行できるようになります。Cloud」を利用し、Tokyoリージョンにある3つのデータセンター(TOK02、TOK04、TOK05)を利用するマルチゾーン・クラスターを評価しました。Hatとの統合サービスを評価する——このエキサイティングで興味深い体験をみなさんと共有できればと思います。Service(IKS)」として利用できていたサービス群に内包されています。Kubernetesネイティブの環境が必要な場合は、Kubernetesクラスターを、OpenShift環境が必要ならOpenShiftクラスターを構成することができるので、必要に応じて使い分けられるのは便利ですね。マルチゾーン・クラスターとはOpenShiftクラスターのワーカー・ノードを複数のデータセンターに配置する構成のことです。データセンターレベルの障害が発生しても、システムへの影響を最小限にとどめられるようになります。Cloud側で管理され、ワーカー・ノードの耐障害性などは利用者が指定できるようになっています。マルチゾーン・クラスター構成図OpenShiftクラスターの作成OpenShiftのクラスター作成プロセスを順に追って説明します。Cluster」をクリックします。Cluster」のサービスに関する説明が表示されます。「作成」ボタンをクリックして進みます。Cluster「新規OpenShiftクラスターの作成」画面が表示されます。05今回、Tokyoで複数ゾーンを選択しました。Cloudでは世界中にマルチゾーンのリージョンがあり、同一リージョン内で複数のデータセンターで高可用性クラスターを構成できます。エンドユーザーに最も近いリージョンで構成するのがよいでしょう。02)のみの構成も作成することができます。Note複数ゾーンを利用する場合のみ「VLANスパニング」を有効にする必要があります。ベアメタル(物理サーバ)・専用」と用途に応じたマシンを選択できます。ユース・ケースに合わせて、CPU、メモリ、ディスクのたくさんの組み合わせが用意されています。このたくさんの組み合わせは、クラスター作成後の負荷状況に応じてマシンを変更、追加、削除することができて便利です。Cloudの良いところの一つだと思います。新規OpenShiftクラスターの作成3ローカル・ディスクの暗号化:選択ワーカー・ノード:1ワーカー・ノードの数を「1」にすると、各ゾーンに1個(TOK02:1個、TOK04:1個、TOK05:1個)と合計3個のワーカー・ノードが展開されます。アクセス・ポリシー」を確認してください。Cloudの管理者ではない場合は、管理者に確認してください。「クラスターの作成」ボタンをクリックすると、クラスターのプロビジョニングが始まります。約30分でクラスター、ワーカー・ノードの準備が完了し使用できるようになります。クラスター作成中プロビジョニングが正常完了するとクラスターの「概要」タブではクラスターやワーカー・ノードの状態が緑色に変わります。「ワーカー・ノード」タブでは、3つのワーカー・ノードがそれぞれTokyoリージョンにある3箇所のデータセンター(TOK02、TOK04、TOK05)に配置されているのがわかります。Webコンソール」をクリックすると、OpenShiftのWebコンソールが起動し、OpenShiftが正常に動作していることが確認できます。Cloud」は必要な情報を入力して「クラスターの作成」ボタンをクリックするだけの簡単操作で、Tokyoリージョンにある3箇所のデータセンター(TOK02、TOK04、TOK05)を利用するマルチゾーン・クラスターが起動します。Cloudだと、入力してボタンを押すだけで出来上がってしまうのに大変驚きました。出来上がるまで何ヶ月かかることかと思います。Cloudのマネージドのサービスを利用することによって、企業はプラットフォームの構築から解放されます。ブラウザ操作で簡単にアプリケーションをビルド・デプロイOpenShiftでは、難しいCLIの操作がわからなくてもWebコンソールのブラウザ操作でアプリケーションのビルド・デプロイが簡単にできます。OpenShiftでは、様々な言語、ミドルウェア、CI/CDの「サービスカタログ」(テンプレートのこと、以下「カタログ」と表記)が利用できアプリケーション開発が加速する仕組みが備わっています。image)」と呼ばれるOpenShiftのビルド方式によって、アプリケーションが自動でデプロイされます。それでは、実際にデプロイを試してみましょう。カタログ一覧から「PHP」を選択します。カタログ一覧PHPのカタログの情報が表示されます。「Next>」ボタンをクリックして進みます。設定画面が表示されます。必要な情報を入力し「Create」ボタンをクリックしてアプリケーションを作成します。Repository:https://github.com/daihiraoka/phptest.git(ソースコードのあるGitリポジトリを記述)作成結果が表示されます。今回作成したアプリケーション(helloworld)は問題なく作成できたので「Close」ボタンをクリックして終了します。OpenShiftのWebコンソールに今回作成したアプリケーション(helloworld)が登録されます。表示されたURLにブラウザからアクセスすると、アプリケーションの実行結果が出力されます。run」コマンドでコンテナイメージの起動の手順が必要です。この手順ではDockerの知識が必要です。OpenShiftでは、開発者は最低限のコンテナのセキュリティについて把握しておけばよいのです。ブラウザ操作だけでアプリケーションをビルド・デプロイできるように機能強化されています。大規模のアプリケーション開発では、「プログラムを書く人は、プログラムを書くだけ」という具合に役割が限定されるので、OpenShiftを開発環境にすると、新規参加される方のパソコンにDockerを入れたり、Dockerの作法を教えたりする必要がないため、すぐにプログラムを書き始めることができると効果的です。アプリケーションのスケールアップ・ダウンアプリケーションのPod(コンテナ)のスケールアップ、スケールダウンについてもボタン操作で実現できます。Build」ボタンをクリックするだけです。Build」ボタンをクリックすると、Gitリポジトリから新しいソースコードを取得してビルドし、デプロイを自動実行します。Webhook機能を使うと便利です。開発者がソースコードをGitリポジトリに登録すると、OpenShiftは、Gitリポジトリが発行した変更通知を受け取って、自動でビルド・デプロイを開始します。このWebhook機能を使うことにより、開発者はOpenShiftに触れることなく、ソースコードの変更を確認することができます。Pod(コンテナ)のリリース方式は、デフォルトではローリングアップデートで展開されます。これはアプリケーションのアクセス不可が発生することなく、新しいバージョンへの更新・切り戻しができる仕組みになっています。Cloudではマルチゾーンを構成するとリージョン単位でクラスターが構成され、Pod(コンテナ)は、ゾーン(データセンター)を意識せずリージョン単位で、リソースの空いているワーカー・ノードに分散配置される設計になっています。マルチゾーン・クラスター構成図この設計により、アプリケーションをデプロイすると、今回作成したTOK02、TOK04、TOK05の3箇所のゾーン(データセンター)のリソースの中から、空いているワーカー・ノードにPod(コンテナ)が分散配置されます。これは、利用者が特にゾーンを意識しなくても、標準でゾーン(データセンター)の災害対策が行える仕様です。筆者は「利用者がゾーン(TOK02、TOK04、TOK05)を指定してPod(コンテナ)を展開して災害対策を行わなければならない」と想像していたため、自動的に災害対策が行える仕様になっていることに気がついたときは大変驚きました。Noteゾーン(データセンター)を指定してPod(コンテナ)を配置することもできます。厳密に言うと、OpenShiftのスケジューラーはリソース(CPU、メモリ)の空いているワーカー・ノードにPod(コンテナ)を配置します。実運用ではワーカー・ノードがリソース不足になったり、障害が発生したりするケースが想定されます。その場合は、リソース不足や障害が発生したワーカー・ノードにはPod(コンテナ)は配置されないので、運用回避が必要です。実際に今回作成したアプリケーションの3個のPod(コンテナ)がそれぞれのゾーン(データセンター)に分散配置されているかどうかを確認します。pod」コマンドを実行して、Pod(コンテナ)の一覧を出力します。上図のワーカー・ノードの一覧とPod(コンテナ)の一覧で、IPアドレスで見比べてもらうと、わかるようにTOK02、TOK04、TOK05に分散配置されているのがわかります。次に、実際にアプリケーションにアクセスしてみます。このアプリケーションはPod(コンテナ)が特定できるようにホスト名が出力される仕組みになっています。curlコマンドでアプリケーションに3回アクセスしてみます。下図の枠で囲ったホスト名と上図のPod(コンテナ)の一覧のPod名を見比べてみると、負荷分散しているのがわかります。これまで仮想マシン(VM)で運用していた時は、例えば、繁忙期や、急なアクセスが増えてロードバランス対象の仮想マシン(VM)を増やさなければならない場合などは、ロードバランサーの設定追加が必要でした。企業によっては、ネットワーク担当に設定変更をお願いする期限が数日だったり、2週間後だったりと、リードタイムが長いケースがありました。OpenShiftは、アプリケーションを外部公開した段階で、外部公開用のネットワーク設定を自動化したり、Pod(コンテナ)が複数ある場合は、自動的に負荷分散したりする仕組みになっています。OpenShiftを使うと、ネットワーク設定においても、アプリケーション公開のリードタイムを短縮できます。Notecurlの実行結果で出力されているIPアドレスはPod(コンテナ)のIPアドレスではないので疑問に思う方がいるかもしれません。「ibm-system」プロジェクトのネットワーク・ロード・バランサー(NLB)のIPアドレスが出力されています。NLBからOpenShiftのRouteを経由してPod(コンテナ)のEndPoint(PodのIPアドレス)にロードバランスするようになっています。Controller」に当たり、独自に実装されています。Routerはフロントエンドルーターとして「HAProxy」を使用しており、HAProxyの設定で、RouterからPod(コンテナ)のEndPoint(PodのIPアドレス)にロードバランスするようになっています。興味のある方は「default」プロジェクトにある、RouterのPodにrshしてHAProxyの設定を参照すると面白いと思います。Cloud」は、必要な情報を入力して「クラスターの作成」ボタンをクリックするだけで複雑なマルチゾーンのOpenShiftクラスターでも簡単に、約30分で作成されます。このことにより、企業はプラットフォームの構築から解放されます。Build)を実行するだけでソースコードの変更を確認できるようになりました。Webhook機能を使えば、OpenShiftに触れずにソースコードを確認することができます。Hat、またはシステム管理者に任せ、ソースコードを書くことだけに集中できるのです。このように専門分野で本来のパフォーマンスを発揮できる環境を標準装備しているのがOpenShiftの強みです。Noteそれぞれの組織に合わせて独自のカタログを作成して利用することもできます。これでTokyoリージョンにある3箇所のデータセンター(TOK02、TOK04、TOK05)を利用するマルチゾーン・クラスターを利用できるようになりました。Cloudのモニタリングサービス(「SysDig」「LogDNA」)を使ったコンテナの監視OpenShiftでDevOpsを実践するためのチュートリアルを取り上げる予定です。メールマガジンをご購読ください。申し込みページへ利用規約ITmediaはアイティメディア株式会社の登録商標です。