Aller au contenu principal
Sommaire de la formation

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

 

    • gateway.yaml
      • A la difference de cilium gateway api, istio crée un deployment pour gerer le proxy.
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.