2
とKubernetes /ヘルム入力パス:私たちはエコシステムにおけるマイクロサービスの数を持っており、そのうちの二つは、ユーザデータを扱うのnginxと正規表現
ユーザーサービス - >
- POST /ユーザー
- GET /ユーザー/ [[:alnum:]]を+
ドキュメントサービス - >
- POST /ユーザー/ [[:alnum:]]を+ /文書
- GET /ユーザー/ [[:alnum:]]を+ /文書/ [[:alnum:]]を+
は、したがって、私はイングレスでこれを定義したい:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{.Release.Name}}
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: "true"
ingress.kubernetes.io/enable-cors: "false"
ingress.kubernetes.io/ssl-redirect: "true"
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: "{{ template "fullname" . }}"
heritage: "{{ .Release.Service }}"
release: "{{ .Release.Name }}"
tier: frontend
spec:
tls:
- secretName: {{ template "tls.fullname" . }}
hosts:
- "staging.ourhost.com"
rules:
- host: "staging.ourhost.com"
http:
paths:
- path: "https://stackoverflow.com/users/[[:alnum:]]+"
backend:
serviceName: {{ .Values.api.services.user_service | quote }}
servicePort: 8080
- path: "https://stackoverflow.com/users/[[:alnum:]]+/documents"
backend:
serviceName: {{ .Values.api.services.document_service | quote }}
servicePort: 8888
これはngix.confに設定され、以下のような結果になります。
location /users/[[:alnum:]]+ {
...
}
location /users/[[:alnum:]]+/documents{
...
}
つまり、正規表現は解決されません。
私は、個々のingressesにそれを分割し、注釈
ingress.kubernetes.io/rewrite-target: "https://stackoverflow.com/users/$1/documents"
を使用してみましたが、これは(最終的に)
location ~* ^/users/[[:alnum:]]+/documents/(?<baseuri>.*) {
set $proxy_upstream_name "default-dev-document_service-8888";
...
rewrite /users/[[:alnum:]]+/documents/(.*) /users/$1/documents/$1 break;
proxy_pass http://default-dev-document_service-8888;
}
質問nginx.confで、次の結果:
- なぜ$ 1はいつも追加されますか?これは私にとっては奇妙に思えます
- 誰かがパスを正規表現で動作させる別の方法を知っていますか?
何かアドバイスが大幅に検索をたくさんした後