The official container networking plugin for both OECP of Alibaba Cloud and SOFAStack of Ant Financial Co.

Rama

What is Rama?

Rama is an open source container networking solution, integrated with Kubernetes and used officially by following well-known PaaS platforms,

  • OECP of Alibaba Cloud
  • SOFAStack of Ant Financial Co.

Rama focus on large-scale, user-friendly and heterogeneous infrastructure, now hundreds of clusters are running on rama all over world.

Features

  • Flexible network models: three-level, Network, Subnet and IPInstance, all implemented in CRD
  • DualStack: three modes optional, IPv4Only, IPv6Only and DualStack
  • Hybrid network fabric: support overlay and underlay pods at same time
  • Advanced IPAM: Network/Subnet/IPInstance assignment; stateful workloads IP retain
  • Kube-proxy friendly: working well with iptables-mode kube-proxy
  • ARM support: run on x86_64 and arm64 architectures

Contributing

Rama welcome contributions, including bug reports, feature requests and documentation improvements. If you want to contribute, please start with CONTRIBUTING.md

Contact

For any questions about rama, please reach us via:

  • Slack: #general on the rama slack
  • DingTalk: Group No.35109308
  • E-mail: private or security issues should be reported via e-mail addresses listed in the MAINTAINERS file

License

Apache 2.0 License

