IBM Cloud Kubernetes Service上に作成したKubernetesクラスタを、RancherにImportして、Helm CatalogからWordPressをDeployするところまでの手順を紹介します。
注:この資料はIBM NEXT札幌2018で講演した内容を再構成したものです。
その前に、前提となる技術要素のご紹介を…
コンテナ型仮想化とは
従来のハイパーバイザー型仮想化が、個別のVirtual Machine内にOperating Systemを含むのに対し、コンテナ型仮想化では、共通のコンテナエンジン(この場合はDocker)で各アプリが動作するので、アプリ動作のためのオーバーヘッドやメモリ等のリソースは少なくてすみます。
コンテナ間連携とオーケストレーション
- Docker Compose
docker-compose.ymlというYAML形式のファイルに サービス等を定義して、コンテナ間連携を実現する。 - Docker Swarm
Swarmモード(Swarmkit)を使用したクラスタ管理や スケジューリングを実現する。 - Kubernetes
API ServerとController Managerを持つMasterを使用して、クラスタ管理やスケジューリングを実現する。
この中で現在では、Kubernetesが事実上の業界標準となりつつあります。
Kubernetesのアーキテクチャ
Kubernetes Master(以下Master)のAPI Serverを経由して、Developer/Operatorからの入力をMasterのController Manager/Scheduler/etcdが処理し、Kubernetes Node(以下Node)上に実際のアプリやサービスのコンテナベースの動作環境となるPodを作成・動作させます。Node内にあるKube-Proxyを通して、アプリやサービスのUserがアクセスできる環境を提供します。
Kubernetes導入時のハードル
- 関係する構成要素(リソース)が多い。
- 理解するのに時間がかかる。
- 問題が生じた時に追跡しにくい。
- コマンドラインによる作業がメインとなる。
- 覚えるのに時間がかかる。
- 直感的な操作が行いにくい。
Rancherを利用したKubernetesクラスタの管理
What’s Rancher?
- コンテナオーケストレーション機能を中心とした コンテナプラットフォームマネジメントシステム
- オープンソースプロダクトとして開発されている。
- ユーザー管理・アクセスコントロール・ストレージ管理・ネットワーク管理・セキュリティなどの機能もGUIを使用して設定可能。
RancherのMain Developerであり、Enterprise Supportを提供しているRancher Labs
は、米調査会社フォレスター・リサーチ社により、2018/10に企業向けコンテナプラットフォーム提供会社として、「Leaders」に位置づけられているような会社です。
https://rancher.com/blog/2018/2018-10-22-forrester-rancher-leader-enterprise-container-management/
同じ内容を解説してくださっていた日本語の記事もありました。
http://blogs.itmedia.co.jp/business20/2018/10/enterprise_container_platformdockerred_hatrancher_labsforrester.html
Rancherの目指すもの
- クラウドフリー、ベンダーフリーであること
- WebブラウザやCLIツールによってわかりやすい インターフェースを提供すること
- 開発者と運用者に権限を分割して運用できるようにすること
- 開発者と運用者に対して分かりやすいシステムにすること
- コンテナ環境に対して、ネットワーク/負荷分散/サービス検知/サービス監視/マルチテナント機能を包括的に提供すること
IBM CloudでのKubernetes クラスタの作成
Rancher上からもIBM Cloud上にKubernetesクラスタを構築可能ですが、今回はIBM Cloud上でKubernetesクラスタを作成し、RancherにImportして使用します。
Importを指定して、Rancher上でのクラスタ管理用の名前(Cluster Name)を入力すると、インポート用のコマンドが表示されますので、それをIBM CloudのKubernetesクラスタに対して実行
します。
今回は以下のようなコマンドでした(環境によって異なります)
curl --insecure -sfL https://35.190.229.202/v3/import/7xh5rt2mbxg6cpmdvzllxrh4kf8rs2mpxkvqwqlmtxwdq5gmsxgvcn.yaml | kubectl apply -f -
KubernetesクラスタがImportされると、リソースの使用状況等がGUIから監視・変更できるようになります。kubectl用のコンソールが用意されており、設定ファイルのYAMLファイルの取得等も可能です。
Rancher Catalog(Helm)からKubernetesクラスタへのDeploy
今回はHelmのカタログを使用しますので、事前にGlobalのCatalogsを選択して、CatalogのHelm Stableを有効化しておきます。
ImportしたKubernetesクラスタを選択し、上段のツールバーでCatalog Appsを選択します。
Launchボタンを押すと、App Catalog画面へ移行します。
今回はWordPressをHelm CatalogからDeployしてみます。
必要なパラメータの設定画面が出ますので、ここでタイトルやパスワード等を入力・生成してLaunchボタンを押すと、WordPressがKubernetesクラスタ上に展開されます。