Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
- [Firewalling](./topics/firewalling.md)
- [Placement Groups](./topics/placement-groups.md)
- [Cluster Object Store](./topics/cluster-object-store.md)
- [Linode Cloud Controller Manager](./topics/linode-cloud-controller-manager.md)
- [Development](./developers/development.md)
- [Releasing](./developers/releasing.md)
- [Testing](./developers/testing.md)
Expand Down
40 changes: 40 additions & 0 deletions docs/src/topics/linode-cloud-controller-manager.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Linode Cloud Controller Manager

CAPL installs [linode-cloud-controller-manager (CCM)](https://github.com/linode/linode-cloud-controller-manager) by default to all child clusters
via [Cluster API Addon Provider Helm (CAAPH)](https://github.com/kubernetes-sigs/cluster-api-addon-provider-helm)

## Purpose of Linode CCM

CCM is linode specific implementation of [Cloud Controller Manager](https://kubernetes.io/docs/concepts/architecture/cloud-controller/). It implements below mentioned controllers:
* Node Controller: used for managing node objects in k8s cluster
* Service Controller: used for managing services and exposing them to outside world
* Route Controller: used for managing routes when running k8s cluster within VPC

## Installing CCM in custom environments (linode specific only)

When running CAPL in custom environments, one need to set additional environment vars. Linodego requires CA to be set so that it doesn't fail due to self signed certs. One can download the cert chain using:

```sh
echo -n | openssl s_client -showcerts -connect <URL>:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
```
Check the cert contents and if its a CA, use it.

Additional vars which needs to be set for custom enviroments:
```sh
export LINODE_URL=<env specific API path>
export LINODE_CA=<env specific CA file path on disk>
export LINODE_EXTERNAL_SUBNET=<network to be marked as public network>
export LINODE_CA_BASE64=<base64 encoded value of LINODE_CA cert content>
```

When running CCM with [cilium-bgp](https://github.com/linode/linode-cloud-controller-manager?tab=readme-ov-file#shared-ip-load-balancing) mode in custom environment, one needs to also set:

```sh
export BGP_CUSTOM_ID_MAP=<custom id map to use>
export BGP_PEER_PREFIX=<peer prefix value>
```

## Additional details

Refer to the [Linode CCM Documentation](https://github.com/linode/linode-cloud-controller-manager/blob/main/README.md)
for further information on configuring and using CCM.
Loading