Alibaba Cloud、AWS、Azure、Google Cloud のコンテナサービスを実際に使ってみました - コンテナクラスタ編 -(前編)

2022年9月13日掲載

キービジュアル

「コンテナってなに?Alibaba Cloud, AWS, Azure, Google Cloud のコンテナサービスを比べてみました」にてAlibaba Cloud、 Amazon Web Services、Micosoft Azure、Google Cloudの主要クラウドサービスのコンテナサービスの料金や特徴を比較してきました。

前回のブログ

では、コンテナサービスの中でも、サーバレスなコンテナサービスに着目し、実際にコンソールを触った上での比較や特徴をまとめています。

今回は、Kubernetes クラスタを管理するコントロールプレーンをサービスとして提供している「コンテナクラスタ」を使って、インターネット向けに一般公開するテストサイトを立ち上げる手順を紹介したいと思います。

対象のコンテナサービスはこちらです。

  • Alibaba Cloud - Alibaba Cloud Container Service for Kubernetes (ACK)  ←本記事で紹介
  • AWS - Amazon Elastic Kubernetes Service (EKS)  ←本記事で紹介
  • Azure - Azure Kubernetes Service (AKS) 
  • Google Cloud - Google Kubernetes Engine (GKE) 

※クラウドサービスの並び順はアルファベット順となります。

目次

  • 本記事では、Alibaba Cloud、AWS、Azure、Google Cloud のコンテナサービスを使う手順を通して、その特徴を紹介していきます。
  • 前編ではAlibaba CloudとAWSを取り上げます。
  • 各クラウドのコンテナサービスに違いがあるか分からない方向けの入門記事です。

はじめに

4大クラウドそれぞれについて、コンテナクラスタの作成とデプロイ方法の操作手順を試してみます。

4つのサービスを1つの記事では紹介しきれないため、前編と後編に分けて、前編は、 Alibaba Cloud、AWS、後編では Azure、Google Cloud を紹介します。

全体の流れ

  1. コンテナクラスターの作成
  2. サンプルアプリのデプロイ
  3. サンプルアプリの起動

イメージ図

Alibaba Cloud のコンテナサービスを使ってみる

Alibaba Cloud のコンテナサービス製品名は Alibaba Cloud Container Service for Kubernetes (ACK) です。

ACK の公式サイト

さて、ACK コンテナを作成しましょう。

 

1.コンソールにログイン後に、ナビゲートから ACK 製品を選択します。

2. ACK コンソールで、[Kubernetes クラスターの作成] をクリックします。

3.[クラスタ―設定] Standard edition を選び、リージョンは日本(東京)を選択しました。その他の設定はデフォルト値にします。

4.[ノードプール設定] インスタンスタイプを選択します。今回の検証では「4vCPU + 8GB」のインスタンスタイプを選択しました。

5.[コンポーネント設定] 今回の検証では、デフォルト値のままにしています。

6.[注文の確認] 設定内容を確認し、[作成] をクリックします。

クラスタ―の作成には10分ほどかかります。

7.作成したクラスタ―のアクション列から [アプリケーションの管理] をクリックします。

8.[イメージによる作成] をクリックします。

9.[名前] を入力し [次] を選択します。

10.今回の検証では httpd のオフィシャルイメージを使用します。バージョンは 2.4.10 にします。[次] をクリックします。

httpd docker 公式サイト

11.今回の検証では、Server Load Balancer サービスを使用します。サービスの右にある [作成する] を選択し、タイプで [既存の SLB インスタンスを使用] を選択します。

12.作成したデプロイメント詳細から [アクセス方法] に記載されている外部エンドポイントにアクセスします。

13.テストサイトが表示されました。

Alibaba Cloud の 手順は以上です。

AWS のコンテナサービスを使ってみる

AWS のコンテナサービス製品名は Amazon Elastic Kubernetes Service (EKS)  です。

EKS の公式サイト

引き続き、AWS にもコンテナを作成してみます。

 

1.Elastic Kubernetes Service を選択します。

2.[クラスターを追加] から [作成] を選択します。

3.[クラスタ―を設定] 名前を入力しました。その他の設定はデフォルト値にします。

4.[ネットワーキングを指定] 今回の検証では、デフォルト値のままにしています。

5.[ログ記録の設定] 今回の検証では、デフォルト値のままにしています。

6.[確認および作成] 内容を確認して作成します。

