{"id":36496238,"url":"https://github.com/dlisin/yandex-cloud-controller-manager","last_synced_at":"2026-01-12T02:04:35.766Z","repository":{"id":64307358,"uuid":"164442241","full_name":"dlisin/yandex-cloud-controller-manager","owner":"dlisin","description":"Kubernetes Cloud Controller Manager for Yandex.Cloud","archived":false,"fork":false,"pushed_at":"2020-01-20T19:50:31.000Z","size":7560,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T03:48:30.424Z","etag":null,"topics":["controller-manager","golang","kubernetes","yandex-cloud"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dlisin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-07T14:11:54.000Z","updated_at":"2024-06-20T03:48:30.425Z","dependencies_parsed_at":"2023-01-15T11:00:16.334Z","dependency_job_id":null,"html_url":"https://github.com/dlisin/yandex-cloud-controller-manager","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dlisin/yandex-cloud-controller-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlisin%2Fyandex-cloud-controller-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlisin%2Fyandex-cloud-controller-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlisin%2Fyandex-cloud-controller-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlisin%2Fyandex-cloud-controller-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dlisin","download_url":"https://codeload.github.com/dlisin/yandex-cloud-controller-manager/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlisin%2Fyandex-cloud-controller-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28331516,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"online","status_checked_at":"2026-01-12T02:00:08.677Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["controller-manager","golang","kubernetes","yandex-cloud"],"created_at":"2026-01-12T02:01:44.275Z","updated_at":"2026-01-12T02:04:35.759Z","avatar_url":"https://github.com/dlisin.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kubernetes Cloud Controller Manager for Yandex.Cloud\n[![Build Status](https://travis-ci.org/dlisin/yandex-cloud-controller-manager.svg?branch=master)](https://travis-ci.org/dlisin/yandex-cloud-controller-manager)\n[![Go Report Card](https://goreportcard.com/badge/github.com/dlisin/yandex-cloud-controller-manager)](https://goreportcard.com/report/github.com/dlisin/yandex-cloud-controller-manager)\n[![codecov](https://codecov.io/gh/dlisin/yandex-cloud-controller-manager/branch/master/graph/badge.svg)](https://codecov.io/gh/dlisin/yandex-cloud-controller-manager)\n[![Docker Pulls](https://img.shields.io/docker/pulls/dlisin/yandex-cloud-controller-manager.svg)](https://hub.docker.com/r/dlisin/yandex-cloud-controller-manager/)\n\n## Overview\n`yandex-cloud-controller-manager` is the Kubernetes Cloud Controller Manager (CCM) implementation for Yandex.Cloud.  \nIt allows you to leverage many of the cloud provider features offered by Yandex.Cloud on your Kubernetes clusters.\nRead more about Kubernetes CCM [here](https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/). \n\nCurrently `yandex-cloud-controller-manager` implements:\n* `NodeController` - responsible for updating kubernetes nodes with cloud provider specific labels and addresses and deleting kubernetes nodes that were deleted on your cloud.\n\nIn the future, it may implement:\n* `ServiceController` - responsible for creating LoadBalancers when a service of `Type: LoadBalancer` is created in Kubernetes.\n* `RouteController` - responsible for creating firewall rules.\n\n\n## Work In Progress\nThis project is currently under active development. Use at your own risk!\nContributions welcome!\n\n\n## Getting Started\n\n### Requirements\nAt the current state of Kubernetes, running Cloud Controller Manager (CCM) requires a few things.\nPlease read through the requirements carefully as they are critical to running CCM on a Kubernetes cluster on Yandex.Cloud.\n\n#### Version\nKubernetes 1.11+\n\n#### Cloud resources\n* All Kubernetes nodes **MUST** be located in the same `Folder`.\nFor more details about folders - refer to official [documentation](https://cloud.yandex.ru/docs/resource-manager/concepts/resources-hierarchy)\n* Kubernetes node names **MUST** match the VM name.\nBy default, the `kubelet` will name nodes based on the node hostname. On Yandex.Cloud, node hostname is set based on the VM name. \nSo, it is important that the node name on Kubernetes matches corresponding VM name, otherwise CCM will not be able to find corresponding cloud resources.\n\n#### Cluster configuration\n* `kubelet` **MUST** run with `--cloud-provider=external`. \nThis is to ensure that the `kubelet` is aware that it must be initialized by the CCM before it is scheduled any work.\n* `kube-apiserver` and `kube-controller-manager` **MUST NOT** set the flag `--cloud-provider` which will default them to use no cloud provider natively.\n\n**WARNING**: setting `--cloud-provider=external` will taint all nodes in a cluster with `node.cloudprovider.kubernetes.io/uninitialized`.\nIt is the responsibility of CCM to untaint those nodes once it has finished initializing them. \nThis means that most pods will be left unschedulable until the CCM is running.\n\n### Deployment\n\n#### Authentication and Configuration\nThe `yandex-cloud-controller-manager` requires a API Access Token and the Folder ID stored in the following environment variables:\n* `YANDEX_CLOUD_ACCESS_TOKEN`\n* `YANDEX_CLOUD_FOLDER_ID`\n\nThe default manifest is configured to set these environment variables from a secret named `yandex-cloud`:\n\n```bash\n$ cat \u003c\u003cEOF | kubectl apply -f -\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    k8s-app: yandex-cloud-controller-manager\n  name: yandex-cloud\n  namespace: kube-system\nstringData:\n  access-token: \"AQAAAAABf_abc123abc123abc123abc123abc123\"\n  folder-id: \"b1g4c2a3g6vkffp3qacq\"\nEOF\n```\n\n#### Installation - with RBAC\n```bash\nkubectl apply -f manifests/yandex-cloud-controller-manager-rbac.yaml\nkubectl apply -f manifests/yandex-cloud-controller-manager.yaml\n```\n\n#### Installation - without RBAC\n```bash\nkubectl apply -f manifests/yandex-cloud-controller-manager.yaml\n```\n\n**NOTE**: the deployments in `manifests` folder are meant to serve as an example. \nThey will work in a majority of cases but may not work out of the box for your cluster.\n\n\n## Development\nThe `yandex-cloud-controller-manager` is written in Google's Go programming language. \nCurrently, it is developed and tested on **Go 1.11.5**. \nIf you haven't set up a Go development environment yet, please follow [these instructions](https://golang.org/doc/install).\n\n### Download Source\n```bash\n$ go get -u github.com/dliin/yandex-cloud-controller-manager\n$ cd $(go env GOPATH)/src/github.com/dliin/yandex-cloud-controller-manager\n```\n\n### Dependency management\n`yandex-cloud-controller-manager` uses [Dep](https://github.com/golang/dep) to manage dependencies. \nDependencies are already checked in the `vendor` folder. If you want to update/add dependencies, run:\n```bash\n$ make dep\n```\n\n### Build Binary\nTo build `yandex-cloud-controller-manager` binary, run:\n```bash\n$ make build\n```\n\n### Building Docker images\nTo build Docker image, use the following make target: \n```bash\n$ DOCKER_TAG=dev make docker-build\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdlisin%2Fyandex-cloud-controller-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdlisin%2Fyandex-cloud-controller-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdlisin%2Fyandex-cloud-controller-manager/lists"}