Comments
  • feat: support specify mac addr via annotation

    feat: support specify mac addr via annotation

    Pull Request Description

    Describe what this PR does / why we need it

    Introduce a new feature: support specifying MAC address via pod annotation.

    Does this pull request fix one issue?

    Fixes #190

    Describe how you did it

    1. Verify the validness of specified MAC address in validating webhook;
    2. Check whether the specified MAC address is in conflict with existing IP instances.

    Describe how to verify it

    Specify a static MAC address via annotation "networking.alibaba.com/specified-mac" on Pod.

    Special notes for reviews

  • bugfix: iptables compatibility for nftables-based hosts

    bugfix: iptables compatibility for nftables-based hosts

    Pull Request Description

    Describe what this PR does / why we need it

    iptables tools is confronted with nftables compatibility problem on host, eg. CentOS 8.

    kube-proxy and cilium has solved this problem, so should we.

    Does this pull request fix one issue?

    Fixes #29

    Describe how you did it

    COPY and RUN iptables-wrapper-install.sh in Dockerfile

    The shell script comes from: https://github.com/kubernetes-sigs/iptables-wrappers/

    Describe how to verify it

    Pull image. on k8s cluster on both iptables-legacy based hosts and iptables-nft based hosts.

    Run sudo iptables-save | grep RAMA, then you should see related entries on both types of hosts.

    Special notes for reviews

  • Support specify mac pool for stateful workloads

    Support specify mac pool for stateful workloads

    Pull Request Description

    Describe what this PR does / why we need it

    Support specify MAC address pool via pod annotation for stateful workloads.

    Does this pull request fix one issue?

    Fixes #190

    Describe how you did it

    1. Verify the validness of specified MAC addresses in validating webhook;
    2. Introduce SpecifiedMACAddress as one of the couple/recouple options;
    3. Check whether the specified MAC address is in conflict with existing IP instances.

    Describe how to verify it

    Similar to ip pool assignment which is described in wiki docs. Just specify MAC addresses via annotation networking.alibaba.com/mac-pool on stateful workload pod templates, and separate them by comma.

    Special notes for reviews

  • change Kube-ovn to Kube-OVN and fix grammar issues

    change Kube-ovn to Kube-OVN and fix grammar issues

    Pull Request Description

    Describe what this PR does / why we need it

    Change Kube-ovn to Kube-OVN and fix grammar issues

    Does this pull request fix one issue?

    No

    Describe how you did it

    No

    Describe how to verify it

    Doc change

    Special notes for reviews

    Also make some clarification that Kube-OVN has the default VPC and Subnet that can be used by workloads in all namespaces. Even if users have no idea about the VPC and the Subnet, the default settings will make all things work just like Flannel.

  • iptables not correctly configured on CentOS 8 host

    iptables not correctly configured on CentOS 8 host

    Bug Report

    Type: bug report

    What happened

    An compatibility problem might it be.

    I set up a k8s cluster with CentOS 8 (which links iptables to nftables) and runs pods on Overlay and Underlay networks. I observed that on the host machines, the cmd lsmod | grep ip_tables shows that ip_tables is used by iptable_nat, iptable_mangle, and iptable_filter.

    After checking the logs of daemon pods, I believe the iptables rule is written without error. But on host machine, no rama-related iptables rules shown through either iptables-save or nft rule list.

    To be mentioned, iptables-save warns that there are more rules on iptables-legacy.

    What you expected to happen

    I should observe rama-related rules in iptables-save.

    How to reproduce it (as minimally and precisely as possible)

    Set up a k8s cluster CentOS 8 nodes. Install rama and run several Overlay/Underlay pods.

    Anything else we need to know?

    CentOS 8 removes iptables from packages and links it to nftables.

    Kube-proxy works perfectly.

    Environment

    • rama version: v1
    • OS (e.g. cat /etc/os-release): CentOS 8
    • Kernel (e.g. uname -a): Linux 4.18.0-305.7.1.el8_4.x86_6
    • Kubernetes version: v1.21.
  • Update network.go

    Update network.go

    as mentioned in issue #350
    vlanId should not be greater than 4094


    Describe what this PR does / why we need it

    vanId range bugfix

    Does this pull request fix one issue?

    Fixes #350

    Describe how you did it

    changed 4096 to 4094

    Describe how to verify it

    Special notes for reviews

  • fix arm build error

    fix arm build error

    Pull Request Description

    Describe what this PR does / why we need it

    Does this pull request fix one issue?

    Describe how you did it

    Describe how to verify it

    Special notes for reviews

  • introduce typha for large scale

    introduce typha for large scale

    Pull Request Description

    Describe what this PR does / why we need it

    1. Use the Calico Typha daemon to increase scale and reduce impact on the datastore.
    2. Add init container to clean felix iptables rule automatically while policy is disabled.

    Does this pull request fix one issue?

    Describe how you did it

    Describe how to verify it

    Special notes for reviews

  • update chart for large scale

    update chart for large scale

    Pull Request Description

    Describe what this PR does / why we need it

    1. Make liveness probe of daemon configurable.
    2. Make metrics port of manager configurable.
    3. Introduce performance parameters of manager to chart for large scale.

    Does this pull request fix one issue?

    NONE

    Describe how you did it

    Describe how to verify it

    Special notes for reviews

  • make cni conf configurable

    make cni conf configurable

    Pull Request Description

    Describe what this PR does / why we need it

    1. Rename the default name of cni conf file from /etc/cni/net.d/00-hybridnet.conflist to /etc/cni/net.d/06-hybridnet.conflist.
    2. Remove the bandwidth plugin in cni conf.
    3. Introduce some environment variables for install-cni container of daemon:
      • Use CNI_CONF_NAME to rename the cni conf file, e.g.,04-hybridnet.conflist.
      • Use NEEDED_COMMUNITY_CNI_PLUGINS to specify which cni community plugins need to be copied by hybridnet from inside container to the /opt/cni/bin/ directory of host, e.g. loopback,bandwidth.
      • Use CNI_CONF_SRC to specify which file in the container need to be copied to the /etc/cni/net.d directory of host, with which users can mount a custom cni conf file (e.g. using configmap as volume) into install-cni container and distribute it to every node.

    Does this pull request fix one issue?

    Describe how you did it

    Describe how to verify it

    Special notes for reviews

  • enhanced address is being used from node to local pods unexpectedlly

    enhanced address is being used from node to local pods unexpectedlly

    Bug Report

    Type: bug report

    What happened

    image

    image

    Enhanced address is being used, when we want to ping local pods from node. This will cause the ICMP reply will never come back.

    What you expected to happen

    How to reproduce it (as minimally and precisely as possible)

    Anything else we need to know?

    Environment

    • hybridnet version: 3.2.0
    • OS (e.g. cat /etc/os-release):
    • Kernel (e.g. uname -a):
    • Kubernetes version:
    • Install tools:
    • Others:
  • Support IP multicast

    Support IP multicast

    Issue Description

    Type: feature request

    Describe what feature you want

    1. Support IP multicast in overlay network
    2. Support IP multicast between underlay network pod and underlying network

    Additional context

  • add a

    add a "can-reach" method to choose host NIC

    Issue Description

    Type: feature request

    Describe what feature you want

    Add "can-reach" parameters for daemon to choose host NIC, just like calico.

    Additional context

  • choose preferred host interface by subnet

    choose preferred host interface by subnet

    Issue Description

    Type: feature request

    Describe what feature you want

    Now hybridnet is choosing preferred host interface through two flags. They are not configurable enough. We need a new CRD which can be attached to subnets.

    Additional context

  • Multi-tenancy

    Multi-tenancy

    Issue Description

    Type: feature request

    Describe what feature you want

    Multi-tenancy is a common topic in kubernetes, as we know, some container networking solutions may have related abilities on this. If this done, the following advantages will reach,

    • Container networking isolation between tenants
    • Allow IPAM conflict between tenants

    Additional context

Related tags
provide api for cloud service like aliyun, aws, google cloud, tencent cloud, huawei cloud and so on

