Как скрыть трафик от kube-probe в графе Kiali?

Я развернул приложение в кластере 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 ответ

ОБНОВЛЕНИЕ: Это на самом деле будет исправлено в 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/

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

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

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

[Изменить, только что обнаружил, что: https://istio.io/help/faq/telemetry/. Похоже, вы также можете отфильтровать запросы от телеметрии на основе источника. Хотя я не уверен, сработает ли это в том случае, когда источник "неизвестен"]

Другие вопросы по тегам