Маршрутизация Traffi c имеет проблему на AWS, но работает на Minikube, используя конфигурацию ниже - PullRequest
0 голосов
/ 23 февраля 2020

Использование этой конфигурации Получение здоровой исходной версии Http 503. Если я просто удаляю подмножество, все прекрасно работает.

Источник: ccgf-helm-зонтик-диаграмма / charts / ccgf-cdlg-app / templates / service .yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: ccgf-cdlg-app
    service: ccgf-cdlg-app
  name: ccgf-cdlg-app
  namespace: cdlg-edc-devci
spec:
  selector:
    app: ccgf-cdlg-app
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80

    ---

Источник: ccgf-helm-зонтик-диаграмма / charts / ccgf-cdlg-app / templates / deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ccgf-cdlg-app-production
  namespace: cdlg-edc-devci
  labels:
    app: ccgf-cdlg-app
    version: production
spec:
  replicas: 1

  selector:
    matchLabels:
      app: ccgf-cdlg-app
      version: production
  template:
    metadata:
      labels:
        app: ccgf-cdlg-app
        version: production
    spec:
      containers:
      - image: edc-ccgf-ui-app:1.37
        imagePullPolicy: Always
        name: ccgf-cdlg-app
        ports:
        - name: ccgf-cdlg-app
          containerPort: 80
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 20
          periodSeconds: 20
      imagePullSecrets:
      - name: spinnakerrepoaccess

Источник: ccgf- helm-umbrella-chart / charts / ccgf-cdlg-app / templates / deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ccgf-cdlg-app-canary
  namespace: cdlg-edc-devci
  labels:
    app: ccgf-cdlg-app
    version: canary
spec:
  replicas: 1

  selector:
    matchLabels:
      app: ccgf-cdlg-app
      version: canary
  template:
    metadata:
      labels:
        app: ccgf-cdlg-app
        version: canary
    spec:
      containers:
      - image: edc-ccgf-ui-app:1.38
        imagePullPolicy: Always
        name: ccgf-cdlg-app
        ports:
        - name: ccgf-cdlg-app
          containerPort: 80
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 20
          periodSeconds: 20
      imagePullSecrets:
      - name: spinnakerrepoaccess

# виртуальная служба

kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
  name: ccgf-cdlg-app
  namespace: cdlg-edc-devci
spec:
  hosts:
    - '*'
  gateways:
    - ccgf-gateway
  http:
    - match:
        - uri:
            prefix: /cdlg-edc-devci/frontend
      rewrite:
        uri: /
      route:
        - destination:
            host: ccgf-cdlg-app.cdlg-edc-devci.svc.cluster.local
            subset: production
          retries:
            attempts: 3
            perTryTimeout: 2s
            retryOn: 'gateway-error,connect-failure,refused-stream'
          weight: 50
        - destination:
            host: ccgf-cdlg-app.cdlg-edc-devci.svc.cluster.local
            subset: canary
          retries:
            attempts: 3
            perTryTimeout: 2s
            retryOn: 'gateway-error,connect-failure,refused-stream'
          weight: 50
    - match:
        - uri:
            prefix: /static
      rewrite:
        uri: /static
      route:
        - destination:
            host: ccgf-cdlg-app.cdlg-edc-devci.svc.cluster.local
          retries:
            attempts: 3
            perTryTimeout: 2s
            retryOn: 'gateway-error,connect-failure,refused-stream'

# Правило назначения

kind: DestinationRule
apiVersion: networking.istio.io/v1alpha3
metadata:
  name: ccgf-cdlg-app
  namespace: cdlg-edc-devci
spec:
  host: ccgf-cdlg-app
  subsets:
    - labels:
        version: canary
      name: canary
    - labels:
        version: production
      name: production

Источник: ccgf-helm-зонтик-диаграмма / charts / ccgf-gateway / templates / gateway.yaml

kind: Gateway
apiVersion: networking.istio.io/v1alpha3
metadata:
  name: ccgf-gateway
  namespace: namespace
spec:
  servers:
    - hosts:
        - '*'
      port:
        name: http
        number: 80
        protocol: HTTP
  selector:
    release: istio-custom-ingress-gateways

1 Ответ

