Azure Kubernetes Service (AKS) で Bicep を使って Open Service Mesh アドオンをデプロイする
この記事では、Bicep テンプレートを使って Open Service Mesh (OSM) アドオンを Azure Kubernetes Service (AKS) にデプロイする方法について説明します。
Note
Cloud Native Computing Foundation (CNCF) による Open Service Mesh (OSM) の廃止に伴い、OSM 構成を特定して、同等の Istio 構成に移行することをおすすめします。 OSM から Istio への移行の詳細については、「Open Service Mesh (OSM) 構成から Istio への移行ガイダンス」を参照してください。
重要
OSM アドオンによってインストールされる OSM のバージョンは、クラスターで実行されている Kubernetes のバージョンによって異なります。
Kubernetes バージョン | インストールされる OSM バージョン |
---|---|
1.24.0 以降 | 1.2.5 |
1.23.5 から 1.24.0 | 1.1.3 |
1.23.5 未満 | 1.0.0 |
対応する AKS バージョンのサポート期間が終了すると、古いバージョンの OSM がインストールできない場合や、アクティブなサポートが提供されない場合があります。 AKS バージョンのサポート ウィンドウについては、AKS Kubernetes リリース カレンダーをご確認ください。
Bicep は、宣言型の構文を使用して Azure リソースをデプロイするドメイン固有言語です。 Azure Resource Manager テンプレートを作成する代わりに Bicep を使用して、コードとしてのインフラストラクチャ Azure リソースをデプロイできます。
準備
始める前に、以下の前提条件を満たしていることを確認してください。
- Azure CLI バージョン 2.20.0 以降 バージョンを確認するには、
az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。 - AKS のデプロイに使われる SSH 公開キー 詳細については、Azure CLI を使った SSH キーの作成に関する記事を参照してください。
- Bash ターミナルを使う Visual Studio Code。
- Visual Studio Code の Bicep 拡張機能。
Bicep を使用して新しい AKS クラスターに OSM アドオンをインストールする
新しい AKS クラスターをデプロイする場合は、クラスター作成時に OSM アドオンを有効にします。 次の手順では、エフェメラル ディスクと kubenet
コンテナー ネットワーク インターフェイスを使用して AKSクラスターをデプロイし、その後 OSM アドオンを有効にする、汎用 Bicep テンプレートを使用します。 より高度なデプロイ シナリオについては、「Bicep とは」を参照してください。
リソース グループを作成する
az group create
コマンドを使用して、リソース グループを作成します。az group create --name <my-osm-bicep-aks-cluster-rg> --location <azure-region>
メインとパラメーターの Bicep ファイルを作成する
必要な Bicep デプロイ ファイルを格納するディレクトリを作成します。 次の例では、bicep-osm-aks-addon という名前のディレクトリを作成して、そのディレクトリに移動します。
mkdir bicep-osm-aks-addon cd bicep-osm-aks-addon
メイン ファイルとパラメーター ファイルを作成します。
touch osm.aks.bicep && touch osm.aks.parameters.json
osm.aks.bicep ファイルを開き、次の内容をコピーします。
// https://learn.microsoft.com/azure/aks/troubleshooting#what-naming-restrictions-are-enforced-for-aks-resources-and-parameters @minLength(3) @maxLength(63) @description('Provide a name for the AKS cluster. The only allowed characters are letters, numbers, dashes, and underscore. The first and last character must be a letter or a number.') param clusterName string @minLength(3) @maxLength(54) @description('Provide a name for the AKS dnsPrefix. Valid characters include alphanumeric values and hyphens (-). The dnsPrefix can\'t include special characters such as a period (.)') param clusterDNSPrefix string param k8Version string param sshPubKey string param location string param adminUsername string resource aksCluster 'Microsoft.ContainerService/managedClusters@2021-03-01' = { name: clusterName location: location identity: { type: 'SystemAssigned' } properties: { kubernetesVersion: k8Version dnsPrefix: clusterDNSPrefix enableRBAC: true agentPoolProfiles: [ { name: 'agentpool' count: 3 vmSize: 'Standard_DS2_v2' osDiskSizeGB: 30 osDiskType: 'Ephemeral' osType: 'Linux' mode: 'System' } ] linuxProfile: { adminUsername: adminUserName ssh: { publicKeys: [ { keyData: sshPubKey } ] } } addonProfiles: { openServiceMesh: { enabled: true config: {} } } } }
osm.aks.parameters.json ファイルを開き、次の内容をコピーします。 デプロイ パラメーター値は、必ず実際の値に置き換えてください。
Note
osm.aks.parameters.json ファイルは、Bicep のデプロイに必要なテンプレート パラメーター ファイルの例です。 指定されているパラメーターを、デプロイ環境に合わせて更新します。 値を追加する必要があるパラメーターは、
clusterName
、clusterDNSPrefix
、k8Version
、sshPubKey
、location
、adminUsername
などです。 リージョンでサポートされている Kubernetes のバージョンの一覧を確認するには、az aks get-versions --location <region>
コマンドを使用してください。{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "clusterName": { "value": "<YOUR CLUSTER NAME HERE>" }, "clusterDNSPrefix": { "value": "<YOUR CLUSTER DNS PREFIX HERE>" }, "k8Version": { "value": "<YOUR SUPPORTED KUBERNETES VERSION HERE>" }, "sshPubKey": { "value": "<YOUR SSH KEY HERE>" }, "location": { "value": "<YOUR AZURE REGION HERE>" }, "adminUsername": { "value": "<YOUR ADMIN USERNAME HERE>" } } }
Bicep ファイルをデプロイする
ターミナルを開き、
az login
コマンドを使って Azure CLI の Azure アカウントを認証します。az deployment group create
コマンドを使って Bicep ファイルをデプロイします。az deployment group create \ --name OSMBicepDeployment \ --resource-group osm-bicep-test \ --template-file osm.aks.bicep \ --parameters @osm.aks.parameters.json
OSM アドオンのインストールを検証する
クラスターのアドオン プロファイルに対してクエリを実行し、インストールされているアドオンの有効状態を確認します。 次のコマンドは、
true
を返します。az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
次の
kubectl
コマンドを使って、osm-controller の状態を取得します。kubectl get deployments -n kube-system --selector app=osm-controller kubectl get pods -n kube-system --selector app=osm-controller kubectl get services -n kube-system --selector app=osm-controller
OSM アドオンの構成にアクセスする
OSM MeshConfig リソースを使って OSM コントローラーを構成することや、Azure CLI を使って OSM コントローラーの構成設定を確認することができます。
kubectl get
コマンドを使って OSM コントローラーの構成設定を確認します。kubectl get meshconfig osm-mesh-config -n kube-system -o yaml
MeshConfig の出力例を次に示します。
apiVersion: config.openservicemesh.io/v1alpha1 kind: MeshConfig metadata: creationTimestamp: "0000-00-00A00:00:00A" generation: 1 name: osm-mesh-config namespace: kube-system resourceVersion: "2494" uid: 6c4d67f3-c241-4aeb-bf4f-b029b08faa31 spec: certificate: serviceCertValidityDuration: 24h featureFlags: enableEgressPolicy: true enableMulticlusterMode: false enableWASMStats: true observability: enableDebugServer: true osmLogLevel: info tracing: address: jaeger.osm-system.svc.cluster.local enable: false endpoint: /api/v2/spans port: 9411 sidecar: configResyncInterval: 0s enablePrivilegedInitContainer: false envoyImage: mcr.microsoft.com/oss/envoyproxy/envoy:v1.18.3 initContainerImage: mcr.microsoft.com/oss/openservicemesh/init:v0.9.1 logLevel: error maxDataPlaneConnections: 0 resources: {} traffic: enableEgress: true enablePermissiveTrafficPolicyMode: true inboundExternalAuthorization: enable: false failureModeAllow: false statPrefix: inboundExtAuthz timeout: 1s useHTTPSIngress: false
enablePermissiveTrafficPolicyMode
がtrue
に構成されていることを確認してください。 OSM の制限のないトラフィック ポリシー モードでは、SMI トラフィック ポリシーの適用がバイパスされます。 このモードでは、OSM によってサービス メッシュの一部であるサービスが自動的に検出されます。 検出されたサービスには、これらのサービス間で通信できるように各 Envoy プロキシ サイドカーでプログラムされたトラフィック ポリシー規則があります。警告
続行する前に、制制限のないトラフィック ポリシー モードが
true
に設定されていることを確認します。 そうでない場合、次のコマンドを使って、これをtrue
に変更します。kubectl patch meshconfig osm-mesh-config -n kube-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":true}}}' --type=merge
リソースをクリーンアップする
Azure リソースが不要になったら、
az group delete
コマンドを使ってデプロイのテスト リソース グループを削除します。az group delete --name osm-bicep-test
または、クラスターから OSM アドオンと関連リソースをアンインストールすることもできます。 詳細については、Open Service Mesh (OSM) アドオンを AKS クラスターからアンインストールするに関する記事を参照してください。
次のステップ
この記事では、OSM アドオンを AKS クラスターにインストールし、インストールされたことと実行されていることを確認する方法について説明しました。 OSM アドオンをクラスターにインストールすることで、サンプル アプリケーションをデプロイするか、既存のアプリケーションをオンボードして OSM メッシュを使用できます。
Azure Kubernetes Service