7.ステータスがアクティブになるまで待ちます。10分程度かかります。

8.[コンピューティング] から [ノードグループを追加] をクリックします。

9.[ノードグループの設定] で [名前] を入力し、[ノード IAM ロール] を選択します。その他の設定はデフォルト値にします。

IAM ロールが表示されない場合は AWS Management Console または AWS CLI を使用して作成してください。

https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/create-node-role.html#create-worker-node-role

10.[ノードグループのコンピューティング設定] を設定します。今回はすべてデフォルト値にします。

11.[ノードグループのネットワーク設定] を設定します。今回はすべてデフォルト値にします。

12.[確認および作成] 内容を確認して作成します。

13.ステータスがアクティブになるまで待ちます。5〜10分程度かかります。

14.Cloud Shell を開きます。

15.Cloud Shell を開いて kubeconfig ファイルを作成します。

[region-code] と [cluster-name] は自身の環境に置き換えてください。

$ aws eks update-kubeconfig --region [region-code] --name [cluster-name]

16.サンプルアプリケーションをクラスタにデプロイします。今回は Guestbook と Redis のデータベースのアプリケーションのコンテナをデプロイします。

  • redis-master-controller
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-master-controller.json
  • redis-master-service
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-master-service.json
  • redis-slave-controller
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-slave-controller.json
  • redis-slave-service
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-slave-service.json
  • guestbook-controller
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/guestbook-controller.json
  • guestbook-service
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/guestbook-service.json

それぞれエラーがないことを確認してください。

17.[EXTERNAL-IP] エンドポイントを確認します。

$ kubectl get services -o wide

18.ブラウザを開いて、確認した [EXTERNAL-IP] エンドポイントの3000番ポートへアクセスします。

http://[EXTERNAL-IP]:3000

サンプルのサイトが表示されました。

AWS の 手順は以上です。

使用後は不要なアプリケーションは削除してください。

$ kubectl delete rc/redis-master rc/redis-slave rc/guestbook svc/redis-master svc/redis-slave svc/guestbook

まとめ

いかがでしょうか、Alibaba Cloud と AWS でコンテナクラスタを立ち上げ、テストサイトを表示するまでを実践しました。

今回はあらかじめ用意されているサンプルを利用してデプロイしましたが、Container Registry を利用することで、Docker オフィシャルイメージを利用したデプロイも可能です。

 

Alibaba Cloud の ACK では、コンテナクラスターを作成する際に設定できるオプションが豊富でした。

一方で AWS の EKS では、コンテナクラスター作成時の設定はシンプルで、作成後に追加する形になっていました。また AWS では IAM ロールの作成に注意が必要です。設定を間違えると選択画面に出てこなかったり、起動に失敗することがあります。

 Alibaba CloudAWS
コンテナ製品名ACKEKS
コンソールのわかりやすさ
直感的な操作
起動まで所要時間約10分約10分
作成ステップ数44
最小設定項目数1 (インスタンスタイプ)2 (ロール、VPC)
特徴・イメージを GUI から選択可能

・ロールや VPC の設定が必要

・コンソールよりコマンド推奨

次回

次回の「Alibaba Cloud、AWS、Azure、Google Cloud のコンテナサービスを実際に使ってみました - コンテナクラスタ編 -(後編)」では、今回紹介しきれなかった Azure と Google Cloud を試してみたいと思います。

関連サービス

Amazon Web Services (AWS)

ソフトバンクはAWS アドバンストティアサービスパートナーです。「はじめてのAWS導入」から大規模なサービス基盤や基幹システムの構築まで、お客さまのご要望にあわせて最適なAWS環境の導入を支援します。

Microsoft Azure

Microsoft Azureは、Microsoftが提供するパブリッククラウドプラットフォームです。コンピューティングからデータ保存、アプリケーションなどのリソースを、必要な時に必要な量だけ従量課金で利用することができます。

Google Cloud

Google サービスを支える、信頼性に富んだクラウドサービスです。お客さまのニーズにあわせて利用可能なコンピューティングサービスに始まり、データから価値を導き出す情報分析や、最先端の機械学習技術が搭載されています。

Alibaba Cloud

Alibaba Cloudは中国国内でのクラウド利用はもちろん、日本-中国間のネットワークの不安定さの解消、中国サイバーセキュリティ法への対策など、中国進出に際する課題を解消できるパブリッククラウドサービスです。

MSPサービス

MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。