次の方法で共有


Azure Kubernetes Service on Azure Stack Hub にテスト アプリケーションをデプロイする

これは、Azure Stack Hub で Azure Kubernetes Service (AKS) サービスの使用を開始するためのガイドです。 この記事では、テスト アプリをクラスターにデプロイして、AKS on Azure Stack Hub についての理解を深める方法を説明します。 Azure Stack Hub で使用できる機能は、グローバルな Azure で利用できるものの一部です。

始める前に、Azure Stack Hub インスタンスに AKS クラスターを作成できることを確認します。 最初のクラスターを設定して作成する手順については、Azure Kubernetes Service on Azure Stack Hub と CLI の使用に関するページをご覧ください。

テスト アプリをデプロイする

スタンプが接続されている場合は、次の手順に従って Prometheus と Grafana をクラスターにデプロイできます。

  1. Helm 3 をダウンロードしてインストールします。

    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
    chmod 700 get_helm.sh
    ./get_helm.sh
    

    Note

    Windows ユーザーの場合は、Chocolatey を使用して Helm をインストールします。

    choco install kubernetes-helm
    
  2. 最新の安定した Helm リポジトリがあることを確認します。

    helm repo add stable https://charts.helm.sh/stable
    helm repo update
    
  3. Prometheus をインストールします。

    helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
    
  4. Prometheus アカウントにクラスター管理アクセス権を与えます。 セキュリティ上の理由から、低いアクセス許可にすることをお勧めします。

    kubectl create clusterrolebinding my-prometheus-server --clusterrole=cluster-admin --serviceaccount=default:my-prometheus-server
    
  5. Grafana をインストールします。

    helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
    
  6. Grafana ポータルのシークレットを取得します。

    kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
    

Note

Windows では、次の PowerShell コマンドレットを使用してシークレットを取得します。

\$env:Path = \$env:Path + ";\$env:USERPROFILE\\.azure-kubectl"
[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String(\$(kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}")))

ACR を使用してアプリを AKS にデプロイする

この時点で、クライアント コンピューターはクラスターに接続されており、kubectl を使用してクラスターを構成し、アプリケーションをデプロイすることができます。 また、Azure Container Registry (ACR) サービスもテストする場合は、次の手順のようにしてできます。

ローカル ACR にアクセスするための Docker レジストリ シークレット

ローカル ACR からアプリケーション イメージをデプロイする場合は、Kubernetes クラスターがレジストリからイメージをプルするアクセス権を持つように、シークレットを格納する必要があります。 これを行うには、サービス プリンシパル ID (SPN) とシークレットを指定し、ソース レジストリに共同作成者として SPN を追加し、Kubernetes シークレットを作成する必要があります。 また、そのシークレットを参照するように YAML ファイルを更新する必要があります。

ACR に SPN を追加する

ACR に共同作成者として SPN を追加します。

Note

Azure Stack Hub には ACRPULL ロールがまだないため、このスクリプトは Azure Container Registry サイト (bash のサンプル) から変更されています。 このサンプルは PowerShell スクリプトです。同等のものを bash で記述できます。 実際のシステムの値を必ず追加してください。

# Modify for your environment. The ACR_NAME is the name of your Azure Container
# Registry, and the SERVICE_PRINCIPAL_ID is the SPN's 'appId' or
# one of its 'servicePrincipalNames' values.
ACR_NAME=mycontainerregistry
SERVICE_PRINCIPAL_ID=<service-principal-ID>

# Populate value required for subsequent command args
ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv)

# Assign the desired role to the SPN. 
az role assignment create --assignee $SERVICE_PRINCIPAL_ID --scope $ACR_REGISTRY_ID --role contributor

Kubernetes でシークレットを作成する

次のコマンドを使用して、Kubernetes クラスターにシークレットを追加します。 コード スニペットに実際のシステムの値を必ず追加してください。

kubectl create secret docker-registry <secret name> \
kubectl create secret docker-registry <secret name> \
    --docker-server=<ACR container registry URL> \
    --docker-username=<service principal ID> \
    --docker-password=<service principal secret> 

アプリの YAML でシークレットを参照する例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment 
spec:
selector:
  matchLabels:
   app: nginx
replicas: 2
template:
  metadata:
   labels:
    app: nginx
  spec:
   containers:
   - name: nginx
     image: democr2.azsacr.redmond.ext-n31r1208.masd.stbtest.microsoft.com/library/nginx:1.17.3
     imagePullPolicy: Always
     ports: 
      - containerPort: 80
   imagePullSecrets:
     - name: democr2
 
 
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  selector:
    app: nginx
  ports:
  - protocol: "TCP"
    port: 80
    targetPort: 80
  type: LoadBalancer

次の手順

CLI での Azure Kubernetes Service on Azure Stack Hub の使用