0 голосов
/ 24 февраля 2020

Я сделал репродукцию, основанную на ваших ямлах, и все работает просто отлично, единственное, что у меня есть, - базовый c istio ingress gateway вместо собственного.


Для начала, не могли бы вы измените Host в DestinationRule и проверьте, работает ли он тогда?

Это должно быть

ccgf-cdlg-app.cdlg-edc-devci.svc.cluster.local вместо ccgf-cdlg-app


Вы включили istio инъекцию в своем cdlg-ed c -devci namespace?

Вы можете проверить это с помощью kubectl get namespace -L istio-injection

Это должно быть

NAME             STATUS   AGE   ISTIO-INJECTION
cdlg-edc-devci   Active   37m   enabled

И воспроизведение yamls.


kubectl create namespace cdlg-edc-devci
kubectl label namespace cdlg-edc-devci istio-injection=enabled

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx1
  namespace: cdlg-edc-devci
spec:
  selector:
    matchLabels:
      app: ccgf-cdlg-app
      version: production
  replicas: 1
  template:
    metadata:
      labels:
        app: ccgf-cdlg-app
        version: production
    spec:
      containers:
      - name: nginx1
        image: nginx
        ports:
        - name: http-dep1
          containerPort: 80
        lifecycle:
          postStart:
            exec:
              command: ["/bin/sh", "-c", "echo Hello nginx1 > /usr/share/nginx/html/index.html"]

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx2
  namespace: cdlg-edc-devci
spec:
  selector:
    matchLabels:
      app: ccgf-cdlg-app
      version: canary
  replicas: 1
  template:
    metadata:
      labels:
        app: ccgf-cdlg-app
        version: canary
    spec:
      containers:
      - name: nginx2
        image: nginx
        ports:
        - name: http-dep2
          containerPort: 80
        lifecycle:
          postStart:
            exec:
              command: ["/bin/sh", "-c", "echo Hello nginx2 > /usr/share/nginx/html/index.html"]

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: cdlg-edc-devci
  labels:
    app: ccgf-cdlg-app
spec:
  ports:
  - name: http-svc
    port: 80
    protocol: TCP
  selector:
    app: ccgf-cdlg-app

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: nginxvirt
  namespace: cdlg-edc-devci
spec:
  gateways:
  - ccgf-gateway
  hosts:
  - '*'
  http:
  - name: production
    match:
    - uri:
        prefix: /cdlg-edc-devci/frontend
    rewrite:
      uri: /
    route:
    - destination:
        host: nginx.cdlg-edc-devci.svc.cluster.local
        port:
          number: 80
        subset: can
      weight: 50
    - destination:
        host: nginx.cdlg-edc-devci.svc.cluster.local
        port:
          number: 80
        subset: prod
      weight: 50
  - name: canary
    match:
    - uri:
        prefix: /s
    rewrite:
      uri: /
    route:
    - destination:
        host: nginx.cdlg-edc-devci.svc.cluster.local
        port:
          number: 80
        subset: can

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: nginxdest
  namespace: cdlg-edc-devci
spec:
  host: nginx.cdlg-edc-devci.svc.cluster.local
  subsets:
  - name: prod
    labels:
      version: production
  - name: can
    labels:
      version: canary

kind: Gateway
apiVersion: networking.istio.io/v1alpha3
metadata:
  name: ccgf-gateway
  namespace: namespace
spec:
  servers:
    - hosts:
        - '*'
      port:
        name: http
        number: 80
        protocol: HTTP

apiVersion: v1
kind: Pod
metadata:
  name: ubu
spec:
  containers:
  - name: ubu
    image: ubuntu
    command: ["/bin/sh"]
    args: ["-c", "apt-get update && apt-get install curl -y && sleep 3000"]

Некоторые результаты из ubuntu pod


curl -v external_istio-ingress_gateway_ip / cdlg-ed c -devci / frontend

HTTP/1.1 200 OK
Hello nginx2

HTTP/1.1 200 OK
Hello nginx1

curl -v external_istio-ingress_gateway_ip / s

HTTP/1.1 200 OK
Hello nginx2

Надеюсь, он ответит на ваш вопрос. Дайте мне знать, если у вас есть еще вопросы.

...