プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

その他のKubernetesの重要なオブジェクト

Kubernetesの基礎」ではPodとServiceについて触れたがそれ以外のオブジェクトについては紙面の都合上触れることができなかった。

architecting.hateblo.jp

ここでは前回、書ききれなかったKubernetesの重要なオブジェクトを紹介する。


Deployment

  • Podの上位概念でPodの作成だけでなく複製、死活監視、復旧、さらにはイメージ更新までまとめてサポートする
  • Deploymentの設定では主にPodのBlueprint(雛形)を記述する

configMap

  • 環境固有の情報(Configuration)を管理するデータベース
  • コードから環境変数のようにアクセスできる
  • Twelve-Factor Appの実践に適している

Secrets

  • KeyやSecretなどのためのconfigMap
  • Twelve-Factor Appの実践に適している

Volume

  • コンテナにPersistentなデータ領域を提供する

StatefulSet

  • DBサービスのreplica間のConsistencyを守る
  • 少し煩雑な部分もあるためStatefulSetの使用を避けるために敢えてDBをk8sの外に配置することもある

Ingress

  • 外部にサービスを公開するときに使用する
  • 提供する機能
    • HTTPS終端
    • PersistentなIPアドレスと一般的なポート番号(30001番等ではない)を外部に公開
    • 受信したリクエストを内部のPodへRoute
      • Podが複数あればLoadBalance
      • URLごとに異なるサービスに振り分けることもできる
  • 目的はLoadBalancer Serviceと同じだがクラスタ外部にLoadBalancerが不要になる点が異なる
    • クラウド事業者へのLoadBalander費用の支払いが発生しない
  • IngressではLoadBalancerの替わりにIngress Controllerを使用する
    • Ingress Controllerの実体はnginx、haproxy、trafficなどのコンテナ
  • ManifestファイルからIngress Controllerを一元的に管理できる