Configuré Istio (modo de entrada de Kubernetes, NO Istio Gateway) en GKE. Sin embargo, no puedo acceder desde afuera usando curl
kubectl get svc -n istio-system | grep ingressgatewayistio-ingressgateway LoadBalancer 10.48.11.240 35.222.111.100 15020:30115/TCP,80:31420/TCP,443:32019/TCP,31400:31267/TCP,15029:30180/TCP,15030:312502/1TCP,321420/TCP TCP,15032:30437/TCP,15443:31792/TCP 41h
curl 35.222.111.100curl: (7) Error al conectarse al puerto 80 35.222.111.100: Conexión rechazada
Esta es la configuración de Ingress:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: istio name: ingress spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: in-keycloak port: number: 8080Esta es la configuración del Servicio:
apiVersion: v1 kind: Service metadata: name: in-keycloak labels: app: keycloak spec: ports: - name: http port: 8080 targetPort: 8080 selector: app: keycloak type: ClusterIPSi uso la misma configuración para Docker Desktop en una máquina local (MacOS), funciona bien.
Hay 2 cosas que se deben cumplir en GKE para que funcione con istio en un clúster privado.
1. Para que istio funcione en GKE, debe seguir estas instrucciones para preparar un clúster de GKE para Istio. También incluía abrir un puerto 15017 para que istio pudiera funcionar.
For private GKE clusters An automatically created firewall rule does not open port 15017. This is needed by the Pilot discovery validation webhook. To review this firewall rule for master access: $ gcloud compute firewall-rules list --filter="name~gke-${CLUSTER_NAME}-[0-9a-z]*-master" To replace the existing rule and allow master access: $ gcloud compute firewall-rules update <firewall-rule-name> --allow tcp:10250,tcp:443,tcp:150172. En comparación con la documentación de istio, diría que su ingreso no está configurado correctamente, a continuación puede encontrar un recurso de ingreso de la documentación que podría intentar usar en su lugar:
apiVersion: networking.k8s.io/v1beta1 kind: IngressClass metadata: name: istio spec: controller: istio.io/ingress-controller --- apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: ingress spec: ingressClassName: istio rules: - host: httpbin.example.com http: paths: - path: / pathType: Prefix backend: serviceName: httpbin servicePort: 8000