検索
連載
マネージドサービスで始めるKubernetes入門(2):

EKSで構築したKubernetesクラスタにアプリケーションをデプロイする (1/4)

本連載では、AWSが提供するマネージドKubernetesサービスの「EKS」を用いてアプリケーションを公開する方法を紹介。第2回目はEKSで構築したクラスタにアプリケーションをデプロイする方法について。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 Webアプリケーション開発に携わっている人々は、「デプロイ」を外部公開の意味で解釈することが多いと思います。Kubernetesにおけるデプロイはデフォルトで内部(非公開領域)公開になるため、外部公開するには設定を変更する必要があります。

 本稿では、「Amazon Elastic Kubernetes Service」(以後、EKS)で構築したKubernetesクラスタにアプリケーションをデプロイし、外部からアクセスできる状態にする方法を紹介します。デプロイする方法を解説する前に、デプロイに関わる「Manifest file」「Pod」「Deployment」「Service」を解説します。

 本稿は、数回に分けAWS EKSを使用しKubernetesの基本的な使用方法を理解することを目標にしています。Kubernetesのバージョンは、執筆時点でのAWSのドキュメント「eksctlの開始方法」の記載に合わせ1.14としています。Kubernetesが日々バージョンアップされており、各コマンドの挙動や仕様も細かく変化しているためです。

デプロイに必要な用語と概念

Manifest file(マニフェストファイル)

 PodやServiceなどの情報をKubernetesへ反映するには、それらの仕様、設定をYAML形式で記載しkubectlコマンドを使用して反映します。このYAMLファイルをManifest file(マニフェストファイル)と呼びます。

Pod(ポッド)

 Kubernetesでアプリケーションを動作させるには、アプリケーションをコンテナイメージ化し、Kubernetesにコンテナイメージをデプロイする必要があります。Kubernetes側は、Podという論理ホスト空間を作成してコンテナイメージを配置し、Podに対して固有のIPアドレスを振ります。少々乱暴な表現ですが、Pod一つ一つが、ネットワークカードを備えたコンピュータというイメージを持つと理解しやすいかもしれません。

Deployment(デプロイメント)

 Kubernetesは、Podを制御する際にその制御の基準となる状態を「Deployment」というオブジェクトで管理しています。マニフェストファイルで、本来あるべき状態を記述しておくことで、Deploymentコントローラーがあるべき状態に更新します(宣言的設定)。

Service(サービス)

 KubernetesにコンテナイメージをデプロイするとPodが配置されますが、このままではPodに対して内部外部を問わずアクセスできません。そこで、デプロイしたPodに対してアクセスする方法を決める必要があります。これをServiceと呼びます。

アプリケーションをデプロイしてみよう

 Webアプリケーションを公開するには、スクリプト言語なら実行環境、コンパイル言語ならコンパイラやVM(仮想マシン)などの環境が必要です。これらを準備できていれば、Webサーバなどでアプリケーションにアクセスするルーティングを設定して完了です。これは、Kubernetesでも同じです。ここまでの作業をまとめると、以下の2ステップになるといえます。

(1)アプリケーションと実行可能な環境の用意
(2)外部(インターネット)からアプリケーションへのルーティング

 Kubernetesの場合、(1)の次にPodという形でアプリケーションを配置するステップが追加されます。(2)の部分は、マニフェストファイルを編集してServiceを設定すれば実現できます。

マニフェストファイルとコマンドを活用してデプロイする
マニフェストファイルとコマンドを活用してデプロイする

マニフェストファイルとKubernetesオブジェクト

アプリケーションの準備

 今回デプロイに用いるアプリケーションとして、Dockerレジストリで公開されているNginxのコンテナを利用します。

 実際は、開発したアプリケーションとアプリケーションが動作するミドルウェア(データベース《DB》/サーバなど)や実行環境をコンテナイメージとして作成し、Docker Hubのようなレジストリに登録する必要があります。

       | 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る