k8s-externalipcontroller

module
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 14, 2016 License: Apache-2.0

README

External ip controller Build Status

asciicast

Auto allocation of external IPs

Now users can utilize auto allocation feature.

In order to do that they must first provide IP pool for the allocator by creation of IpClaimPool resources. Here is example description for one in yaml format

apiVersion: ipcontroller.ext/v1
kind: IpClaimPool
metadata:
    name: test-pool
spec:
    cidr: 192.168.0.248/29
    ranges:
        - - 192.168.0.249
          - 192.168.0.250
        - - 192.168.0.252
          - 192.168.0.253

Few words about the Spec: CIDR is mandatory to supply. Ranges can be omitted (range of the whole network defined in "CIDR" field is used then). Exclusion of particular addresses is done via specifying multiple ranges. In example above address 192.168.0.251 is not processed by the allocator.

In order to enable auto allocation for particular services users must annotate them with following key-value pair - "external-ip = auto" either on creation or while the service is running (via kubectl annotate). After that there will be allocated exactly one external IP address for the service and IP claim will be created. Allocated address is then stored in 'allocated' field of pool object.

Users can create several IP pools. Allocator will process all of them in the same manner (looking for first available IP) and with no regard for order, that is users cannot control which pool an address is fetched from.

When service is deleted allocation is freed and returned to the pool of usable addresses again. Corresponding IP claim is removed.

Here is a brief demo of the functionality.

asciicast

How to run tests?

Install dependencies and prepare kube dind cluster

make get-deps

Build necessary images and run tests

make test

Directories

Path Synopsis
cmd
app
pkg
test

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL