Search

Cilium Ingress Controller

cilium의 ingress controller가 다른 ingress controller와 다른 점은 deployment, daemonset으로 배포 되는게 아닌, Loadbalancer 또는 nodeport 타입의 서비스를 통해 노출되거나, 선택적으로 호스트 네트워크 또는 deployment, daemonset으로 설치할 수 있다는 점이다.
어떤 방식을 사용하든 cilium에선 서비스 포트에 트래픽이 도착 시 eBPF 코드가 트래픽을 가로채서 TPROXY 커널 기능을 사용해서 Envoy로 전달하며 ingress를 통해 들어오는 트래픽과, ingress로 나가는 트래픽에 cilium network policy를 적용 가능하다.
helm upgrade cilium cilium/cilium \ --namespace kube-system \ --reuse-values \ --set ingressController.enabled=true \ --set ingressController.loadbalancerMode=shared \ --set ingressController.default=true \ --set nodePort.enabled=true kubectl -n kube-system rollout restart deployment/cilium-operator kubectl -n kube-system rollout restart ds/cilium
Shell
복사
ingress 사용 하지 않고 envoy 트래픽 관리만 사용하려면 아래의 명령어를 사용
helm upgrade cilium cilium/cilium \ --namespace kube-system \ --reuse-values \ --set envoyConfig.enabled=true kubectl -n kube-system rollout restart deployment/cilium-operator kubectl -n kube-system rollout restart ds/cilium
Shell
복사
proxy 부하 분산은 아래의 명령어를 사용
helm upgrade cilium cilium/cilium \ --namespace kube-system \ --reuse-values \ --set loadBalancer.l7.backend=envoy kubectl -n kube-system rollout restart deployment/cilium-operator kubectl -n kube-system rollout restart ds/cilium
Shell
복사
Demo App
kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
Shell
복사
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: basic-ingress namespace: default spec: ingressClassName: cilium rules: - http: paths: - backend: service: name: details port: number: 9080 path: /details pathType: Prefix - backend: service: name: productpage port: number: 9080 path: / pathType: Prefix
YAML
복사
kubectl apply -f ingress.yaml
Shell
복사