Skip to content

Conversation

@shivansh-gohem
Copy link
Contributor

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

  • Added examples/pipedv1/kubernetes-simple/ directory with first pipedv1 example
  • Demonstrates new kind: Application format (vs old kind: KubernetesApp)
  • Shows kubernetes plugin configuration
  • Includes K8S_SYNC pipeline stage
  • Added comprehensive README explaining differences from piped v0
  • Validated YAML syntax and Kubernetes manifests

Files Added

  • .app.yaml - PipeCD v1 Application configuration
  • deployment.yaml - Kubernetes Deployment manifest
  • service.yaml - Kubernetes Service manifest
  • README.md - Documentation

Next Steps

Once reviewed, I can create additional examples for:

  • Canary deployments
  • Helm charts
  • Other plugins (terraform, cloudrun, lambda, ecs)

Addresses #6266

- 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>
Comment on lines 8 to 9
plugins:
- name: kubernetes
Copy link
Member

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?

Copy link
Contributor Author

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!

Copy link
Member

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:

  plugins:
    kubernetes:
      input:
        namespace: default

That'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/

Copy link
Member

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>
@shivansh-gohem
Copy link
Contributor Author

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.

@shivansh-gohem
Copy link
Contributor Author

Hi, @Warashi , @khanhtc1202 , @eeshaanSA could you please review !!

@@ -0,0 +1,12 @@
apiVersion: pipecd.dev/v1beta1
Copy link
Member

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>
@shivansh-gohem
Copy link
Contributor Author

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

@eeshaanSA
Copy link
Contributor

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)
Copy link
Contributor

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? 👀

Copy link
Contributor Author

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!

@shivansh-gohem
Copy link
Contributor Author

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>
@shivansh-gohem
Copy link
Contributor Author

Hi @eeshaanSA! Good news - I successfully tested this example with a local PipeCD v1 setup:

Testing Environment:

  • PipeCD v1.0.0-alpha1 control plane
  • Piped agent with Kubernetes plugin v0.3.0
  • kind cluster (local Kubernetes)

Results:
✅ Application registered successfully via PipeCD UI
✅ K8S_SYNC pipeline stage executed without errors
✅ Deployment and Service manifests applied correctly
✅ 2 nginx pods running (verified with kubectl get pods -n pipecd)
✅ Deployment status shows "SUCCESS" in PipeCD dashboard

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
Copy link
Contributor

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
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
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:
Copy link
Contributor

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.

@eeshaanSA
Copy link
Contributor

Hi @eeshaanSA! Good news - I successfully tested this example with a local PipeCD v1 setup:

Testing Environment:

  • PipeCD v1.0.0-alpha1 control plane
  • Piped agent with Kubernetes plugin v0.3.0
  • kind cluster (local Kubernetes)

Results: ✅ Application registered successfully via PipeCD UI ✅ K8S_SYNC pipeline stage executed without errors ✅ Deployment and Service manifests applied correctly ✅ 2 nginx pods running (verified with kubectl get pods -n pipecd) ✅ Deployment status shows "SUCCESS" in PipeCD dashboard

The example works as expected with PipeCD v1! Previously had network issues downloading plugins, but resolved with stable connection.

Ready for your review!

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>
@shivansh-gohem
Copy link
Contributor Author

@eeshaanSA Updated! Changes made:

  • ✅ Removed "Next Steps" section
  • ✅ Changed "platform provider" to "deploy target" throughout
  • ✅ Fixed wording: "directory" → "repository"

Here's the deployment screenshot from my testing - showing successful K8S_SYNC execution with PipeCD v1:

Screenshot 2025-11-15 164433

The deployment completed successfully:

  • ✅ Application registered via PipeCD UI
  • ✅ K8S_SYNC pipeline stage executed without errors
  • ✅ Both manifests (Deployment and Service) applied correctly
  • ✅ Deployment status shows "SUCCESS"

Ready for your review!

@eeshaanSA
Copy link
Contributor

eeshaanSA commented Nov 24, 2025

@shivansh-gohem
Copy link
Contributor Author

Hi , @eeshaanSA @khanhtc1202 could you please review this PR

@eeshaanSA
Copy link
Contributor

Hey @shivansh-gohem,
As mentioned, please take a look at my comment in the other PR that you have opened.

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!

@shivansh-gohem
Copy link
Contributor Author

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.

@shivansh-gohem
Copy link
Contributor Author

Is any more corrections are required ? @eeshaanSA @khanhtc1202

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