我有两个apis (api1和api2)被配置并部署在minikube集群中。Api1想要和Api2沟通。我也已经配置了注释和意图。但是,什么也没起作用。
当我删除“connect”注释时,它工作得很完美(api-1可以与api-2通信)。不过,这不适用于领事注射。我可以在日志中看到它,在api-1连接到api-2时,过早地关闭了连接,但是如果我从postman单独触发这两个api,我就会得到响应。
我的领事配置文件配置
global:
name: consul
datacenter: testcenter
image: hashicorp/consul:1.10.3
imageEnvoy: envoyproxy/envoy:v1.18.4
metrics:
enabled: true
enableAgentMetrics: true
server:
replicas: 1
ui:
enabled: true
connectInject:
enabled: true
default: false
syncCatalog:
enabled: false
controller:
enabled: true
prometheus:
enabled: false
grafana:
enabled: falseAPI-1 Config
apiVersion: v1
kind: Service
metadata:
name: order-service
spec:
selector:
app: order-service
ports:
- protocol: TCP
port: 5000
targetPort: 80
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: order-service
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: order-service
labels:
app: order-service
spec:
replicas: 1
selector:
matchLabels:
app: order-service
template:
metadata:
labels:
app: order-service
annotations:
'consul.hashicorp.com/connect-inject': 'true'
'consul.hashicorp.com/connect-service-upstreams': 'payment-service:5001'
spec:
containers:
- name: orderapi
image: image/orderapi:1.4
env:
- name: PaymentBaseUrl
value: "http://localhost:5001/"
ports:
- containerPort: 5000API-2 Config
apiVersion: v1
kind: Service
metadata:
name: payment-service
spec:
selector:
app: payment-service
ports:
- protocol: TCP
port: 5001
targetPort: 80
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: payment-service
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: payment-service
labels:
app: payment-service
spec:
replicas: 1
selector:
matchLabels:
app: payment-service
template:
metadata:
labels:
app: payment-service
annotations:
'consul.hashicorp.com/connect-inject': 'true'
spec:
containers:
- name: paymentapi
image: image/paymentapi:1.4
ports:
- containerPort: 5001发布于 2022-01-01 21:36:42
服务对象中的targetPort似乎不正确。您的服务分别侦听端口5000和5001。但是,您的Service对象被配置为将在端口5000或5001上接收的通信转发到端口80--在该端口中,容器没有侦听。
您应该能够通过修改服务配置来指向应用程序侦听的正确端口来解决这个问题。
---
apiVersion: v1
kind: Service
metadata:
name: order-service
spec:
selector:
app: order-service
ports:
- protocol: TCP
port: 80
targetPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: payment-service
spec:
selector:
app: payment-service
ports:
- protocol: TCP
port: 80
targetPort: 5001https://stackoverflow.com/questions/69862717
复制相似问题