0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

コンテナサービスにHabitatを数分で設置する方法

Last updated at Posted at 2020-12-07

この記事では、コンテナサービス上にHabitatを設定し、ロードバランサーを含む基本的なWebアプリケーションをデプロイして管理します。

本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。

Alibaba Cloud Tech Share執筆者、イルハン・アディヤマン。Tech Shareは、クラウドコミュニティ内での技術的な知識やベストプラクティスの共有を促進するためのAlibaba Cloudのインセンティブプログラムです。

Habitatについて

Habitat は Chef によるオープンソースプロジェクトで、プラットフォームに依存しないビルドアーティファクトを作成することで、アプリケーションの設定、管理、動作をアプリケーション自体に移すことができます。これにより、アプリケーションをパッケージ化することができ、デプロイの準備が整うまでデプロイ先を気にする必要がありません。仮想マシン上にデプロイした後、ランタイム環境をDockerコンテナに切り替えることにした場合、アプリケーションを再パッケージ化したり書き換えたりする必要はありません。同じHabitatパッケージをリファクタリングすることなく、両方の環境で動作させることができます。Habitatは新しいアプリケーションと既存のアプリケーションの両方で動作します。次のようなことができます。

  • アプリケーションの実行に必要なすべてのものを含むパッケージを構築します。
  • ベアメタル、VM、クラウド、Docker、Mesos、Kubernetesなど、あらゆるプラットフォームにアプリケーションをデプロイできます。
  • 実行中のアプリケーションを管理し、同じネットワーク内の他のサービスによる設定変更に対応します。

つまり、簡単に言えば、Habitatを使えばアプリケーションをパッケージ化することができ、デプロイの準備が整うまでデプロイ先を気にする必要がないということです。例えば、VMからDockerコンテナにランタイム環境を切り替える場合でも、アプリのリパッケージや書き換えは必要ありません。

あなたのチームがマイクロサービスの開発を模索している、または積極的に開発を行っている場合、この記事では、Alibaba Cloud Container ServiceContainer Registryを使用してクラウドネイティブアプリケーションをデプロイして管理するためのシンプルで一貫性のある方法をHabitatがどのように提供しているかを理解していただけると思います。

前提条件

Alibaba Cloudのアカウントを持つ必要があります。まだ持っていない場合は、無料トライアルのページにアクセスして無料アカウントを取得してください。

ワークステーションでは、Dockerもインストールする必要があります。Dockerに慣れていない場合は、Getting Startedガイドを読むと、Dockerの仕組みをよりよく理解することができます。また、HabitatのBuilderサービスで認証できるように、GitHubのアカウントも必要になります。Habitat Builderは、自分のパッケージを保存したり、他の人が作ったパッケージを入手したりするための場所です。

Habitatの設置

ステップ1:Habitat Builderでアカウントを作成する

Habitat Builderは、Habitatのメインハブであり、Habitatのパッケージを保存したり、自動的にビルドしたり、デプロイしたりすることができます。ワークステーションの設定を始める前に、Habitat Builderのアカウントを設定しておきましょう。このチュートリアルでは、ワークステーションがHabitat Builderアカウントと通信するように設定するために、Habitat Builderアカウントのパーソナルアクセストークンが必要になります。

Habitat Builderでアカウントを作成するには、Habitatのドキュメントを開き、アカウントの作成方法を説明しています。このチュートリアルでは、最初の3つのステップを完了させてください。

try-habitatを以下のようにオリジン名に置き換えてください。

$ export HAB_ORIGIN=try-habitat

トークンを実際のauth_tokenの値に置き換えます。

$ export HAB_AUTH_TOKEN=<replace-this-with-your-auth-token>

ステップ2:ワークステーションにHabitatをインストール

habと呼ばれるHabitatのコマンドラインインターフェイス(CLI)は、Habitatで必要なことはすべて説明されています。繰り返しになりますが、ドキュメントにはワークステーションのセットアップと設定に必要なことがすべて説明されています。

とりあえず、最初の2つのステップを完了させてください。

ワークステーションの設定では、__personal access token__の入力を求められます。この部分に上記のステップで設定したトークンを貼り付けてください。

インストールされていることを確認するために、hab --versionコマンドを実行します。

$ hab --version
hab 0.57.0/20180530114142

アプリケーション例

このチュートリアルでは、HabitatのサンプルNode.jsアプリケーションを使用します。

このリポジトリを作業ディレクトリにクローンします。

$ git clone https://github.com/habitat-sh/sample-node-app.git

プロジェクトには、サンプルアプリケーションのソースコードとパッケージのビルド方法を説明する Habitat プランが含まれています。

デモのために、/habitat ディレクトリの下に Habitat Plan ファイルが生成されています。お好みのエディタで plan.sh ファイルを開き、pkg_origin の値を先ほど作成したオリジン名に変更してください。

image.png

Habitatパッケージの構築

このステップでは、Webアプリケーション用のHabitatパッケージの構築を開始します。Habitatは、Habitat artifact(.hart)と呼ばれる独自のフォーマットでアプリケーションをビルドします。.hartパッケージとしてアプリケーションをビルドすることで、以下のようなことが可能になります。

  • アプリケーションを様々なクラウドネイティブフォーマットにエクスポート
  • 依存関係が更新されたときの自動リビルドの取得
  • ハビタット・スーパーバイザーによる本番サービスの管理

