{"id":16479332,"url":"https://github.com/timebertt/talk-controller-sharding-lightning","last_synced_at":"2026-05-18T00:33:16.150Z","repository":{"id":234078857,"uuid":"629043364","full_name":"timebertt/talk-controller-sharding-lightning","owner":"timebertt","description":"Towards Horizontally Scalable Kubernetes Controllers (Lightning Talk)","archived":false,"fork":false,"pushed_at":"2023-04-17T14:10:00.000Z","size":564,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-10T13:28:10.357Z","etag":null,"topics":["kubernetes","sharding","talk"],"latest_commit_sha":null,"homepage":"https://talks.timebertt.dev/controller-sharding-lightning/","language":"JavaScript","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/timebertt.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}},"created_at":"2023-04-17T13:57:56.000Z","updated_at":"2023-04-17T13:58:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"b1ac6383-d333-4d65-82a9-4093bea38739","html_url":"https://github.com/timebertt/talk-controller-sharding-lightning","commit_stats":null,"previous_names":["timebertt/talk-controller-sharding-lightning"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/timebertt/talk-controller-sharding-lightning","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timebertt%2Ftalk-controller-sharding-lightning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timebertt%2Ftalk-controller-sharding-lightning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timebertt%2Ftalk-controller-sharding-lightning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timebertt%2Ftalk-controller-sharding-lightning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timebertt","download_url":"https://codeload.github.com/timebertt/talk-controller-sharding-lightning/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timebertt%2Ftalk-controller-sharding-lightning/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33160484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T22:39:12.733Z","status":"ssl_error","status_checked_at":"2026-05-17T22:39:10.741Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["kubernetes","sharding","talk"],"created_at":"2024-10-11T12:51:40.607Z","updated_at":"2026-05-18T00:33:11.142Z","avatar_url":"https://github.com/timebertt.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Towards Horizontally Scalable Kubernetes Controllers (Lightning Talk)\n\n[![Netlify Status](https://api.netlify.com/api/v1/badges/e06fa269-6329-42d3-9f49-9356ee0cc204/deploy-status)](https://app.netlify.com/sites/talk-controller-sharding-lightning/deploys)\n\nTake me to the [slides](https://talks.timebertt.dev/controller-sharding-lightning/)!\n\n## About\n\nThis is a lightning talk by [@timebertt](https://github.com/timebertt) at [Cloud Native Rejekts 2023](https://cloud-native.rejekts.io/) in Amsterdam ([event schedule](https://cfp.cloud-native.rejekts.io/cloud-native-rejekts-eu-amsterdam-2023/schedule/)).\n\nYou can find the full project belonging to this talk here: [kubernetes-controller-sharding](https://github.com/timebertt/kubernetes-controller-sharding).\n\n### Abstract\n\nKubernetes controllers use a leader election mechanism to determine a single active instance out of multiple controller replicas to prevent uncoordinated and conflicting actions.\nOnly the current leader performs reconciliations, other instances are on standby.\nReconciliations cannot be distributed among multiple controller instances, hence Kubernetes controllers cannot be scaled horizontally.\nBut how are your operators supposed to handle thousands of API objects?\n\nAs large-scale cluster and operator deployments are getting more widespread, there is an unanswered ask to overcome this scalability limitation.\nThis talk takes you on a journey towards horizontally scalable Kubernetes controllers by introducing a design for Kubernetes controller sharding.\n\n## Presenting and Editing the Slides\n\nSlides are built in Markdown using [reveal.js](https://revealjs.com/), packaged with [webpack](https://webpack.js.org/), and deployed with [netlify](https://www.netlify.com/).\n\n### Prerequisites\n\nInstall a recent `node` version. Preferably, the one specified in [`.node-version`](./.node-version).\n\n```bash\nbrew install node\n```\n\n### Present Locally\n\nPerform a production build and serve the slides from the `dist` folder:\n\n```bash\nNODE_ENV=production npm run build\nnpm run serve\n```\n\nImportant: Set `NODE_ENV=production` to yield the same build outputs as in production deploys to netlify.\nIf you don't set it, the QR will link to a local IP instead of the canonical URL, for example.\n\n### Edit Locally\n\nRun a dev server with hot-reload and open the slides in the browser:\n\n```bash\nnpm start\n```\n\nAlternatively, use the preconfigured `start` run configuration for JetBrains IDEs.\n\nNow, start editing the [content](./content) files.\nWhen saving, slides are automatically rebuilt and refreshed in the browser.\n\n\u003e Note, that `npm start` doesn't write the output to `dist`.\n\n### Build Locally\n\nRun a full build and write output files to `dist`:\n\n```bash\nnpm run build\n```\n\nNow, output files can be inspected in the `dist` folder.\nAlso, the slides can be served locally from the `dist` folder (no hot-reload):\n\n```bash\nnpm run serve\n```\n\nUsing the above will output non-minimized files.\nSet `NODE_ENV=production` to enable minimization as it is done in netflify builds:\n\n```bash\nNODE_ENV=production npm run build\n```\n\n## Netlify Deploys\n\nNetlify builds and publishes new commits to the `master` branch on https://talk-controller-sharding-lightning.netlify.app/.\n\nhttps://github.com/timebertt/talks contains a [netlify proxy configuration](https://github.com/timebertt/talks/blob/master/netlify.toml) to make the slides available at https://talks.timebertt.dev/controller-sharding-lightning/.\n\nThe netlify site is configured to publish deploy previews for pull requests to the `master` branch and for pushes to arbitrary other branches.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimebertt%2Ftalk-controller-sharding-lightning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimebertt%2Ftalk-controller-sharding-lightning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimebertt%2Ftalk-controller-sharding-lightning/lists"}