Kubernetes入門:Komposeで作成されたファイルの解説(networkpolicy.yaml)

スポンサーリンク
Kubernetes入門:Komposeで作成されたファイルの解説(networkpolicy.yaml) 用語解説
Kubernetes入門:Komposeで作成されたファイルの解説(networkpolicy.yaml)
この記事は約6分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、Komposeで作成されたファイルについてご紹介します。

スポンサーリンク

背景

この記事は、komposeコマンドを使用して、Docker ComposeファイルからKubernetesマニフェストに変換されたファイルについて解説しています。komposeコマンドで変換したときの記事は下記を御覧ください。

作成されたファイル一覧

Komposeによって作成されたファイルは下記になります。

kompose-sample-net-networkpolicy.yaml
nginx-deployment.yaml
nginx-tcp-service.yaml
php-fpm-deployment.yaml
php-fpm-service.yaml

kompose-sample-net-networkpolicy.yaml

ファイル内容は下記になります。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  creationTimestamp: null
  name: kompose-sample-net
spec:
  ingress:
    - from:
        - podSelector:
            matchLabels:
              io.kompose.network/kompose-sample-net: "true"
  podSelector:
    matchLabels:
      io.kompose.network/kompose-sample-net: "true"

このコードは、Kubernetesのネットワークポリシーを定義するためのYAMLファイルです。

apiVersion: networking.k8s.io/v1は、Kubernetes APIのバージョンを指定しています。このコードはKubernetesのバージョン1以上で動作します。

kind: NetworkPolicyは、作成するリソースの種類を指定しています。この場合はネットワークポリシーを定義しています。

metadataセクションでは、ネットワークポリシーのメタデータ情報を指定します。creationTimestampは作成時刻を表すタイムスタンプであり、nameはネットワークポリシーの名前を指定します。

specセクションでは、ネットワークポリシーの詳細な仕様を指定します。

ingressセクションでは、入力トラフィックのルールを定義します。ここでは、fromセクション内で指定された条件に一致するポッドからの入力トラフィックを許可します。具体的には、podSelectorセクション内でio.kompose.network/kompose-sample-net: "true"というラベルが一致するポッドからのトラフィックを許可します。

podSelectorセクションでは、このネットワークポリシーが適用されるポッドのセレクターを指定します。同様に、io.kompose.network/kompose-sample-net: "true"というラベルが一致するポッドに対してこのネットワークポリシーが適用されます。

このコードは、名前が”kompose-sample-net”でラベルが”io.kompose.network/kompose-sample-net: “true””と一致するポッドからの入力トラフィックを許可するネットワークポリシーを定義しています。

解説

Ingressとは


KubernetesにおけるIngressは、クラスター外部からのトラフィックを内部のサービスにルーティングするためのリソースです。IngressはHTTPやHTTPSのトラフィックを処理するためのルールとして機能し、トラフィックの負荷分散やTLS終端、パスベースのルーティングなどの機能を提供します。

具体的には、Ingressリソースは以下のような構成要素を持ちます:

  1. ルール (Rules): Ingressリソースは1つ以上のルールを定義します。ルールは、特定のホスト名またはパスに対するトラフィックのルーティングを指定します。ルールには対応するサービスへのルーティング方法も指定されます。
  2. バックエンド (Backends): ルール内のバックエンドは、トラフィックを受け取る実際のサービスを指定します。バックエンドはサービスの名前またはIPアドレスとポート番号で指定されます。
  3. TLS (Transport Layer Security): クラスター内でTLS終端を行う場合、IngressリソースにTLS設定を追加することができます。これにより、外部からの暗号化されたトラフィックを受け付け、復号化してバックエンドサービスに転送することができます。

Ingressリソース自体は、Kubernetesクラスター内のIngressコントローラによって実際の機能が提供されます。IngressコントローラはIngressリソースを監視し、設定に基づいてルーティングや負荷分散を行います。さまざまなIngressコントローラが利用可能であり、Nginx Ingress ControllerやTraefikなどがよく使われています。

Ingressを使用することで、Kubernetesクラスター内のサービスへの外部からのアクセスを効果的に制御することができます。異なるパスやホスト名に基づいたトラフィックのルーティング、TLS終端、負荷分散などの機能を提供し、柔軟で強力なネットワーキングの構築が可能となります。

podSelectorとは

podSelectorは、Kubernetesのネットワークポリシー(NetworkPolicy)において使用されるセレクターです。podSelectorを使用することで、特定の条件に一致するポッドを選択することができます。

ネットワークポリシーは、ネットワークトラフィックのルールを定義するために使用されます。podSelectorは、どのポッドがネットワークポリシーの適用対象であるかを指定するために使用されます。

具体的には、podSelectorはポッドのラベルセレクターを指定します。ラベルはポッドに付けられたキーと値のペアであり、ポッドを識別するために使用されます。podSelectorを使用することで、特定のラベルセレクターに一致するポッドを選択することができます。

例えば、以下のようなpodSelectorがあるとします:

podSelector:
  matchLabels:
    app: frontend

この例では、app: frontendというラベルが一致するポッドが選択されます。したがって、ネットワークポリシーはapp: frontendというラベルを持つポッドにのみ適用されます。

podSelectorを使用することで、ネットワークポリシーを特定のポッドに対して適用することができます。これにより、ポッド間の通信制御やセキュリティの強化など、ネットワークトラフィックの管理が可能となります。

おわりに

今日は、Komposeで作成されたkompose-sample-net-networkpolicy.yamlについてご紹介しました。次回も、Komposeで作成されたファイルを解説していきたいと思います。

よっしー
よっしー

何か質問や相談があれば、遠慮なくコメントしてください。また、エンジニア案件についても、いつでも相談にのっていますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました