HTTP 客户端(声明式或低级)无法从 pod [Micronaut 1.1.4] 访问互联网
HTTP Client (Declarative or Low Level) could not access internet from the pod [Micronaut 1.1.4]
我构建了一个简单的 micronaut 项目,它像 tutorial 中显示的那样获取 Bintray。
当我这样访问容器时:
kubectl exec -it -n namespace demo sh
然后我可以执行一个 curl 看起来像这样
curl -x proxy:port https://bintray.com/path
这是工作。
不幸的是,我的应用程序中的客户端调用相同的 url 无法成功。
MyController.java
...
@Client("https://bintray.com/path/")
@Inject
RxHttpClient myclient;
...
申请-k8s.yml
micronaut:
http:
client:
proxy-address: proxy:port
proxy-type: HTTP
虽然 运行 在我的本地机器上测试和测试一切正常。
但是在 Kubernetes 上我有错误:
io.micronaut.http.server.netty.RoutingInBoundHandler
io.micronaut.http.server.netty.RoutingInBoundHandler:
Unexpected error occurred: Connect Error: bintray.com : System error
编辑 1
Dockerfile
FROM adoptopenjdk/openjdk11-openj9:jdk-11.0.1.13-alpine-slim
COPY target/demo*.jar demo.jar
ENV VERSION="v1.0"
CMD java -XX:+UnlockExperimentalVMOptions -Dcom.sun.management.jmxremote -noverify ${JAVA_OPTS} -jar demo.jar
configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: demo-configmap
labels:
app: demo
release: v1.0
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-deployment
labels:
app: demo
release: v1.0
spec:
selector:
matchLabels:
app: demo
release: v1.0
replicas: 1
template:
metadata:
labels:
app: demo
release: v1.0
spec:
containers:
- name: demo
image: demo:v1.0
imagePullPolicy: Always
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
timeoutSeconds: 5
failureThreshold: 6
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5
timeoutSeconds: 3
periodSeconds: 5
ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: demo-ingress
labels:
app: demo
release: v1.0
annotations:
traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip
spec:
rules:
- http:
paths:
- backend:
serviceName: demo
servicePort: 8080
path: /demo
networkpolicy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: demo-policy
labels:
app: demo
release: v1.0
spec:
podSelector:
matchLabels:
app: demo
release: v1.0
ingress:
- ports:
- port: 8080
protocol: TCP
service.yaml
apiVersion: v1
kind: Service
metadata:
name: demo-service
labels:
app: demo
release: v1.0
spec:
type: ClusterIP
ports:
- name: http
port: 8080
targetPort: 8080
selector:
app: demo
release: v1.0
我的问题是要知道使 micronaut 在 kubernetes 上工作的正确配置是什么?
是否有任何关于如何为 K8s 配置 Micronaut 的教程或扩展文档?
使用 Micronaut 1.2 似乎一切正常。
我构建了一个简单的 micronaut 项目,它像 tutorial 中显示的那样获取 Bintray。
当我这样访问容器时:
kubectl exec -it -n namespace demo sh
然后我可以执行一个 curl 看起来像这样
curl -x proxy:port https://bintray.com/path
这是工作。 不幸的是,我的应用程序中的客户端调用相同的 url 无法成功。
MyController.java
...
@Client("https://bintray.com/path/")
@Inject
RxHttpClient myclient;
...
申请-k8s.yml
micronaut:
http:
client:
proxy-address: proxy:port
proxy-type: HTTP
虽然 运行 在我的本地机器上测试和测试一切正常。
但是在 Kubernetes 上我有错误:
io.micronaut.http.server.netty.RoutingInBoundHandler
io.micronaut.http.server.netty.RoutingInBoundHandler:
Unexpected error occurred: Connect Error: bintray.com : System error
编辑 1
Dockerfile
FROM adoptopenjdk/openjdk11-openj9:jdk-11.0.1.13-alpine-slim
COPY target/demo*.jar demo.jar
ENV VERSION="v1.0"
CMD java -XX:+UnlockExperimentalVMOptions -Dcom.sun.management.jmxremote -noverify ${JAVA_OPTS} -jar demo.jar
configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: demo-configmap
labels:
app: demo
release: v1.0
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-deployment
labels:
app: demo
release: v1.0
spec:
selector:
matchLabels:
app: demo
release: v1.0
replicas: 1
template:
metadata:
labels:
app: demo
release: v1.0
spec:
containers:
- name: demo
image: demo:v1.0
imagePullPolicy: Always
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
timeoutSeconds: 5
failureThreshold: 6
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5
timeoutSeconds: 3
periodSeconds: 5
ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: demo-ingress
labels:
app: demo
release: v1.0
annotations:
traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip
spec:
rules:
- http:
paths:
- backend:
serviceName: demo
servicePort: 8080
path: /demo
networkpolicy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: demo-policy
labels:
app: demo
release: v1.0
spec:
podSelector:
matchLabels:
app: demo
release: v1.0
ingress:
- ports:
- port: 8080
protocol: TCP
service.yaml
apiVersion: v1
kind: Service
metadata:
name: demo-service
labels:
app: demo
release: v1.0
spec:
type: ClusterIP
ports:
- name: http
port: 8080
targetPort: 8080
selector:
app: demo
release: v1.0
我的问题是要知道使 micronaut 在 kubernetes 上工作的正确配置是什么?
是否有任何关于如何为 K8s 配置 Micronaut 的教程或扩展文档?
使用 Micronaut 1.2 似乎一切正常。