We are moving relatively quickly, implementing new Pipeline features and releases, with our second major release scheduled for this week. Among other new features we’ve already added a new managed Kubernetes provider, Microsoft’s Azure AKS.
Azure Container Service (AKS) is a preview
feature of the Azure Cloud – and we’re proud to be among its earliest adopters. We can provision and deploy apps to Kubernetes on Azure VMs the same way we do on EC2, however, at Banzai Cloud we strongly believe that the future is in managed Kubernetes services; most of our investment regarding cloud neutrality and provisioning is built on managed Kubernetes services both in the cloud (GKE, OCI and ACS in beta, or under development) and on-prem.
No official AKS Golang SDK has so far been made available, thus we’ve created and opensourced an Azure AKS Golang client/SDK
We are already successfully pushing Spark on Kubernetes, Zeppelin on Kubernetes, TensorFlow on Kubernetes, TiDB on Kubernetes, Java on Kubernetes and several other spotguides to AKS the cloud native way, and using our CI/CD pipeline to automate the build, deployment, provisioning and monitoring of these applications.
During AKS integration we came across several issues with, or limitations inherent in, the platform. We’re happy to report that we’ve collected, fixed and contributed these back to the community to make AKS a little better and speed up the progress towards GA. Just as in Pipeline, every product in preview
mode needs early adopters: individuals or companies on the cutting edge of software development.
net/http: TLS handshake timeout
. Apparently this error message was encountered by a few other people as well:
Until this is fixed upstream we overcome
it by retrying the Helm install steps in a (crash)-loop
LoadBalancer
-type Kubernetes service. When using a LoadBalancer
-type service, Kubernetes talks to cloud providers to get an Azure Load Balancer that is reachable from outside. We’ve seen cases in which it takes minutes for the URL of the AzureLB to be created and assigned to the Kubernetes service. Until the Kubernetes service is created, it shows Pending...
as its PublicIP.default
. In this case, AKS will provide a Managed/Standard_LRS
storage account, which works fine.If we need to create our own Storage Class with the same params (Managed/Standard_LRS
), or to create a new storage class with the same properties, the Storage Account is never created but the PVC bounds successfully.If the storage class is changed to Shared
instead of Managed
, the storage account is created but the PVC remains in a pending state.Note: The Pipeline CI/CD module mentioned in this post is outdated and not available anymore. You can integrate Pipeline to your CI/CD solution using the Pipeline API. Contact us for details.
MC_<RG that contains the cluster>_<cluster name>_<cluster_location>
(e.g. MC_SGBanzaiCloud_cluster1_westeurope). The problem with this approach is that the format of the name of the SG that corresponds to the cluster may change over time, thus we’d prefer that the AKS API support retrieval of the SG.We hope this was helpful – if you’re interested in how we provision AKS clusters and deploy apps, make sure to check back later this week to read about the new AKS release.