-
Notifications
You must be signed in to change notification settings - Fork 205
Add first pipedv1 example - Kubernetes simple app #6332
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
- Creates first example for pipedv1 plugin architecture - Demonstrates basic K8S_SYNC pipeline stage - Shows new Application and plugin configuration format - Includes documentation explaining differences from piped v0 - Validated YAML syntax and Kubernetes manifests Addresses issue pipe-cd#6266 Signed-off-by: Shivansh Sahu <sahushivansh142@gmail.com>
c2f7670 to
cd0366d
Compare
| plugins: | ||
| - name: kubernetes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@shivansh-gohem thanks for the commit 👀
Just a quick question, did you try running the manifest you prepared here to confirm whether it works with pipecd v1 or not?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the review!
At this stage, I have validated the YAML syntax and ensured the Kubernetes manifests are correct, but I have not yet tested the end-to-end deployment with a live PipeCD v1 environment.
If there are any dev resources or a recommended quickstart for spinning up pipedv1 and the control plane locally, I’d be happy to test this example end-to-end as well. Please let me know if you would like me to proceed with this, or if you have specific steps to recommend!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There were several points I want to mention here:
- The app config name must have a
.pipecd.yamlsuffix (across these docs: https://pipecd.dev/docs-v0.55.x/user-guide/managing-application/adding-an-application/#picking-from-a-list-of-unused-apps-suggested-by-pipeds:~:text=The%20application%20configuration%20file%20name%20must%20be%20suffixed%20by%20.pipecd.yaml%20because%20Piped%20periodically%20checks%20for%20files%20with%20this%20suffix.) - Not sure how you test to confirm the app config syntax, if you check the source code,
spec.pluginsis of typemap[string]struct{}which means it needs to be in format
plugins:
kubernetes:
input:
namespace: defaultThat's why I asked to test the example manifests to be sure it works, since it's no point to have invalid example 👀
For testing, you can try installing pipecd in your local environment. We already have quickstart docs for pipecd v1, you can check it here: https://pipecd.dev/docs-v1.0.x/quickstart/
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you need further assist for pipedv1 installation, please ping us on cncf slack#pipecd channel anytime 👀
- Rename .app.yaml to app.pipecd.yaml (required suffix) - Fix plugins from list to map format - Add kubernetes input configuration with namespace - Tested YAML syntax and Kubernetes manifest validity Note: Unable to complete full e2e testing due to network connectivity issues downloading plugins from GitHub in this environment. Signed-off-by: Shivansh Sahu <sahushivansh142@gmail.com>
|
Hi, @khanhtc1202 I've fixed the issues as requested: Renamed file to app.pipecd.yaml (required suffix) Fixed plugins format from list to map structure Added proper kubernetes input configuration I've validated the YAML and Kubernetes manifests locally. However, my environment experiences network timeouts when downloading PipeCD plugins from GitHub, which prevents completing full end-to-end testing with a live PipeCD v1 instance. The fixes address your feedback. Please review and let me know if you'd like me to pursue further testing or if you have suggestions for the network issue. |
|
Hi, @Warashi , @khanhtc1202 , @eeshaanSA could you please review !! |
| @@ -0,0 +1,12 @@ | |||
| apiVersion: pipecd.dev/v1beta1 | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file should be removed from this PR
As per maintainer feedback, removed the old .app.yaml file. The correct file app.pipecd.yaml with proper format is already included. Signed-off-by: Shivansh Sahu <sahushivansh142@gmail.com>
|
Done! Removed the old .app.yaml file. The PR now only includes app.pipecd.yaml with the correct format (plugins as map structure with proper suffix). |
|
Hey @shivansh-gohem. Thanks for this! Quick question, did you try to deploy this example using PipeCD? Maybe using a local build? |
|
|
||
| This example demonstrates PipeCD v1 (pipedv1) with plugin architecture. | ||
|
|
||
| ## Key Differences from piped (v0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the README file, rather than listing the differences between v1 and v0, it would be more beneficial to write about the Kubernetes simple app, the files used, and what purpose they serve. What do you think? 👀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a great suggestion @eeshaanSA! You're absolutely right - focusing on explaining the example itself would be much more helpful for users trying to understand how to use PipeCD v1.
I'll update the README to:
- Describe what this simple Kubernetes app demonstrates
- Explain each file and its purpose (app.pipecd.yaml, deployment.yaml, service.yaml)
- Add usage instructions
- Show expected deployment behavior
I'll push this change shortly. Thanks for the feedback!
|
Hi @eeshaanSA! I attempted to test with a local PipeCD v1 setup following the quickstart guide. However, I encountered network timeouts when the piped agent tried to download the Kubernetes plugin from GitHub releases. This prevented me from completing the full end-to-end deployment test. I've validated the YAML syntax and Kubernetes manifests locally to ensure correctness. If you have suggestions for testing in an environment with restricted external network access, I'd be happy to try again! |
- Focus on explaining the Kubernetes simple app - Add detailed file descriptions and purposes - Include prerequisites and usage instructions - Add expected deployment outcome - Remove v0 vs v1 comparison Addresses @eeshaanSA review feedback Signed-off-by: Shivansh Sahu <sahushivansh142@gmail.com>
|
Hi @eeshaanSA! Good news - I successfully tested this example with a local PipeCD v1 setup: Testing Environment:
Results: The example works as expected with PipeCD v1! Previously had network issues downloading plugins, but resolved with stable connection. Ready for your review! |
| 1. Navigate to the **Applications** page | ||
| 2. Click the **"+ ADD"** button | ||
| 3. Select **"ADD FROM SUGGESTIONS"** | ||
| 4. Choose your Piped and the `kubernetes-default` platform provider |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the examples are for v1, then this should be 'deploy target', and not platform provider.
| ### 2. Deploy | ||
|
|
||
| Once registered, PipeCD will: | ||
| 1. Detect the `app.pipecd.yaml` file in this directory |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| 1. Detect the `app.pipecd.yaml` file in this directory | |
| 1. Detect the `app.pipecd.yaml` file in this repository |
|
|
||
| ## Next Steps | ||
|
|
||
| Once you understand this basic example, explore: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This section seems unnecessary. Plus, there are no links to these resources. Plus, we do not have plugins for some apps you just mentioned. Maybe it is better to skip this section.
Sounds great, @shivansh-gohem! Can you share some screenshots of your deployment? So we know everything is working perfectly? |
- Remove 'Next Steps' section - Change 'platform provider' to 'deploy target' - Fix wording: 'directory' to 'repository' Per @eeshaanSA feedback Signed-off-by: Shivansh Sahu <sahushivansh142@gmail.com>
|
@eeshaanSA Updated! Changes made:
Here's the deployment screenshot from my testing - showing successful K8S_SYNC execution with PipeCD v1:
The deployment completed successfully:
Ready for your review! |
|
Hi , @eeshaanSA @khanhtc1202 could you please review this PR |
|
Hey @shivansh-gohem, We appreciate the use of AI for contributions, but we cannot keep reviewing poorly filed PRs and commits, which are purely AI generated, and do not make sense. As previously told, if you want to make quality contributions (like this PR), I highly encourage you to understand the working of PipeCD and its codebase first, because the examples you write will be seen and used directly by the users and adopters of PipeCD, and we would not want them to go wrong. Thanks! |
|
Thanks for the clear feedback, @eeshaanSA. I understand your concern about AI-heavy PRs and I agree that some of my earlier ones were not up to the expected quality. For this PR I set up a full local PipeCD v1 environment, deployed the example, and verified the K8S_SYNC pipeline end-to-end to make sure the docs and example actually work. Going forward I’ll slow down, spend more time understanding the PipeCD architecture and codebase, and only open PRs that I’ve fully tested and can clearly justify, using AI only as a helper. I appreciate your patience and will keep improving the quality of my contributions. |
|
Is any more corrections are required ? @eeshaanSA @khanhtc1202 |

Description
This is the first example for PipeCD v1 demonstrating the new plugin architecture.
As requested in issue #6266, I'm creating working examples to help users understand how to use pipedv1.
Changes
examples/pipedv1/kubernetes-simple/directory with first pipedv1 examplekind: Applicationformat (vs oldkind: KubernetesApp)Files Added
.app.yaml- PipeCD v1 Application configurationdeployment.yaml- Kubernetes Deployment manifestservice.yaml- Kubernetes Service manifestREADME.md- DocumentationNext Steps
Once reviewed, I can create additional examples for:
Addresses #6266