Aller au contenu principal
Sommaire de la formation

Installation istio, gateway api avec cilium cni

coolibra166 vues

Installation istio avec cilium cni :

  • Installation via Helm avec le mode ambient avec waypoint proxies

 

Installer Gateway API avec cilium cni

  • desactive gateway api
  • active kubeProxyReplacement

 

    •  cilium-values.yaml
        • Activation de kubeProxyReplacement
        • Activation de gateway api
kubeProxyReplacement: true
l7Proxy: true # Required pour GAMMA
k8sServiceHost: localhost # api server ip
k8sServicePort: 6443  # api server port
socketLB:
  enabled: false
  hostNamespaceOnly: true # pour eviter le conflit avec istio
cni:
  exclusive: false # pour eviter le conflit avec istio
encryption:
  enabled: false
  type: wireguard
  nodeEncryption: false
  strictMode:
    enabled: false
    cidr: "10.42.0.0/16"
hubble:
  relay:
    enabled: false
  ui:
    enabled: false
    ingress:
      enabled: false
      className: "cilium"
      hosts:
        - cilium-dev.local
ipam:
  operator:
    clusterPoolIPv4PodCIDRList: ["10.42.0.0/16"]
gatewayAPI:
  enabled: false
ingressController:
  enabled: false
  default: true
  enforceHttps: false
  loadbalancerMode: shared # dedicated or shared
  service:
    type: LoadBalancer
    loadBalancerIP: 10.70.70.44 # hors dhcp
    # annotations:
    #   io.cilium/lb-ipam-ips: 10.10.13.61
bgpControlPlane:
  enabled: false
operator:
  enabled: true
  replicas: 1

 

  • Deployer cilium
helm repo add cilium https://helm.cilium.io
helm repo update
helm upgrade --install clilium-cni cilium/cilium -n cilium-system --version 1.18.3 -f cilium-values.yaml --create-namespace

 

 

  • Cilium supporte l'ipam des service type LoadBalancer
    • Pour l'activer, il faut juste créer un CiliumLoadBalancerIPPool avec le range d'ip
apiVersion: "cilium.io/v2alpha1"
kind: CiliumLoadBalancerIPPool
metadata:
  name: "default-pool"
  namespace: cilium-system
spec:
  blocks:
  # - cidr: "10.0.10.0/24"
  - start: "10.10.10.5"
    stop:  "10.10.10.8"

 

  • Appliquer le fichier
kubectl apply -f cilium-ippool.yaml

 

  • Deployer Cert-manager
    • let's encrypt pour les certificats dns challenge
    • Activer gateway api
    • clusterissuer avec dns challenge pour cloudflare. A adapter selon votre cas
    • cert-manager-values.yaml
installCRDs: true
config:
  apiVersion: "controller.config.cert-manager.io/v1alpha1"
  kind: "ControllerConfiguration"
  enableGatewayAPI: true
extraObjects: []

 

  • Deployer cert-manager
helm repo add jetstack https://charts.jetstack.io --force-update
helm repo update
helm upgrade --install cert-manager jetstack/cert-manager -n cert-manager --version 1.19.1 -f cert-manager.yaml --create-namespace

 

  • Créer un clusterissuer
    • Mon domaine est chez cloudflare. Donc à adapter selon votre cas.
apiVersion: v1
kind: Secret
metadata:
  name: cloudflare-api-token-secret
  namespace: cert-manager
type: Opaque
stringData:
  api-token:  dfdkfdkfdkfdkfdkfdfdfd
---  
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    email: devops@techledger.io
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: techledger-issuer-account-key
    solvers:
    - dns01:
        cloudflare:
          email: devops@techledger.io  # cloudflare email
          apiTokenSecretRef:
            name: cloudflare-api-token-secret
            key: api-token

 

  • Appliquer le fichier
kubectl apply -f cluster-issuer.yaml

 

Installation Istio (mode Ambient) avec Helm natif

Version : 1.27.2
Repo : https://istio-release.storage.googleapis.com/charts
Namespace : istio-system

 

  • Ajouter le dépôt Helm Istio
 
helm repo add istio https://istio-release.storage.googleapis.com/charts
helm repo update

 

  • Créer le namespace
 
kubectl create namespace istio-system

 

  • Installer la base Istio (istio-base)
helm upgrade --install istio-base istio/base \
  --namespace istio-system \
  --version 1.27.2 \
  --set defaultRevision=default

 

 

Ce chart installe les CRDs et ressources de base nécessaires à Istio.

 

  • Installer le Control Plane (istiod)
helm upgrade --install istiod istio/istiod \
  --namespace istio-system \
  --version 1.27.2 \
  --set profile=ambient
   

profile=ambient configure Istiod pour l’Ambient Mesh (pas de sidecar).

 

  • Installer le plugin réseau (istio-cni)
helm upgrade --install istio-cni istio/cni \
  --namespace istio-system \
  --version 1.27.2 \
  --set profile=ambient

Ce plugin configure le réseau (iptables/ebpf) pour rediriger le trafic vers ztunnel.

 

 

  • Installer le proxy L4 (ztunnel)
helm upgrade --install istio-ztunnel istio/ztunnel \
  --namespace istio-system \
  --version 1.27.2

ztunnel s’installe en DaemonSet sur chaque node, gérant le chiffrement et routage L4.

 

  • Installer les waypoint proxies
    • Pour avoir les fonctionnalités avancées de gestion du trafic Istio (y compris l'autorisation L7, la télémétrie et le routage VirtualService), il faut deployer waypoint proxies en plus de ztunnel
    • Les waypoint proxies sont déployés à l'aide des ressources Kubernetes Gateway API.
export GATEWAY_API_VERSION=v1.4.0
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/$GATEWAY_API_VERSION/standard-install.yaml

 

 

 

Commentaires

Connectez-vous pour rejoindre la discussion.

Aucun commentaire pour le moment.