Help us understand the problem. What is going on with this article?

ニフクラHatoba(β)を使ってみた

More than 1 year has passed since last update.

1. 概要

ニフクラのHatoba(β)使って、Kubernetesクラスター上に簡単なアプリケーションをデプロイしたところ、想像以上に簡単できて好印象だったため、当初、聴講するだけのつもりで参加した
ニフクラのFJCTさん主催のミートアップイベント(2019/4/24)で急遽飛び入りLTをさせていただきました。

https://fujitsufjct.connpass.com/event/127605/

この記事は、LTで話した内容をまとめたものです。

Hatoba(β)って何?

Hatobaは、ニフクラのFJCTさんが提供しているKubernetesクラスターを構築・管理できるサービスです。
利用するには、法人での利用申し込みが必要です。現在、β版のため利用料金はかからないのが、素敵です。

https://pfs.nifcloud.com/service/hatoba.htm

2. Kubernetesクラスターの作成

クイックスタートを参考にしてKubernetesクラスターの作成をしました。
このクイックスタートはとても分かりやすく、書かれている手順に沿ってHatoba(β)の管理画面から作業を行えば迷うところなくクラスターを作成できるはずです。

クイックスタート

  • ファイアウォールグループ作成
    • ファイアウォールグループ作成
    • INルール追加
      クライアント端末からクラスターにkubectlで接続するので、そのためにクライアントPCのIPアドレスからの TCP:6443 のINルールを追加します。
  • クラスター作成
    • クラスター作成
      現時点では、クラスターのkubernetesのバージョンは、v1.11.6 固定でした。
      masterノードの数を 1 か 3 から選べますが、3 を設定すると、登録時に 「ノード数が作成・設定可能上限に達しています。」 のエラーメッセージが出力されます。 現状、1 しか指定できない模様です。
    • ノードプールの作成
      workerノードのサブセットとなるノードプールを作成します。
      私はノード数に 2 を設定しました。

ここまで設定した内容を、ニフクラの管理画面で見てみます。

image.png

Hatobaはまだβ版のため機能が少ないという事情もあると思いますが、とてもシンプルで見やすいです。

続いて、Kubernetesクラスターへの接続確認ですが、クライアント端末からコマンドラインツールのkubectlを利用して行いました。私のクライアント端末は Windows 8.1 です。

  • kubectlをダウンロード
    https://kubernetes.io/docs/tasks/tools/install-kubectl/
  • ダウンロードしたライブラリをPATHに追加
  • Hatobaの管理画面からクレデンシャルをコピーし、INルールで許可したクライアント環境の ~/.kube/config に保存
  • kubectl get nodes を実行

image.png

masterノードと、workerノードの2つがReady状態になったことが確認できます。

3. デプロイするアプリケーションの作成

Nginxイメージに独自で作成したHTMLを入れ込んだイメージを作成しました。

docker の nginx イメージの設定ファイルを眺めながら、独自ページを表示します。
の記事を参考にさせていただきました。

下記のディレクトリ構造で、画像とcssを参照する簡易的なhtmlを作成しました。

html
  │─ index.html
  ├─css
  │  └─ style.css
  └─images
     └─ yamasha_eternal_2_TP_V.jpg

DockerFileもシンプルです。

Dockerfile
FROM nginx
COPY ./html /usr/share/nginx/html

これでイメージを作成し、Dockerhubに登録しました。

4. マニュフェストファイルの作成

マニュフェストファイル(yaml定義ファイル)の構成は下記の通りです。

nifnif.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-nifnif
  labels:
    app: nginx-nifnif
spec:
  replicas: 4
  selector:
    matchLabels:
      app: nginx-nifnif
  template:
    metadata:
      labels:
        app: nginx-nifnif
        version: v1
    spec:
      containers:
        - name: nginx-nifnif
          image: "{dockerhubのurl}"
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-nifnif
spec:
  type: NodePort
  selector:
    app: nginx-nifnif
  ports:
    - protocol: TCP
      port: 80
      name: nginx-nifnif
      nodePort: 32280
---
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-nifnif
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-nifnif
  minReplicas: 2 # 最小レプリカ数
  maxReplicas: 4 # 最大レプリカ数
  metrics:
    - type: Resource
      resource:
        name: cpu
        targetAverageUtilization: 10

デプロイしたアプリケーション(Nginx)が利用するポート番号(今回の例では、32280ポート)をINルールに追加します。

5. クラスター上へのデプロイ

下記コマンドを実行して、kubernetesクラスター上にアプリケーションをデプロイします。

kubectl apply -f nifnif.yaml

コマンド実行後、Podの状況を確認します。

kubectl get pods
image.png

Podが4つ動作していることが確認できました。
では、実際にアプリケーションが動いているかブラウザで確認してみることにします。
URLは、http://{masterノードのグローバルIPアドレス}:{Nginxポート番号} です。

image.png

無事、Webページが表示されていることが確認できました。
余談ですが、イベント当日にニフクラさんのイメージに合う背景のフリー画像を探すのは大変でしたが、最終的にいい画像に巡り合えたと自己満足しています。

6. まとめ

Hatoba(β)を利用してみた感想として、良かった点を3つ挙げます。

  • Kubernetesクラスターを管理画面から簡単に作成できる
  • クイックスタートが分かり易い
  • デプロイしたPodが安定して動いている

オンプレにKubernetesを導入する場合、masterノードとworkerノードそれぞれに対して、それなりに多くの導入作業が必要となります。その点、Hatoba(β)は管理画面から簡単に作成できるのでとても楽です。
また、オンプレに建てたKubernetesでは、起動したPodが原因不明で急死することがありましたが、Hatoba(β)では今のところそのような事は起きておらず、順調に動いています。
私は、GKSなど他のKubernetesマネージドサービスを利用したことないため、それらと比較した評価はできませんが、少なくともオンプレでやるより楽そうです。

今回は、簡易的なアプリケーションをクラスター上にデプロイしただけでしたが、もっと深くHatoba(β)を使ってKubernetesと戯れてみたいと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away