Szybki start: wdrażanie hosta kontenera systemu Linux platformy Azure dla klastra usługi AKS przy użyciu szablonu usługi ARM
Rozpocznij pracę z hostem kontenera systemu Linux platformy Azure przy użyciu szablonu usługi Azure Resource Manager (ARM) w celu wdrożenia klastra hostów kontenerów systemu Linux platformy Azure. Po zainstalowaniu wymagań wstępnych utworzysz parę kluczy SSH, przejrzyj szablon, wdróż szablon i zweryfikuj go, a następnie wdrożysz aplikację.
Szablon usługi Azure Resource Manager to plik JavaScript Object Notation (JSON), który definiuje infrastrukturę i konfigurację projektu. W szablonie używana jest składnia deklaratywna. Możesz opisać zamierzone wdrożenie bez konieczności pisania sekwencji poleceń programowania w celu utworzenia wdrożenia.
Wymagania wstępne
-
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Przewodnik Szybki start usługi Azure Cloud Shell — Bash.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Jeśli nie masz jeszcze zainstalowanego narzędzia kubectl, zainstaluj go za pomocą interfejsu wiersza polecenia platformy Azure przy użyciu
az aks install-cli
polecenia lub postępuj zgodnie z instrukcjami nadrzędnymi.Aby utworzyć klaster usługi AKS przy użyciu szablonu usługi Resource Manager, należy podać klucz publiczny SSH. Jeśli potrzebujesz tego zasobu, zapoznaj się z następującą sekcją; w przeciwnym razie przejdź do sekcji Przeglądanie szablonu .
Tożsamość używana do utworzenia klastra ma odpowiednie minimalne uprawnienia. Aby uzyskać więcej informacji na temat dostępu i tożsamości dla usługi AKS, zobacz Opcje dostępu i tożsamości dla usługi Azure Kubernetes Service (AKS).
Aby wdrożyć plik Bicep lub szablon usługi ARM, potrzebujesz dostępu do zapisu w zasobach wdrażanych i dostępu do wszystkich operacji w typie zasobu Microsoft.Resources/deployments. Na przykład do wdrożenia maszyny wirtualnej potrzebne są uprawnienia Microsoft.Compute/virtualMachines/write i Microsoft.Resources/deployments/*. Aby uzyskać listę ról i uprawnień, zobacz Role wbudowane platformy Azure.
Tworzenie pary kluczy SSH
Aby uzyskać dostęp do węzłów usługi AKS, należy nawiązać połączenie przy użyciu pary kluczy SSH (publicznej i prywatnej), która jest generowana przy użyciu ssh-keygen
polecenia . Domyślnie te pliki są tworzone w katalogu ~/.ssh . ssh-keygen
Uruchomienie polecenia zastępuje dowolną parę kluczy SSH o tej samej nazwie już istniejącej w danej lokalizacji.
Przejdź do witryny , https://shell.azure.com aby otworzyć usługę Cloud Shell w przeglądarce.
Uruchom polecenie
ssh-keygen
. Poniższy przykład tworzy parę kluczy SSH przy użyciu szyfrowania RSA i długości bitu 4096:ssh-keygen -t rsa -b 4096
Aby uzyskać więcej informacji na temat tworzenia kluczy SSH, zobacz Tworzenie kluczy SSH i zarządzanie nimi na potrzeby uwierzytelniania na platformie Azure.
Przegląd szablonu
Poniższe wdrożenie korzysta z szablonu usługi ARM z szablonów szybkiego startu platformy Azure.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"clusterName": {
"type": "string",
"defaultValue": "azurelinuxakscluster",
"metadata": {
"description": "The name of the Managed Cluster resource."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location of the Managed Cluster resource."
}
},
"dnsPrefix": {
"type": "string",
"metadata": {
"description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN."
}
},
"osDiskSizeGB": {
"type": "int",
"defaultValue": 0,
"minValue": 0,
"maxValue": 1023,
"metadata": {
"description": "Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize."
}
},
"agentCount": {
"type": "int",
"defaultValue": 3,
"minValue": 1,
"maxValue": 50,
"metadata": {
"description": "The number of nodes for the cluster."
}
},
"agentVMSize": {
"type": "string",
"defaultValue": "Standard_DS2_v2",
"metadata": {
"description": "The size of the Virtual Machine."
}
},
"linuxAdminUsername": {
"type": "string",
"metadata": {
"description": "User name for the Linux Virtual Machines."
}
},
"sshRSAPublicKey": {
"type": "string",
"metadata": {
"description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'"
}
},
"osType": {
"type": "string",
"defaultValue": "Linux",
"allowedValues": [
"Linux"
],
"metadata": {
"description": "The type of operating system."
}
},
"osSKU": {
"type": "string",
"defaultValue": "AzureLinux",
"allowedValues": [
"AzureLinux",
"Ubuntu"
],
"metadata": {
"description": "The Linux SKU to use."
}
}
},
"resources": [
{
"type": "Microsoft.ContainerService/managedClusters",
"apiVersion": "2021-03-01",
"name": "[parameters('clusterName')]",
"location": "[parameters('location')]",
"properties": {
"dnsPrefix": "[parameters('dnsPrefix')]",
"agentPoolProfiles": [
{
"name": "agentpool",
"mode": "System",
"osDiskSizeGB": "[parameters('osDiskSizeGB')]",
"count": "[parameters('agentCount')]",
"vmSize": "[parameters('agentVMSize')]",
"osType": "[parameters('osType')]",
"osSKU": "[parameters('osSKU')]",
"storageProfile": "ManagedDisks"
}
],
"linuxProfile": {
"adminUsername": "[parameters('linuxAdminUsername')]",
"ssh": {
"publicKeys": [
{
"keyData": "[parameters('sshRSAPublicKey')]"
}
]
}
}
},
"identity": {
"type": "SystemAssigned"
}
}
],
"outputs": {
"controlPlaneFQDN": {
"type": "string",
"value": "[reference(parameters('clusterName')).fqdn]"
}
}
}
Aby dodać system Azure Linux do istniejącego szablonu usługi ARM, musisz dodać "osSKU": "AzureLinux"
interfejs agentPoolProfiles
"mode": "System"
APIVersion do wersji 2021-03-01 lub nowszej ("apiVersion": "2021-03-01"
).
Wdrażanie szablonu
Wybierz poniższy przycisk, aby zalogować się na platformie Azure i otworzyć szablon.
Wybierz lub wprowadź następujące wartości.
W tym przewodniku Szybki start pozostaw wartości domyślne rozmiaru dysku systemu operacyjnego GB, liczba agentów, rozmiar maszyny wirtualnej agenta, typ systemu operacyjnego i wersję platformy Kubernetes. Podaj własne wartości dla następujących parametrów szablonu:
- Subskrypcja: wybierz subskrypcję platformy Azure.
- Grupa zasobów: wybierz pozycję Utwórz nową. Wprowadź unikatową nazwę grupy zasobów, taką jak testAzureLinuxResourceGroup, a następnie wybierz przycisk OK.
- Lokalizacja: wybierz lokalizację, na przykład Wschodnie stany USA.
- Nazwa klastra: wprowadź unikatową nazwę klastra usługi AKS, taką jak testAzureLinuxCluster.
- Prefiks DNS: wprowadź unikatowy prefiks DNS dla klastra, taki jak myAzureLinuxCluster.
- Nazwa użytkownika administratora systemu Linux: wprowadź nazwę użytkownika, aby nawiązać połączenie przy użyciu protokołu SSH, takiego jak azureUser.
- Klucz publiczny SSH RSA: skopiuj i wklej publiczną część pary kluczy SSH (domyślnie zawartość pliku ~/.ssh/id_rsa.pub).
Wybierz pozycję Przejrzyj i utwórz.
Utworzenie klastra hostów kontenerów systemu Linux platformy Azure zajmuje kilka minut. Przed przejściem do następnego kroku poczekaj na pomyślne wdrożenie klastra.
Weryfikowanie wdrożenia
Łączenie z klastrem
Aby zarządzać klastrem Kubernetes, użyj klienta wiersza polecenia kubernetes kubectl.
Zainstaluj
kubectl
lokalnie przy użyciuaz aks install-cli
polecenia :az aks install-cli
Skonfiguruj
kubectl
, aby nawiązać połączenie z klastremaz aks get-credentials
Kubernetes przy użyciu polecenia . To polecenie powoduje pobranie poświadczeń i zastosowanie ich w konfiguracji interfejsu wiersza polecenia Kubernetes.az aks get-credentials --resource-group testAzureLinuxResourceGroup --name testAzureLinuxCluster
Sprawdź połączenie z klastrem
kubectl get
przy użyciu polecenia . To polecenie zwraca listę węzłów klastra.kubectl get nodes
Poniższy przykład danych wyjściowych przedstawia trzy węzły utworzone w poprzednich krokach. Upewnij się, że stan węzła to Gotowe:
NAME STATUS ROLES AGE VERSION aks-agentpool-41324942-0 Ready agent 6m44s v1.12.6 aks-agentpool-41324942-1 Ready agent 6m46s v1.12.6 aks-agentpool-41324942-2 Ready agent 6m45s v1.12.6
Wdrażanie aplikacji
Plik manifestu kubernetes definiuje żądany stan klastra, taki jak obrazy kontenerów do uruchomienia.
W tym przewodniku Szybki start utworzysz wszystkie obiekty potrzebne do uruchomienia aplikacji Azure Vote za pomocą manifestu. Ten manifest obejmuje dwa wdrożenia platformy Kubernetes:
- Przykładowe aplikacje azure Vote Python.
- Wystąpienie usługi Redis.
Tworzone są również dwie usługi Kubernetes:
- Wewnętrzna usługa dla wystąpienia usługi Redis.
- Usługa zewnętrzna w celu uzyskania dostępu do aplikacji Azure Vote z Internetu.
Utwórz plik o nazwie
azure-vote.yaml
.- Jeśli używasz usługi Azure Cloud Shell, ten plik można utworzyć przy użyciu metody
code
,vi
lubnano
tak, jakby działał w systemie wirtualnym lub fizycznym
- Jeśli używasz usługi Azure Cloud Shell, ten plik można utworzyć przy użyciu metody
Skopiuj następującą definicję YAML:
apiVersion: apps/v1 kind: Deployment metadata: name: azure-vote-back spec: replicas: 1 selector: matchLabels: app: azure-vote-back template: metadata: labels: app: azure-vote-back spec: nodeSelector: "kubernetes.io/os": linux containers: - name: azure-vote-back image: mcr.microsoft.com/oss/bitnami/redis:6.0.8 env: - name: ALLOW_EMPTY_PASSWORD value: "yes" resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 6379 name: redis --- apiVersion: v1 kind: Service metadata: name: azure-vote-back spec: ports: - port: 6379 selector: app: azure-vote-back --- apiVersion: apps/v1 kind: Deployment metadata: name: azure-vote-front spec: replicas: 1 selector: matchLabels: app: azure-vote-front template: metadata: labels: app: azure-vote-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: azure-vote-front image: mcr.microsoft.com/azuredocs/azure-vote-front:v1 resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 env: - name: REDIS value: "azure-vote-back" --- apiVersion: v1 kind: Service metadata: name: azure-vote-front spec: type: LoadBalancer ports: - port: 80 selector: app: azure-vote-front
Aby uzyskać podział plików manifestu YAML, zobacz Wdrożenia i manifesty YAML.
Wdróż aplikację przy użyciu polecenia kubectl apply i podaj nazwę manifestu YAML:
kubectl apply -f azure-vote.yaml
Poniższy przykład przypomina dane wyjściowe przedstawiające pomyślnie utworzone wdrożenia i usługi:
deployment "azure-vote-back" created service "azure-vote-back" created deployment "azure-vote-front" created service "azure-vote-front" created
Testowanie aplikacji
Podczas uruchamiania aplikacji usługa Kubernetes uwidacznia fronton aplikacji w Internecie. Ten proces może potrwać kilka minut.
Monitoruj postęp przy użyciu polecenia kubectl get service za pomocą argumentu --watch
.
kubectl get service azure-vote-front --watch
Dane wyjściowe EXTERNAL-IP dla azure-vote-front
usługi będą początkowo wyświetlane jako oczekujące.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Gdy adres EXTERNAL-IP zmieni się z oczekujące na rzeczywisty publiczny adres IP, użyj polecenia CTRL-C
, aby zatrzymać proces obserwacjikubectl
. Następujące przykładowe dane wyjściowe przedstawiają prawidłowy publiczny adres IP przypisany do usługi:
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Aby wyświetlić działającą aplikację Azure Vote, otwórz zewnętrzny adres IP usługi w przeglądarce internetowej.
Usuwanie klastra
Jeśli nie zamierzasz kontynuować pracy z poniższymi samouczkami, aby uniknąć naliczania opłat za korzystanie z platformy Azure, wyczyść niepotrzebne zasoby. az group delete
Użyj polecenia , aby usunąć grupę zasobów i wszystkie powiązane zasoby.
az group delete --name testAzureLinuxCluster --yes --no-wait
Następne kroki
W tym przewodniku Szybki start wdrożono klaster hostów kontenerów systemu Linux platformy Azure. Aby dowiedzieć się więcej na temat hosta kontenera systemu Linux platformy Azure i zapoznać się z kompletnym przykładem wdrażania klastra i zarządzania nim, przejdź do samouczka Azure Linux Container Host.