Как скрыть трафик от kube-probe в графе Kiali? - PullRequest
0 голосов
/ 15 февраля 2019

Я развернул приложение в кластере kubernetes + istio.Я использовал http-зонд для проверки готовности.В разделе «График» Kiali трафик kube-probe отображается в виде строки от unkonwn до httpbin.Я попытался добавить «x-b3-sampled» заголовок http, чтобы избежать записи для этого трафика.Но это не работает.Есть ли способ скрыть трафик от kube-probe?

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: httpbin
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: httpbin
        version: v1
    spec:
      containers:
      - image: docker.io/citizenstig/httpbin
        imagePullPolicy: IfNotPresent
        name: httpbin
        ports:
        - containerPort: 8000
        readinessProbe:
          httpGet:
            path: /get
            port: 8000
            httpHeaders:
            - name: 'x-b3-sampled'
              value: '0'
          initialDelaySeconds: 5
          timeoutSeconds: 1
        livenessProbe:
          tcpSocket:
            port: 8000
          initialDelaySeconds: 5
          timeoutSeconds: 1

1 Ответ

0 голосов
/ 15 февраля 2019

ОБНОВЛЕНИЕ: Это на самом деле будет исправлено в Istio 1.1, и приятно то, что вы можете легко применить патч самостоятельно, не дожидаясь 1.1, как это указано в конфигах yaml:

Ссылка на патч:https://github.com/istio/istio/pull/10480

Так что для Istio 1.0.x вам, в основном, нужно отредактировать пользовательский ресурс типа Rule с именем promhttp в пространстве имен istio-system, чтобы установить следующее выражение match:

  match: (context.protocol == "http" || context.protocol == "grpc") && (match((request.useragent | "-"), "kube-probe*") == false)

Первоначальный ответ:

Я не уверен, есть ли для этого «чистое» решение, но в нижней части этой страницы документа описан обходной путь: https://istio.io/docs/tasks/traffic-management/app-health-check/#liveness-and-readiness-probes-with-http-request-option

Поскольку прокси-сервер Istio перехватывает только те порты, которые явно объявлены в поле containerPort, трафик на порт 8002 обходит прокси-сервер Istio независимо от того, включен ли взаимный TLS Istio.

Таким образом, вы можете настроить конечные точки работоспособности, используя другой порт, который вы не объявили бы как порты контейнера, и таким образом трафик не будет перехвачен прокси-посланником, следовательно, он выиграет 't генерировать телеметрию в Kiali.

Это не идеальное решение, поскольку оно заставляет вас определенным образом формировать ваше приложение для Istio ... но, тем не менее, оно работает.

[Редактировать,только что обнаружил: https://istio.io/help/faq/telemetry/#controlling-what-the-sidecar-reports.Похоже, вы также можете отфильтровать запросы от телеметрии на основе источника.Хотя я не уверен, сработает ли это в том случае, когда источник «неизвестен»]

...