Progressive Delivery, Kubernetes, and 3D Chess

The Past

  1. Start with Deployment A with N pods with labels App=X and Version=1
  2. Create Service X with selector App=X
  3. Create Deployment B with 1 pod with labels App=X and Version=2
  4. Create Service B with selector App=X and Version=2
  5. Validate Service B with smoke tests
  6. Validate Service X with metrics from user traffic
  7. Decrease Deployment A by 1 pod
  8. Increase Deployment B by 1 pod
  9. Validate Service X with metrics from user traffic
  10. Repeat steps 7–9 with N -1 and N+1 until Deployment A is at zero pods and Deployment B is at N pods
  11. Delete Deployment A
  12. Delete Service B

The Present

  1. Start with Deployment A with N pods with label App=X and Version=1 on all 3 clusters
  2. Create MultiClusterService X referring to Pods with selector App=X on all 3 clusters
  3. Create MultiClusterIngress X referring to MultiClusterService X
  4. Create Deployment B on Cluster A with 1 pod with labels App=X and Version=2
  5. Create MultiClusterService B with selector App=X and Version=2
  6. Validate Service B (created by MultiClusterService B) with smoke tests
  7. Validate MultiClusterIngress X with metrics from user traffic
  8. Decrease Deployment A by 1 pod on the Cluster A
  9. Increase Deployment B by 1 pod on the Cluster A
  10. Validate MultiClusterIngress X with metrics from user traffic
  11. Repeat steps 7–9 with N -1 and N+1 until Deployment A is at zero pods and Deployment B is at N pods
  12. Delete Deployment A
  13. Repeat steps 4–12 on Clusters B & C until Deployment A is at zero pods on all clusters and Deployment B is at N pods on all clusters

The Future

When you gaze long into the abyss…

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store