apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: assortment-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- myapp.centralus.cloudapp.azure.com
secretName: aks-ingress-tls
rules:
- host: myapp.centralus.cloudapp.azure.com
http:
paths:
- path: /my-service
backend:
serviceName: my-backend
servicePort: 80
部署和服务
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: myservice
spec:
containers:
- name: myservice
image: myreg.azurecr.io/my-latest
imagePullPolicy: Always
ports:
- name: http
containerPort: 8080
imagePullSecrets:
- name: my-auth
apiVersion: v1
kind: Service
metadata:
name: my-backend
spec:
type: ClusterIP
selector:
app: myservice
ports:
- name: http
protocol: TCP
port: 80
targetPort: 8080
但是
curl https://myapp.centralus.cloudapp.azure.com/my-service
给予
默认后端-404
请注意myapp.centralus.cloudapp.azure.com已解析为入口控制器的公共IP
当我使用相同的配置创建类型为LoadBalancer的服务时,它将与公共api一起使用。
答案 0 :(得分:1)
首先检查您的Pod是否处于运行状态。
或
可能是因为过多的端口从80重定向到8080导致无法服务到目标端口。
您的配置是绝对正确的,这很简单,问题可能是pod无法运行或等待一段时间才能清除浏览器的缓存。
答案 1 :(得分:0)
将TLS与Ingress一起使用时,还有两种使用证书的方式。
一个是使用您自己的证书。您可以按照Create an HTTPS ingress controller and use your own TLS certificates on Azure Kubernetes Service (AKS)中的步骤进行操作。但是,为此,您只能访问如下网址:
curl -v -k --resolve demo.azure.com:443:yourIngressExternalIP https://demo.azure.com
当您使用通过公共IP在Azure中设置的DNS名称时,可以根据情况创建以下证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-out aks-ingress-tls.crt \
-keyout aks-ingress-tls.key \
-subj "/CN=myapp.centralus.cloudapp.azure.com/O=aks-ingress-tls"
然后您可以使用命令curl https://myapp.centralus.cloudapp.azure.com
,但是它将显示为:
使用浏览器访问URL时,它将显示如下:
要使用其他方式,您可以按照Create an ingress controller with a static public IP address in Azure Kubernetes Service (AKS)中的步骤进行操作。我建议这样。试试看。
答案 2 :(得分:0)
问题是,当通过ngix控制器访问后端应用程序时,添加了以下标头
X-FORWARDED-PROTO: https
X-FORWARDED-PORT: 443
通过LoadBalancer的公共IP访问它不是问题 当我们添加标题
时,可能会重现该问题curl -v 104.43.164.105 -H "X-Forwarded-Proto: https"
找到302人
application.yaml中的以下spring-boot配置不喜欢这些附加标头
server:
useForwardHeaders: true
此问题已由
修复server:
useForwardHeaders: false
或
完全删除上述配置。