Repository navigation
avoid headless - #291
avoid headless#291Andrei Kvapil (kvaps) wants to merge 208 commits into
Conversation
Signed-off-by: Andrei Kvapil <[email protected]>
Signed-off-by: Andrei Kvapil <[email protected]>
Add LICENSE file
Initializing the project
Signed-off-by: Andrei Kvapil <[email protected]>
Update kubebuilder to v3.14.0
Fixes from comments #15 - Fix API group name for custom resources - remove unnecessary comment lines
demo: https://github.com/aenix-io/etcd-operator/tree/basic-readme fixes #10 Signed-off-by: Andrei Kvapil <[email protected]>
1. Union argument layers and copy source code. 2. Changed layers order final image for grow cache hit
fixes: #10 Signed-off-by: Andrei Kvapil <[email protected]>
- Added basic validating and defaulting webhooks - Added simple test for defaulting webhook
Controller now can successfully bootstrap etcd cluster :) Controller creates Service, ConfigMap and StatefulSet based on EtcdCluster CR Only EmptyDir storage is supported Initialized status is being set and updated
Proof that it works: https://github.com/hiddenmarten/etcd-operator/pull/1 After that just changed the name of the label, to the easier one.
Update cluster Ready status according to StatefulSet status and update ConfigMap cluster state to `existing` after first time STS is ready fixes #24
fixes #23 fixes #30 --------- Co-authored-by: Kirill Ilin <[email protected]> Co-authored-by: Kirill Garbar <[email protected]>
The auxiliary GH action to setup release drafts and update change log accordingly. Configured with autolabeler, so the PRs will be labeled according to the PR branch name and/or files changed: | Branch name | Files changed | Resulting label | | ------------- | ------------- | ------------- | | deps/* | | `dependencies` | | chore/* | | `chore` | | docs/* | **/*.md | `documentation` | | enh/* | | `enhancement` | | feature/* | | `feature` | | fix/* | | `bugfix` | | bugfix/* | | `bugfix` | | | /api/* | `api-change` | | | /internal/* | `controllers` | Based on labels release draft will be updated with 'Features', 'Bug Fixes' and 'Maintenance' categories which will include corresponding PR's title. It's also possible to manage release draft's version by applying `major`, `minor` and `patch` labels on PR. By default the version will be the next patch version after the last release, v0.0.1 if none. --------- Signed-off-by: Artem Bortnikov <[email protected]>
Explicit RW permissions for content and pull requests required, due to repository settings, which grants to workflows only read permissions in the repository for the contents and packages scopes. - RW for content is required for release draft creation (release-drafter). - RW for pull-requests is required for adding labels to PRs (auto-labeler). Signed-off-by: Artem Bortnikov <[email protected]>
in order to access cluster from clients using one IP we decided to use ClusterIP Service
Created basic docs site and filled content for main pages
This is important when scaling cluster up for this operation to be zero down time fixes #25
In case error happens during status update request, reconcile will not be requeued. So, this call should be moved ouside `defer` function fixes #36
Just an idea to create `CODEOWNERS` to automatically assign reviewers when changing specific part of code. Is there anybody who would like to keep informed about updates? Aproove from codeowners is required to merge every specific change.
The test of etcd cluster with TLS and auth config fails frequently, because the client certificate does not get created, before the etcd cluster is up and running. This PR adds a step to wait for the client cert to become ready, before executing the rest of the tests. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Reduced RSA private key sizes for various certificates to enhance security. - Added a new end-to-end test case to ensure readiness of TLS client certificates before proceeding with cluster operations. - **Bug Fixes** - Improved test reliability by ensuring TLS certificates are ready before stateful set readiness checks. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Chores** - Updated ownership assignments for various directories and file types to include new code owners. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Artem Bortnikov <[email protected]>
this PR fixes the errors: ``` E0924 11:31:59.069472 1 reflector.go:150] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:232: Failed to watch *v1.StorageClass: unknown (get storageclasses.storage.k8s.io) E0924 11:32:57.379956 1 reflector.go:150] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:232: Failed to watch *v1.StorageClass: unknown (get storageclasses.storage.k8s.io) E0924 11:33:50.776342 1 reflector.go:150] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:232: Failed to watch *v1.StorageClass: unknown (get storageclasses.storage.k8s.io) E0924 11:34:21.872401 1 reflector.go:150] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:232: Failed to watch *v1.StorageClass: unknown (get storageclasses.storage.k8s.io) ``` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Enhanced role permissions to include the ability to monitor changes to resources in real-time by adding the `watch` verb. - **Bug Fixes** - Improved resource management capabilities for the `EtcdClusterReconciler` by updating permissions to allow watching of storage classes. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
# Motivation I started some "R'n'D" (scare quotes intended) for implementing scale up, scale down, self-healing and so on and quickly realized, that the coding of the member add/member remove and similar steps is the more trivial part of the undertaking. The difficult part is coming up with a working algorithm that can correctly deduce the cluster's state and execute the necessary actions at the right time. To better reason about the controller's algorithm now, and to better develop it going forward, I feel it is important to have good documentation of the current design and the intended next steps, so I started with trying to document the current state of the code. # Results This document contains a mermaid flowchart that outlines the reconciliation loop. It is better viewed in [rendered form](https://github.com/aenix-io/etcd-operator/blob/docs/design/docs/DESIGN.md). Going forward, I envision this document to have at least three purposes: * Let the developers spot flaws and prompt them to open issues. * Act as a more detailed form of documentation for advanced users. * Be a blueprint for implementing anything non-trivial. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Documentation** - Updated the design document for the `EtcdCluster` custom resources with a detailed flowchart illustrating the reconciliation process and lifecycle management within a Kubernetes environment. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Hidden Marten <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Artem Bortnikov <[email protected]>
Subj. Without such import, there is auth error: ``` Error setting up etcd client: error creating Kubernetes client: no Auth Provider found for name "oidc" ``` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced commands for managing etcd pods, including status checks, defragmentation, compaction, alarm management, and member management. - **Bug Fixes** - Standardized error handling for improved user feedback during command execution. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
* We create several etcd clients in the reconciliation loop, but never had a defer .Close() for them. * We erroneously try to configure these clients with etcd-0 instead of etcd-0.etcd-headless.namespace as the url. Now fixed. Signed-off-by: Timofei Larkin <[email protected]>
Signed-off-by: Timofei Larkin <[email protected]>
Signed-off-by: Timofei Larkin <[email protected]>
* Several `defer c.Close()` added to clean up etcd clients after reconciliation. * DNS names targeting etcd cluster members fixed to resolve properly. * TLS capability added to etcd clients created during reconciliation.
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Documentation** - Added Kirill Klinchenkov and Timofei Larkin as new maintainers in the maintainers list. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Signed-off-by: Andrei Kvapil <[email protected]>
d8a8f4a to
dd4c9ac
Compare
WalkthroughThe etcdcluster manifest was updated to simplify the DataStore endpoints from multiple pod-specific DNS entries to a single service DNS entry. Additionally, the DNS names in the etcd-server and etcd-peer Certificate specifications were expanded to include three more service-related DNS names. Changes
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
⏰ Context from checks skipped due to timeout of 90000ms (7)
🔇 Additional comments (3)
|
…1128) ref to #1127, clastix/kamaji#856 and cozystack/etcd-operator#291 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Updated etcd chart to version 2.9.0. * **Improvements** * Simplified etcd endpoint configuration to use a single static endpoint. * Expanded TLS certificate DNS names to include additional service addresses. * Streamlined resource configuration for etcd deployment. * **Chores** * Updated version mapping for etcd package. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
ce98e5f to
9a6cc65
Compare
This change references to upstream issue clastix/kamaji#856
It's better to use ordinary service instead accessing etcd via multiple endpoints from kubernetes-api due to DNS resloving issue, which might happen when one replica have no IP address assigned.