2017-08-01 3 views
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はいつも追加されますか?これは私にとっては奇妙に思えます
  • 誰かがパスを正規表現で動作させる別の方法を知っていますか?

何かアドバイスが大幅に検索をたくさんした後

答えて

0

をapreciatedされるだろう、侵入して可能私は何をしようとしていたことは(まだ)ないようです。 PRを開いて、それがマージされるのを待っています。

この変更を公開しているバージョンはまだ公開されていませんが、ブランチはk8s

からのdevドキュメントを使用してビルドできます
関連する問題