Ingressと外部ルーティング
Ingressリソース、ホスト・パスルーティング、Ingressコントローラーを使い、単一のエントリーポイントから複数のサービスを外部に公開します。
「Ingressと外部ルーティング」はCoddyKit上の無料Docker & DevOps Fundamentalsレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDocker & DevOps Fundamentals学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Docker & DevOps Fundamentalsコースには全4レッスンが含まれています。
NodePort と LoadBalancer の先へ
Service でアプリを公開できますが、アプリごとに外部 IP を割り当てると、コストが高くなり管理も複雑になります。Ingress は、複数の Service へルーティングできる、スマートな単一の HTTP 入口を提供します。
Ingress とは
Ingressは、HTTP/HTTPS のルーティングルールを記述する Kubernetes オブジェクトです。どのホストまたは URL パスをどの Service に対応付けるかを定義します。
コントローラーが必要です
Ingress オブジェクトはルールを記述するだけです。Ingress コントローラー(nginx、Traefik、HAProxy)が実際にそのルールを監視し、ルーティングを行います。コントローラーがなければ何も起こりません。
kubectl get pods -n ingress-nginx基本的な Ingress
この Ingress は、すべてのトラフィックをポート 80 の単一のバックエンド Service に送ります。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 80ホストベースのルーティング
hostを追加すると、ドメイン名でルーティングできます。同じ IP 上で、api.example.com を1つの Service に、shop.example.com を別の Service に振り分けられます。
rules:
- host: api.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: api
port:
number: 8080パスベースのルーティング
1つのホスト内で URL パスによってルーティングすることもできます。/api を API Service に、/ を Web フロントエンドに振り分けます。
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api
port:
number: 8080
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 80TLS 終端
Ingress は TLS Secret を使って HTTPS を終端できます。そのため、ユーザー間の通信は暗号化したまま、Service には平文の HTTP を渡せます。
spec:
tls:
- hosts:
- shop.example.com
secretName: shop-tlsアノテーションで動作を調整する
コントローラー固有のアノテーションで、書き換え、タイムアウト、レート制限などを設定できます。アノテーションは Ingress のメタデータに記述します。
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /IngressClass
複数のコントローラーが存在する場合、ingressClassName によって、この Ingress を処理するコントローラーを Kubernetes に伝えます。
spec:
ingressClassName: nginxIngress を確認する
kubectl get ingress でルールと割り当てられたアドレスを確認し、describe でイベントを調べます。
kubectl describe ingress web-ingress現代的な代替手段:Gateway API
Kubernetes は、Ingress の後継となる、より表現力の高いGateway APIへと進化しています。Ingress は現在も広く使われており、最初に学ぶ対象として適しています。
理解度チェック
なぜ Ingress コントローラーが必要なのですか。
まとめ
これで、アプリをすっきりと公開できるようになりました。
- Ingressは HTTP のルーティングルールを定義し、Ingress コントローラーがそのルールを適用します
- 1つの入口からホストまたはパスでルーティングします
- TLS を終端し、アノテーションで動作を調整します
ingressClassNameでコントローラーを選択します
1つの IP で多くの Service に対応し、スマートにルーティングできます。
よくある質問
「Ingressと外部ルーティング」レッスンは無料ですか?
はい。「Ingressと外部ルーティング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Docker & DevOps Fundamentalsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Docker & DevOps Fundamentalsコースには全4レッスンが含まれています。
「Ingressと外部ルーティング」で何を学びますか?
Ingressリソース、ホスト・パスルーティング、Ingressコントローラーを使い、単一のエントリーポイントから複数のサービスを外部に公開します。 ブラウザで直接実行するハンズオンコードでDocker & DevOps Fundamentalsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Docker & DevOps Fundamentalsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDocker & DevOps Fundamentalsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Ingressと外部ルーティング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDocker & DevOps Fundamentalsレッスンでコードを書いて実行できますか?
はい。すべてのDocker & DevOps Fundamentalsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ステートレスアプリのDeployment
- ネットワークアクセスのためのService
- ConfigMapsとSecrets
- Ingressと外部ルーティング