У меня есть кластер 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.
Это возможно?