チュートリアル - Azure Kubernetes Service (AKS) クラスターの作成
[アーティクル] 08/02/2024
28 人の共同作成者
フィードバック
この記事の内容
Kubernetes には、コンテナー化されたアプリケーション用の分散プラットフォームが用意されています。 Azure Kubernetes Service (AKS) を使用すると、運用環境に対応した Kubernetes クラスターを迅速に作成できます。
このチュートリアル (7 部構成の第 3 部) では、Kubernetes クラスターを AKS にデプロイします。 以下の方法について説明します。
Azure Container Registry (ACR) に対して認証できる AKS クラスターをデプロイします。
Kubernetes CLI、kubectl
をインストールします。
kubectl
を構成して AKS クラスターに接続します。
開始する前に
前のチュートリアルでは、コンテナー イメージを作成し、それを ACR インスタンスにアップロードしました。 「チュートリアル 1 - AKS のアプリケーションを準備する 」から始めてください。
Azure CLI を使用する場合、このチュートリアルでは、Azure CLI バージョン 2.0.53 以降を実行する必要があります。 az --version
を使用して、お使いのバージョンを確認します。 インストールまたはアップグレードする必要には、「Azure CLI のインストール 」をご覧ください。
Azure PowerShell を使用する場合、このチュートリアルでは、Azure PowerShell バージョン 5.9.0 以降を実行する必要があります。 Get-InstalledModule -Name Az
を使用して、お使いのバージョンを確認します。 インストールまたはアップグレードするには、「Azure PowerShell のインストール 」に関するページを参照してください。
Azure Developer CLI を使用している場合、このチュートリアルでは、Azure Developer CLI バージョン 1.5.1 以降を実行している必要があります。 azd version
を使用して、お使いのバージョンを確認します。 インストールまたはアップグレードするには、「Azure Developer CLI のインストール 」をご覧ください。
Kubernetes クラスターを作成する
AKS クラスターでは、Kubernetes のロールベースのアクセス制御 (Kubernetes RBAC) を使用できます。これにより、ユーザーに割り当てられたロールに基づいてリソースへのアクセスを定義できます。 ユーザーに複数のロールが割り当てられている場合、アクセス許可が組み合わされます。 アクセス許可のスコープは、1 つの名前空間またはクラスター全体に設定できます。
AKS と Kubernetes RBAC の詳細については、AKS での Kubernetes RBAC と Microsoft Entra ID を使ったクラスター リソースへのアクセス制御 に関する記事を参照してください。
このチュートリアルには、Azure CLI バージョン 2.0.53 以降が必要です。 az --version
を使用して、お使いのバージョンを確認します。 インストールまたはアップグレードする必要には、「Azure CLI のインストール 」をご覧ください。
このチュートリアルには、Azure PowerShell バージョン 5.9.0 以降が必要です。 Get-InstalledModule -Name Az
を使用して、お使いのバージョンを確認します。 インストールまたはアップグレードするには、「Azure PowerShell のインストール 」に関するページを参照してください。
このチュートリアルでは、Azure Developer CLI バージョン 1.5.1 以降が必要です。 azd version
を使用して、お使いのバージョンを確認します。 インストールまたはアップグレードするには、「Azure Developer CLI のインストール 」をご覧ください。
Kubernetes CLI のインストール
Kubernetes クラスターに接続するには Kubernetes CLI kubectl
を使用します。 Azure Cloud Shell を使用している場合、kubectl
は既にインストールされています。 コマンドをローカルで実行している場合は、Azure CLI または Azure PowerShell を使用して kubectl
をインストールできます。
コードスペース内の azd
環境では、./devcontainer/devcontainer.json
に含まれるすべての依存関係が自動的にダウンロードされます。 これには、Kubernetes CLI と Azure Container Registry (ACR) イメージが含まれます。
AKS クラスターを作成する
AKS クラスターでは、Kubernetes のロールベースのアクセス制御 (Kubernetes RBAC) を使用できます。これにより、ユーザーに割り当てられたロールに基づいてリソースへのアクセスを定義できます。 ユーザーに複数のロールが割り当てられている場合は、アクセス許可が組み合わされます。 アクセス許可のスコープは、1 つの名前空間またはクラスター全体に設定できます。 詳細については、「Kubernetes RBAC と AKS の Microsoft Entra ID を使用してクラスター リソースへのアクセスを制御する 」を参照してください。
AKS のリソース制限と利用可能なリージョンについて詳しくは、AKS でのクォータ、仮想マシンのサイズ制限、利用可能なリージョン に関する記事を参照してください。
Note
クラスターを確実に動作させるために、少なくとも 2 つのノードを実行する必要があります。
AKS クラスターが他の Azure リソースとやりとりできるようにするために、Azure プラットフォームによりクラスター ID が自動的に作成されます。 この例では、クラスター ID に、前のチュートリアルで作成した ACR インスタンスからイメージをプルする権利が付与 されます。 コマンドを正常に実行するために、Azure サブスクリプションに所有者 または Azure アカウント管理者 のロールが必要です。
az aks create
コマンドを使用して、AKS クラスターを作成します。 次の例では、myResourceGroup という名前のリソース グループに myAKSCluster という名前のクラスターを作成します。 このリソース グループは、前のチュートリアル で作成しました ("米国東部 " リージョン)。 前のチュートリアル で設定した環境変数 $ACRNAME
を引き続き使います。 この環境変数を設定していない場合は、前に使ったのと同じ値にここで設定してください。
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 2 \
--generate-ssh-keys \
--attach-acr $ACRNAME
Note
SSH キーを既に生成している場合は、linuxProfile.ssh.publicKeys.keyData is invalid
のようなエラーが発生する可能性があります。 続行するには、--generate-ssh-keys
パラメーターを指定せずにコマンドを再試行します。
所有者 または Azure アカウント管理者 ロールを不要にするために、ACR からイメージをプルするようにサービス プリンシパルを手動で構成することもできます。 詳細については、サービス プリンシパルによる ACR 認証 またはプル シークレットを使用した Kubernetes からの認証 に関するページを参照してください。 管理しやすくするために、サービス プリンシパルの代わりにマネージド ID を使用することもできます。
AKS クラスターが他の Azure リソースとやりとりできるようにするために、Azure プラットフォームによりクラスター ID が自動的に作成されます。 この例では、クラスター ID に、前のチュートリアルで作成した ACR インスタンスからイメージをプルする権利が付与 されます。 コマンドを正常に実行するために、Azure サブスクリプションに所有者 または Azure アカウント管理者 のロールが必要です。
New-AzAksCluster
コマンドレットを使用して AKS クラスターを作成します。 次の例では、myResourceGroup という名前のリソース グループに myAKSCluster という名前のクラスターを作成します。 このリソース グループは、前のチュートリアル で作成しました ("米国東部 " リージョン)。
New-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -NodeCount 2 -GenerateSshKey -AcrNameToAttach $ACRNAME
Note
SSH キーを既に生成している場合は、linuxProfile.ssh.publicKeys.keyData is invalid
のようなエラーが発生する可能性があります。 続行するには、-GenerateSshKey
パラメーターを指定せずにコマンドを再試行します。
所有者 または Azure アカウント管理者 ロールを不要にするために、ACR からイメージをプルするようにサービス プリンシパルを手動で構成することもできます。 詳細については、サービス プリンシパルによる ACR 認証 またはプル シークレットを使用した Kubernetes からの認証 に関するページを参照してください。 管理しやすくするために、サービス プリンシパルの代わりにマネージド ID を使用することもできます。
azd
では、azd up
コマンドを使用して、アプリケーション自体と共にクラスターのデプロイがパッケージ化されます。 このコマンドについては、次のチュートリアルで説明します。
kubectl を使用したクラスターへの接続
az aks get-credentials
コマンドを使用して、Kubernetes クラスターに接続するように kubectl
を構成します。 次の例では、myResourceGroup の myAKSCluster という名前の AKS クラスターの資格情報を取得します。
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
クラスターへの接続を確認する場合は、クラスター ノードのリストを返す kubectl get nodes
コマンドを使用します。
kubectl get nodes
次の出力例は、クラスター ノードのリストを示しています。
NAME STATUS ROLES AGE VERSION
aks-nodepool1-19366578-vmss000000 Ready agent 47h v1.28.9
aks-nodepool1-19366578-vmss000001 Ready agent 47h v1.28.9
Import-AzAksCredential
コマンドレットを使用して、Kubernetes クラスターに接続するように kubectl
を構成します。 次の例では、myResourceGroup の myAKSCluster という名前の AKS クラスターの資格情報を取得します。
Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
クラスターへの接続を確認する場合は、クラスター ノードのリストを返す kubectl get nodes
コマンドを使用します。
kubectl get nodes
次の出力例は、クラスター ノードのリストを示しています。
NAME STATUS ROLES AGE VERSION
aks-nodepool1-19366578-vmss000000 Ready agent 47h v1.28.9
aks-nodepool1-19366578-vmss000001 Ready agent 47h v1.28.9
azd auth login
コマンドを使用して、クラスターへの認証を構成します。
azd auth login
認証方法の指示に従います。
kubectl get nodes
コマンドを使用して、ご利用のクラスターへの接続を確認します。
kubectl get nodes
次の出力例は、クラスター ノードのリストを示しています
NAME STATUS ROLES AGE VERSION
aks-nodepool1-19366578-vmss000000 Ready agent 47h v1.28.9
aks-nodepool1-19366578-vmss000001 Ready agent 47h v1.28.9
azd auth の回避策
この回避策では、Azure CLI をインストールする必要があります。
ターミナル ウィンドウを開き、--scope
パラメーターを https://graph.microsoft.com/.default
に設定して az login
コマンドを使用して Azure CLI でログインします。
az login --scope https://graph.microsoft.com/.default
次の例に示すように、ブラウザー アクセス トークンを作成するには、新しいタブの認証ページにリダイレクトする必要があります。
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?clientid=<your_client_id>.
azd auth login
でサインインしようとした後に受信した Web ページの localhost URL をコピーします。
新しいターミナル ウィンドウで、次の curl
要求を使用してログインします。 <localhost>
プレースホルダーは、前の手順でコピーした localhost URL に置き換えます。
curl <localhost>
ログインが成功すると、次の例に示すように HTML Web ページが出力されます。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="refresh" content="60;url=https://docs.microsoft.com/cli/azure/">
<title>Login successfully</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
code {
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
display: inline-block;
background-color: rgb(242, 242, 242);
padding: 12px 16px;
margin: 8px 0px;
}
</style>
</head>
<body>
<h3>You have logged into Microsoft Azure!</h3>
<p>You can close this window, or we will redirect you to the <a href="https://docs.microsoft.com/cli/azure/">Azure CLI documentation</a> in 1 minute.</p>
<h3>Announcements</h3>
<p>[Windows only] Azure CLI is collecting feedback on using the <a href="https://learn.microsoft.com/windows/uwp/security/web-account-manager">Web Account Manager</a> (WAM) broker for the login experience.</p>
<p>You may opt-in to use WAM by running the following commands:</p>
<code>
az config set core.allow_broker=true<br>
az account clear<br>
az login
</code>
</body>
</html>
現在のターミナルを閉じて、元のターミナルを開きます。 サブスクリプションの JSON リストが表示されます。
使用するサブスクリプションの id
フィールドをコピーします。
az account set
コマンドを使用してサブスクリプションを設定します。
az account set --subscription <subscription_id>
次のステップ
このチュートリアルでは、Kubernetes クラスターを AKS にデプロイし、kubectl
を構成してクラスターに接続しました。 以下の方法を学習しました。
ACR に対して認証できる AKS クラスターをデプロイします。
Kubernetes CLI、kubectl
をインストールします。
kubectl
を構成して AKS クラスターに接続します。
次のチュートリアルでは、アプリケーションをクラスターにデプロイする方法について説明します。