Help us understand the problem. What is going on with this article?

AKS で asp.net core アプリケーション : 事前準備

このシリーズでは asp.net core アプリケーションを AKS にデプロイする方法について紹介していきます。今回は事前準備ということでソリューションの構成とリソースの作成を行います。

尚、シリーズはスすでに以下シリーズの知識がある前提とします。

ソリューションの構成

これから作成する構成は以下の通りです。

  • Linux Node で構成された AKS
  • 複数の Web サーバー
  • SQL Server 2017 on Linux
  • アプリは Azure Container Registry (ACR) から取得
  • 外部からはロードバランサー経由でアクセス
  • Web サーバーと SQL 間はクラスタ IP 経由 image.png

事前準備

以下の環境を用意してください。

  • Visual Studio 2019 または dotnet core 3.0 が利用できる環境
  • ローカル PC に Docker 最新版
  • Azure が利用できる環境および Azure CLI

AKS のインストール

まず ACR と AKS をインストールします。詳細は AKS チュートリアルの深堀 を参照してください。既に環境がある場合はスキップしてください。

  1. az コマンドでログインを実行。ウィザードに従ってログインを実施。

    az login
    
  2. 利用するサブスクリプションをセット。

    az account list
    az account set --subscription <subscription id>
    az account show
    
  3. リソースグループと ACR を作成

    az group create --name netcoresample --location japaneast
    az acr create -g netcoresample -n kenakamuacr --sku basic
    az acr login -n kenakamuacr
    
  4. 作成した ACR のAdmin 認証を有効化

    az acr update -n kenakamuacr --admin-enabled true
    
  5. AKS で使うサービスプリンシパル作成。

    az ad sp create-for-rbac --skip-assignment
    
  6. 作成した ACR をリソースを取得。

    az acr show --resource-group netcoresample --name kenakamuacr --query "id" --output tsv   
    
  7. ACR のリソースとサービスプリンシパルの AppId を使って ACR PULL 権限を設定。

    az role assignment create --assignee <appId> --scope <acrId> --role acrpull
    
  8. AKS の作成

    az aks create -g netcoresample -n myaks -c 2 --service-principal <appId> --client-secret <password> --generate-ssh-keys
    
  9. kubectl のインストールと認証。

    az aks install-cli
    az aks get-credentials --resource-group netcoresample --name myaks 
    
  10. ノードを取得してインストールを確認。

    >kubectl get nodes
    NAME                       STATUS   ROLES   AGE     VERSION
    aks-nodepool1-23705949-0   Ready    agent   4m14s   v1.13.11
    aks-nodepool1-23705949-1   Ready    agent   4m16s   v1.13.11
    

SQL Server 2017 のインストール

今回の asp.net core アプリではデータベースとして SQL Server 2017 をインストールします。詳細は SQL Server 2017 を AKS で使う を確認してください。ここでは手順のみ示します。

1. 以下内容で sql2017.yaml を作成。

  • secret の値は echo -n 'MyC0m9l&xP@ssw0rd' | base64 で取得したもの
sql2017.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
     name: azure-disk
provisioner: kubernetes.io/azure-disk
parameters:
  storageaccounttype: Premium_LRS
  kind: Managed
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mssql-data
  annotations:
    volume.beta.kubernetes.io/storage-class: azure-disk
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi
---
apiVersion: v1
kind: Secret
metadata:
  name: mssql
type: Opaque
data:
  SA_PASSWORD: "TXlDMG05bCZ4UEBzc3cwcmQ="
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: mssql-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: mssql
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: mssql
        image: mcr.microsoft.com/mssql/server:2017-latest
        ports:
        - containerPort: 1433
        env:
        - name: MSSQL_PID
          value: "Developer"
        - name: ACCEPT_EULA
          value: "Y"
        - name: MSSQL_SA_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mssql
              key: SA_PASSWORD 
        volumeMounts:
        - name: mssqldb
          mountPath: /var/opt/mssql
      volumes:
      - name: mssqldb
        persistentVolumeClaim:
          claimName: mssql-data
---
apiVersion: v1
kind: Service
metadata:
  name: mssql-deployment
spec:
  selector:
    app: mssql
  ports:
    - protocol: TCP
      port: 1433
      targetPort: 1433
  type: LoadBalancer

2. apply コマンドで適用。

kubectl apply -f sql2017.yaml

3. デプロイの適用が完了したらサービスをポッドを確認。

> kubectl get svc
NAME               TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes         ClusterIP      10.0.0.1       <none>        443/TCP          11m
mssql-deployment   LoadBalancer   10.0.228.137   52.243.63.3   1433:30488/TCP   3m5s
> kubectl get pods
NAME                                READY   STATUS    RESTARTS   AGE
mssql-deployment-5b74bdb6f7-755wh   1/1     Running   0          4m16s

4. Azure Data Studio より外部ポートに接続確認。

まとめ

今回は ACR、AKS そして SQL の準備を行いました。また SQL はパブリックからアクセスできる状態にしてあります。これで Azure 側の準備が整いました。次回は asp.net core アプリをローカルで開発する方法を見ていきます。

次の記事へ
目次へ戻る

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした