gpt4 book ai didi

azure - 由于政策原因,AKS 无法修改入口创建时的 AGIC

转载 作者:行者123 更新时间:2023-12-03 02:11:55 30 4
gpt4 key购买 nike

我刚刚完成使用 AGIC 设置 AKS 并使用 Azure CNI。我正在尝试部署 NGINX 来测试是否使用以下配置正确设置 AKS:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
kubernetes.io/ingress.allow-http: "false"
appgw.ingress.kubernetes.io/use-private-ip: "false"
appgw.ingress.kubernetes.io/override-frontend-port: "443"
spec:
tls:
- hosts:
- my.domain.com
secretName: aks-ingress-tls
rules:
- host: my.domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
component: nginx
template:
metadata:
labels:
component: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: ClusterIP
selector:
component: nginx
ports:
- port: 80
protocol: TCP

应用上述配置时没有错误或任何其他日志消息。

> k apply -f nginx-test.yml
deployment.apps/nginx-deployment created
service/nginx-service created
ingress.networking.k8s.io/nginx-ingress created
<小时/>

但是在应用程序网关中进行进一步调查后,我发现事件日志中的这些条目在我应用上述配置的同时弹出。

Activity log in AGIC

其中一个条目的更多详细信息如下:

  • 操作名称:创建或更新应用程序网关
  • 错误代码:RequestDisallowedByPolicy
  • 消息:资源“my-application-gateway”被策略禁止。
    [
    {
    "policyAssignment": {
    "name": "Encryption In Transit",
    "id": "/providers/Microsoft.Management/managementGroups/***/providers/Microsoft.Authorization/policyAssignments/EncryptionInTransit"
    },
    "policyDefinition": {
    "name": "HTTPS protocol only on Application Gateway listeners",
    "id": "/providers/microsoft.management/managementgroups/***/providers/Microsoft.Authorization/policyDefinitions/HttpsOnly_App_Gateways"
    },
    "policySetDefinition": {
    "name": "Encryption In Transit",
    "id": "/providers/Microsoft.Management/managementgroups/***/providers/Microsoft.Authorization/policySetDefinitions/EncryptionInTransit"
    }
    }
    ]

我的组织有强制执行 TLS 的策略,但从我的配置来看,我不确定我做错了什么,因为我已经将入口配置为仅使用 HTTPS 并且还安装了证书(来自 secret )。

我不知道该往哪里看,希望有人能引导我走向正确的方向。谢谢!

最佳答案

• 正如您所说,您的组织有一个强制执行 TLS 的策略,以确保通过 HTTPS 进行加密通信的安全。因此,当您通过发布的“yaml”文件创建“NGINX”部署时,您可以看到nginx应用程序正在尝试通过端口80连接到应用程序网关入口 Controller 保留用于 HTTP 通信。因此,您的 nginx 应用程序也不允许使用 AGIC 的私有(private) IP,因为 nginx 应用程序直接覆盖 HTTPS 443 端口,以便通过端口 80 访问域“my.domain.com”,而不使用 SSL/基于 TLS 证书的通信端口

因此,建议您将 NGINX 应用程序的端口 443 配置为集群 IP 的前端端口,并确保在部署 NGINX 应用程序时将“SSL 重定向”设置为启用,就不会因为政策限制而失败。另外,在为 AKS 集群预配 AGIC 时,请参阅应用程序网关和负载均衡器中的监听器的以下快照。

AKS application gateway backend port

AKS application gateway frontend port

此外,有关在端口上的 AKS 集群中部署 NGINX 应用程序的更多详细信息,请参阅以下文档链接:-

<强> https://learn.microsoft.com/en-us/azure/aks/ingress-basic?tabs=azure-cli

关于azure - 由于政策原因,AKS 无法修改入口创建时的 AGIC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73103779/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com