Skip to content

[Multi_K8s-Plugin] Add plugin documentation page#6878

Open
mohammedfirdouss wants to merge 16 commits into
pipe-cd:masterfrom
mohammedfirdouss:feat/multicluster-plugin-docs-v2
Open

[Multi_K8s-Plugin] Add plugin documentation page#6878
mohammedfirdouss wants to merge 16 commits into
pipe-cd:masterfrom
mohammedfirdouss:feat/multicluster-plugin-docs-v2

Conversation

@mohammedfirdouss

Copy link
Copy Markdown
Contributor

What this PR does: Adds a documentation page for the kubernetes_multicluster plugin and updates the plugins index to include it.

Why we need it: The plugin has no user-facing documentation yet. This page covers prerequisites, all 8 pipeline stages with options tables, multi-cluster features (per-cluster manifests, per-stage filtering), livestate/drift detection, plan preview, Helm authentication, and a complete configuration reference.

Which issue(s) this PR fixes:

Fixes #

Does this PR introduce a user-facing change?:

  • How are users affected by this change: Users can now find documentation for the kubernetes_multicluster plugin at docs-v1.0.x/plugins/kubernetes-multicluster/
  • Is this breaking change: No
  • How to migrate (if breaking change): N/A

Signed-off-by: Mohammed Firdous <124298708+mohammedfirdouss@users.noreply.github.com>

@Warashi Warashi 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.

I'm not good at English or documentation styling, so I want others to review the English wording and/or styling.
cc: @pipe-cd/pipecd-approvers-docs

| prune | bool | Remove resources that are no longer defined in Git. | false |
| multiTargets | []string | Restrict the stage to these deploy targets. | all |

### K8S_PRIMARY_ROLLOUT

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.

I'm so sorry for not noticing that the stage name conflicts with the Kubernetes plugin
It's not allowed that a Piped instance has some plugins with the same stage names, which is a limitation of the Piped implementation.
Please change the stage name of the Kubernetes multicluster plugin to something else, for example, "K8S_MULTI_PRIMARY_ROLLOUT."

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.

The conflicting stage names (K8S_PRIMARY_ROLLOUT, K8S_CANARY_ROLLOUT, etc.) need to be renamed in both the Go source and the docs to avoid collision with the regular Kubernetes plugin. I should open a PR for this.

kubeConfigPath: /etc/piped/kube/cluster-us
```

2. **`kubectl` must be reachable from the piped host.** The plugin invokes `kubectl` (and `kustomize`/`helm` when used) via the tool registry; pin a version with `kubectlVersion` if you need a specific one.

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.

Does reachable mean that the piped host can download the kubectl binary from the internet? If so, it's correct and ok.
If that means that the kubectl binary must exist on the piped host, then it's not correct. The piped downloads the kubectl binary through the tool registry, so the kubectl binary doesn't need to exist on the piped host.

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.

Hmm, I think reachable is ambigous, kubectl binary is pre-installed on the host, OR the host has internet access to download it. Yeah correct, update it shortly.

@mohammedfirdouss

Copy link
Copy Markdown
Contributor Author

I'm not good at English or documentation styling, so I want others to review the English wording and/or styling. cc: @pipe-cd/pipecd-approvers-docs

okay no problem

@mohammedfirdouss

Copy link
Copy Markdown
Contributor Author

@eeshaanSA @khanhtc1202 please have a look when free.

@khanhtc1202

Copy link
Copy Markdown
Member

I'm okay with the docs itself. Only need @eeshaanSA or @rahulshendre to confirm the structure, then it's good to go. Thanks 👍

khanhtc1202
khanhtc1202 previously approved these changes Jun 24, 2026

@khanhtc1202 khanhtc1202 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.

LGTM

@codecov

codecov Bot commented Jun 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 27.28%. Comparing base (1bff994) to head (28fc693).

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #6878      +/-   ##
==========================================
- Coverage   29.38%   27.28%   -2.10%     
==========================================
  Files         601      533      -68     
  Lines       64276    57596    -6680     
==========================================
- Hits        18887    15717    -3170     
+ Misses      43922    40644    -3278     
+ Partials     1467     1235     -232     
Flag Coverage Δ
. 23.14% <ø> (ø)
.-pkg-app-pipedv1-plugin-analysis ?
.-pkg-app-pipedv1-plugin-ecs 31.74% <ø> (ø)
.-pkg-app-pipedv1-plugin-kubernetes ?
.-pkg-app-pipedv1-plugin-kubernetes_multicluster 59.66% <ø> (ø)
.-pkg-app-pipedv1-plugin-scriptrun 54.83% <ø> (ø)
.-pkg-app-pipedv1-plugin-terraform 38.18% <ø> (ø)
.-pkg-app-pipedv1-plugin-wait 33.04% <ø> (ø)
.-pkg-app-pipedv1-plugin-waitapproval 52.71% <ø> (ø)
.-pkg-plugin-sdk 50.34% <ø> (-0.15%) ⬇️
.-tool-actions-gh-release 19.23% <ø> (ø)
.-tool-actions-plan-preview ?
.-tool-codegen-protoc-gen-auth ?

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@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.

Structure: LGTM
This is the first official plugin page, so it effectively sets the template for the plugin docs that follow (terraform, ecs, cloud run). The flow works very well 👍


### Per-cluster manifests with multiTargets

Each `multiTargets` entry binds a deploy target name to its own manifest paths (and optional tool overrides). Use this when clusters need different manifests — for example region-specific config:

@rahulshendre rahulshendre Jun 24, 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.

tiny nit: a stray em dash on line 195 (the multiTargets section, "manifests — for example") - swap it for a hyphen 👀

@mohammedfirdouss

Copy link
Copy Markdown
Contributor Author

@eeshaanSA review please

@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 👍
Thanks @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.

4 participants