Deploying Kubernetes consistently, repeatably and in a production-ready manner remains a challenge for many platform teams. While upstream tooling exists to address this complexity, operationalizing these tools within a controlled, auditable workflow is where most teams struggle.
In this blog, we demonstrate how the Progress Chef solution can be used to orchestrate a complete Kubernetes cluster deployment using Kubespray, turning a traditionally complex Ansible-based installation into a single, automated and repeatable execution workflow.
Kubespray is the official Kubernetes deployment framework maintained by the Kubernetes SIG Cluster Lifecycle community. It uses Ansible to provision and manage Kubernetes clusters across cloud, virtualized and bare-metal environments.
Key capabilities include:
While Kubespray is extremely powerful, it is also complex to run operationally. It requires careful handling of inventory, SSH access, Python environments, configuration files and execution context, especially in automated environments.
Running Kubespray directly often raises several operational questions:
This is where the Chef 360 platform fits in.
The Chef platform, specifically a capability called Courier, is designed to orchestrate operational workflows by chaining actions executed by different interpreters, such as Ansible, shell and Chef-client, into a single job.
Rather than replacing Kubespray, Courier acts as an orchestration layer around it, providing:
In this setup:
Here, Courier does not modify Kubespray itself. Instead, it orchestrates how and when to execute Kubespray.
The Courier job initiates the Kubernetes installation that uses the Ansible interpreter.
With the Chef 360 platform (SaaS or on-premises), you can build your own Interpreters, and with Ansible, you have an option to select a source from S3, GitHub or from a local repository.
This approach converts Kubespray’s multi-step execution into a single, repeatable Courier action.
From the user’s perspective, deploying a Kubernetes cluster becomes as simple as running a single job.
Note: You can use the Ansible interpreter to not just deploy a Kubernetes cluster, but also to execute any of the Ansible playbooks using Chef 360.
At a high level, the workflow looks like this:
Kubespray ships with multiple entry-point playbooks (cluster.yml, scale.yml, reset.yml). Instead of invoking these directly from Courier, a lightweight wrapper playbook is used to:
Once complete, the Kubernetes cluster is fully operational.
After deployment, the successful installation is verified by exposing a Kubernetes-hosted application and accessing it through a browser. This provides immediate, visual confirmation that:
This step helps bridge the gap between infrastructure automation and real-world application readiness.
This approach provides several operational advantages:
Kubespray remains one of the most robust methods for deploying Kubernetes in production environments. When paired with the Chef platform, it becomes significantly easier to operationalize, transforming a complex Ansible-driven process into a clean, orchestrated workflow.
This approach demonstrates how existing open-source infrastructure tooling can be elevated with orchestration, making Kubernetes provisioning simpler, repeatable and more accessible for modern platform teams.