Published on 00/00/0000
Last updated on 00/00/0000
Published on 00/00/0000
Last updated on 00/00/0000
Share
Share
PRODUCT
11 min read
Share
Pipeline is Banzai Cloud's Kubernetes container management platform, which allows enterprises to develop, deploy and securely scale container-based applications in multi- and hybrid-cloud environments. While one of Pipeline's core features is to automate the provisioning of Kubernetes clusters across major cloud providers, including Amazon, Azure, Google, Alibaba Cloud and on-premise environments (VMware and bare metal), we strongly believe that Kubernetes as a Service should be capable of much more. Pipeline has been a key enabler of multi- and hybrid-cloud strategies, providing both a unified cockpit for operations and a high level of workflow and workload portability for developers across major cloud and datacenters - in four different ways.
A hybrid cloud is a composition of two or more distinct cloud infrastructures (private, community, or public) that remain unique entities, but are bound together by technology that enables data and application portability (e.g., cloud bursting for load balancing between clouds).
Today, we can provision Kubernetes clusters with the push of a button, a single CLI command, or a RESTful API call. Let's take a look at the bare minimum features of a Kubernetes as a Service (KaaS) platform, out-of-the-box:
By going through the list above on what we believe would be the bare minimum out of the box features of a Kubernetes as a Service platform should offer, we realized that there must be lots of components (roughly 40+) running on the control plane. These open source components are selected from the (in)famous CNCF landscape. Pipeline makes them work together seamlessly, and provides all the necessary glue code of configuration, resiliency, security, scaling, external integrations, what's more, it provides a rich UI, CLI and API to manage them with ease. While we were designing Pipeline we envisioned customers with diverse levels of Kubernetes familiarity getting stuck in yaml
hell. For both Pipeline and the Pipeline control plane (called Pipeline Installer) our design principles were clear:
The universal
tool that resulted from these principles was the Pipeline Installer (part of the banzai-cli), which allows you to install and configure your own Kubernetes as a Service control plane on your favorite environment and kickstart your Kubernetes service provider experience in minutes. Let's go into more detail about our design principles:
Let's take a look at how you can become the operator of your own (or someone else's) Kubernetes as a Service platform, in minutes.
The easiest way to kickstart your KaaS experience is to follow along with Pipeline's extensive documentation. As mentioned above, the control plane can run on multiple supported environments, so choose your preferred one from the quickstart guide, here. Have a quick look, but assuming you’d like to run the control plane an Amazon EC2, the installation is as simple as:
banzai pipeline up --provider=ec2
Setting aside simplicity for a moment, what's most exciting is your ability to customize the capabilities of the control plane and thus the features of the Kubernetes clusters launched with Pipeline. Let's go through 3 different setups with multiple configuration examples. Note that Banzai Cloud customers receive their own generated documentation based on their requirements. For example, the selected cloud or datacenter, load balancer, certificate management option, preferred authentication/authorization provider, et cetera.
Let's assume you’d like to set up the control plane on an EC2 instance which is securely accessible for others, so they can start using platform features. Once you have downloaded the Banzai CLI (curl https://getpipeline.sh | sh) and its prerequisites have been set (either Docker or containerd is installed on the machine where you are running the CLI) you can run: banzai pipeline up --init --workspace=installer-ec2-test --provider=ec2
Let's see what this simple banzai
CLI command does behind the scenes:
Let's go through some of the components it installs and are essential for a cloud-agnostic Kubernetes as a Service provider:
glue
and heavy liftingOnce the installation is ready, the CLI will output the access and login details of the control plane (can be customized):
pipeline-address = https://ec2-xx-yyy-4-zzz.us-west-1.compute.amazonaws.com/
pipeline-password = xyzackead3
pipeline-username = admin@example.com
Once you have logged in, you're ready to start spinning up clusters through the UI or CLI, and use all of the features that come enabled with the default installation.
The Pipeline Installer (banzai-cli) supports working with multiple workspaces as seen above. Workspaces allow you to manage multiple Pipeline installations on a per environment or per team basis. The Installer also lets you share your workspace through version control, so multiple administrators can work in the same workspaces, and parallel executions can be prevented with built-in "locks". Workspaces hold all the necessary information that is required to setup a fully functional Pipeline installation, from encrypted secrets to configuration files and cloud states. You can specify a workspace path via the --workspace
flag; if not otherwise specified, a default
workspace is used. We at Banzai Cloud manage multiple installations of Pipeline, ranging from our free service to multiple internal development environments and customer installations.
In this setup we showcase a customer setup which uses an EC2 instance to host the control plane, requires a high level of customization, and also uses the managed services of a cloud provider:
Now, let's examine the process by which this is done. The banzai
CLI is highly extensible, can run available CLI commands on extended or customer-specific Docker images (delivered as part of a commercial subscription package), and is configured with the de-facto language of Kubernetes, yaml
. In our case, the same CLI command will launch an EKS cluster on Amazon, configure an autoscaling nodepool or managed nodepool, set and integrate the service endpoints, and so on. Let's see the yaml
snippet in question:
providerConfig:
cluster_name: pipeline-prod
region: us-west-2
tags:
banzaicloud-pipeline-controlplane-uuid: f834d6a7-9c0c-4231-96d7-d2bb57ec9aa8
public_access_cidrs:
- 1.2.3.4/32
kubernetes_version: 1.15
endpoint_private_access: true
endpoint_public_access: true
node_pools:
- name: pool1
ami_type: "AL2_x86_64"
spot_price: "0.249"
desired_capacity: 3
instance_type: "c4.xlarge"
key_name: admin-key
max_size: 6
min_size: 3
The following snippet allows the user to customize the Amazon RDS instance, also managed by Pipeline:
mysql:
deletion_protection: true
create_db_parameter_group: true
parameter_group_family: mysql5.7
parameter_group_name: alpha-mysql-57
use_parameter_group_name_prefix: false
parameter_group_description: Parameter groups for XYZ
parameters:
- name: "max_allowed_packet"
value: "1073741824"
You can also use and customize AWS certificates:
traefik:
---
service:
annotations:
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:eu-xxx-x:123456789012:certificate/12345678-90ab-cdef-ghij-klmnopqrstuv
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: 443
You can configure a central location to store all the logs, in this example in S3:
logging:
---
s3:
enabled: true
region: "us-east-1"
bucket: "customer-log-bucket"
keyAuth:
enabled: true
accessKey: ${AWS_ACCESS_KEY_ID}
secretKey: ${AWS_SECRET_ACCESS_KEY}
You can see how flexible and extensible the control plane is, while keeping the same CLI simplicity (configs are in yaml
which the CLI understands and manages, in order to use the appropriate images (default or custom) as required by your environment). Contact us to learn more about available customizations in the commercial version of Pipeline, or if you have your own custom requirements which are not available in the open source version.
Banzai Cloud has been running a hosted and managed Pipeline environment. This is a totally free Pipeline control plane, managing Kubernetes clusters for over 2000 users across 5 clouds. The platform is mainly used for test and evaluation purposes, but we also know several hundreds users who start their production clusters and apply all the supported features from the instance. There is an active support community around it on Slack and GitHub.
Whether Heroku-like simplicity or deep yaml
configurations are your thing, you can find both in Pipeline, the universal Kubernetes as a Service platform. Give us a try and let us know how it works!
Banzai Cloud is changing how private clouds are built: simplifying the development, deployment, and scaling of complex applications, and putting the power of Kubernetes and Cloud Native technologies in the hands of developers and enterprises, everywhere. #multicloud #hybridcloud #BanzaiCloud
Get emerging insights on innovative technology straight to your inbox.
Discover why security teams rely on Panoptica's graph-based technology to navigate and prioritize risks across multi-cloud landscapes, enhancing accuracy and resilience in safeguarding diverse ecosystems.
The Shift is Outshift’s exclusive newsletter.
The latest news and updates on cloud native modern applications, application security, generative AI, quantum computing, and other groundbreaking innovations shaping the future of technology.