cilium-bgp

問題名

cilium-bgp

概要

cilium+BGPをdocument(https://docs.cilium.io/en/stable/gettingstarted/bgp/) 通りに構築したが、うまくいかない。
何が間違っているのかと、Ingress Nginxまで構築、検証してほしい。

  • ingress-nginxを構築する際には、helmを利用し構築すると良い。
helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx --create-namespace

前提条件

問題の意図から外れないこと。

初期状態

一部のPodがContainerCreatingの状態から進まない。

終了状態

Nginx IngressをService Type LoadBlancerで構築し、該当のexternal IP(192.168.26.10)に踏み台サーバからアクセスをすると404が返ってくる。

解説

調査

CNIである、ciliumのPodがcrashしているため他のPodが立ち上がらない。
ciliumのPodのLogを確認しみる。

kubectl logs cilium-x6trf -n kube-system

すると以下のログが見れる。

level=fatal msg="Failed to open BGP config file" error="open /var/lib/cilium/bgp/config.yaml: no such file or directory" subsys=bgp-speaker

修正

原因はciliumのbgp-configというConfigMapが誤っていたことによるもの。
MetalLBのconfig-mapに似ているが、違う点がある。
修正前

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: kube-system
  name: bgp-config
data:
  config: |
    peers:
    - peer-address: 192.168.26.254
      peer-asn: 65020
      my-asn: 65021
    address-pools:
    - name: default
      protocol: bgp
      addresses:
      - 192.168.26.10/31

修正後

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: kube-system
  name: bgp-config
data:
  config.yaml: |
    peers:
    - peer-address: 192.168.26.254
      peer-asn: 65020
      my-asn: 65021
    address-pools:
    - name: default
      protocol: bgp
      addresses:
      - 192.168.26.10/31

diff

7c7
<   config: |
---
>   config.yaml: |

また、修正しNginx Ingressを構築してcurlなどでIngressから404が返ってくることを確認する。