Skip to content

Commit

Permalink
Windows node pool (#2130) (#2407)
Browse files Browse the repository at this point in the history
* added windows [age for AKS

* added windows page for AKS

* added windows page for AKS1

* docs: fix broken links

* docs: vale and style guide

* docs: vale suggestions

* docs: fix typos, last review

* docs: fix link

* docs: address suggestions

* Apply suggestions from code review



* docs: add more suggestions

* docs: fix wrong links

* docs: highlight manifest

---------

Co-authored-by: Melody Hazi <liltigermel@att.net>
Co-authored-by: Melody Hazi <melodyhazi@Melodys-MacBook-Pro.local>
Co-authored-by: Yuliia Horbenko <31223054+yuliiiah@users.noreply.github.com>
  • Loading branch information
4 people committed Mar 14, 2024
1 parent 6e525e3 commit 0d23d59
Show file tree
Hide file tree
Showing 4 changed files with 183 additions and 11 deletions.
33 changes: 22 additions & 11 deletions docs/docs-content/clusters/public-cloud/azure/aks.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ The following steps need to be performed to provision a new cluster:

2. Fill the basic cluster profile information such as **Name**, **Description**, **Tags** and **Cloud Account**.

3. In the **Cloud Account** dropdown list, select the Azure Cloud account or create a new one. See the
3. In the **Cloud Account** dropdown list, select the Azure Cloud account or create a new one. Refer to the
[Creating an Azure Cloud Account](azure-cloud.md) section above.

4. Next, in the **Cluster profile** tab from the **Managed Kubernetes** list, pick **AKS**, and select the AKS cluster
Expand Down Expand Up @@ -174,9 +174,9 @@ A complete AKS cluster contains the following:

<br />

1. As a mandatory primary **System Node Pool**, this pool will run the pods necessary to run a Kubernetes cluster, like
the control plane and etcd. All system pools must have at least a single node for a development cluster; one (1) node
is enough for high availability production clusters, and three (3) or more is recommended.
1. As a mandatory primary **System Node Pool**, this pool will host the pods necessary to operate a Kubernetes cluster,
like the control plane and etcd. All system pools must have at least a single node for a development cluster; one
node is enough for high availability production clusters, and three nodes or more is recommended.

2. **Worker Node** pools consist of one (1) or more per workload requirements. Worker node pools can be sized to zero
(0) nodes when not in use.
Expand Down Expand Up @@ -220,8 +220,18 @@ During cluster creation, you will default to a single pool.

6. Enter the **Managed Disk** information and its size.

7. If you are including additional or multiple nodes to make a node pool, click the **Add Worker Pool** button to
create the next node.
:::info

You can add more worker node pools after creating the system node pool to customize specific worker nodes for
specialized workloads. For example, you can configure the system worker pool with the _Standard_D2_v2_ instance type
for general-purpose workloads, and another worker pool with the _Standard_NC12s_v3_ instance type for GPU workloads.

You can also select **OS Type** as **Windows** to create a worker pool specifically for Windows workloads.

:::

7. If you require additional or multiple node pools for different types of workloads, click the **Add Worker Pool**
button to create the next node pool.

## Configure Node Pools

Expand Down Expand Up @@ -253,13 +263,14 @@ In all types of node pools, configure the following.

:::info

New worker pools may be added if you want to customize specific worker nodes to run specialized workloads. As an
example, the default worker pool may be configured with the <i>Standard_D2_v2</i> instance types for general-purpose
workloads, and another worker pool with the instance type <i>Standard_NC12s_v3</i> can be configured to run GPU
workloads.
You can add new worker pools to customize specific worker nodes for specialized workloads. As an example, you can
configure the default worker pool with the _Standard_D2_v2_ instance type for general-purpose workloads, and another
worker pool with the _Standard_NC12s_v3_ instance type for GPU workloads.

:::

<br />

- Provide the disk type via the **Managed Disk** dropdown and the size in Gigabytes (GB) in the **Disk size** field.

:::info
Expand Down Expand Up @@ -307,7 +318,7 @@ following are the steps to create the custom user _kubeconfig_ file:
4. Once the roles and role bindings are created, these roles can be linked to the Groups created in Azure AD.

5. The users can now access the Azure clusters with the complete benefits of AAD. To get the user-specific _kubeconfig_
file, please run the following command:
file, please issue the following command:

```shell
az aks get-credentials --resource-group <resource-group> --name <cluster-name>
Expand Down
2 changes: 2 additions & 0 deletions docs/docs-content/clusters/public-cloud/azure/azure.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ To learn more about Palette and Azure cluster creation and its capabilities chec

- [Create and Manage Azure AKS Cluster](aks.md)

- [Deploy Windows Workloads](windows.md)

- [Create and Manage IaaS Azure Cluster](create-azure-cluster.md)

- [Deleting an Azure Cluster](../../cluster-management/remove-clusters.md)
Expand Down
159 changes: 159 additions & 0 deletions docs/docs-content/clusters/public-cloud/azure/windows.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
---
sidebar_label: "Deploy Windows Workloads"
title: "Deploy Microsoft Windows Workloads on an Azure AKS Cluster"
description:
"How to create and manage Windows Node Pools and deploy a Windows-based application on an Azure AKS Cluster."
hide_table_of_contents: false
tags: ["public cloud", "azure"]
sidebar_position: 35
---

Palette supports the deployment of Microsoft Windows applications on [Azure AKS clusters](../azure/aks.md). For the
Windows applications to work, Palette requires a Windows-based node pool created within the cluster. This section guides
you on creating a Windows node pool within an existing AKS cluster managed by Palette and configuring your Windows
application to be deployed to that node pool.

## Prerequisites

- An AKS cluster created as described in the [Create and Manage Azure AKS Cluster](./aks.md) guide.

- A Linux-based node pool configured as the system node pool as described in the
[Create a System Node Pool](../azure/aks.md#create-a-system-node-pool) section of the
[Create and Manage Azure AKS Cluster](../azure/aks.md) guide.

- A Windows node pool configured as described in the [Create a Windows Node Pool](#create-a-windows-node-pool) section.

## Enablement

### Create a Windows Node Pool

Follow the steps below to create a Windows node pool within an existing AKS cluster. Refer to the
[Node Pools](../../cluster-management/node-pool.md) page for more information about node pool configuration.

:::info

Palette also allows you to add a Windows node pool during the creation of an AKS cluster. Refer to the
[Create and Manage Azure AKS CLuster - Create and Remove Node Pools](./aks#create-and-remove-node-pools) page to learn
more.

:::

1. Log in to Palette, navigate to the left **Main Menu**, and click on **Clusters**.

2. Select your Azure AKS cluster.

3. Navigate to the **Nodes** tab and click on **New Node Pool**.

4. Provide a name for your node pool. When naming a node pool, it is good practice to include a name that matches the
node and operating system (OS) in Azure.

5. If auto-scaling is necessary, enable the **Enable Autoscaler** option.

:::warning

Do not select the **System Node Pool** option. System node pools must be Linux-based, and choosing this option will
remove the ability to create a Windows node pool.

:::

6. Enter the **Number of nodes in the pool**, or set the **Minimum Size** and **Maximum Size** if you have enabled
Autoscaler.

7. Include **Additional Labels** if desired. This step is optional.

8. Enable **Taints**. This step is also optional.

9. Choose the **Instance type**. Once selected, the cost details will be displayed.

10. For the **OS Type**, choose **Windows**.

11. Select the **Managed Disk** information and its size.

12. Last, click on **Confirm** to create the Windows node pool.

The video below showcases the process of creating a Windows node pool within an existing AKS cluster.

<br />

<Video title="add-windows-node-pool" src="/videos/clusters/public-cloud/azure/add-windows-node-pool.mp4"></Video>

<br />

### Create an Add-on Profile with a Windows Workload

After creating your Windows node pool, use the following steps to create an add-on cluster profile with a Windows
workload.

13. Follow the
[Add a Manifest to an Add-on Profile](../../../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-manifest-addon.md#add-manifest-to-add-on-profile)
guide to create an add-on cluster profile with a custom manifest.

14. Use the manifest provided below for a sample ASP.NET application. Alternatively, use your own Windows application
manifest. It is essential to include in the **spec** block of the manifest the **nodeSelector: "kubernetes.io/os":
windows** specification. This specification is required for Kubernetes to know that the application needs to be
deployed on a Windows node.

```yaml {20-22}
apiVersion: v1
kind: Namespace
metadata:
name: win-pack
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: win-pack
name: sample
labels:
app: sample
spec:
replicas: 1
template:
metadata:
name: sample
labels:
app: sample
spec:
nodeSelector:
"kubernetes.io/os": windows
containers:
- name: sample
image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
resources:
limits:
cpu: 1
memory: 800M
ports:
- containerPort: 80
selector:
matchLabels:
app: sample
---
apiVersion: v1
kind: Service
metadata:
name: sample
namespace: win-pack
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
selector:
app: sample
```
### Deploy a Windows Add-on Profile to an Existing AKS Cluster
Lastly, after creating your add-on cluster profile, attach it to your AKS cluster that has the previously created
Windows node pool. Follow the steps outlined in the
[Attach an Add-on Profile](../../../clusters/imported-clusters/attach-add-on-profile.md#attach-an-add-on-profile) guide
to attach your add-on cluster profile to the AKS cluster.
## Validate
1. In Palette, navigate to the left **Main Menu** and select **Clusters**.
2. Next, click on your AKS cluster, which will open the cluster's **Overview** page.
3. Click on the exposed **Services** URL to access the Windows application landing page.
Binary file not shown.

0 comments on commit 0d23d59

Please sign in to comment.