我有一个问题,那就是如何用Istio Ingress网关配置Strimzi操作符,以同时为引导和代理服务提供服务。
我已经将Istio部署到以下网关和虚拟服务中,用于服务器引导和代理:
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
annotations:
name: strimzi-kafka-gw-broker
namespace: strimzi
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- myserver
port:
name: https
number: 9094
protocol: HTTP2
tls:
mode: SIMPLE
credentialName: myserver-tls
---
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
annotations:
name: strimzi-kafka-gw-bootstrap
namespace: strimzi
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- myserver
port:
name: tls-9093
number: 9093
protocol: TLS
tls:
mode: SIMPLE
credentialName: myserver-tls
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
annotations:
name: strimzi-kafka-vs-broker
namespace: strimzi
spec:
gateways:
- strimzi-kafka-gw-broker
hosts:
- my-server
http:
- match:
- uri:
prefix: /
route:
- destination:
host: kafka-cluster-01-kafka-brokers
port:
number: 9092
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
annotations:
name: strimzi-kafka-vs-bootstrap
namespace: strimzi
spec:
gateways:
- strimzi-kafka-gw-bootstrap
hosts:
- my-server
tcp:
- match:
- port: 9093
route:
- destination:
host: kafka-cluster-01-kafka-bootstrap
port:
number: 9092问题是,当我在Kubernetes中通过Strimzi运营商部署Kafka资源时,我需要将代理的广告地址和广告端口设置为Kafka客户端,以便通过Ingress使用,它还将在同一个端口上创建一个侦听器,因为Istio无法服务同一个端口。
Stimzi Kafka资源:
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: kafka-cluster-01
spec:
kafka:
version: 3.1.0
replicas: 2
listeners:
- name: internal
port: 9092
type: internal
tls: false
configuration:
brokers:
- broker: 0
advertisedHost: my-server
advertisedPort: 9094
- broker: 1
advertisedHost: my-server
advertisedPort: 9094
- broker: 2
advertisedHost: my-server
advertisedPort: 9094
config:
offsets.topic.replication.factor: 2
transaction.state.log.replication.factor: 2
transaction.state.log.min.isr: 2
default.replication.factor: 2
min.insync.replicas: 2
inter.broker.protocol.version: "3.1"
receive.message.max.bytes: 1513486160
advertised: my-server
storage:
type: jbod
volumes:
- id: 0
type: persistent-claim
size: 100Gi
deleteClaim: false
zookeeper:
replicas: 1
storage:
type: persistent-claim
size: 100Gi
deleteClaim: false
entityOperator:
topicOperator: {}
userOperator: {}我如何告诉Kafka (Strimzi)使用代理的广告地址和端口,而无需在其上创建一个侦听器来在其前面使用一个in (Istio)?
我没有在Strimzi的文档中找到这个。
谢谢。
发布于 2022-04-09 15:42:49
我现在也避免了这种缓慢。问题是,我使用了Strimzi操作符部署的kubernetes服务kafka-cluster-01-kafka-brokers,但是它在我的两个kafka代理之间的工作就像一个负载平衡器,所以它有时在我的主题中请求错误的分区,而被请求的代理不包含这个分区。在为每个代理吊舱安装了专用服务之后,我就能够在前面安装一个卡夫卡队列,Istio在前面。
我只需要告诉Stimzi操作符,如何在每个吊舱中部署一个专用的服务,并分别标记这些吊舱。
https://stackoverflow.com/questions/71754389
复制相似问题