Aller au contenu principal
Sommaire de la formation

Créer un Gateway et des HTTPRoute

coolibra120 vues

Gateway API :

  • Déploiement :
    • Créer un Gateway

    • Deployer une app de test avec HTTPRoute


Créer un Gateway

  • Le deploiement de cilium avec gateway api a créé automatiquement un gatewayclass une sorte d'ingressclass
kubectl get gatewayclasses -o wide

 

 

    • Exemple de gateway
      • Gatewyaclass name: cilium
      • Hostname ibra.techledger.io
      • Certificat let's encrypt via l'annotation cluster-issuer

 

    • 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: cilium
  listeners:
  - name: https
    protocol: HTTPS
    port: 443
    hostname: ibra.techledger.io # on peut utiliser *.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

 

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.5

 

Commentaires

Connectez-vous pour rejoindre la discussion.

Aucun commentaire pour le moment.