すべての/ devopsがバックエンドのdevopsserviceにマッピングされた状態で、入力コントローラーと入力リソースが実行されています。 「 http:// hostname/devops 」をヒットしようとすると、(CSSとスタイルはありませんが)ハイパーリンクのあるページが表示されます。たとえば、それらの1つは「ログ」です。
「ログ」ハイパーリンクをクリックすると、 http:// hostname/logs にリダイレクトされますが、 http:// hostname/devops/logs である必要があります=。
私に何ができるか考えていますか?
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
namespace: ingress-nginx
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/add-base-url : "true"
spec:
rules:
- Host: master1.dev.local
http:
paths:
- backend:
serviceName: devops1
servicePort: 10311
path: /devops
ブラウザから直接http://hostname/devops/logs
にアクセスすると、確かに欲しいものが手に入ります。しかし、ホームページのハイパーリンクをクリックすると、http://hostname/logs
のみを取得できますが、これは間違いなく失敗します。
そのため、イングレスyamlで/logs
バックエンドを設定して処理する必要があり、nginx.ingress.kubernetes.io/configuration-snippet
を設定して/logs
が書き換えられないようにします:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
namespace: ingress-nginx
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/add-base-url : "true"
nginx.ingress.kubernetes.io/configuration-snippet: |
rewrite ^/logs /logs break;
spec:
rules:
- Host: master1.dev.local
http:
paths:
- backend:
serviceName: devops1
servicePort: 10311
path: /logs
- backend:
serviceName: devops1
servicePort: 10311
path: /devops
イングレスは何も配信していないようです/devops/*
。別のパスを追加してみてください/devops/*
同じバックエンド。基本的にこれ:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
namespace: ingress-nginx
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/add-base-url : "true"
spec:
rules:
- Host: master1.dev.local
http:
paths:
- backend:
serviceName: devops1
servicePort: 10311
path: /devops/*
- backend:
serviceName: devops1
servicePort: 10311
path: /devops
この記事の執筆時点では、この領域でまだ work が行われています。