Cloud Controller Manager (cloud-controller-manager) є компонент панелі управління Kubernetes, що вбудовує логіку управління, специфічну для хмари. Cloud controller manager дозволяє звʼязувати ваш кластер з API хмарного провайдера та відокремлює компоненти, що взаємодіють із хмарною платформою, від компонентів, які взаємодіють тільки з вашим кластером.
Відокремлюючи логіку сумісності між Kubernetes і базовою хмарною інфраструктурою, компонент cloud-controller-manager дає змогу хмарним провайдерам випускати функції з іншою швидкістю порівняно з основним проєктом Kubernetes.
Оскільки хмарні постачальники розробляють і випускають свої продукти в іншому темпі, ніж проєкт Kubernetes, винесення специфічного для постачальника коду в окремий бінарний файл cloud-controller-manager дає змогу хмарним постачальникам розвиватися незалежно від основного коду Kubernetes.
Проєкт Kubernetes надає кістяк коду cloud-controller-manager з інтерфейсами Go, щоб дозволити вам (або вашому постачальнику хмар) додати свої власні реалізації. Це означає, що постачальник хмар може реалізувати cloud-controller-manager, імпортуючи пакунки з ядра Kubernetes; кожен постачальник хмар буде реєструвати свій власний код, викликаючи cloudprovider.RegisterCloudProvider, щоб оновити глобальну змінну доступних постачальників хмар.
Для створення зовнішнього cloud-controller-manager для вашої хмари:
main.go у cloud-controller-manager з ядра Kubernetes як шаблон для свого main.go. Як зазначено вище, єдина відмінність полягатиме у пакунку хмари, який буде імпортуватися.main.go, переконайтеся, що ваш пакунок має блок init для запуску cloudprovider.RegisterCloudProvider.Багато постачальників хмар публікують код свого менеджера контролерів як відкритий код. Якщо ви створюєте новий cloud-controller-manager з нуля, за відправну точку можна взяти наявний зовнішній cloud-controller-manager.
Для внутрішніх постачальників хмар можна запустити внутрішній cloud-controller-manager як DaemonSet у вашому кластері. Докладніше дивіться Адміністрування Cloud Controller Manager.