1.9. セキュリティーとトラフィック管理
				管理者は、ClusterIP、NodePort、LoadBalaner などのサービスタイプと、Ingress や Route などの API リソースを使用して、アプリケーションを外部トラフィックに公開し、ネットワーク接続を保護できます。Ingress Operator と Cluster Network Operator (CNO) は、これらのサービスとリソースの設定と管理に役立ちます。Ingress Operator は、1 つ以上の Ingress Controller をデプロイおよび管理します。これらのコントローラーは、外部の HTTP および HTTPS トラフィックをクラスター内のサービスにルーティングします。CNO は、Pod ネットワーク、サービスネットワーク、DNS などのクラスターネットワークコンポーネントをデプロイおよび管理します。
			
1.9.1. アプリケーションの公開
ClusterIP は、クラスター内の内部 IP でサービスを公開し、クラスター内の他のサービスのみがクラスターにアクセスできるようにします。NodePort サービスタイプは、各ノードの IP 上の静的ポートでサービスを公開します。このサービスタイプでは、外部トラフィックがサービスにアクセスできます。ロードバランサーは通常、MetalLB を使用するクラウドまたはベアメタル環境で使用されます。このサービスタイプは、外部トラフィックをサービスにルーティングする外部ロードバランサーをプロビジョニングします。ベアメタル環境では、MetalLB は VIP と ARP アナウンスメントまたは BGP アナウンスメントを使用します。
Ingress は、負荷分散、SSL/TLS Termination、名前ベースの仮想ホスティングなどのサービスへの外部アクセスを管理する API オブジェクトです。NGINX や HAProxy などの Ingress Controller は、Ingress API を実装し、ユーザーが定義したルールに基づいてトラフィックルーティングを処理します。
1.9.2. 接続のセキュリティー保護
					Ingress Controller は、SSL/TLS Termination を管理し、着信 SSL/TLS トラフィックをバックエンドサービスに渡す前に復号します。SSL/TLS Termination により、暗号化/復号プロセスがアプリケーション Pod からオフロードされます。TLS 証明書を使用して、クライアントとサービス間のトラフィックを暗号化できます。cert-manager などのツールを使用して証明書を管理し、証明書の配布と更新を自動化できます。
				
SNI フィールドがある場合、ルートは TLS トラフィックを Pod に渡します。このプロセスにより、HTTP/HTTPS だけでなく TLS を使用して、TCP を実行するサービスを公開できるようになります。サイト管理者は証明書を一元管理でき、権限を持たないアプリケーション開発者による秘密鍵の読み取りを許可できます。
Route API を使用すると、クラスターが管理する証明書を使用してルーターから Pod へのトラフィックを暗号化できます。これにより、内部の通信区間の暗号化は維持されたまま、外部証明書が一元管理されます。アプリケーション開発者は、アプリケーション用の一意の秘密鍵を受け取ります。これらの鍵は Pod 内にシークレットとしてマウントできます。
ネットワーク制御は、Pod 間および Pod と他のネットワークエンドポイント間で通信する方法のルールを定義します。これにより、クラスター内のトラフィックフローが制御され、セキュリティーが強化されます。この制御はネットワークプラグインレベルで実装され、許可されたトラフィックのみが Pod 間で流れるようにします。
ロールベースのアクセス制御 (RBAC) は、権限を管理し、クラスター内のリソースにアクセスできるユーザーを制御します。サービスアカウントは、API にアクセスする Pod にアイデンティティーを提供します。RBAC を使用すると、各 Pod が実行できる操作を細かく制御できます。
1.9.3. 例: アプリケーションの公開と接続の保護
この例では、クラスター内で実行されている Web アプリケーションに外部ユーザーがアクセスする必要があります。
- ニーズに合うサービスタイプを使用して、サービスを作成し、アプリケーションをサービスとして公開します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- HTTP/HTTPS トラフィックを管理し、サービスにルーティングするための - Ingressリソースを定義します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Ingress に TLS を設定して、安全で暗号化された接続を確保します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
1.9.4. サービスタイプと API リソースの選択
サービスタイプと API リソースには、アプリケーションの公開とネットワーク接続の保護に関連するさまざまな利点があります。適切なサービスタイプまたは API リソースを活用することで、アプリケーションの公開方法を効果的に管理し、内部クライアントと外部クライアントの両方に対して安全で信頼性の高いアクセスを確保できます。
OpenShift Container Platform は、次のサービスタイプと API リソースをサポートしています。
- サービスタイプ - 
									ClusterIPは、内部のみの公開を目的としています。容易にセットアップでき、クラスター内のサービスにアクセスするための安定した内部 IP アドレスを提供します。ClusterIPは、クラスター内のサービス間の通信に適しています。
- 
									NodePortは、各ノードの IP 上のサービスを静的ポートで公開することで、外部アクセスを許可します。容易にセットアップでき、開発やテストに役立ちます。NodePortは、クラウドプロバイダーのロードバランサーを必要としない単純な外部アクセスに適しています。
- 
									LoadBalancerは、トラフィックを複数のノードに分散するために、外部ロードバランサーを自動的にプロビジョニングします。信頼性と可用性の高いアクセスを必要とする実稼働環境に最適です。
- 
									ExternalNameはサービスを外部 DNS 名にマッピングし、クラスター外のサービスに、DNS 名を使用してアクセスできるようにします。外部サービスやレガシーシステムをクラスターと統合する場合に適しています。
- 
									Headless サービスは、安定した ClusterIPを提供せずに Pod IP のリストを返す DNS 名です。これは、ステートフルアプリケーションや、個々の Pod IP への直接アクセスが必要なシナリオに最適です。
 
- 
									
- API リソース - 
									Ingressは、負荷分散、SSL/TLS Termination、名前ベースの仮想ホスティングをサポートし、HTTP および HTTPS トラフィックのルーティングを制御します。サービス単独よりも柔軟性が高く、複数のドメインとパスをサポートします。複雑なルーティングが必要な場合、Ingressが最適です。
- 
									RouteはIngressに似ていますが、さらに TLS 再暗号化やパススルーなどの追加機能を提供します。これを使用することで、サービスの外部公開プロセスが単純化されます。Routeは、統合された証明書管理などの高度な機能が必要な場合に最適です。
 
- 
									
					簡単にサービスを外部トラフィックに公開できる方法が必要な場合は、おそらく Route または Ingress が最適な選択肢です。これらのリソースは、namespace 管理者または開発者が管理できます。最も簡単な方法として、ルートを作成し、その外部 DNS 名を確認し、外部 DNS 名を指す CNAME を持つように DNS を設定できます。
				
					HTTP/HTTPS/TLS の場合、Route または Ingress で十分です。それ以外の場合はより複雑で、クラスター管理者はポートがアクセス可能であることや MetalLB が設定されていることを確認する必要があります。クラウド環境または適切に設定されたベアメタル環境の場合、LoadBalancer サービスも選択肢として検討できます。