0Pricing
Docker & DevOps Fundamentals · レッスン

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: 80

TLS 終端

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: nginx

Ingress を確認する

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ステートレスアプリのDeployment
  2. ネットワークアクセスのためのService
  3. ConfigMapsとSecrets
  4. Ingressと外部ルーティング
← Docker & DevOps Fundamentalsに戻る