0

Istio の HTTPS ロードバランサで動作するデプロイを GKE に設定しようとしています。istio-ingresss が NodePort として定義されているときに istio をインストールし、次のように gke で Ingress を作成しました。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: istio-ingress
  namespace: istio-system
  annotations:
    # If the class annotation is not specified it defaults to "gce".
    # kubernetes.io/ingress.class: "gce"
    networking.gke.io/v1beta1.FrontendConfig: "ingress-frontend-config"
    ingress.kubernetes.io/default-backend: istio-ingressgateway
    nginx.ingress.kubernetes.io/default-backend: istio-ingressgateway
    # Enable use of manually pre-defined global static IP
    kubernetes.io/ingress.global-static-ip-name: test-ip-address # A gcp ip address constantly set
    kubernetes.io/ingress.allow-http: "true" 
    # Enable use of a GCP-managed certificate through a ManagedCertificate resource
    networking.gke.io/managed-certificates: global-test-dev-cert # A gcp manged certificate for the host
spec:
  rules:
  - http:
      paths:
      - path: /*
        backend:
          # In this case we don't go directly to app-specific services,
          # but first to the Istio ingress-gateway
          # We use port 80 because it is the "ingress-like" port of the ingress-gateway
          serviceName: istio-ingressgateway
          servicePort: 80

istio の基本的な httpbin をデプロイした後、次のゲートウェイと仮想サービスを使用してそれにアクセスしようとします

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: httpbin-gateway
  namespace: svc
spec:
  selector:
    istio: ingressgateway
  servers:
    - port:
        number: 80
        name: http
        protocol: HTTP
      hosts:
        - "httpbin.test.com" # DNS set to the Ingress IP
        # - "*"
    - hosts:
        - "httpbin.test.com" # DNS set to the Ingress IP
        # - "*"
      port:
        name: https
        number: 443
        protocol: HTTPS
      tls:
        mode: PASSTHROUGH
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: httpbin-vs
  namespace: svc
spec:
  hosts:
  - "httpbin.test.com" # DNS set to the Ingress IP
  gateways:
  - httpbin-gateway
  http:
  - route:
    - destination:
        host: httpbin   
        port:
          number: 8000

ブラウザからアクセスすると、502エラーが発生します。istio-ingressgateway のログに、ルートが見つからないという 404 エラーが表示されます。しかし、ホストを切り替えると

hosts:
        - "*"

ワイルドカードを使用すると、httpbin アプリにアクセスできます。

仮想サービスを次のように変更してみました

tls:
  - match:
    - port: 443
      sniHosts:
      - httpbin.test.com
    route:
    - destination:
        host: httpbin   
        port:
          number: 8000

同じ問題が発生します。

4

0 に答える 0