出现这个问题的原因是因为 Kubernetes 中使用了 TLS 密钥来保障安全,所以需要使用 HTTPS 协议来连接 OpenFaaS ,而在运行 OpenFaaS 函数时,节点与查询 Load Balancer URL 的过程中可能会出现问题。
解决此问题的一种方法是在 AKS 上启用节点的访问控制,使节点能够直接连接内部负载均衡器中的服务。可以使用以下命令来为 Kubernetes 中的节点启用访问控制:
az aks update --resource-group your-resource-group-name --name your-aks-name --api-server-authorized-ip-ranges 1.2.3.4/32
此命令允许特定的 IP 地址范围连接到 AKS 集群的 API 服务器。然后,在 Kubernetes Load Balancer 前面配置一个外部 Load Balancer,以便在从 AKS 节点到 Load Balancer 的过程中使用 TLS/HTTPS 连接。您可以使用 Kubernetes 中的 Nginx、Haproxy、Traefik 等软件作为 Load Balancer。
下面是一个使用 Nginx 作为负载均衡器的示例 Nginx 配置文件示例:
events {
}
http {
upstream openfaas {
server 10.0.0.4:8080;
}
server {
listen 443 ssl;
server_name openfaas.example.com;
location / {
proxy_pass http://openfaas;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
}
}