8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ingressでサービスのコンテキストパスを書き換える

Posted at

経緯

KubernetesはIngressを使うことでサービスをクラスタの外部に公開することができますが、外部に公開したいパスとサービスの実際のパスが異なるケースがあります。例えば、サービスはコンテキストパスが/ですが、外部公開する場合は/hogeとしてアクセスさせたいケースです。例えば、Ingressでは/はデフォルトバックエンドのために使うべきとされていますので、/を使いたくない場合があります。

方法

アプリ内URIの相対パス化

常識的なことかもしれませんが、アプリ内で使われるURIは/a/bのような絶対パスではなく、現在のURIからの相対パス、例えば/aにいる場合は単にbとします。このあたりはフレームワークやテンプレートエンジンの仕様に依存しますので確認ください。

Ingressのマニフェストでrewrite-targetを指定

sample-svcサービスに/sampleでアクセスするとsample-svcの/と見なす定義です(ややこしい)。rewrite-targetアノテーションを使います。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: sample-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /sample
        backend:
          serviceName: sample-svc
          servicePort: 8080

以上です。

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?