tree: 2a231623b33b43ed21960aefb21d85fe82beabbc [path history] [tgz]
  1. .gitignore
  2. Dockerfile
  3. Gopkg.lock
  4. Gopkg.toml
  5. LICENSE-2.0
  6. Makefile
  7. README.md
  8. cloudstack.go
  9. cloudstack_instances.go
  10. cloudstack_loadbalancer.go
  11. cloudstack_test.go
  12. cmd/
  13. deployment.yaml
  14. metadata.go
  15. metadata_linux.go
  16. metadata_other.go
  17. service.yaml
  18. vendor/
README.md

Cloudstack Cloud Controller Manager

A Cloud Controller Manager to facilitate Kubernetes deployments on Cloudstack.

Based on the old Cloudstack provider in kube-controller-manager.

Build

All dependencies are vendored. You need GNU make, git and Go 1.10 to build cloudstack-ccm.

go get github.com/swisstxt/cloudstack-cloud-controller-manager
cd ${GOPATH}/src/github.com/swisstxt/cloudstack-cloud-controller-manager
make

To build the cloudstack-cloud-controller-manager container, please use the provided Docker file:

docker build . -t swisstxt/cloudstack-cloud-controller-manager:latest

Use

Prebuilt containers are posted on Docker Hub.

Kubernetes

To deploy the ccm in the cluster see deployment.yaml and configure your cloudstack and api server connection. See the comments.

Protocols

This CCM supports TCP, UDP and TCP-Proxy LoadBalancer deployments.

For UDP and Proxy Protocol support, CloudStack 4.6 or later is required.

Since kube-proxy does not support the Proxy Protocol or UDP, you should connect this directly to containers, for example by deploying a DaemonSet and setting hostNetwork: true.

See service.yaml for an example Service deployment and part of a suitable configuration for an ingress controller.

Development

Make sure your apiserver is running locally and keep your cloudstack config ready:

./cloudstack-ccm --cloud-provider external-cloudstack --cloud-config cloud.config --master localhost

Copyright

© 2018 SWISS TXT AG and the Kubernetes authors.

See LICENSE-2.0 for permitted usage.