From 2cbcea9d935eed77e0273cb1a97f10ac84a08cd7 Mon Sep 17 00:00:00 2001 From: rahulshendre Date: Tue, 25 Aug 2026 18:08:35 +0530 Subject: [PATCH 1/3] examples: add v1 Kubernetes bluegreen example Signed-off-by: rahulshendre --- .../v1/kubernetes/bluegreen/app.pipecd.yaml | 35 +++++++++++++++++++ .../v1/kubernetes/bluegreen/deployment.yaml | 25 +++++++++++++ examples/v1/kubernetes/bluegreen/service.yaml | 12 +++++++ 3 files changed, 72 insertions(+) create mode 100644 examples/v1/kubernetes/bluegreen/app.pipecd.yaml create mode 100644 examples/v1/kubernetes/bluegreen/deployment.yaml create mode 100644 examples/v1/kubernetes/bluegreen/service.yaml diff --git a/examples/v1/kubernetes/bluegreen/app.pipecd.yaml b/examples/v1/kubernetes/bluegreen/app.pipecd.yaml new file mode 100644 index 0000000000..6ad7a9dd8f --- /dev/null +++ b/examples/v1/kubernetes/bluegreen/app.pipecd.yaml @@ -0,0 +1,35 @@ +apiVersion: pipecd.dev/v1beta1 +kind: Application +spec: + name: bluegreen + labels: + env: example + team: product + pipeline: + stages: + # Roll out CANARY variant with the same number of replicas as PRIMARY. + - name: K8S_CANARY_ROLLOUT + with: + replicas: 100% + # Route all traffic to CANARY variant. + - name: K8S_TRAFFIC_ROUTING + with: + canary: 100 + - name: WAIT_APPROVAL + # Roll out PRIMARY variant to the new version. + - name: K8S_PRIMARY_ROLLOUT + # Route all traffic back to PRIMARY variant. + - name: K8S_TRAFFIC_ROUTING + with: + primary: 100 + # Clean up CANARY variant workloads. + - name: K8S_CANARY_CLEAN + plugins: + kubernetes: + input: + manifests: + - deployment.yaml + - service.yaml + description: | + This app demonstrates how to deploy a Kubernetes app by BlueGreen strategy without requiring any mesh. + References: [adding a new app](https://pipecd.dev/docs-v1.0.x/user-guide/managing-application/adding-an-application/), [app configuration](https://pipecd.dev/docs-v1.0.x/user-guide/managing-application/configuration-reference/) diff --git a/examples/v1/kubernetes/bluegreen/deployment.yaml b/examples/v1/kubernetes/bluegreen/deployment.yaml new file mode 100644 index 0000000000..95f0301a65 --- /dev/null +++ b/examples/v1/kubernetes/bluegreen/deployment.yaml @@ -0,0 +1,25 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bluegreen + labels: + app: bluegreen +spec: + replicas: 2 + selector: + matchLabels: + app: bluegreen + pipecd.dev/variant: primary + template: + metadata: + labels: + app: bluegreen + pipecd.dev/variant: primary + spec: + containers: + - name: helloworld + image: ghcr.io/pipe-cd/helloworld:v0.30.0 + args: + - server + ports: + - containerPort: 9085 diff --git a/examples/v1/kubernetes/bluegreen/service.yaml b/examples/v1/kubernetes/bluegreen/service.yaml new file mode 100644 index 0000000000..a88f25246f --- /dev/null +++ b/examples/v1/kubernetes/bluegreen/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: bluegreen +spec: + selector: + app: bluegreen + pipecd.dev/variant: primary + ports: + - protocol: TCP + port: 9085 + targetPort: 9085 From 8aee60aa51bd4f899e306bc07c50626fe577bc15 Mon Sep 17 00:00:00 2001 From: rahulshendre Date: Tue, 25 Aug 2026 18:37:37 +0530 Subject: [PATCH 2/3] bump image to v0.32.0 Signed-off-by: rahulshendre --- examples/v1/kubernetes/bluegreen/deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/v1/kubernetes/bluegreen/deployment.yaml b/examples/v1/kubernetes/bluegreen/deployment.yaml index 95f0301a65..99832b1f15 100644 --- a/examples/v1/kubernetes/bluegreen/deployment.yaml +++ b/examples/v1/kubernetes/bluegreen/deployment.yaml @@ -18,7 +18,7 @@ spec: spec: containers: - name: helloworld - image: ghcr.io/pipe-cd/helloworld:v0.30.0 + image: ghcr.io/pipe-cd/helloworld:v0.32.0 args: - server ports: From 226ab28bac51044486bd7b84f0572ed6908f7d2a Mon Sep 17 00:00:00 2001 From: rahulshendre Date: Mon, 31 Aug 2026 18:21:57 +0530 Subject: [PATCH 3/3] fix(examples): set approvers Signed-off-by: rahulshendre --- examples/v1/kubernetes/bluegreen/app.pipecd.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/examples/v1/kubernetes/bluegreen/app.pipecd.yaml b/examples/v1/kubernetes/bluegreen/app.pipecd.yaml index 6ad7a9dd8f..f56f159c0b 100644 --- a/examples/v1/kubernetes/bluegreen/app.pipecd.yaml +++ b/examples/v1/kubernetes/bluegreen/app.pipecd.yaml @@ -15,7 +15,13 @@ spec: - name: K8S_TRAFFIC_ROUTING with: canary: 100 + # Wait for a manual approval on the web console before promoting. - name: WAIT_APPROVAL + with: + minApproverNum: 1 + # Replace with real usernames. + approvers: + - example-user # Roll out PRIMARY variant to the new version. - name: K8S_PRIMARY_ROLLOUT # Route all traffic back to PRIMARY variant.