Convert Figma logo to code with AI

Azure logoaks-engine

AKS Engine: legacy tool for Kubernetes on Azure (see status)

1,027
522
1,027
0

Top Related Projects

109,710

Production-Grade Container Scheduling and Management

15,866

Deploy a Production Ready Kubernetes Cluster

23,209

Complete container management platform

Install and config an OpenShift 3.x cluster

42,146

Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.

26,764

The Kubernetes Package Manager

Quick Overview

AKS Engine is an open-source tool that helps you create, customize, and manage Kubernetes clusters on Azure. It provides a way to generate ARM (Azure Resource Manager) templates for deploying fully customized Kubernetes clusters to Azure.

Pros

  • Offers fine-grained control over cluster configuration
  • Supports advanced networking options and multiple node pools
  • Enables hybrid deployments and air-gapped environments
  • Provides a way to use the latest Kubernetes versions before they're available in AKS

Cons

  • Requires more management overhead compared to managed AKS
  • Less integrated with other Azure services
  • May have a steeper learning curve for beginners
  • Clusters created with AKS Engine are not supported by Microsoft

Getting Started

  1. Install AKS Engine:
curl -o get-akse.sh https://raw.githubusercontent.com/Azure/aks-engine/master/scripts/get-akse.sh
chmod 700 get-akse.sh
./get-akse.sh
  1. Create an API model (cluster definition):
{
  "apiVersion": "vlabs",
  "properties": {
    "orchestratorProfile": {
      "orchestratorType": "Kubernetes"
    },
    "masterProfile": {
      "count": 1,
      "dnsPrefix": "myakscluster",
      "vmSize": "Standard_D2_v3"
    },
    "agentPoolProfiles": [
      {
        "name": "agentpool1",
        "count": 3,
        "vmSize": "Standard_D2_v3"
      }
    ],
    "linuxProfile": {
      "adminUsername": "azureuser",
      "ssh": {
        "publicKeys": [
          {
            "keyData": "<your-ssh-public-key>"
          }
        ]
      }
    }
  }
}
  1. Deploy the cluster:
aks-engine deploy --subscription-id <subscription-id> \
    --resource-group <resource-group> \
    --location <location> \
    --api-model <path-to-api-model> \
    --client-id <service-principal-client-id> \
    --client-secret <service-principal-client-secret>

This will generate ARM templates and deploy the Kubernetes cluster to Azure.

Competitor Comparisons

109,710

Production-Grade Container Scheduling and Management

Pros of kubernetes

  • Broader ecosystem support and community involvement
  • Platform-agnostic, can run on various cloud providers and on-premises
  • More extensive feature set and customization options

Cons of kubernetes

  • Steeper learning curve and more complex setup
  • Requires more manual configuration and management
  • May be overkill for smaller deployments or simpler use cases

Code comparison

aks-engine (Go):

func (g *simpleGenerator) getAPIServerConfig(cs *api.ContainerService) string {
    apiServerConfig := map[string]string{}
    // ... (configuration logic)
    return helpers.JSONMarshalIndent(apiServerConfig, "", "    ", false)
}

kubernetes (Go):

func (c *completedConfig) New(delegationTarget genericapiserver.DelegationTarget) (*Master, error) {
    genericServer, err := c.GenericConfig.New("kube-apiserver", delegationTarget)
    if err != nil {
        return nil, err
    }
    // ... (server setup logic)
}

Both projects use Go and share similar architectural patterns, but kubernetes has a more extensive codebase with greater complexity and flexibility.

15,866

Deploy a Production Ready Kubernetes Cluster

Pros of kubespray

  • Multi-cloud and bare metal support, not limited to Azure
  • More flexible and customizable deployment options
  • Active community-driven development with frequent updates

Cons of kubespray

  • Steeper learning curve and more complex setup process
  • Requires more manual configuration and maintenance
  • Less integrated with Azure-specific features and services

Code Comparison

aks-engine (ARM template snippet):

{
  "apiVersion": "vlabs",
  "properties": {
    "orchestratorProfile": {
      "orchestratorType": "Kubernetes"
    },
    "masterProfile": {
      "count": 1,
      "dnsPrefix": "[parameters('dnsPrefix')]",
      "vmSize": "Standard_D2_v2"
    }
  }
}

kubespray (inventory file snippet):

all:
  hosts:
    node1:
      ansible_host: 192.168.1.10
      ip: 192.168.1.10
      access_ip: 192.168.1.10
  children:
    kube_control_plane:
      hosts:
        node1:
    kube_node:
      hosts:
        node1:

aks-engine is specifically designed for Azure and provides a more streamlined experience for deploying Kubernetes clusters on Azure. It uses ARM templates and integrates well with Azure services.

kubespray, on the other hand, offers a more flexible approach that works across multiple cloud providers and bare metal installations. It uses Ansible for deployment and configuration, allowing for more customization but requiring more manual setup and maintenance.

23,209

Complete container management platform

Pros of Rancher

  • Multi-cloud and on-premises support, offering greater flexibility
  • User-friendly web interface for cluster management
  • Extensive ecosystem with built-in tools and integrations

Cons of Rancher

  • Steeper learning curve for advanced configurations
  • May require additional resources for the management plane

Code Comparison

AKS Engine (Go):

func (td *TemplateDeployer) Deploy(ctx context.Context) error {
    if err := td.validateTemplate(); err != nil {
        return err
    }
    // Deployment logic
}

