{"id":13538863,"url":"https://github.com/oracle/oci-cloud-controller-manager","last_synced_at":"2025-05-16T17:09:59.125Z","repository":{"id":37706428,"uuid":"102544030","full_name":"oracle/oci-cloud-controller-manager","owner":"oracle","description":"Kubernetes Cloud Controller Manager implementation for Oracle Cloud Infrastructure","archived":false,"fork":false,"pushed_at":"2025-02-18T11:57:40.000Z","size":140909,"stargazers_count":145,"open_issues_count":58,"forks_count":93,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-04-12T16:53:13.560Z","etag":null,"topics":["kubernetes","kubernetes-cluster","oracle-cloud","oracle-cloud-infrastructure"],"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/oracle.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-09-06T00:40:07.000Z","updated_at":"2025-04-09T11:34:20.000Z","dependencies_parsed_at":"2023-10-16T19:52:09.935Z","dependency_job_id":"8e3d736a-4522-4094-85f2-39305ddd3206","html_url":"https://github.com/oracle/oci-cloud-controller-manager","commit_stats":null,"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle%2Foci-cloud-controller-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle%2Foci-cloud-controller-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle%2Foci-cloud-controller-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle%2Foci-cloud-controller-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oracle","download_url":"https://codeload.github.com/oracle/oci-cloud-controller-manager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254573589,"owners_count":22093731,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["kubernetes","kubernetes-cluster","oracle-cloud","oracle-cloud-infrastructure"],"created_at":"2024-08-01T09:01:17.084Z","updated_at":"2025-05-16T17:09:59.079Z","avatar_url":"https://github.com/oracle.png","language":"Go","funding_links":[],"categories":["🏗相关开源项目"],"sub_categories":["Oracle"],"readme":"# OCI Cloud Controller Manager (CCM)\n\n`oci-cloud-controller-manager` is a Kubernetes Cloud Controller Manager\nimplementation (or out-of-tree cloud-provider) for [Oracle Cloud\nInfrastucture][1] (OCI).\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/oracle/oci-cloud-controller-manager)](https://goreportcard.com/report/github.com/oracle/oci-cloud-controller-manager)\n\n## Introduction\n\nExternal cloud providers were introduced as an _Alpha_ feature in Kubernetes\n1.6 with the addition of the [Cloud Controller Manager][2] binary. External\ncloud providers are Kubernetes (master) controllers that implement the\ncloud-provider specific control loops required for Kubernetes to function.\n\nThis functionality is implemented in-tree in the `kube-controller-manger` binary\nfor _existing_ cloud-providers (e.g. AWS, GCE, etc.), however, in-tree\ncloud-providers have entered maintenance mode and _no additional providers will\nbe accepted_. Furthermore, there is an ongoing effort to remove all existing\ncloud-provider specific code out of the Kubernetes codebase.\n\n## Compatibility matrix\n\n|           | Min Kubernetes Version | Max Kubernetes Version |\n|-----------|------------------------|------------------------|\n| \\\u003e=v 0.11 | v1.16                  | v1.18                  |\n| \\\u003e=v 0.12 | v1.18                  | v1.21                  |\n| \\\u003e=v 0.13 | v1.19                  | v1.21                  |\n| v1.19.12  | v1.19                  | v1.21                  |\n| v1.22.0   | v1.22                  | -                      |\n| v1.23.0   | v1.23                  | -                      |\n| v1.24.2   | v1.24                  | -                      |\n| v1.25.2   | v1.25                  | -                      |\n| v1.26.4   | v1.26                  | -                      |\n| v1.27.3   | v1.27                  | -                      |\n| v1.28.2   | v1.28                  | -                      |\n| v1.29.2   | v1.29                  | -                      |\n| v1.30.1   | v1.30                  | -                      |\n| v1.31.0   | v1.31                  | -                      |\n\n\nNote: \nVersions older than v1.28.2 are no longer supported, new features / bug fixes will be available in v1.28.2 and later. \n\n## Implementation\n Currently `oci-cloud-controller-manager` implements:\n\n - NodeController - updates nodes with cloud provider specific labels and\n   addresses, also deletes kubernetes nodes when deleted from the\n   cloud-provider.\n - ServiceController - responsible for creating load balancers when a service\n   of `type: LoadBalancer` is created in Kubernetes.\n\n Additionally, this project implements a container-storage-interface, a flexvolume driver and a flexvolume provisioner for Kubernetes clusters running on Oracle Cloud Infrastructure (OCI).\n\n## Setup and Installation\n\nTo get the CCM running in your Kubernetes cluster you will need to do the\nfollowing:\n\n 1. Prepare your Kubernetes cluster for running an external cloud provider.\n 2. Create a Kubernetes secret containing the configuration for the CCM.\n 3. Deploy the CCM as a [DaemonSet][4].\n\nNote: For the setup and installation of [flexvolume driver](flex-volume-driver.md), [flexvolume provisioner](flex-volume-provisioner.md) and [container-storage-interface](container-storage-interface.md) please refer linked resources.\n\n### Preparing Your Cluster\n\nTo deploy the Cloud Controller Manager (CCM) your cluster must be configured to\nuse an external cloud-provider.\n\nThis involves:\n - Setting the `--cloud-provider=external` flag on the `kubelet` on **all\n   nodes** in your cluster.\n - Setting the `--provider-id=\u003cinstanceID\u003e` flag on the `kubelet` on **all\n   nodes** in your cluster. \n   Where `\u003cinstanceID\u003e` is the [instance ocid][11] of a node (unique for each node).\n - Setting the `--cloud-provider=external` flag on the `kube-controller-manager`\n   in your Kubernetes control plane.\n\n**Depending on how kube-proxy is run you _may_ need the following:**\n\n- Ensuring that `kube-proxy` tolerates the uninitialised cloud taint. The\n  following should appear in the `kube-proxy` pod yaml:\n\n```yaml\n- effect: NoSchedule\n  key: node.cloudprovider.kubernetes.io/uninitialized\n  value: \"true\"\n```\n\nIf your cluster was created using `kubeadm` \u003e= v1.7.2 this toleration will\nalready be applied. See [kubernetes/kubernetes#49017][5] for details.\n\nRemember to restart any components that you have reconfigured before continuing.\n\n### Authentication and Configuration\n\nAn example configuration file can be found [here][7]. Download this file and\npopulate it with values specific to your chosen OCI identity and tenancy.\nThen create the Kubernetes secret with the following command:\n\nFor CCM -\n```bash\n$ kubectl  create secret generic oci-cloud-controller-manager \\\n     -n kube-system                                           \\\n     --from-file=cloud-provider.yaml=provider-config-example.yaml\n```\nNote that you must ensure the secret contains the key `cloud-provider.yaml`\nrather than the name of the file on disk.\n\n### Deployment\n\nDeploy the controller manager and associated RBAC rules if your cluster\nis configured to use RBAC (replace ? with the version you want to install to):\n\n```bash\n$ export RELEASE=?\n$ kubectl apply -f https://github.com/oracle/oci-cloud-controller-manager/releases/download/${RELEASE}/oci-cloud-controller-manager-rbac.yaml\n$ kubectl apply -f https://github.com/oracle/oci-cloud-controller-manager/releases/download/${RELEASE}/oci-cloud-controller-manager.yaml\n```\n\nCheck the CCM logs to ensure it's running correctly:\n\n```bash\n$ kubectl -n kube-system get po | grep oci\noci-cloud-controller-manager-ds-k2txq   1/1       Running   0          19s\n\n$ kubectl -n kube-system logs oci-cloud-controller-manager-ds-k2txq\nI0905 13:44:51.785964       7 flags.go:52] FLAG: --address=\"0.0.0.0\"\nI0905 13:44:51.786063       7 flags.go:52] FLAG: --allocate-node-cidrs=\"false\"\nI0905 13:44:51.786074       7 flags.go:52] FLAG: --alsologtostderr=\"false\"\nI0905 13:44:51.786078       7 flags.go:52] FLAG: --cloud-config=\"/etc/oci/cloud-config.cfg\"\nI0905 13:44:51.786083       7 flags.go:52] FLAG: --cloud-provider=\"oci\"\n```\n\n## Upgrade\n\nThe following example shows how to upgrade the CCM, FVP, FVD and CSI from an older version (replace ? with the version you're upgrading to):\n\n```bash\n$ export RELEASE=?\n$ kubectl apply -f https://github.com/oracle/oci-cloud-controller-manager/releases/download/${RELEASE}/oci-cloud-controller-manager-rbac.yaml\n$ kubectl apply -f https://github.com/oracle/oci-cloud-controller-manager/releases/download/${RELEASE}/oci-cloud-controller-manager.yaml\n$ kubectl apply -f https://github.com/oracle/oci-cloud-controller-manager/releases/download/${RELEASE}/oci-volume-provisioner.yaml\n$ kubectl apply -f https://github.com/oracle/oci-cloud-controller-manager/releases/download/${RELEASE}/oci-volume-provisioner-rbac.yaml\n$ kubectl apply -f https://github.com/oracle/oci-cloud-controller-manager/releases/download/${RELEASE}/oci-flexvolume-driver.yaml\n$ kubectl apply -f https://github.com/oracle/oci-cloud-controller-manager/releases/download/${RELEASE}/oci-flexvolume-driver-rbac.yaml\n$ kubectl apply -f https://github.com/oracle/oci-cloud-controller-manager/releases/download/${RELEASE}/oci-csi-controller-driver.yaml\n$ kubectl apply -f https://github.com/oracle/oci-cloud-controller-manager/releases/download/${RELEASE}/oci-csi-node-driver.yaml\n$ kubectl apply -f https://github.com/oracle/oci-cloud-controller-manager/releases/download/${RELEASE}/oci-csi-node-rbac.yaml\n```\n\n## Examples\n\n - [Service `type: LoadBalancer` basic NGINX example][8]\n - [Service `type: LoadBalancer` NGINX SSL example][9]\n\n## Development\n\nSee [DEVELOPMENT.md](docs/development.md).\n\n## Support\n\nIf you think you've found a bug, please [raise an issue][3].\n\n## Contributing\n\nThis project welcomes contributions from the community. Before submitting a pull request, please [review our contribution guide](./CONTRIBUTING.md)\n\n## Security\n\nPlease consult the [security guide](./SECURITY.md) for our responsible security vulnerability disclosure process\n\n## License\n\nCopyright (c) 2017, 2023 Oracle and/or its affiliates. All rights reserved.\n\n`oci-cloud-controller-manager` is licensed under the Apache License 2.0.\n\nSee [LICENSE](LICENSE) for more details.\n\n[1]: https://cloud.oracle.com/iaas\n[2]: https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/\n[3]: https://github.com/oracle/oci-cloud-controller-manager/issues/new\n[4]: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\n[5]: https://github.com/kubernetes/kubernetes/pull/49017\n[6]: https://kubernetes.io/docs/concepts/containers/images/#creating-a-secret-with-a-docker-config\n[7]: https://github.com/oracle/oci-cloud-controller-manager/tree/master/manifests/provider-config-example.yaml\n[8]: https://github.com/oracle/oci-cloud-controller-manager/blob/master/docs/tutorial.md\n[9]: https://github.com/oracle/oci-cloud-controller-manager/blob/master/docs/tutorial-ssl.md\n[10]: https://github.com/oracle/oci-cloud-controller-manager/blob/master/docs/rate-limiter-configuration.md\n[11]: https://docs.cloud.oracle.com/en-us/iaas/Content/Compute/Concepts/computeoverview.htm#two\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle%2Foci-cloud-controller-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foracle%2Foci-cloud-controller-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle%2Foci-cloud-controller-manager/lists"}