レガシーアプリの稼働からCI/CDまで 「OpenShift」を使いこなす5つの活用術:「生のKubernetes」だけでは難しいDevOps
「Red Hat OpenShift」は、コンテナ管理だけに使うツールではない。「捨てられないレガシーアプリ」と「最新のコンテナ」を、同一システムで運用することにも活用できる。知っておくべき5つの活用法とは。
コンテナ技術が普及するにつれ、単一インスタンスでの運用ではすぐに限界が見えるようになった。その結果、「Kubernetes」のような、コンテナを実行するサーバクラスタのオーケストレーション(自動管理)ツールが求められるようになった。Kubernetesを基に開発された「Red Hat OpenShift」(以下、OpenShift)は、コンテナのデプロイ(配備)やスケーリング(拡張、縮小)を含め、効率的な管理を可能にする。
本記事は、OpenShiftの主要な活用例を戦略的な視点から解説するとともに、コンテナ管理機能が、企業のアプリケーション管理をどう支援するのかを紹介する。
OpenShiftの基礎をおさらい
併せて読みたいお薦め記事
OpenShift活用のヒント
OpenShiftの中核機能はKubernetesによるコンテナオーケストレーションだが、それ以外にも複数の利点や能力を備えている。主な特徴は以下の通りだ。
- セキュリティとコンプライアンス
- コンテナの操作権限を管理する「セキュリティコンテキスト制約」(SCC)、認証、アクセス制御、コンテナレジストリ(コンテナイメージの保管庫)といった、通常のKubernetesから強化されたセキュリティ機能が組み込まれている
- エンタープライズ向けの設計
- OpenShiftは、大企業での利用を前提に設計されている。監視機能やログ機能、一元的なサーバクラスタ管理機能、運用の安定性を高めるセルフサービス機能などを備える
- スケーラビリティ
- 変動するワークロード(処理)を確実に処理できる
- 開発者向けツール
- 標準で開発者向けツールを組み込んでおり、アプリケーション構築のプロセスを簡素化する
- ビルド、テスト、デプロイを自動化するCI/CD(継続的インテグレーション/継続的デリバリー)パイプラインとの連携を前提としている
OpenShiftを導入するための基本的な手順を次に挙げる。
- Kubernetes関連の資料を含む、公式ドキュメントやガイドを確認する
- 学習教材として、まずOpenShiftをローカルPCにインストールしてみる。操作に慣れた後、オンプレミスサーバやクラウドサービスにデプロイする
- コマンドラインツール「OpenShift CLI」をインストールする
- テスト用のコンテナを起動し、サンプルアプリケーションをデプロイする。
- OpenShiftの自動化機能について学ぶ
Red Hatは、複数のOpenShiftエディションを提供している。クラウドサービスで使いたい場合は、「Amazon Web Services」(AWS)、「Microsoft Azure」「IBM Cloud」などのクラウドサービス向けに提供されるエディションを選択可能だ。自社のオンプレミスインフラで利用したい場合は、自己管理型のエディションを検討するとよい。Red Hat公式の導入構成とサポートサービスを利用するには、Red Hatとのサブスクリプション契約が必要になる。オンラインには、OpenShift初心者に向けた数々の公式/非公式な資料、サポートや共同作業のための活発なコミュニティーが存在する。
活用例1.レガシーアプリケーションの運用
OpenShiftを活用すると、レガシーアプリケーションのセキュリティとコンプライアンス(法令順守)体制を強化できる。レガシーアプリケーションをコンテナに移行し、モダナイゼーション(近代化)するのは一つの方法だ。それが難しい場合でも、以下の形を取ることで、OpenShiftが管理するシステム内で一部機能を実現できる。
- 仮想化
- レガシーアプリケーションを仮想化し、OpenShiftが稼働するシステム内のPod(コンテナの実行単位)としてデプロイする。これによってセキュリティ、ネットワーク、スケーラビリティ、自動化の面で利点が得られる
- 段階的なモダナイゼーション
- アプリケーションの機能を、コンテナ化された構成やマイクロサービスに段階的に移行させる
- サイドカーコンテナ
- アプリケーション自体を作り直さずに機能を改善する。監視、セキュリティ、ログ収集といった補助的なタスクを、レガシーアプリケーションに接続した補助的なコンテナ(サイドカーコンテナ)に移管する
レガシーアプリケーションを運用するもう一つの方法は、仮想マシン(VM)とコンテナを同一のKubernetesコンテナ内で並行稼働させることだ。これには、OpenShiftでVMをコンテナと同じように管理できる機能「Red Hat OpenShift Virtualization」を使うことができる。Red Hat OpenShift Virtualizationはレガシーアプリケーションだけではなく、必要に応じて最新のアプリケーションの実行にも応用できる。
活用例2.DevOpsとCI/CDの連携
OpenShiftの重要な特徴の一つは、コンテナ化されたアプリケーションのビルド、テスト、デプロイのプロセスを自動管理することだ。中核機能の「Red Hat OpenShift Pipelines」(以下、OpenShift Pipelines)は、各工程をスケーラブルなコンテナに分割し、反復実行が可能な自動化ワークフローを作り出す。
独自の自動化コンポーネントだけではなく、OpenShiftを「Jenkins」「GitLab」「GitHub Actions」といった主要なDevOpsツール(開発と運用のプロセスを自動化、集約するツール)との連携もできる。バージョン管理ツール「Git」を使った運用手法「GitOps」を実践することも可能だ。
OpenShift Pipelinesは、ボトルネックやインフラの要件を最小限に抑え、デプロイ作業の手間を削減する。デプロイのプロセスを改善するため、以下の機能と特徴を備えている。
- 運用負荷を軽減する、OpenShift Pipelines専用のサーバレス実行環境
- 信頼性の高い自動化ワークフローを構築するGitOpsの実現
- 開発者がパイプラインの作成、監査ログの確認、コンピューティングリソース管理を実行できるセルフサービス機能
- 管理コンソール、OpenShift CLI、IDE(統合開発環境)などのさまざまなツールとの連携
- 各工程で専用コンテナを作成し、その中で作業を実行することによって、開発環境、テスト環境、本番環境のそれぞれでアプリケーションのデプロイの一貫性を確保可能
活用例3.インフラ管理
OpenShiftは、データの発生源でデータを処理する「エッジコンピューティング」、インフラ管理を設定ファイルやスクリプト(簡易プログラム)で定義、管理する「Infrastructure as Code」(IaC)など、企業の多様なインフラを構築、運用するためにも活用できる。
エッジコンピュータのような制約が厳しいシステムへのデプロイも可能だ。スペースやネットワークリソースが限られる場合は、1台のサーバでOpenShiftを運用できる。中央集権的な管理体制を維持したまま、実行機能だけをエッジコンピュータに配備する方法もある。
これらのデプロイ構成は、OpenShiftが標準搭載するコンテナオーケストレーション機能を使って拡張できる。ここで紹介した多様なデプロイ方法を使うことで、IaCにOpenShiftを組み込むことが可能だ。
活用例4.コンピューティングリソース管理
OpenShiftはアプリケーションの可用性を維持するために、クラウドネイティブなコンテナ技術とオーケストレーション機能を組み合わせてコンピューティングリソースを確保する。
可用性やセキュリティが不可欠なアプリケーションのデプロイもでき、例えば以下の分野で活用される。
- ミッションクリティカルなアプリケーション
- 基幹業務アプリケーションに求められる可用性、スケーラビリティ、セキュリティを提供する。コンピューティングリソースの消費が激しいワークロードも処理できる
- マイクロサービス
- OpenShiftは、Kubernetesのコンテナ管理機能を活用してマイクロサービスを実行することで、アプリケーションの自由度と保守性を高めつつ、テストの容易さを高める
- マイクロサービスの開発をCI/CDパイプラインと組み合わせせることで、迅速なデプロイとスケーリングが可能になる
アプリケーションの開発者や保守担当者にとって、サプライチェーン管理は重要事項だ。アプリケーションの構成部品の調達時に、脆弱(ぜいじゃく)な部品の混入やビルドプロセスの改ざんといった脅威が発生しないよう、開発者はセキュリティを強化し、コンプライアンス要件を満たすことが不可欠になっている。
OpenShiftは、コンテナイメージに対する脆弱性スキャンを自動で実行し、脆弱なコンテナイメージや信頼できない作成元のコンテナイメージをデプロイさせないといったポリシーを適用できる。これによってサプライチェーンのセキュリティを管理し、多様な作成元からの安全な部品供給を可能にする。
活用例5.オンボーディングとトレーニング環境
新人開発者向けのオンボーディング(受け入れ)を効果的かつ効率的に実施する上でも、OpenShiftは役に立つ。運用の複雑さを軽減し、生産性を高めるためのツールやワークフローが提供されているからだ。
OpenShiftは、社内の開発基盤や学習基盤として優れており、トレーニングやオンボーディングのプロセスを効率化する上で貢献する。以下に例を挙げる。
- 開発者が使い慣れた操作感を実現する、連携済みの開発ツール群
- CI/CDパイプラインとの連携によるデプロイの簡素化と、頻繁なイテレーション(反復)開発の支援
- ワークフロー管理を簡素化するテンプレートや設計図など、開発者向け資料の提供
- 学習用、テスト用、本番用の各環境の迅速な準備(プロビジョニング)
- 共同開発に適した作業環境
- 開発チームはダッシュボード、監視、ログ機能などを通じて、アプリケーション開発の進捗や健全性を把握できる
OpenShiftが持つセキュリティ、コンプライアンス、スケーラビリティ、各種ツールとの連携機能は、アプリケーションの開発とデプロイの自動化を支援する。新しいコンテナ化アプリケーションを開発するだけではなく、使い続ける必要があるレガシーアプリケーションの運用にも活用可能だ。開発チームのオンボーディングやトレーニング用のツールとして使うこともできる。CI/CDパイプラインとの連携によって、企業のDevOpsにもスムーズに組み込める。
Copyright © ITmedia, Inc. All Rights Reserved.