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/