Как скрыть трафик от 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/. Похоже, вы также можете отфильтровать запросы от телеметрии на основе источника. Хотя я не уверен, сработает ли это в том случае, когда источник "неизвестен"]