Ingress
Kubernetes クラスタ外部からの HTTP/HTTPS トラフィックをサービスにルーティングするリソース
Ingress とは
Ingress は、Kubernetes クラスタ外部からの HTTP/HTTPS トラフィックを、ホスト名やパスに基づいて内部の Service にルーティングするリソースである。レイヤー 7 (HTTP) のロードバランシングを提供し、TLS 終端、パスベースルーティング、ホストベースルーティングを実現する。
Service との違い
Service との違いを以下にまとめる。
| リソース | レイヤー | 機能 |
|---|---|---|
| Service (LoadBalancer) | L4 (TCP/UDP) | IP + ポートでルーティング |
| Ingress | L7 (HTTP/HTTPS) | ホスト名 + パスでルーティング |
Service の LoadBalancer タイプはサービスごとに LB を作成するため、サービス数が増えるとコストが膨らむ。Ingress は 1 つの LB で複数サービスにルーティングできる。
基本的な設定
基本的な設定の例を示す。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-ingress
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
spec:
tls:
- hosts: [example.com]
secretName: tls-secret
rules:
- host: example.com
http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api-service
port: { number: 80 }
- path: /
pathType: Prefix
backend:
service:
name: web-service
port: { number: 80 }
/api/* は api-service に、それ以外は web-service にルーティングされる。
Controller が複数入っているクラスタでは spec.ingressClassName でどの Controller に処理させるかを明示する。省略した場合は ingressclass.kubernetes.io/is-default-class を付けた IngressClass が使われ、既定の IngressClass が無いクラスタでは既定を前提にする Controller は反応しない (一部の Controller は既定指定なしでも動作する)まま Ingress が放置される。
Ingress Controller
Ingress リソースだけでは何も起きない。Ingress Controller が実際のルーティングを処理する。
| Controller | 特徴 |
|---|---|
| AWS Load Balancer Controller | ALB を自動作成、EKS で推奨 (旧称 AWS ALB Ingress Controller) |
| Nginx Ingress Controller | 最も広く使われている |
| Traefik | 自動設定、Let's Encrypt 統合 |
| Istio Gateway | サービスメッシュと統合 |
EKS での ALB Ingress
EKS では AWS Load Balancer Controller を使い、Ingress リソースから ALB を自動作成する。
metadata:
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:...
alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]'
alb.ingress.kubernetes.io/ssl-redirect: "443"
Gateway API (Ingress の後継)
Gateway API は Kubernetes 本体とは別に配布される拡張 (CRD 群) で、2023 年 10 月の v1.0 で Gateway・GatewayClass・HTTPRoute が GA になった。Kubernetes を新しくすれば自動的に使えるものではなく、クラスタへ CRD を入れた上で対応する Controller を動かす必要がある。
Kubernetes プロジェクトは Ingress ではなく Gateway の利用を推奨しており、Ingress API は凍結されている。凍結の意味は「削除される」ではなく、GA API としての安定性保証は続き削除の予定も無い一方、今後の機能追加は Gateway API 側にしか入らないということである (2026 年 8 月時点)。既存の Ingress を慌てて捨てる必要はないが、トラフィック分割や共通の待ち受け設定の共有といった Ingress の表現力を超える要件が出た時点で、annotation を増やして凌ぐより Gateway API へ移る方が素直になる。
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: api-route
spec:
parentRefs:
- name: my-gateway
rules:
- matches:
- path: { type: PathPrefix, value: /api }
backendRefs:
- name: api-service
port: 80
Ingress を扱う関連書籍も多い。
この記事は役に立ちましたか?
関連用語
Kubernetes
コンテナのデプロイ、スケーリング、管理を自動化するオープンソースのオーケストレーションプラットフォーム
Service
Kubernetes で Pod 群への安定したネットワークアクセスを提供する抽象化リソース
TLS 終端 (SSL ターミネーション) とは - ロードバランサーで HTTPS を復号する構成
TLS 終端 (SSL ターミネーション、SSL 終端、TLS オフロードとも呼ぶ) とはロードバランサーや CDN で HTTPS を復号しバックエンドの負荷を軽減する構成。Passthrough や Re-encryption との違い、AWS ALB/CloudFront での構成例、セキュリティ上の注意点を解説
SPA ルーティングとは - React/Vue/Angular でのページ遷移の仕組み
SPA ルーティングは URL とコンポーネント表示を同期させページ遷移なしで画面を切り替える仕組み。History API / Hash モード / SSR との関係を解説
ロードバランシング
複数のサーバーにトラフィックを分散し、可用性とスケーラビリティを向上させる仕組み
API Gateway
API のエントリーポイントとして認証、スロットリング、ルーティングを一元管理する AWS サービス
関連する記事
TLS 終端の仕組み - SSL ターミネーションとの違いと構成パターン 3 種を図解
TLS 終端 (SSL ターミネーション) の仕組みを図解で解説。SSL ターミネーションと TLS 終端に違いは無いことの説明から、ロードバランサー終端 / CDN 終端 / パススルーの 3 構成パターンの使い分け、AWS の ALB / CloudFront での設定例までを整理します。
インフラ / クラウド本ガイド - AWS や Docker を本で学ぶ
クラウドインフラ、コンテナ、IaC を学べる技術書の選び方と学習順序を紹介。インフラ本の賞味期限問題と公式ドキュメントとの使い分けも解説します。
AWS 本の選び方 - 全体像 / 構築 / 設計 / 運用 / セキュリティの 5 視点
AWS を学ぶ技術書の選び方を「全体像 / 構築 / 設計 / 運用 / セキュリティ」の 5 視点で整理。公式ドキュメントと本の役割分担、資格対策書の位置づけまで、2026 年 8 月時点の定番書で AWS 独学のルートを解説します。