Catégorie : Kubernetes (AKS)

AKS | System / User Node Pools

Salut!

Dans cet article, je vais vous présenter un nouveau concept du monde AKS, les system node pool et les user node pool. Mais avant tout chose, commençons ensemble par redéfinir le concept de Node Pool (pools de nœuds). Ls nœuds (node) d’une même configuration sont regroupés dans des pools de nœuds. Ces pools de nœuds contiennent les machines virtuelles sous-jacentes qui vont exécuter vos containers.

Un cluster AKS peut supporter plusieurs Node Pools, on retrouve plus souvent des architectures ou les node pools sont utilisés pour segmenter les applications critiques ou encore les application utilisants des ressources matériels spécifiques comme des GPUs.

Il est désormais possible de créer deux nouveaux types de node pools:

  • Node Pool System: Ce premier type de node pool va héberger l’ensemble des pods nécessaires au bon fonctionnement du cluster, c’est à dire Tunnelfront ou encore CoreDNS.
  • Node Pool User: Second type de node pool va héberger les pods de vos applications.

Si vous créer un cluster AKS, avec un seul node pool, ce node pool sera de type système. Il hébergera vos l’ensemble des pods nécessaire au bon fonctionnement du cluster ainsi que les pods de vos applications.

Dans ce premier exemple, nous allons créer un node pool de type system au sein d’un cluster AKS existant.

# - Add AKS Node Pool System to an existing AKS cluster
az aks nodepool add -g myResourceGroup --cluster-name myAKSCluster -n mynodepool --mode system

# - Show Node Pool Spec
az aks nodepool show -g myResourceGroup --cluster-name myAKSCluster -n mynodepool

Dans ce second exemple, nous allons créer un node pool de type user au sein d’un cluster AKS existiant.

# - Add AKS Node Pool System to an existing AKS cluster
az aks nodepool add -g myResourceGroup --cluster-name myAKSCluster -n mynodepool --mode user

# - Show Node Pool Spec
az aks nodepool show -g myResourceGroup --cluster-name myAKSCluster -n mynodepool

Maxime.


Hello,

In this article I would like share with you a new AKS concept: System Node Pool and User Mode Pool.

System node pools and user node pools are two different node pool modes for your AKS clusters.

  • System node pools serve the primary purpose of hosting critical system pods such as CoreDNS and tunnelfront.
  • User node pools serve the primary purpose of hosting your application pods.

However, application pods can be scheduled on system node pools if you wish to only have one pool in your AKS cluster. Every AKS cluster must contain at least one system node pool with at least one node.

In this first example, we will create system node pool inside our existing AKS cluster.

# - Add AKS Node Pool System to an existing AKS cluster
az aks nodepool add -g myResourceGroup --cluster-name myAKSCluster -n mynodepool --mode system

# - Show Node Pool Spec
az aks nodepool show -g myResourceGroup --cluster-name myAKSCluster -n mynodepool

In this second example, we will create user node pool inside our existing AKS cluster.

# - Add AKS Node Pool System to an existing AKS cluster
az aks nodepool add -g myResourceGroup --cluster-name myAKSCluster -n mynodepool --mode user

# - Show Node Pool Spec
az aks nodepool show -g myResourceGroup --cluster-name myAKSCluster -n mynodepool

Maxime.

AKS | Attack matrix for Kubernetes

[English below]

Bonjour,

Dans cet article, je souhaite vous partager la matrice d’attaque d’une plateforme Kubernetes comme AKS basée sur le framework MITRE.

Dans un premier temps, permettez moi de redéfinir le framework MITRE. Ce framework est une base de connaissances incluant des tactiques et techniques connues et impliquées dans des cyberattaques. Ces matrices aident les organisations à comprendre la surface d’attaque de leur environnement et à s’assurer qu’elles disposent des contrôles de sécurité détectifs et préventifs adéquats à leurs différents risques. Le framework s’appuie sur les catégories suivantes:

  • Accès initial (Initial access)
  • Exécution (Execution)
  • Persistance (Persistence)
  • Escalade de privilèges (Privilege Escalation)
  • Évasion de la défense (Defense evasion)
  • Accès aux informations d’identification (Credential access)
  • Découverte (Discovery)
  • Mouvement latéral (Lateral movement)
  • Impact (Impact)

Vous pouvez retrouver l’article original crée par Yossi Weizman à l’adresse ci-dessous: https://www.microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes/

Maxime.


Hello,

In this article, I would like to share with you the attack matrix for Kubernetes based on MITRE framework.

The MITRE ATT&CK™ framework is a comprehensive matrix of tactics and techniques used by threat hunters, red teamers, and defenders to better classify attacks and assess an organization’s risk.

The aim of the framework is to improve post-compromise detection of adversaries in enterprises by illustrating the actions an attacker may have taken. How did the attacker get in? How are they moving around? The knowledge base is designed to help answer those questions that while contributing to the awareness of an organization’s security posture at the perimeter and beyond. Organizations can use the framework to identify holes in defenses, and prioritize them based on risk.

This framework uses the following categories:

  • Initial access
  • Execution
  • Persistence
  • Privilege Escalation
  • Defense evasion
  • Credential access
  • Discovery
  • Lateral movement
  • Impact
