Соединение Jaeger с бэкэнд-хранилищем эластичного поиска на кластере Kubernetes
У меня есть кластер kubernetes на облачной платформе Google, и на нем у меня есть развертывание jaeger через настройку разработки шаблонов jaeger-kubernetes, потому что моя цель - настройка elasticsearch
как и в бэкэнд-хранилище, благодаря этому я слежу за документацией jaeger-kubernetes github со следующими действиями
- Я создал сервисы с помощью параметров настройки производства
Здесь настроены URL для доступа к elasticsearch
сервер и имя пользователя и пароль и порты
kubectl create -f https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/production-elasticsearch/configmap.yml
И вот, здесь настроены загрузка образов докеров сервиса asticsearch и их объемные монтирования.
kubectl create -f https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/production-elasticsearch/elasticsearch.yml
И затем, в этот момент у нас есть служба эластичного поиска, работающая через порты 9200 и 9300
kubectl get service elasticsearch [a89fbe2]
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch ClusterIP None <none> 9200/TCP,9300/TCP 1h
- Я следую за созданием компонентов Jaeger, используя
kubernetes-jaeger
Производственные шаблоны этого способа:
λ bgarcial [~] → kubectl create -f https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/jaeger-production-template.yml
deployment.extensions/jaeger-collector created
service/jaeger-collector created
service/zipkin created
deployment.extensions/jaeger-query created
service/jaeger-query created
daemonset.extensions/jaeger-agent created
λ bgarcial [~/workspace/jaeger-elastic] at master ?
Согласно егерской архитектуре, jaeger-collector
а также jaeger-query
сервисы требуют доступа к внутреннему хранилищу.
Итак, это мои сервисы, работающие на моем кластере kubernetes:
λ bgarcial [~/workspace/jaeger-elastic] at master ?
→ kubectl get services [baefdf9]
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch ClusterIP None <none> 9200/TCP,9300/TCP 3h
jaeger-collector ClusterIP 10.55.253.240 <none> 14267/TCP,14268/TCP,9411/TCP 3h
jaeger-query LoadBalancer 10.55.248.243 35.228.179.167 80:30398/TCP 3h
kubernetes ClusterIP 10.55.240.1 <none> 443/TCP 3h
zipkin ClusterIP 10.55.240.60 <none> 9411/TCP 3h
λ bgarcial [~/workspace/jaeger-elastic] at master ?
- я иду в
configmap.yml
упругий поиск файлаkubectl edit configmap jaeger-configuration
команда, чтобы попытаться отредактировать его относительно конечных точек URL-адресов эластичного поиска (может быть? ... В данный момент я полагаю, что это следующий шаг...)
Я выполняю это:
λ bgarcial [~] → kubectl edit configmap jaeger-configuration
И я получаю следующую запись редактирования:
apiVersion: v1
data:
agent: |
collector:
host-port: "jaeger-collector:14267"
collector: |
es:
server-urls: http://elasticsearch:9200
username: elastic
password: changeme
collector:
zipkin:
http-port: 9411
query: |
es:
server-urls: http://elasticsearch:9200
username: elastic
password: changeme
span-storage-type: elasticsearch
kind: ConfigMap
metadata:
creationTimestamp: "2018-12-27T13:24:11Z"
labels:
app: jaeger
jaeger-infra: configuration
name: jaeger-configuration
namespace: default
resourceVersion: "1387"
selfLink: /api/v1/namespaces/default/configmaps/jaeger-configuration
uid: b28eb5f4-09da-11e9-9f1e-42010aa60002
Здесь... мне нужно настроить наши собственные URL-адреса для служб сбора и запроса, которые будут подключаться к бэкэнд-сервису asticsearch?
Как я могу настроить IP-адрес и URL-адреса эластичного поиска здесь?
В компонентах jaeger запрос и сборщик нуждаются в доступе к хранилищу, но я не знаю, что такое эластичная конечная точка...
Это server-urls: http://elasticsearch:9200
правильная конечная точка?
Я начинаю в мире kubernetes и DevOps, и я ценю, если кто-то может помочь мне в концепциях и указать мне правильный адрес, чтобы настроить jaeger и asticsearch в качестве внутреннего хранилища.
1 ответ
Когда вы получаете доступ к сервису из модуля в том же пространстве имен, вы можете использовать только имя сервиса. Пример:
http://elasticsearch:9200
Если вы обращаетесь к сервису из модуля в другом пространстве имен, вам также следует указать пространство имен. Пример:
http://elasticsearch.mynamespace:9200
http://elasticsearch.mynamespace.svc.cluster.local:9200
Чтобы проверить, в каком пространстве имен расположена служба, используйте следующую команду:
kubectl get svc --all-namespaces -o wide
Примечание. Изменение ConfigMap не приводит к его немедленному развертыванию. Обычно вам нужно перезапустить все модули в развертывании, чтобы применить новые значения ConfigMap. В данный момент нет функции повторного запуска, но вы можете использовать следующую команду в качестве обходного пути:
(замените имя развертывания и имя модуля на настоящие)
kubectl patch deployment mydeployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"my-pod-name","env":[{"name":"START_TIME","value":"'$(date +%s)'"}]}]}}}}'