Реестр схем в Kubernetes, общедоступный

У меня есть кластер Kubernetes с тремя узлами в Azure, с тремя брокерами Kafka и одним экземпляром zookeeper. Брокеры Kafka и zookeeper общедоступны путем развертывания соответствующих служб (Load Balancer).

Сейчас я развертываю реестр схем и хочу, чтобы он был доступен извне кластера Kubernetes. Я выполняю те же шаги, что и раньше, но не могу получить доступ к api реестра схемы из-за пределов кластера kubernetes. Если я скручиваю реестр схемы из контейнера докеров, все работает нормально, поэтому я предполагаю, что реестр схемы работает правильно. Вот мои дескрипторы yamls реестра схем:

Развертывание реестра схемы:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: schema-registry
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: schema-registry
    spec:
      containers:
      - env:
        - name: SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL
          value: zookeeper-cluster-ip:2181
        - name: SCHEMA_REGISTRY_HOST_NAME
          value: registry-0.schema.default.svc.cluster.local
        - name: SCHEMA_REGISTRY_LISTENERS
          value: http://0.0.0.0:8081
        name: schema-registry
        image: confluentinc/cp-schema-registry:5.0.1
        ports:
        - containerPort: 8081
      restartPolicy: Always

Служба реестра схем:

apiVersion: v1
kind: Service
metadata:
  name: schema-registry
  labels:
    name: schema-registry
spec:
  ports:
  - port: 8081
  selector:
    name: schema-registry
  type: LoadBalancer

После развертывания службы создается общедоступный IP-адрес:

kubectl get services
NAME              TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)                      AGE
schema-registry   LoadBalancer   X.X.X.X.       X.X.X.X.       8081:30921/TCP               13m

так что я бегу

curl -X GET -i -H "Content-Type: application/vnd.schemaregistry.v1+json" http://X.X.X.X:8081/subjects

Но ответа нет. Изнутри контейнера я получаю ответ от команды curl.

Причина, по которой я хочу, чтобы реестр схемы был доступен извне кластера, заключается в том, что мы хотим получить к нему доступ из кластера Nifi.

Это возможно?


person josele    schedule 27.11.2018    source источник
comment
Интересно, даст ли использование Confluent Helm Charts другой результат?   -  person OneCricketeer    schedule 27.11.2018


Ответы (2)


Раньше я сталкивался с той же проблемой, и я решил ее с помощью селектора / приложения.

Deployment:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  namespace: ***
  name: schema-registry
  labels:
    app: schema-registry
spec:
  replicas: 1
  selector:
    matchLabels:
      app: schema-registry
  template:
    metadata:
      labels:
        app: schema-registry
    spec:
      containers:
      - name: schema-registry
        image: confluentinc/cp-schema-registry:5.3.0
        ports:
        - containerPort: 8081
        imagePullPolicy: Always
        env:
        - name: SCHEMA_REGISTRY_HOST_NAME
          value: schema-registry
        - name: SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL
          value: ***
        - name: SCHEMA_REGISTRY_LISTENERS
          value: http://0.0.0.0:8081
        command:
        - bash
        - -c
        - unset SCHEMA_REGISTRY_PORT; /etc/confluent/docker/run

Service:
apiVersion: v1
kind: Service
metadata:
  annotations: 
    service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
  name: schema-registry
  namespace: ***
  labels:
    app: schema-registry
spec:
  selector:
    app: schema-registry
  ports:
  - port: 8081
  type: LoadBalancer

Надеюсь, это будет полезно!

person Sophie    schedule 29.08.2019

Причиной проблемы была простая проблема с правилом брандмауэра. Конфигурация обслуживания и развертывания была в порядке. Спасибо, в любом случае!

person josele    schedule 28.11.2018