L’attribut alt de cette image est vide, son nom de fichier est k8s-matrix-1024x545.png.

Please find the following article created by Yossi Weizman: https://www.microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes/

Maxime.

AKS | Azure Spot Instances

[English below]

Salut,

Dans cet article, nous allons voir ensemble comment créer un cluster AKS utilisant un pool de spot instances. L’intérêt est d’utiliser des instances de type spot afin de pouvoir bénéficier de puissance de calcul non utilisé par le fournisseur de cloud et ainsi obtenir un rabais important sur le prix de cette instance.

Azure ChannelsAzure Spot VMs Disponibilité
Enterprise AgreementYes
Pay As You GoYes
Cloud Service Provider (CSP)Contact your partner
BenefitsNot available
SponsoredNot available
Free TrialNot available

L’objectif de cet article est de vous présenter comment créer un pool d’instances de type spot pour vos workloads AKS qui sont non critiques. Au moment où j’écris cet article, cette fonctionnalité est encore en public preview et nous n’avons pas de SLA disponible pour les instances de type spot.

# - Create a Ressource Group
az group create --name aksspot --location eastus

# - Create an AKS cluster
az aks create --resource-group aksspot --name aksdemospot --node-vm-size Standard_A2_v2 --node-count 2 --generate-ssh-keys

# - Register Spotpoolpreview
az feature register --namespace "Microsoft.ContainerService" --name "spotpoolpreview"

az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/spotpoolpreview')].{Name:name,State:properties.state}"

# - Install the aks-preview extension
az extension add --name aks-preview
 
# - Update the extension to make sure you have the latest version installed
az extension update --name aks-preview

# - Add spot pool to an existing AKS Cluster
az aks nodepool add \
    --resource-group aksspot \
    --cluster-name aksdemospot \
    --name spotnodepool \
    --priority Spot \
    --eviction-policy Delete \
    --spot-max-price -1 \
    --enable-cluster-autoscaler \
    --node-vm-size Standard_D2_v3 \
    --min-count 1 \
    --max-count 3 \
    --no-wait

# - Show AKS NodePool
az aks nodepool show --resource-group aksspot --cluster-name aksdemospot --name spotnodepool

Dans cet exemple, vous avez pu constater que le paramètre « spot-max-price » est à « -1 ». Le prix maximal sera le prix actuel (au maximum, le prix des machines virtuelles standards). 

Vous pouvez tout à fait remplacer ce paramètre directement par le prix maximum que vous souhaitez payer. Par exemple pour 0.98765, vous vous engagez à payer au maximum un prix de 0.98765$USD par heure.

Si le prix de votre machine dépasse le prix définit, votre machine virtuelle sera supprimée « –eviction-policy Delete ». Dans le cas où vous ne souhaitez pas que celle-ci soit supprimée mais désallouée, vous pouvez remplacer « –eviction-policy Delete » par « eviction-policy Deallocate ».

Maxime.


Hello,

In this article, I am explaining how you can create an AKS cluster with a pool of spot instances. The principal advantage here is to use unallocated compute ressources with a low price.

Azure ChannelsAzure Spot VMs Availability
Enterprise AgreementYes
Pay As You GoYes
Cloud Service Provider (CSP)Contact your partner
BenefitsNot available
SponsoredNot available
Free TrialNot available

The goal of this article is to explain how to create a spot pool for your non critical workloads. This feature is available only in preview and we don’t have SLA support at the time I am writing this article.

# - Create a Ressource Group
az group create --name aksspot --location eastus

# - Create an AKS cluster
az aks create --resource-group aksspot --name aksdemospot --node-vm-size Standard_A2_v2 --node-count 2 --generate-ssh-keys

# - Register Spotpoolpreview
az feature register --namespace "Microsoft.ContainerService" --name "spotpoolpreview"

az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/spotpoolpreview')].{Name:name,State:properties.state}"

# - Install the aks-preview extension
az extension add --name aks-preview

# - Update the extension to make sure you have the latest version installed
az extension update --name aks-preview

# - Add spot pool to an existing AKS Cluster
az aks nodepool add \
--resource-group aksspot \
--cluster-name aksdemospot \
--name spotnodepool \
--priority Spot \
--eviction-policy Delete \
--spot-max-price -1 \
--enable-cluster-autoscaler \
--node-vm-size Standard_D2_v3 \
--min-count 1 \
--max-count 3 \
--no-wait

# - Show AKS NodePool
az aks nodepool show --resource-group aksspot --cluster-name aksdemospot --name spotnodepool

In this example, the parameter « spot-max-price » is set to: « -1 ». The maximum price of this virtual machine will match the current price on the market.

If you want, you can replace this parameter by the maximum price you want to paid. For example, if you indicate 0.98765, in this case your maximum price will be 0.98765$USD per hour.

In the case of different prices, i.e. the maximum price is higher than the define one, your virtual machine will be deleted « –eviction-policy Delete ». If you don’t want to delete the virtual machine but only desallocate it, you can replace « –eviction-policy Delete » by « eviction-policy Deallocate ».

Maxime.