KubernetesのIngressを入口にして後はIstioのサービスメッシュに任せたい場合に、Ingressとingressgatewayを接続する必要があります。microk8sを使ってこれを実現するのに少し迷ったのでメモとして残します。
istio-ingressgateway をClusterIPにする
istio-ingressgatewayはデフォルトでLoadBalancerタイプになっていますのでClusterIPに変更します。
kubectl -n istio-system edit svc istio-ingressgateway
# type: LoadBalancer になっている部分を type: ClusterIP に変更して保存
Ingressをistio-systemネームスペースにデプロイする
istio-system
ネームスペースにデプロイして、istio-ingressgateway
サービスにトラフィックを向けます。
istio-ingressgateway
はサービスメッシュの入り口となるサービスで、ここから先はサービスメッシュの定義に従って制御されます。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: http-ingress
namespace: istio-system
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: istio-ingressgateway
servicePort: 80