HTTPRoute istio gatewayClassName
coolibra99 vues
Istio Gateway API :
- HTTPRoute istio gatewayClassName

Créer un Gateway et un HTTPRoute
- Le deploiement de istio avec gateway api a créé automatiquement un gatewayclass une sorte d'ingressclass
kubectl get gatewayclasses -o wide

-
- Exemple de gateway
- Gatewyaclass name: istio
- Hostname ibra.techledger.io
- Certificat let's encrypt via l'annotation cluster-issuer
- Exemple de gateway
-
- gateway.yaml
- A la difference de cilium gateway api, istio crée un deployment pour gerer le proxy.
- gateway.yaml
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: public-gateway
namespace: default
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod # indique à cert-manager d'utiliser ce ClusterIssuer
spec:
gatewayClassName: istio
listeners:
- name: https
protocol: HTTPS
port: 443
hostname: ibra.techledger.io
tls:
mode: Terminate
certificateRefs:
- name: mon-site-techledger-io-cert-tls # cert-manager va le créer
allowedRoutes:
namespaces:
from: Same
- name: http
protocol: HTTP
port: 80
hostname: ibra.techledger.io
allowedRoutes:
namespaces:
from: Same
-
- Appliquer le fichier gateway.yaml
kubectl apply -f gateway.yaml
-
-
- Cilium a attribué une ip automatiquement au gateway
- Cert-manager a créé un certificat let's encrypt automatiquement pour le domaine ibra.techledger.io
-

Ce deployement a été créé automatiquement par istio pour gerer le LB du gateay

Deployer une app de test
- Creer une app avec HTTPRoute
- app.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-web
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: nginx-web
template:
metadata:
labels:
app: nginx-web
spec:
containers:
- name: nginx
image: nginx:stable
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-web
namespace: default
spec:
selector:
app: nginx-web
ports:
- port: 80
targetPort: 80
type: ClusterIP
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: nginx-web-route
namespace: default
spec:
parentRefs:
- name: public-gateway
hostnames:
- ibra.techledger.io
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: nginx-web
port: 80
-
- Appliquer le fichier app.yaml
kubectl apply -f app.yaml
kubectl get httproutes,po,svc

-
- j'ai mis un enregistrement dans mon fichier /etc/hosts pour resoudre ibra.techledger.io sur l'ip 10.10.10.12

Commentaires
Connectez-vous pour rejoindre la discussion.
Aucun commentaire pour le moment.