Go to file
2025-06-19 22:26:14 -07:00
10-mycelium.conflist First version CNI plugin 2025-06-19 22:26:14 -07:00
docker-demo.sh Init 2025-06-19 22:17:52 -07:00
go.mod First version CNI plugin 2025-06-19 22:26:14 -07:00
main.go First version CNI plugin 2025-06-19 22:26:14 -07:00
Makefile First version CNI plugin 2025-06-19 22:26:14 -07:00
README.md First version CNI plugin 2025-06-19 22:26:14 -07:00

Mycelium CNI Plugin

A Container Network Interface (CNI) plugin that enables Kubernetes containers to connect to the Mycelium network.

Overview

This CNI plugin integrates with the Mycelium overlay network to provide IPv6 connectivity for Kubernetes containers. It creates veth pairs and assigns IPv6 addresses from the host's Mycelium /64 block to containers.

Prerequisites

  • Mycelium daemon running on the host
  • Go 1.21+
  • Root privileges for installation

Installation

# Build the plugin
make build

# Install plugin and configuration
make install

Configuration

The plugin uses a CNI configuration file (10-mycelium.conflist) that specifies the Mycelium interface name:

{
  "cniVersion": "1.0.0",
  "name": "mycelium-network",
  "plugins": [
    {
      "type": "mycelium-cni",
      "myceliumInterface": "mycelium"
    }
  ]
}

How it Works

  1. ADD Operation: Creates a veth pair, moves one end to the container namespace, assigns an IPv6 address from the Mycelium prefix, and sets up routing.

  2. DEL Operation: Cleans up the host-side veth interface when containers are destroyed.

Testing

Start Mycelium daemon first:

sudo mycelium --peers tcp://188.40.132.242:9651 tcp://136.243.47.186:9651

Then use with Kubernetes or test directly with CNI tools.

Architecture

Based on the docker-demo.sh script, this plugin:

  • Uses IPv6 addressing from Mycelium's /64 block
  • Creates veth pairs for container connectivity
  • Sets up routing for Mycelium network (400::/7)
  • Enables IPv6 forwarding on the host