Skip to content

[Multi_K8s-Plugin] Update plugin README to release standard#6977

Open
mohammedfirdouss wants to merge 5 commits into
pipe-cd:masterfrom
mohammedfirdouss:feat/multicluster-plugin-readme-update
Open

[Multi_K8s-Plugin] Update plugin README to release standard#6977
mohammedfirdouss wants to merge 5 commits into
pipe-cd:masterfrom
mohammedfirdouss:feat/multicluster-plugin-readme-update

Conversation

@mohammedfirdouss

@mohammedfirdouss mohammedfirdouss commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

What this PR does:

Updates the kubernetes_multicluster plugin README to match the same standard as other plugin README.

  • Adds How to Build & Run section with Makefile commands, --force-plugin-redownload note, and local kind cluster setup steps
  • Adds How to Test section explaining how to run unit tests and the role of envtest
  • Adds Directory Structure overview
  • Adds full Config Reference tables for all fields: piped config, deploy target config, application config, all 8 stages, Helm/Kustomize options, traffic routing (PodSelector + Istio), and patch operations
  • Removes the stale "only QuickSync is supported" note
  • Removes the "url is a dummy" comment (no longer accurate)
  • Updates all stage names to the K8S_MULTI_* prefix introduced in [Multi_K8s-Plugin] rename stages to avoid conflicts with kubernetes plugin #6880

Why we need it:

The plugin README was a rough developer guide written during the mentorship term. Before a binary release can be triggered (via the plugin_release workflow), the README should be accurate and useful for contributors and users — matching the standard set by the ECS plugin.

Which issue(s) this PR fixes:

Fixes #

Does this PR introduce a user-facing change?:

  • How are users affected by this change: Documentation only — no code changes.
  • Is this breaking change: No
  • How to migrate (if breaking change): N/A

@mohammedfirdouss mohammedfirdouss requested review from a team as code owners July 3, 2026 03:16
@mohammedfirdouss mohammedfirdouss force-pushed the feat/multicluster-plugin-readme-update branch 2 times, most recently from 4d482fd to d31dd09 Compare July 3, 2026 03:18
Signed-off-by: Mohammed Firdous <124298708+mohammedfirdouss@users.noreply.github.com>
@mohammedfirdouss mohammedfirdouss force-pushed the feat/multicluster-plugin-readme-update branch from d31dd09 to ed0f228 Compare July 3, 2026 03:19
…plugin

Signed-off-by: Mohammed Firdous <124298708+mohammedfirdouss@users.noreply.github.com>
@mohammedfirdouss mohammedfirdouss force-pushed the feat/multicluster-plugin-readme-update branch from d7f8ee0 to 0fb100e Compare July 3, 2026 03:23
@mohammedfirdouss

Copy link
Copy Markdown
Contributor Author

@rahulshendre @eeshaanSA @khanhtc1202 please review when free

@Ayushmore1214 Ayushmore1214 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it feels a little long, but honestly that's mostly repetition rather than too much info. The kind: Piped block shows up like 2 times; maybe we keep one good annotated copy and point the other spots to it? good work though!!!

@rahulshendre rahulshendre left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

checked all the tables against the config structs, fields and defaults match, and the structure looks good as well, main ones are the kubeconfig order and the test command, rest are nits.
really nice work on the tables @mohammedfirdouss : D

├── livestate/ # Live state fetcher (reports current resource state across clusters)
├── planpreview/ # Plan preview (shows diff before deployment)
├── toolregistry/ # Tool registry for kubectl, kustomize, and helm binaries
└── example/ # Example application configurations

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: docs/ is missing here 👀

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alright, in a bit

Run unit tests from the repository root:

```bash
go test ./pkg/app/pipedv1/plugin/kubernetes_multicluster/...

@rahulshendre rahulshendre Jul 4, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this won't run from the repo root since the plugin has its own go.mod, and the envtest tests need KUBEBUILDER_ASSETS
make test/go MODULES=pkg/app/pipedv1/plugin/kubernetes_multicluster is the one that works, ref - Makefile#L102

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, so to fix the test command to make test/go MODULES=pkg/app/pipedv1/plugin/kubernetes_multicluster with a note about the separate go.mod


### Integration tests

To test against real clusters, build and run piped with the plugin pointing to real clusters. The plugin resolves kubeconfig in this order:

@rahulshendre rahulshendre Jul 4, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

masterURL isn't actually used anywhere in the plugin, only kubeConfigPath gets passed to kubectl, ref - applier.go#L58
So this resolution order doesn't really exist, I think we should just say kubeConfigPath is passed to kubectl, and empty falls back to kubectl's own defaults

### app.pipecd.yaml
| Field | Type | Description | Required |
|-|-|-|-|
| deployTargets | [][DeployTargetConfig](#deploytargetconfig) | List of Kubernetes clusters to deploy to | Yes |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there's also a config block next to deployTargets chartRepositories + chartRegistries, Initialize() uses it for helm repo add and oci login.
I think we should add tables for that too

| Field | Type | Description | Required |
|-|-|-|-|
| input | [KubernetesDeploymentInput](#kubernetesdeploymentinput) | Input for deployment such as manifests, kubectl version, helm/kustomize options. | No |
| quickSync | [K8sSyncStageOptions](#k8ssyncstageoptions) | Options for the quick sync stage. | No |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this anchor doesn't go anywhere, I don't think there is K8sSyncStageOptions heading on this page - try it.
It should be #k8s_multi_sync, what do you think?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't even see that, doesnt redirect, it solved now. thanks

@rahulshendre

Copy link
Copy Markdown
Contributor

it feels a little long, but honestly that's mostly repetition rather than too much info. The kind: Piped block shows up like 2 times; maybe we keep one good annotated copy and point the other spots to it? good work though!!!

good catch @Ayushmore1214
yeah the repetition is there, but I don't think we should keep just one copy. the Run block is a walkthrough, someone following it just needs enough to get the plugin loaded, and Piped Config is the reference people jump to directly, so that one should stay complete.
I think we should trim the Run block down to name, port, url and a bare deployTargets, with a small "see Plugin Configuration below for all fields" link 👀

@mohammedfirdouss mohammedfirdouss force-pushed the feat/multicluster-plugin-readme-update branch from eb922fd to 5e6b48f Compare July 4, 2026 13:14
Signed-off-by: Mohammed Firdous <124298708+mohammedfirdouss@users.noreply.github.com>
@mohammedfirdouss mohammedfirdouss force-pushed the feat/multicluster-plugin-readme-update branch from 5e6b48f to 6d9113b Compare July 4, 2026 13:14
@mohammedfirdouss

Copy link
Copy Markdown
Contributor Author

@Ayushmore1214 thanks for the catch! The full annotated block stays in one place now.

@rahulshendre rahulshendre left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍
everything checks out, nice work @mohammedfirdouss 🙌

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants