{"id":18293081,"url":"https://github.com/kubesphere/cluster-api-provider-qingcloud","last_synced_at":"2025-06-20T10:35:58.818Z","repository":{"id":39709798,"uuid":"485297881","full_name":"kubesphere/cluster-api-provider-qingcloud","owner":"kubesphere","description":"The QingCloud provider implementation of the Cluster Management API","archived":false,"fork":false,"pushed_at":"2024-07-19T03:02:37.000Z","size":6879,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-11T23:27:36.259Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kubesphere.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-04-25T09:06:39.000Z","updated_at":"2023-04-03T03:01:06.000Z","dependencies_parsed_at":"2025-04-19T23:36:31.992Z","dependency_job_id":null,"html_url":"https://github.com/kubesphere/cluster-api-provider-qingcloud","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kubesphere/cluster-api-provider-qingcloud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubesphere%2Fcluster-api-provider-qingcloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubesphere%2Fcluster-api-provider-qingcloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubesphere%2Fcluster-api-provider-qingcloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubesphere%2Fcluster-api-provider-qingcloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kubesphere","download_url":"https://codeload.github.com/kubesphere/cluster-api-provider-qingcloud/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubesphere%2Fcluster-api-provider-qingcloud/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260927238,"owners_count":23083982,"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":[],"created_at":"2024-11-05T14:21:48.564Z","updated_at":"2025-06-20T10:35:58.776Z","avatar_url":"https://github.com/kubesphere.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kubernetes Cluster API Provider QingCloud\n\n------\nKubernetes-native declarative infrastructure for QingCloud.\n\n## What is the Cluster API Provider QingCloud\nThe [Cluster API][cluster_api] brings\ndeclarative, Kubernetes-style APIs to cluster creation, configuration and\nmanagement.\n\nThe API itself is shared across multiple cloud providers allowing for true QingCloud\nhybrid deployments of Kubernetes. It is built atop the lessons learned from\nprevious cluster managers such as [kops][kops] and\n[kubicorn][kubicorn].\n\n## Launching a Kubernetes cluster on QingCloud\n### Building OS image\nBefore using cluster-api-provider-qingcloud, you need to [build a system image](./docs/os-img.md) containing k8s components on QingCloud.\n### Initialize the management cluster\n#### Install Cluster-API\n```shell\ncurl -L https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.1.3/clusterctl-linux-amd64 -o clusterctl\nchmod +x ./clusterctl\nsudo mv ./clusterctl /usr/local/bin/clusterctl\n```\n#### Init Cluster-API controllers\n```shell\nclusterctl init\n```\n#### Deploy cluster-api provider qingcloud \n```shell\nkubectl apply -f https://raw.githubusercontent.com/kubesphere/cluster-api-provider-qingcloud/main/manifests.yaml\n```\n#### Create api key secret for QingCloud\n```shell\nkubectl create secret generic -n capqc-system capqc-manager-bootstrap-credentials --from-literal=qy_access_key_id=${ACCESS_KEY_ID} --from-literal=qy_secret_access_key=${SECRET_ACCESS_KEY}\n```\n### Creating a workload cluster\n#### Create cluster resource\n```shell\ncat \u003c\u003cEOF | kubectl apply -f -\n---\napiVersion: cluster.x-k8s.io/v1beta1\nkind: Cluster\nmetadata:\n  name: qc-test\n  namespace: default\nspec:\n  clusterNetwork:\n    pods:\n      cidrBlocks:\n      - 172.16.0.0/16\n  controlPlaneRef:\n    apiVersion: controlplane.cluster.x-k8s.io/v1beta1\n    kind: KubeadmControlPlane\n    name: qc-test-control-plane\n  infrastructureRef:\n    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1\n    kind: QCCluster\n    name: qc-test\n\n---\napiVersion: infrastructure.cluster.x-k8s.io/v1beta1\nkind: QCCluster\nmetadata:\n  name: qc-test\n  namespace: default\nspec:\n  zone: ap2a\n  ## Creating a cluster in an existing vpc needs to be configured as follows\n  ## EIP and Port for ControlPlaneEndpoint\n  #  controlPlaneEndpoint:\n  #    host: 139.198.120.22\n  #    port: 6440\n  #  network:\n  #    vpc:\n  #      resourceID: rtr-b7kvpnwv\n  ## ipNetwork required for vxnet to join vpc.\n  ## This network must be unused in your vpc.\n  #    vxnets:\n  #    - ipNetwork: 192.168.100.0/24\n\nEOF\n```\n#### Create control plane resources \n```shell\ncat \u003c\u003cEOF | kubectl apply -f -\n---\napiVersion: controlplane.cluster.x-k8s.io/v1beta1\nkind: KubeadmControlPlane\nmetadata:\n  name: qc-test-control-plane\n  namespace: default\nspec:\n  kubeadmConfigSpec:\n    initConfiguration:\n      nodeRegistration:\n        criSocket: unix:///run/containerd/containerd.sock\n        kubeletExtraArgs:\n          cloud-provider: external\n          provider-id: qingcloud://${instance_id}\n        name: ${instance_name}\n    joinConfiguration:\n      nodeRegistration:\n        criSocket: unix:///run/containerd/containerd.sock\n        kubeletExtraArgs:\n          cloud-provider: external\n          provider-id: qingcloud://${instance_id}\n        name: ${instance_name}\n\n  machineTemplate:\n    infrastructureRef:\n      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1\n      kind: QCMachineTemplate\n      name: qc-test-control-plane\n  replicas: 1\n  version: v1.23.6\n\n---\napiVersion: infrastructure.cluster.x-k8s.io/v1beta1\nkind: QCMachineTemplate\nmetadata:\n  name: qc-test-control-plane\n  namespace: default\nspec:\n  template:\n    spec:\n      instanceType: s1.large.r1\n      imageID: img-3tuakulu\n      # It need to be replaced with your own sshkey.\n      sshKey: kp-jcne0ht0     \n      \nEOF\n```\n\n#### Create workers resources\n```shell\ncat \u003c\u003cEOF | kubectl apply -f -\n---\napiVersion: cluster.x-k8s.io/v1beta1\nkind: MachineDeployment\nmetadata:\n  name: qc-test-md-0\n  namespace: default\nspec:\n  clusterName: qc-test\n  replicas: 1\n  selector:\n    matchLabels: null\n  template:\n    spec:\n      bootstrap:\n        configRef:\n          apiVersion: bootstrap.cluster.x-k8s.io/v1beta1\n          kind: KubeadmConfigTemplate\n          name: qc-test-md-0\n      clusterName: qc-test\n      infrastructureRef:\n        apiVersion: infrastructure.cluster.x-k8s.io/v1beta1\n        kind: QCMachineTemplate\n        name: qc-test-md-0\n      version: v1.23.6\n---\napiVersion: infrastructure.cluster.x-k8s.io/v1beta1\nkind: QCMachineTemplate\nmetadata:\n  name: qc-test-md-0\n  namespace: default\nspec:\n  template:\n    spec:\n      instanceType: s1.large.r1\n      imageID: img-3tuakulu\n      # It need to be replaced with your own sshkey.\n      sshKey: kp-jcne0ht0\n---\napiVersion: bootstrap.cluster.x-k8s.io/v1beta1\nkind: KubeadmConfigTemplate\nmetadata:\n  name: qc-test-md-0\n  namespace: default\nspec:\n  template:\n    spec:\n      joinConfiguration:\n        nodeRegistration:\n          criSocket: unix:///run/containerd/containerd.sock\n          kubeletExtraArgs:\n            cloud-provider: external\n            provider-id: qingcloud://${instance_id}\n          name: ${instance_name}\nEOF\n```\n#### Scale cluster\n```shell\nkubectl scale machinedeployment qc-test-md-0 --replicas=3\n```\n\n\u003c!-- References --\u003e\n\n[prow]: https://go.k8s.io/bot-commands\n[issue]: https://github.com/kubernetes-sigs/cluster-api-provider-digitalocean/issues\n[new_issue]: https://github.com/kubernetes-sigs/cluster-api-provider-digitalocean/issues/new\n[good_first_issue]: https://github.com/kubernetes-sigs/cluster-api-provider-digitalocean/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22good+first+issue%22\n[cluster_api]: https://github.com/kubernetes-sigs/cluster-api\n[kops]: https://github.com/kubernetes/kops\n[kubicorn]: http://kubicorn.io/\n[tilt]: https://tilt.dev\n[cluster_api_tilt]: https://master.cluster-api.sigs.k8s.io/developer/tilt.html","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubesphere%2Fcluster-api-provider-qingcloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkubesphere%2Fcluster-api-provider-qingcloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubesphere%2Fcluster-api-provider-qingcloud/lists"}