https://github.com/elmazzun/cilium-kind-lab
https://github.com/elmazzun/cilium-kind-lab
cilium cilium-cluster-mesh cluster-mesh ebpf kind kubernetes kubernetes-cluster-mesh
Last synced: 7 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/elmazzun/cilium-kind-lab
- Owner: elmazzun
- Created: 2024-12-29T19:09:14.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-03-20T15:01:57.000Z (7 months ago)
- Last Synced: 2025-03-20T16:22:13.056Z (7 months ago)
- Topics: cilium, cilium-cluster-mesh, cluster-mesh, ebpf, kind, kubernetes, kubernetes-cluster-mesh
- Language: Shell
- Homepage:
- Size: 11.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# cilium-kind-lab
This repo creates two local [kind](https://kind.sigs.k8s.io/) clusters and uses [Cilium](https://cilium.io/)
as their CNI.I'm trying to use Cilium as much as possible to implement Service Mesh, Cluster
Mesh, Gateway API, monitoring and observabilityFor now, these cluster hold no particular application.
## The environment
The following tools are required in order to run the init script:
- `docker` (will NOT be installed by script)
- `helm` (will NOT be installed by script)
- `kind` (will NOT be installed by script)
- `kubectl` (will NOT be installed by script)
- `cilium` (will be installed by script)
- `hubble` (will be installed by script)Please note that kind cluster may fail to start because of low resources limits:
check https://kind.sigs.k8s.io/docs/user/known-issues/#pod-errors-due-to-too-many-open-files.My current `inotify` limits:
```bash
sysctl -a
...
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1280
fs.inotify.max_user_watches = 655360
...
```Following my working environment where I developed this repo:
```bash
$ lsb_release -a
No LSB modules are available.
Distributor ID: Linuxmint
Description: Linux Mint 21
Release: 21
Codename: vanessa$ uname -r
6.8.0-40-generic$ docker version -f json | jq '.Client.Version'
"28.0.1"$ helm version --short
v3.17.1+g980d8ac$ kind version
kind v0.26.0 go1.23.4 linux/amd64$ kubectl version --client -o json | jq '.clientVersion.gitVersion'
"v1.29.7"$ cilium version
cilium-cli: v0.16.22 compiled with go1.23.4 on linux/amd64
cilium image (default): v1.16.4
cilium image (stable): v1.16.5
cilium image (running): 1.16.5$ hubble version
hubble v1.16.5@HEAD-6dbbd44 compiled with go1.23.4 on linux/amd64
```## The clusters
Each cluster is made of 1 control-plane node and 2 worker nodes.
In order to create the clusters, just run `./setup.sh`.
```bash
$ ./setup.sh
```## TODO
- [X] replace `kube-proxy` with Cilium
- [X] create more than one `kind` cluster and make them communicate via Cilium Cluster Mesh
- [ ] install k8s dashboard
- [ ] install Hubble
- [ ] enable Cilium Service Mesh
- [ ] expose Services by using Cilium Gateway API