Istio gateway service mesh yapısını gateway ile ingress(dıştan gelen) trafikler için de kullanabilmezi sağlıyor. Nasıl?
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*" # deployment env için bu tıkır tıkır çalışır. *
* Ama eğer prod ortamlarda istio kurulmak isteniyorsa * yerine domain adresi/adresleri yazmanız gerekiyor.
İpucu: Domain almadan da /etc/hosts editleyerek kendi bilgisayarınızı domain varmışcasına kandırabilirsiniz. 🙂
İşte benim örnek hosts dosyam;
..
127.0.25.36 kubernetesturkey.com
..
veeee
$ ping kubernetesturkey.com
PING kubernetesturkey.com (127.0.25.36) 56(84) bytes of data.
64 bytes from kubernetesturkey.com (127.0.25.36): icmp_seq=1 ttl=64 time=0.064 ms
Gateway tamam. Şimdi virtualservice geçelim.
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo
spec:
hosts:
- "*" # gateway bölümünde bahsetmiştim
gateways:
- bookinfo-gateway # burası önemli
http:
- match: # Kendini açıklıyor
- uri:
exact: /productpage
- uri:
prefix: /static
- uri:
exact: /login
- uri:
exact: /logout
- uri:
prefix: /api/v1/products
route:
- destination:
host: productpage
port:
number: 9080
Apply edip istioctl ile kontrol edelim.
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created
So far so good...
$ istioctl analyze
Error [IST0101] (Gateway bookinfo-gateway.default) Referenced selector not found: "istio=ingressgateway"
Error: Analyzers found issues when analyzing namespace: default.
See https://istio.io/docs/reference/config/analysis for more information about causes and resolutions.
Haydaa...
Devamı gelicek...
Linux sistem yöneticisi olarak başladığım kariyerime devops alanında devam ediyorum. Linux, kubernetes, docker ve go en sevdiğim alanlar.. Bunların dışında GCP ve AWS tecrübem var.