初めてのデプロイメント、そして(簡易)公開#

では、ダッシュボードを使って初めてのデプロイメントを実行してみましょう。 デプロイメント(deployment)は、指定したイメージを使ってコンテナをクラスタ内で保持する仕組みです。

Webサーバーのデプロイメント#

Webサーバーとして、Docker Hubにあるhttpdイメージを使ってWebサーバーを展開してみます。 ここでは感覚をつかむため、ダッシュボードでやってみましょう。

ダッシュボード右上のプラス(+)ボタンから始めます。

リソース追加ボタン

デプロイ画面、初期状態

「フォームから作成」に切り替え、必要項目を埋めていきます。

  • アプリ名: apache

  • コンテナーイメージ: httpd:2.4-alpine

    • 軽いから、というだけです

  • ポッド数: 1(そのまま)

  • サービス: External(外部に公開したい)

    • ポート: 8888

      • 空きポート番号であれば適当に使えますが、ここではこの番号にしておきます

    • ターゲットポート: 80

    • プロトコル:TCP

    • 自動的に次の追加の行が出ますが放置してください

  • ネームスペース: default(そのまま)

設定例

入力後「プレビュー」すると、YAMLもしくはJSONでのテキストが確認できます。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: apache
  namespace: default
  labels:
    k8s-app: apache
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: apache
  template:
    metadata:
      name: apache
      labels:
        k8s-app: apache
    spec:
      containers:
        - name: apache
          image: httpd:2.4-alpine
          securityContext:
            privileged: false

これがなんなのかについては今後の話となりますが、 マニフェスト(manifest)というものになります。 一旦「閉じる」ボタンを押してから「デプロイ」を実行します。

デプロイ実行後

デプロイ実行後(個別)

「サービス」部のapacheがまだ黄色ですね、これは要注意(pending)であることを示しています。 このままではまだ利用できません。本来ならIngressというサービス(ここは今はわからなくて良いです)で繋ぐなど面倒なことをしないといけないので、Ingress代わりの補助システムを立ち上げてサポートさせます。

Listing 2 端末をもうひとつ起動してください#
PS> minikube tunnel

これでグリーンになるはずです。

トンネル作成後

これで http://localhost:8888/ に繋ぐとhttpdイメージにおける初期ページ(It’s works)に繋がるはずです。

It's works!

デプロイメントの解除(削除)#

続いて今のデプロイメントを解除して、httpdベースのコンテナの挙動を止めておきましょう。 ワークロードの表示であることを確認し、「デプロイメント」のapacheのボタンから「削除」を選びます、確認も出るので「削除」をクリックします。 すると、「ポッド」「レプリカセット」の各項目も追って消えていきます。

デプロイメントの削除

削除確認

削除

なお、「サービス」に切り替えるとapacheの項目が残っていると思います。こちらも同様に削除しておいてください。

※ 間違って “kubeernetes” サービスを止めないように注意してください。

サービス側の確認

※ 間違って “kubeernetes” サービスは止めないように注意してください。