まず、アプリケーションレポのルートから hab studio enter を実行して、Habitat Studio に入りましょう。

$ hab studio enter

Habitat Studioは、Habitatパッケージを作成するための「クリーンルーム」として機能する対話型のLinux環境です。スタジオ内には、あなたが定義したもの以外のソフトウェアはありません。スタジオ内では、lspwdなどの簡単なLinuxコマンドを実行することができます。

[1][default:/src:0]# pwd
/src

ここで、pwdを実行すると、sample-node-appディレクトリとその親ディレクトリが表示されると思うかもしれませんが、/srcが表示されます。これは、スタジオがchroot環境で動作するためです。この環境はしばしば「Unix jail」や「chroot jail」と呼ばれ、指定されたディレクトリツリーの外のファイルにアクセスできません。コンテナなどの仮想化環境ではchrootの使用が一般的です。実際、Studioは他のソフトウェアを含まないDockerコンテナ内で動作します。これにより、作成するパッケージに必要なものだけが含まれていることを確認することができます。

次に、ビルドコマンドを実行して、アプリケーション用のHabitat artifact(.hart)を生成します。Habitatはパッケージ(.hartファイル)を生成し、結果ディレクトリに配置します。

[2][default:/src:0]# build

ビルドが終了すると、出力の終わり近くに以下のようなメッセージが表示されます(下のスクリーンショット参照)。"I love it when a plan.sh comes together." これでパッケージがビルドされました。

image.png

また、以下のようにスタジオ上のLinuxコマンドlsを使用してディレクトリをリストアップすることで、成果物が生成されているかどうかを確認することができます。

[3][default:/src:0]# ls ./results
last_build.env  try-habitat-sample-node-app-1.0.1-2017121904721-x86_64-linux.hart

これでパッケージがビルドされました。スタジオは次のパートのために開いたままにしておきます。

アプリケーションの実行

ビルドが完了したので、パッケージを実行してテストしてみましょう。Habitatのパッケージを実行するには、一般的に2つの方法があります。

.hartをDockerイメージにエクスポートしてdocker runを使用する方法と、Habitatスーパーバイザを使用してHabitatスタジオから直接サービスを起動する方法があります。Habitatスーパーバイザを使ってアプリケーションを実行する方法についてもっと知りたい場合は、Habitatのドキュメントでスーパーバイザの詳細についても説明されています。

ここでは、後でAlibaba Cloud Docker Registryをアップロードして、クラウド上でコンテナを起動するためにこのイメージを使用するために、dockerイメージのエクスポートを使用します。

Habitat Studioのコマンド1つで、以下のように.hartファイルをDockerイメージとしてエクスポートしたことになります。

[4][default:/src:0]# hab pkg export docker ./results/<path to .hart>

エクスポートが終了したら、exitを実行してスタジオを離れることができます。

[5][default:/src:0]# exit
logout

さて、Dockerコンテナを実行して結果を見てみましょう。

$ docker run -it -p 8000:8000 try-habitat/sample-node-app

最後に、ブラウザで http://localhost:8000 にアクセスして、下のスクリーンショットにあるようなサンプルアプリケーションの UI を確認します。

image.png

コンテナレジストリへの画像の公開

HabitatはDockerとの相性は抜群ですが、ベアメタル、VM、クラウド、Mesos、Kubernetesなど、ほぼすべての環境にHabitatのパッケージをデプロイすることができます。ここでは、Alibaba Cloudが提供するフルマネージドDockerレジストリであるAlibaba Container Registryにイメージを公開します。サンプルアプリケーションのコンテナをAlibaba Cloud上で実行するために、イメージをContainer Registryに公開し、コンテナインスタンスを作成します。

イメージを公開するには、いくつかの簡単な手順があります。

  • Alibaba CloudコンソールからAlibaba Container Registryに入ります。
  • オリジンの名前空間を作成します。(例: try-habitat)
  • アプリケーションのリポジトリを作成します。このステップでは、dockerイメージを公開するだけなので、コードソースセクションでローカルリポジトリを選択します。
  • リポジトリを作成したら、管理をクリックして、ドッカーイメージをレジストリに公開する方法を説明したガイドを見てください。

これで、コンテナレジストリに画像を公開する準備が整いました。アリババが提供しているガイドに従うか、以下の手順に従うだけです。

まず、Alibaba Cloud Docker Registryにログインします。

$ sudo docker login --username=<your-email-address-here> registry-intl.us-west-1.aliyuncs.com

次に、エクスポートしたDockerイメージをAlibaba Cloud Docker Registryにプッシュします。ここでは、アカウントの詳細に基づいてパラメータを置き換えることを忘れないでください。

$ sudo docker login --username=<your-email-address-here> registry-intl.us-west-1.aliyuncs.com
$ sudo docker tag try-habitat/sample-node-app registry-intl.us-west-1.aliyuncs.com/try-habitat/sample-node-app:latest
$ sudo docker push registry-intl.us-west-1.aliyuncs.com/try-habitat/sample-node-app:latest

これで、このイメージでコンテナを作成し、Kubernetes上でアプリケーションを実行することができます。

アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?