cloud-fitter 云适配 Communicate with public and private clouds conveniently by a set of apis. 用一套接口,便捷地访问各类公有云和私有云 对接计划 内部筹备中,后续开放,有需求欢迎联系。 开发者社区 开发者社区文档

Dec 20, 2022
Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers.

Cloud-Z Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers. Cloud type, instance id, and type CPU infor

Jun 8, 2022
GitHub Rate Limits Prometheus exporter. Works with both App and PAT credentials
GitHub Rate Limits Prometheus exporter. Works with both App and PAT credentials

Github Rate Limit Prometheus Exporter A prometheus exporter which scrapes GitHub API for the rate limits used by PAT/GitHub App. Helm Chart with value

Sep 19, 2022
oci-ccm custom build for both arm64 and amd64

OCI Cloud Controller Manager (CCM) oci-cloud-controller-manager is a Kubernetes Cloud Controller Manager implementation (or out-of-tree cloud-provider

Jan 18, 2022
Moby Project - a collaborative project for the container ecosystem to assemble container-based systems
Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

The Moby Project Moby is an open-source project created by Docker to enable and accelerate software containerization. It provides a "Lego set" of tool

Jan 8, 2023
Boxygen is a container as code framework that allows you to build container images from code

Boxygen is a container as code framework that allows you to build container images from code, allowing integration of container image builds into other tooling such as servers or CLI tooling.

Dec 13, 2021
Amazon ECS Container Agent: a component of Amazon Elastic Container Service
Amazon ECS Container Agent: a component of Amazon Elastic Container Service

Amazon ECS Container Agent The Amazon ECS Container Agent is a component of Amazon Elastic Container Service (Amazon ECS) and is responsible for manag

Dec 28, 2021
The Container Storage Interface (CSI) Driver for Fortress Block Storage This driver allows you to use Fortress Block Storage with your container orchestrator

fortress-csi The Container Storage Interface (CSI) Driver for Fortress Block Storage This driver allows you to use Fortress Block Storage with your co

Jan 23, 2022
MTLS - Golang mTLS example,mTLS using TLS do both side authentication & authorization
MTLS - Golang mTLS example,mTLS using TLS do both side authentication & authorization

mTLS Golang Example mTLS Golang Example 1. What is mutual TLS (mTLS)? 2. How doe

Dec 21, 2022
MTLS - Golang mTLS example,mTLS using TLS do both side authentication & authorization
MTLS - Golang mTLS example,mTLS using TLS do both side authentication & authorization

mTLS Golang Example mTLS Golang Example 1. What is mutual TLS (mTLS)? 2. How doe

Jan 1, 2022
Secure Edge Networking Based On Kubernetes And KubeEdge.
Secure Edge Networking Based On Kubernetes And KubeEdge.

What is FabEdge FabEdge is an open source edge networking solution based on kubernetes and kubeedge. It solves the problems including complex network

Jan 3, 2023
ip-masq-agent-v2 aims to solve more specific networking cases, allow for more configuration options, and improve observability compared to the original.

ip-masq-agent-v2 Based on the original ip-masq-agent, v2 aims to solve more specific networking cases, allow for more configuration options, and impro

Aug 31, 2022
Azure Kubernetes Service (AKS) advanced networking (CNI) address space calculator.

aksip Azure Kubernetes Service (AKS) advanced networking (CNI) address space calculator. Download Download the the latest version from the releases pa

Dec 23, 2022
Kubectl Locality Plugin - A plugin to get the locality of pods

Kubectl Locality Plugin - A plugin to get the locality of pods

Nov 18, 2021
The GCP Enterprise Cloud Cost Optimiser, or gecco for short, helps teams optimise their cloud project costs.
The GCP Enterprise Cloud Cost Optimiser, or gecco for short, helps teams optimise their cloud project costs.

gecco helps teams optimise their cloud resource costs. Locate abandoned, idle, and inefficiently configured resources quickly. gecco helps teams build

Jan 9, 2022
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers

Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? How to

Oct 19, 2021
Cloud-gaming-operator - The one that manages VMs for cloud gaming built on GCE

cloud-gaming-operator GCE上に建てたクラウドゲーミング用のVMを管理するやつ 事前準備 GCEのインスタンスかマシンイメージを作成してお

Jan 22, 2022
Cloud-on-k8s- - Elastic Cloud on Kubernetes (ECK)

Elastic Cloud on Kubernetes (ECK) Elastic Cloud on Kubernetes automates the depl

Jan 29, 2022
Official Golang implementation of the Thinkium node

Go Thinkium Official Golang implementation of the Thinkium node. Building the source mkdir build docker run --rm -w /go/src/github.com/ThinkiumGroup/g

Nov 22, 2022