Невозможно разрешить внешний трафик через ISTIO - PullRequest
2 голосов
/ 29 апреля 2019

Я пытаюсь настроить Istio, и мне нужно внести в белый список несколько портов, чтобы разрешить трафик не mTLS из внешнего мира, поступающий через специальный порт, для нескольких рабочих мест в локальных k8.

Я не могу найти успешныйспособ сделать это.

Пробная запись службы, правила и правила назначения и не удалось.

Помогает высоко ценится.

version.BuildInfo{Version:"1.1.2", GitRevision:"2b1331886076df103179e3da5dc9077fed59c989", User:"root", Host:"35adf5bb-5570-11e9-b00d-0a580a2c0205", GolangVersion:"go1.10.4", DockerHub:"docker.io/istio", BuildStatus:"Clean", GitTag:"1.1.1"}```

Service Entry
```apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: external-traffic
  namespace: cloud-infra
spec:
  hosts:
  - "*.cluster.local"
  ports:
  - number: 50506
    name: grpc-xxx
    protocol: TCP
  location: MESH_EXTERNAL
  resolution: NONE```

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Вам нужно добавить DestinationRule и политику:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: destinationrule-test
spec:
  host: service-name
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
    portLevelSettings:
    - port:
        number: 8080
      tls:
        mode: DISABLE
---
apiVersion: authentication.istio.io/v1alpha1
kind: Policy
metadata:
  name: policy-test
spec:
  targets:
  - name: service-name
    ports:
    - number: 8080
  peers:

Это было протестировано с istio 1.0, но, вероятно, будет работать для istio 1.1.Это в значительной степени вдохновлено документацией https://istio.io/help/ops/setup/app-health-check/

0 голосов
/ 13 мая 2019

Из вашего вопроса я понял, что вы хотите контролировать свой входной трафик разрешить некоторые порты для ваших служб, которые функционируют в вашей сетке / кластере извне, но ваша конфигурация предназначена для выходного трафика .

Чтобы контролировать и разрешать порты для ваших служб извне, выполните следующие действия.

1. Убедитесь, что containerPort включено в конфигурацию развертывания / модуля.Для получения дополнительной информации

2.Вы должны иметь службу, указывающую на ваши бэкэнды / модули.Для получения дополнительной информации о Kubernetes Services .3. Затем в вашем кластере с поддержкой Istio вы должны создать Gateway, аналогичную приведенной ниже конфигурации:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: your-service-gateway
  namespace: foo-namespace # Use same namespace with backend service
spec:
  selector:
    istio: ingressgateway # use Istio default gateway implementation
  servers:
  - port:
      number: 80
      name: HTTP
      protocol: HTTP
    hosts:
    - "*"

4. Затем настроить маршрут к вашему сервису для трафика, входящего через этот gateway, создав VirtualService:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: your-service
  namespace: foo-namespace # Use same namespace with backend service
spec:
  hosts:
  - "*"
  gateways:
  - your-service-gateway # define gateway name
  http:
  - match:
    - uri:
        prefix: "/"
    route:
    - destination:
        port:
          number: 3000 # Backend service port
        host: your-service # Backend service name

Надеюсь, это поможет.

...