feat(blog): add etcd-operator v1alpha2 announcement#573
Conversation
📝 WalkthroughWalkthroughA new blog post announces the donation of etcd-operator to Cozystack. It introduces the v1alpha2 API, describes the operator architecture and key features, documents migration from v1alpha1, and compares coverage against the official etcd-io operator roadmap. Changesetcd-operator Announcement
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request adds a new blog post announcing that the etcd-operator project has joined Cozystack with a new v1alpha2 API, detailing its features, migration path, and comparison with the official operator. The review feedback focuses on minor grammatical corrections, such as capitalizing "Ænix" for consistency and improving punctuation around abbreviations like "e.g.".
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
|
||
| The [etcd-operator](https://github.com/cozystack/etcd-operator) project, which develops an operator for deploying and maintaining [etcd](https://etcd.io) clusters on Kubernetes, has been donated to the [Cozystack](https://cozystack.io) project. Alongside the donation, a from-scratch implementation of the operator has been published under a new API version — `etcd-operator.cozystack.io/v1alpha2`, superseding the previous `etcd.aenix.io/v1alpha1`. Instead of managing members through a StatefulSet, the new implementation directly drives etcd's native Membership API (the MemberAdd, MemberPromote and MemberRemove operations), giving the operator full control over cluster membership. The new implementation was written by [Timofei Larkin](https://github.com/lllamnyp), one of the maintainers of the previous codebase, which is preserved in the [v1alpha1](https://github.com/cozystack/etcd-operator/tree/v1alpha1) branch. The project is written in Go and distributed under the Apache 2.0 license. | ||
|
|
||
| The project was started by Ænix, which assembled an initiative group from the Russian-speaking Kubernetes community to build it. After the base implementation was completed, an attempt was made to donate the project to the CNCF. Prompted by this initiative, the etcd project concluded that an official operator was needed and formed its own working group, which, after evaluating existing implementations, chose to develop a codebase from scratch — this is how [etcd-io/etcd-operator](https://github.com/etcd-io/etcd-operator) came to be. Feature-wise the official operator has not yet caught up with the aenix etcd-operator, which is already used in production by the community and by projects such as Cozystack and [Kamaji](https://github.com/clastix/kamaji), so the project has continued its own independent line of development (a comparison with the official operator is given at the end of this article). |
There was a problem hiding this comment.
For consistency with the previous mention of the company name "Ænix", "aenix" should be capitalized. Also, adding a comma after "Feature-wise" improves readability.
| The project was started by Ænix, which assembled an initiative group from the Russian-speaking Kubernetes community to build it. After the base implementation was completed, an attempt was made to donate the project to the CNCF. Prompted by this initiative, the etcd project concluded that an official operator was needed and formed its own working group, which, after evaluating existing implementations, chose to develop a codebase from scratch — this is how [etcd-io/etcd-operator](https://github.com/etcd-io/etcd-operator) came to be. Feature-wise the official operator has not yet caught up with the aenix etcd-operator, which is already used in production by the community and by projects such as Cozystack and [Kamaji](https://github.com/clastix/kamaji), so the project has continued its own independent line of development (a comparison with the official operator is given at the end of this article). | |
| The project was started by Ænix, which assembled an initiative group from the Russian-speaking Kubernetes community to build it. After the base implementation was completed, an attempt was made to donate the project to the CNCF. Prompted by this initiative, the etcd project concluded that an official operator was needed and formed its own working group, which, after evaluating existing implementations, chose to develop a codebase from scratch — this is how [etcd-io/etcd-operator](https://github.com/etcd-io/etcd-operator) came to be. Feature-wise, the official operator has not yet caught up with the Ænix etcd-operator, which is already used in production by the community and by projects such as Cozystack and [Kamaji](https://github.com/clastix/kamaji), so the project has continued its own independent line of development (a comparison with the official operator is given at the end of this article). |
There was a problem hiding this comment.
Applied the comma fix and reworded the sentence. Kept aenix etcd-operator lowercase deliberately — that's how the project is referred to in the comparison context.
|
|
||
| The implementation covers most items of the [roadmap](https://github.com/etcd-io/etcd-operator/blob/main/docs/roadmap.md) of the official [etcd-operator](https://github.com/etcd-io/etcd-operator) developed by the etcd project. Status by roadmap item: | ||
|
|
||
| 1. Create a new etcd cluster, e.g 3 or 5 members cluster of a specified etcd version — implemented. |
There was a problem hiding this comment.
The phrasing "e.g 3 or 5 members cluster" has minor grammatical issues. It should be "e.g., a 3- or 5-member cluster" for correct English grammar and punctuation.
| 1. Create a new etcd cluster, e.g 3 or 5 members cluster of a specified etcd version — implemented. | |
| 1. Create a new etcd cluster, e.g., a 3- or 5-member cluster of a specified etcd version — implemented. |
| 2. Understand health of a cluster — implemented. | ||
| 3. Enabling TLS communication, including cert renewal — implemented. | ||
| 4. Upgrade across patches or one minor version — partially implemented: `spec.version` applies only to newly created members. | ||
| 5. Scale in and out, e.g 1 -> 3 -> 5 members and vice versa — implemented. |
Announce the donation of etcd-operator to Cozystack and the new etcd-operator.cozystack.io/v1alpha2 API. Co-Authored-By: Andrey Kolkov <androndo@gmail.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
c5a49e9 to
1e5110a
Compare
✅ Deploy Preview for cozystack ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for cozystack ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@content/en/blog/2026-06-10-etcd-operator-joins-cozystack.md`:
- Line 15: The post's top-level content heading "etcd-operator Joins Cozystack
with a New v1alpha2 API" is currently an h3 (###) and duplicates the frontmatter
title; either change the heading to h2 (replace "###" with "##") if you want it
in-content, or remove that heading line entirely to avoid redundancy with
Hugo-rendered frontmatter (removing is the recommended option for Hugo blog
posts).
- Around line 1-12: The first in-article heading is mistakenly a level-3 heading
(`###`) immediately after the front matter; change that heading marker from
`###` to a level-2 marker `##` so the post body uses consistent heading
hierarchy (front matter title is the page-level title), leaving the rest of the
content unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 22667f71-a8bb-46d4-814a-c478dd5390aa
📒 Files selected for processing (1)
content/en/blog/2026-06-10-etcd-operator-joins-cozystack.md
## Summary Add a blog post announcing the donation of etcd-operator to the Cozystack project and the new `etcd-operator.cozystack.io/v1alpha2` API. The post covers the project history, the new Membership-API-based lifecycle that replaces the StatefulSet model, key features, changes compared to `v1alpha1`, the in-place migration path, and a status comparison against the official etcd-io/etcd-operator roadmap. Adapted from the announcement article in the operator repository: cozystack/etcd-operator#329 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added blog post announcing etcd-operator's integration with Cozystack, featuring the new API version, operator architecture, scaling capabilities, storage options, and migration guidance. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
Summary
Add a blog post announcing the donation of etcd-operator to the Cozystack project and the new
etcd-operator.cozystack.io/v1alpha2API.The post covers the project history, the new Membership-API-based lifecycle that replaces the StatefulSet model, key features, changes compared to
v1alpha1, the in-place migration path, and a status comparison against the official etcd-io/etcd-operator roadmap.Adapted from the announcement article in the operator repository: cozystack/etcd-operator#329
Summary by CodeRabbit