My talk at JAWSUG-container Connpass event #20. Content includes an overview of PipeCD - a Gitops based continuous delivery tool and a detailed example of using PipeCD to deploy services to AWS ECS.
Progressive delivery: Canary, Blue/Green, Rollout - Automated analysis: metrics, log, smoke test - A unified solution cross cloudplatform and application kind - Decrease onboarding costs - Improve developer experience - One delivery infrastructure for multiple deployment targets (Kubernetes, Terraform, AWS ECS, AWS Lambda, …) And we need a CD tool, not the CI tool which does the CICD tasks
- All stateless components (servers, cache, ops) - Managed services: Datastore (RDS,...) and Filestore (S3) => Low maintenance cost - Easy to get start with just Helm - Optional: components for monitoring (prometheus, grafana) - monitoring both controlpane and pipeds
Support all possible places • k8s pod • ECS Fargate task • CloudRun • ... - All credentials stored in product team cluster (controlplane stores nothing related to the product) - Only outbound requests (no expose ports required)
Deployment What do we need to prepare?? - ALB (Listener, Targetgroup) - Cluster - TaskDefinition - Service & tons of scripts to register/create above entities...
which define the PipeD behavior: - Kind (ECSApp for instance) - Input: contains ECS required configuration: task definition, service definition, targetGroup - Pipeline: contains deployment flow Note: - all configurations stored in Git - can reuse task definition and service definition as it is - no changes or PipeCD specified syntax required
Changes Build Test Staging Production Continuous Integration(CI) Artifacts Event watcher Define how Piped handle an event and trigger the event from CI => Piped will update the configuration by itself via PR => trigger deployment ref: PipeCD eventwatcher We also use pipecd to deploy our pipecd development controlplane 😉