Przejdź do treści

Azure – Integracja ACR z AKS

Kubernetes - integracja AKS z ACR 2022

Obrazy, których używamy w kubernetesie pobieramy z publicznych registry (gdzie nie potrzebujemy się logować), albo z prywatnych gdzie potrzebujemy się uwierzytelnić. Na platformie Microsoft Azure można zintegrować Azure  Kubernetes Service(AKS) z Azure Container Registries (ACR), czyli naszym prywatnym registry nie używając sekretów w pliku yaml.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx1-test
  labels:
    app: nginx1-test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx1-test
  template:
    metadata:
      labels:
        app: nginx1-test
    spec:
      imagePullSecrets:
      - name: acr-secret
      containers:
      - name: nginx
        image: <acr-name>.azurecr.io/nginx:v1
        ports:
        - containerPort: 80

Po integracji będziemy mogli łączyć się do naszego prywatnego registry jak do publicznego bez używania sekretów (imagePullSecrets) w yamlu.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx1-test
  labels:
    app: nginx1-test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx1-test
  template:
    metadata:
      labels:
        app: nginx1-test
    spec:
      containers:
      - name: nginx
        image: <acr-name>.azurecr.io/nginx:v1
        ports:
        - containerPort: 80

ACR z AKS można połączyć od razu podczas tworzenia Kubernetesa. ACR nie musi być nawet w tej samej subskrypcji:

az aks create -n NAZWA_AKSCluster -g NAZWA_ResourceGroup --generate-ssh-keys --attach-acr $ NAZWA_ACR
az aks create -n NAZWA_AKSCluster -g NAZWA_ResourceGroup --generate-ssh-keys --attach-acr /subscriptions/<subscription_id>/resourceGroups/<NAZWA_ContainerRegistryResourceGroup>/providers/Microsoft.ContainerRegistry/registries/NAZWA_ACR

Jeśli już mamy stworzony klaster wystarczy zrobić update i podać nazwę albo ID naszego ACR:

az aks update -n NAZWA_AKSCluster -g NAZWA_ResourceGroup --attach-acr NAZWA_ACR
az aks update -n NAZWA_AKSCluster -g NAZWA_ResourceGroup --attach-acr ID_ACR

Jeśli mamy więcej subskrypcji to przełączamy się na tą zawierającą kubernetesa albo dodajemy do polecenia –subscription :

az aks update -n NAZWA_AKSCluster -g NAZWA_ResourceGroup --attach-acr NAZWA_ACR  --subscription ID_SUBSKRYPCJI

Aby usunąć integrację zamiast –attach-acr używamy –detach-acr :

az aks update -n NAZWA_AKSCluster -g NAZWA_ResourceGroup -- detach-acr NAZWA_ACR

Gdy zintegrowaliśmy AKS a ACR nie potrzebujemy już podawać w yamlu „imagePullSecrets”.

Jeśli ciekawią cie tematy związane z Kubernetesem zajrzyj do innych moich wpisów z nim powiązanych https://lepczynski.it/category/k8s/.

Artykuły związane z Azurem znajdziesz w kategorii azure https://lepczynski.it/category/azure/.

Dokumentacja Microsoftu na temat ACR i AKS:

https://docs.microsoft.com/pl-pl/azure/container-registry/

https://docs.microsoft.com/pl-pl/azure/aks/