Rancher (Go):

func (c *Cluster) Deploy(ctx context.Context) error {
    if err := c.validateClusterSpec(); err != nil {
        return err
    }
    // Deployment logic
}

Both projects use Go and have similar deployment patterns, but Rancher's codebase is more extensive due to its broader feature set.

AKS Engine focuses specifically on Azure Kubernetes Service deployments, offering deep integration with Azure services and optimized performance for the Azure cloud. It provides a streamlined experience for users already committed to the Azure ecosystem.

Rancher, on the other hand, offers a more versatile solution that can manage multiple Kubernetes clusters across various cloud providers and on-premises environments. This makes it an attractive option for organizations with diverse infrastructure needs or those seeking to avoid vendor lock-in.

Install and config an OpenShift 3.x cluster

Pros of openshift-ansible

  • Supports a wider range of deployment options and platforms
  • Provides more advanced networking and security features
  • Offers integrated CI/CD pipelines and developer tools

Cons of openshift-ansible

  • More complex setup and configuration process
  • Steeper learning curve for new users
  • Higher resource requirements for cluster operation

Code Comparison

openshift-ansible:

- name: Install OpenShift
  hosts: all
  roles:
    - role: openshift_node
    - role: openshift_control_plane

aks-engine:

{
  "apiVersion": "vlabs",
  "properties": {
    "orchestratorProfile": {
      "orchestratorType": "Kubernetes"
    }
  }
}

The openshift-ansible example shows an Ansible playbook structure for installing OpenShift components, while the aks-engine example demonstrates a JSON configuration for defining a Kubernetes cluster. openshift-ansible uses Ansible roles for modular deployment, whereas aks-engine relies on a declarative JSON structure to specify cluster properties.

Both projects aim to simplify container orchestration deployment, but they differ in their approach and target platforms. openshift-ansible is more versatile and feature-rich but requires more expertise, while aks-engine is more focused on Azure-specific deployments with a simpler configuration process.

42,146

Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.

Pros of Terraform

  • Multi-cloud support, allowing infrastructure management across various providers
  • Extensive ecosystem with a wide range of providers and modules
  • Declarative syntax for defining infrastructure as code

Cons of Terraform

  • Steeper learning curve for complex deployments
  • Limited native support for Kubernetes-specific features
  • Potential for state management complexities in large-scale deployments

Code Comparison

AKS Engine (Go):

func (e *Engine) GenerateTemplates(ctx context.Context) error {
    if e.ClusterDefinition == nil {
        return errors.New("ClusterDefinition is nil")
    }
    // ... (additional code)
}

Terraform (HCL):

resource "azurerm_kubernetes_cluster" "example" {
  name                = "example-aks1"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  dns_prefix          = "exampleaks1"
  // ... (additional configuration)
}

The code snippets demonstrate the different approaches:

  • AKS Engine uses Go for template generation
  • Terraform uses HCL (HashiCorp Configuration Language) for resource definition

Both tools aim to simplify infrastructure management, but Terraform offers broader cloud support while AKS Engine focuses specifically on Azure Kubernetes Service deployments.

26,764

The Kubernetes Package Manager

Pros of Helm

  • Platform-agnostic package manager for Kubernetes, usable across various cloud providers and on-premises
  • Extensive ecosystem with a large community and many pre-built charts available
  • Supports templating and versioning for easier management of complex applications

Cons of Helm

  • Steeper learning curve for newcomers to Kubernetes
  • Less integrated with Azure-specific features and services
  • May require additional tools or scripts for full Azure integration

Code Comparison

aks-engine (ARM template snippet):

{
  "apiVersion": "vlabs",
  "properties": {
    "orchestratorProfile": {
      "orchestratorType": "Kubernetes"
    },
    "masterProfile": {
      "count": 1,
      "dnsPrefix": "myaks",
      "vmSize": "Standard_D2_v3"
    }
  }
}

Helm (Chart.yaml example):

apiVersion: v2
name: my-app
description: A Helm chart for my application
version: 0.1.0
appVersion: 1.16.0

aks-engine is specifically designed for Azure Kubernetes Service (AKS) deployments, offering tight integration with Azure services and optimized configurations. It provides a more streamlined experience for Azure users but is limited to the Azure ecosystem.

Helm, on the other hand, offers greater flexibility and portability across different Kubernetes environments. It has a larger community and more available packages but may require additional effort to integrate fully with Azure-specific features.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

AKS Engine - Deprecated tool for self-managed Kubernetes on Azure

Project status

This project is deprecated for Azure public cloud customers. Please use Azure Kubernetes Service (AKS) for managed Kubernetes or Cluster API Provider Azure for self-managed Kubernetes. There are no further releases planned; Kubernetes 1.24 was the final version to receive updates.

For use on the Azure Stack Hub product this project is fully supported and will continue to be supported by the Hub team throughout the lifespan of Azure Stack Hub. Development is already moved to a new Azure Stack Hub specific repository (Azure/aks-engine-azurestack). This new repository is where new releases for Azure Stack Hub clouds, starting at v0.75.3, will be published and where issues concerning Azure Stack Hub should be created.

Support

Please see our support policy.

Code of conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information, see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Data Collection

The software may collect information about you and your use of the software and send it to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may turn off the telemetry as described in the repository. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft's privacy statement. Our privacy statement is located at https://go.microsoft.com/fwlink/?LinkID=824704. You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices.

For more information, please see the telemetry documentation.