Skip to content

linode/linode-cloud-controller-manager

Repository files navigation

Kubernetes Cloud Controller Manager for Linode

Go Report Card Continuous Integration codecov Docker Pulls Twitter

Overview

The Linode Cloud Controller Manager (CCM) is a crucial component that integrates Kubernetes with Linode's infrastructure services. It implements the cloud-controller-manager binary, running cloud-specific control loops that are essential for cluster operation.

A Cloud Controller Manager (CCM) is a Kubernetes control plane component that embeds cloud-specific control logic. It lets you link your cluster to your cloud provider's API, separating out the components that interact with that cloud platform from components that only interact with your cluster.

Core Components

Node Controller

  • Initializes node configuration with Linode-specific information
    • Sets node addresses (public/private IPs)
    • Labels nodes with region/zone information
    • Configures node hostnames
  • Monitors node health and lifecycle
    • Detects node termination
    • Updates node status
    • Manages node cleanup

Service Controller

  • Manages LoadBalancer service implementations using Linode NodeBalancers
    • Creates and configures NodeBalancers
    • Updates backend pools
    • Manages SSL/TLS certificates
  • Handles automatic provisioning and configuration
    • Health checks
    • Session affinity
    • Protocol configuration
  • Supports multiple load balancing approaches
    • Traditional NodeBalancer deployment
    • BGP-based IP sharing for cost optimization
    • Custom firewall rules and security configurations

Route Controller

  • Manages VPC and private network integration
    • Configures routes for pod CIDR ranges
    • Handles cross-node pod communication
  • Ensures proper network connectivity
    • Sets up pod-to-pod networking
    • Manages network policies
    • Configures network routes for optimal communication

Requirements

  • Kubernetes 1.22+
  • Kubelets, controller-manager, and apiserver with --cloud-provider=external
  • Linode APIv4 Token
  • Supported Linode region

Documentation

Quick Start

Configuration

Examples and Development

Getting Help

Community Support

For general help or discussion, join us in #linode on the Kubernetes Slack.

To sign up for Kubernetes Slack, use the Kubernetes Slack inviter.

Issue Tracking

If you've found a bug or want to request a feature:

Additional Resources

Contributing

Want to improve the Linode Cloud Controller Manager? Please see our contributing guidelines.