マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

環境

シェル

  • 20分でタイムアウトしてしまうため、
    • タイムアウトで、変数が失われてしまう。
    • これを避けるため、パラメタ設定スクリプトを、
    • テキスト・ファイルなどにコピーして残しておく。
    • 再開の際は、テキスト・ファイルのスクリプトを再実行する。

操作者の権限

以下の権限を持つユーザで作業

  • Ownerロール権限
  • AzADに対してSPNを作成する権限

その他

アカウント

以下で固定になってるので、必要に応じて変更する。

  • admin-username
    --admin-username azrefadmin
  • admin-password
    --admin-password "p&ssw0rdp&ssw0rd"

F/WへのFQDN追加

...見つけ次第、書く。

構成

全体構成図

AKS_TechnicalReference_v0.14(ppt).zipに同梱のPPTから引用

全体構成図

ネットワーク構成

構成概要

コチラの推奨設定と少々異なる(プライベートAKSクラスタにする)。

  • Azure CNI プラグインを利用した分離型 VNET 構成
  • ARM API はプライベート化しない。
  • Master API はプライベート化する。
    プライベートAKSクラスタ
  • 実行ノードも既存のVNETに配置する。

※ サマリすると

  • ARM API以外は、プライベート化し、
  • 実行ノードの公開は、

 となる。

入力経路

インバウンド(イングレス

出力経路

アウトバウンド(エグレス

以下の併用

VNETサブネット

認証・認可

保守用端末を VNET 内に設置する想定。

Azure Portal, Azure CLI (ARM API)

プライベート化しない(既存のアクセス制限機能を想定)

制御プレーンの実行アカウント (SPN)

Managed ID 方式で作成する。

ダッシュボード, Kubernetes CLI (Master API)

  • クラスタ管理者のkube configを使って、
  • 必要なら、追加でIPアドレス制限を想定

AKSユーザ・アプリからのリソース・アクセス

Secret機能を使用

基盤保守

日次パッチ

  • ノード VM は日次パッチ適用(既定で自動)
  • Kured をインストールして自動再起動させる。

オンデマンド

必要に応じて

バージョンアップを手動で実施。

開発~デプロイ

VNET 内に本番用コンテナ・レジストリを配置するのみ
ACR(コンテナ・レジストリ)をプライベート化する。

手順

https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md

準備作業

サブスクリプションの選択

※ 必要に応じて、サブスクリプションの選択を行う。

※ 「SUBSCRIPTION_NAMEは各自で書き換え」とのこと。

※ 再開の際は、再実行(テキスト・ファイルへ)。

パラメタの設定

※ 「NAME_PREFIXは各自で書き換え」とのこと。

※ 再開の際は、再実行(テキスト・ファイルへ)。

Azure CLI拡張機能のインストール

AKS プレビュー機能のインストール

※ 「時間かかるので注意(20 分ぐらい)」とのこと。

共通準備

パラメタの設定

以下のパートのスクリプトを実行して、パラメタを設定

# Parameters

※ 再開の際は、再実行(テキスト・ファイルへ)。

リソース・グループの作成

以下のパートのスクリプトを実行

# Create Resouce Group
  • ログ用
    az group create --name $RG_OPS --location $LOCATION
  • AKS環境用
    az group create --name $RG_AKS --location $LOCATION
  • DMZ環境用
    az group create --name $RG_DMZ --location $LOCATION
  • オンプレ模倣環境用
    az group create --name $RG_ONP --location $LOCATION

診断ログ・ストレージの作成

以下のパートのスクリプトを実行

# Create Diagnostics Storage

※ インターネット・アクセス禁止オプションあり。

Log Analytics & AppInsights? の作成

以下のパートのスクリプトを実行

# Create Log Analytics & AppInsights

※ Log Analytics は 90日ログ保持オプションあり。

サブスクリプションのアクティビティ・ログの有効化

以下のパートのスクリプトを実行

# Enable Subscription Activity Logging

※ だが、現時点では UI から実施とのこと(動画も参考になる)。

オンプレ模倣環境の作成

  • VNETにVMを新設して、そこをオンプレに見立てるということらしい。
  • 全体構成図には「OA環境サブスクリプション」と
    あるが、別サブスクリプションでなくても良い。
  • 多分、後述の、Bastionの作成手順で代替できる
    (が、Private Link、Private Endpoint等を試したいのでコチラを優先したい)。
  • あと、Azure Private Endpoint 引き込みを行うので、
    正確には、「オンプレ"展延"模倣環境」ではないだろうか?

パラメタの設定

以下のパートのスクリプトを実行して、パラメタを設定

# Parameters

※ 再開の際は、再実行(テキスト・ファイルへ)。

VNETサブネットの作成

以下のパートのスクリプトを実行

# Create Onpremise VNET
  • VNET
    ONP_VNET_NAME="${NAME_PREFIX}-onprem-vnet"
    ONP_VNET_ADDRESS_PREFIXES=10.0.0.0/16
    全体構成図と突合して、サブネット構成を理解しておくと良い。
  • デフォルトのサブネット(VM用)
    ONP_VNET_SUBNET_DEF_NAME=Default
    ONP_VNET_SUBNET_DEF_ADDRESS_PREFIX=10.0.0.0/24
  • Azure Private Endpoint
    外部のAzureサービスに接続するため。
    ONP_VNET_SUBNET_IES_NAME=InternalEndpointSubnet
    ONP_VNET_SUBNET_IES_ADDRESS_PREFIX=10.0.250.0/24
    IESじゃなくて、PES(PrivateEndpointSubnet?)だね。

VMの作成

以下のパートのスクリプトを実行

# Create uservm1 (Public IP + Open RDP Port)

※ VM生成のAzure CLIスクリプトとして参考になる。
  パブリックIP作成、NIC作成を別で行っている(が特に意味はない模様)。

※ オンプレの模倣ということで、Windows 10 を選択している?

※ Visual Studio のアクティブ・サブスクライバでない場合は、
  Windows 10 ではなく Windows Server 2019 を利用(ライセンスの関係らしい)
  既定のスクリプトは、Windows 10になっているので、必要に応じて変更。

※ 最後に「az vm open-port」でRDPポートを開けるオマケが付いているので注意。

AKS 配置環境の準備

パラメタの設定

以下のパートのスクリプトを実行して、パラメタを設定

# Variables

※ 再開の際は、再実行(テキスト・ファイルへ)。

VNETサブネットの作成

以下のパートのスクリプトを実行

#Create VNET & Subnets
  • VNET
    AKS_VNET_NAME="${NAME_PREFIX}-aks-vnet"
    AKS_VNET_ADDRESS_PREFIXES=10.0.0.0/8
    全体構成図と突合して、サブネット構成を理解しておくと良い。
  • 保守端末用
    AKS_VNET_SUBNET_MMS_NAME=ManagementSubnet
    AKS_VNET_SUBNET_MMS_ADDRESS_PREFIX=10.16.0.0/16
  • ノードプール
    AKS_VNET_SUBNET_NPS_NAME=NodepoolSubnet
    AKS_VNET_SUBNET_NPS_ADDRESS_PREFIX=10.1.0.0/16
  • 内部インバウンド用
    ノードプールの内部公開用
    AKS_VNET_SUBNET_IES_NAME=InternalEndpointSubnet
    AKS_VNET_SUBNET_IES_ADDRESS_PREFIX=10.11.0.0/16
    シェルではなく*.yamlから利用
  • Azure Private Endpoint
    外部のAzureサービスに接続するため。
    AKS_VNET_SUBNET_PES_NAME=PrivateEndpointSubnet
    AKS_VNET_SUBNET_PES_ADDRESS_PREFIX=10.15.0.0/16
  • Azure Private Linkサービス用
    オンプレ模倣環境から接続するため。
    AKS_VNET_SUBNET_PLS_NAME=PrivateLinkServiceNatSubnet
    AKS_VNET_SUBNET_PLS_ADDRESS_PREFIX=10.12.0.0/16
  • Azure Firewall用(インターネット・アクセス)
    AKS_VNET_SUBNET_FWS_NAME=AzureFirewallSubnet
    AKS_VNET_SUBNET_FWS_ADDRESS_PREFIX=10.31.0.0/16
    使っていない?
  • Azure Bastion
    AKS_VNET_SUBNET_BTS_NAME=AzureBastionSubnet
    AKS_VNET_SUBNET_BTS_ADDRESS_PREFIX=10.30.0.0/16
    使っていない?

ノードプールのIP消費が多いので、
 /16でサブネッティングしているとの事。

※ しれっと、VNETの「az monitor diagnostic-settings create」をしている。

周辺サービスの作成と引き込み

  • Azure Private Endpoint 引き込み
    以下のパートのスクリプトを実行
    # Create PrivateLink to ACR
    ...
    # azrefarcacr... の A レコード作成
    ※ ココのスクリプトはPreviewなので変更の可能性アリとのこと → 特にDNS弄る所。
    ※ 動画ではポータルから行っていると見せかけ、確定ボタン押下せず、スクリプトは流している。
  • Azure SQL Database 作成と Azure Private Endpoint 引き込み
    • Azure SQL Database 作成
      ...
      ※ よくよく見ると、DBを作ってない(コロナ"COVID-19"の影響だということ)。
       最終的には、以下の接続文字列でアクセス可能なSQL Serverが必要になる。
       jdbc:sqlserver://azrefarc.database.windows.net:1433;databaseName=pubs

Azure Firewallの作成

  • UDRの設定
    以下のパートのスクリプトを実行
    # Create UDR and assign UDR
    ※ 既定のUDRとして、「AKS_UDR_NAME」を作成、
     インターネット(0.0.0.0/0)への通信をAzure Firewallにルーティング
  • ルールの作成
    以下のパートのスクリプトを実行
    # Create Firewall Rules
  • プライベートAKSクラスタの要件
    以下のパートのスクリプトを実行
    # Required for private AKS cluster
    az network firewall application-rule create...
    ※ 前述の既定のUDR(AKS_UDR_NAME)をノードプールのサブネットに適用する。
    ※ その他、MCRへのアクセスとか、云々、コレはMSに聞いたほうがいい感じやね。
  • Azure での Linux VM の時刻同期
    以下のパートのスクリプトを実行
    # ntp.ubuntu.com -> *
    az network firewall network-rule create...
  • プライベートAKSクラスタのオプション
    以下のパートのスクリプトを実行
    # Optional for AKS cluster
    az network firewall application-rule create...
  • ContainersのAzure Monitor
    以下のパートのスクリプトを実行
    # Azure Monitor for containers
    az network firewall application-rule create...
  • AKSクラスタのAzure Policy
    以下のパートのスクリプトを実行
    # Azure Policy for AKS clusters (preview, subject to be changed)
    az network firewall application-rule create...

※ ルールの作成には、かなり時間がかかるらしい(10分ぐらい)。

他によく必要になる URL

  • AKS ツール
    • download.opensuse.org
    • packages.microsoft.com
    • dc.services.visualstudio.com
    • *.opinsights.azure.com
    • *.monitoring.azure.com
    • gov-prod-policy-data.trafficmanager.net
    • apt.dockerproject.org
    • nvidia.github.io
  • OS update
    • download.opensuse.org
    • *.ubuntu.com
    • packages.microsoft.com
    • snapcraft.io,api.snapcraft.io

保守端末の準備

管理マシン(Windows)の作成

オンプレから接続する踏み台VM相当。

  • パラメタの設定
    以下のパートのスクリプトを実行して、パラメタを設定
    # Parameters
    ※ 再開の際は、再実行(テキスト・ファイルへ)。
  • UDRの設定
    以下のパートのスクリプトを実行
    # UDR でルートを塞ぐ
    ※ 前述の既定のUDR(AKS_UDR_NAME)を指定。
  • ILB, NIC の作成
    以下のパートのスクリプトを実行
    # ILB 配下に VM を作成
    # NIC を先に作成(IP アドレスを確定させる)
    ※ 後で、Azure Private Linkを作成するので、ILB → NICと作成するのがポイント。
  • Azure Firewallの設定
    以下のパートのスクリプトを実行
    # Azure Firewall ルールで Windows Update などを許可
    # Azure Firewall ルールで) Azure Portal (を許可
    ※ 同様に、ルールの作成には、かなり時間がかかるらしい(10分ぐらい?)。
  • VM の作成
    以下のパートのスクリプトを実行
    # VM 作成 (Windows 2019)
    # Create mgmt-win-vm1
    ※ オンプレ(模倣)環境ではない、Azure環境ということで、コチラは、2019か。
     しかし、踏み台VMにサーバーOSって、やっぱり高額になるのでは?と、少々、心配。
  • ツールのインストール
    Windows上で環境を構築する。接続先のアドレスは、
    mgmt-win-vm1-ilb の Azure Private Endpointで確認可能。
  • AKSのバージョンを確認
    以下のパートのスクリプトを実行
    # Cloud Shell 上でインストールする aks バージョンを確認しておく
  • 先に取得したバージョン番号に対応する kubectl を
    • az aks install-cliコマンドでバージョンを指定して実行すると、
      .azure-kubectl フォルダ下にダウンロードされるので、
      >az aks install-cli --client-version=1.16.7
      ・このファイルをコピーする。
      >copy %HOMEPATH%\.azure-kubectl\kubectl.exe %HOMEPATH%\kubectl.exe
      ・または、フィアルへのパスを通す。
      ...

※ 「持ち込み」となっているモノは、Azure Firewallで設定していないもの。

管理マシン(Linux)の作成

踏み台VMから接続し、アプリのビルドや、Dockerコンテナ作業を行う。

  • パラメタの設定
    以下のパートのスクリプトを実行して、パラメタを設定
    # Parameters
    ※ 再開の際は、再実行(テキスト・ファイルへ)。
  • UDRの設定
    以下のパートのスクリプトを実行
    # UDR でルートを塞ぐ
    ※ 前述の既定のUDR(AKS_UDR_NAME)を指定。
  • NICの作成
    以下のパートのスクリプトを実行
    # NIC を先に作成(IP アドレスを確定させる)
    ※ こちらは、Azure Private Linkを構成しないので、ILBは不要。
  • Azure Firewallの設定
    以下のパートのスクリプトを実行
    # Azure Firewall ルールで通信を許可
    ※ コチラは、JavaのビルドやDocker操作があるので、ソレ用に穴をあける。
    ※ 同様に、ルールの作成には、かなり時間がかかるらしい(10分ぐらい?)。
  • VM の作成
    以下のパートのスクリプトを実行
    # Create mgmt-linux-vm1 (Ubuntu)
  • ツールのインストール
    Linux上で環境を構築する。
  • 0. VM にログイン
    Windows 保守端末 からログインする。
    ssh mgmt-linux-vm1
  • 2. kubectl インストール
    https://v1-16.docs.kubernetes.io/ja/docs/tasks/tools/install-kubectl/
    sudo apt-get update && sudo apt-get install -y apt-transport-https
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    sudo apt-get install -y kubectl
  • 3. Docker インストール
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt-get update
    sudo apt-get install -y docker-ce
    sudo docker version
  • 4. Helm インストール
    sudo apt-get update
    sudo apt-get install snapd
    sudo snap install helm --classic
  • Azure CLIの補足
    • ログイン、
      Windowsだと、 Loopback Interface Redirectionだが、
      SSH端末だと、OAuth 2.0 Device Authorization Grantになる。
    • 必要に応じて、サブスクリプションの選択を行う。

Bastionの作成

オンプレ模倣環境の作成をスキップできる。

  • パラメタの設定
    以下のパートのスクリプトを実行して、パラメタを設定
    BASTION_NAME="${NAME_PREFIX}-bastion"
    BASTION_PUBLIC_IP_NAME="${BASTION_NAME}-ip"
    ※ 再開の際は、再実行(テキスト・ファイルへ)。
  • Azure Bastionの作成
    以下のパートのスクリプトを実行
    az network public-ip create --name $BASTION_PUBLIC_IP_NAME --resource-group $RG_AKS --sku Standard
    az network bastion create --name $BASTION_NAME --public-ip-address $BASTION_PUBLIC_IP_NAME --resource-group $RG_AKS --vnet-name $AKS_VNET_NAME --location $LOCATION

※ 結構、時間がかかる。

  • 利用方法は、VMの接続メニューに、RDP、SSHに加え、
    Bastionが追加されているのでコレを選択して利用する。

AKS クラスタの作成と設定

パラメタの設定

以下のパートのスクリプトを実行して、パラメタを設定

# Parameters

※ 再開の際は、再実行(テキスト・ファイルへ)。

AKS クラスタの作成

  • (必要に応じて)サービスプリンシパル作成
    Managed IDを選択するので実施しない(既定値)。
  • (必要に応じて)非プライベートクラスタ用経路作成
    プライベート・クラスタを選択するので実施しない(既定値)。
  • AKS クラスタの作成
    以下のパートのスクリプトを実行
    # Create AKS Cluster ==============================================
    ...
    # Prepare for creating cluster
    ...
    # Create AKS Cluster ※ 時間がかかる
    az aks create ...既定値なら、既定のオプションでOK...
    ...
    # VNET に対する Contributor 権限を与える(VNET が管理リソースグループの外にあるため)
    # Managed ID 方式の場合
    ...
    # End of Create AKS Cluster ==============================================
    ※ コレは、ココの話。

AKS の設定

  • ACR との接続
    以下のパートのスクリプトを実行
    # Configure ACR for connecting from AKS
    ※ コレは、ココの話。
    ※ 2~3分かかるらしい。
  • Azure Monitor の有効化
    以下のパートのスクリプトを実行
    # Azure Monitor for AKS 有効化
    ... 
    ※ 数分、時間がかかる。
  • 診断設定の有効化
    以下のパートのスクリプトを実行
    # AKS 診断設定の有効化
    ...
    ※ 数分、時間がかかる。

アプリのビルドとデプロイ

kubectl/kubeconfig の準備

  • uservm1 > mgmt-win-vm1, mgmt-linux-vm1 へのログイン

※ .kubeに、configとadmin-configファイルが作成される。
 既定では、configが利用される(必要に応じて切り替える)。

コンテナ・イメージの作成

AKS_TechnicalReference_v0.14(ppt).zipに同梱の
構築サンプルアプリ.zipを mgmt-windows-vm1 に持ち込んで作業する。

  • ファイルを mgmt-linux-vm1 に scp で転送し、
    mgmt-linux-vm1 でコンテナをビルドし、作成したコンテナ・イメージを
    コンテナ・レジストリにプッシュ(2 つのバージョンをプッシュ)

アプリのデプロイ

YAML ファイルを作成し、kubectl apply を実行し、
コンテナ・イメージのデプロイ展開を確認する。
最後に、コンテナ・イメージを切り替える。
(ダッシュボードの表示も行う)

※ コンテナ・イメージの
 レジストリ名(先頭)とタグ名(末尾)
 の部分は必要に応じて変更する。

※ DBアクセスは動かなくても確認はできる。
 DBアクセスをテストするなら、コチラで言及されているSQL DBを作成。  手順としては、(...後でどこかに書くか)

オンプレ模倣環境から AKS アプリへの接続

AKS ILB に対する Private Link Service の作成

以下のパートのスクリプトを実行

# AKS ILB に対する Private Link Service の作成

AKS ILB への Private Endpoint の作成

以下のパートのスクリプトを実行

# Create Private Endpoint to AKS

インターネットからの接続

パラメタの設定

以下のパートのスクリプトを実行して、パラメタを設定

# Parameters

※ 再開の際は、再実行(テキスト・ファイルへ)。

DMZ VNET の作成

以下のパートのスクリプトを実行

# Create VNET and Subnets

AKS ILB への Private Endpoint の作成

以下のパートのスクリプトを実行

# Create AKS Private Endpoint

Application Gateway の作成

以下のパートのスクリプトを実行

# Create AppGateway
...
# Private Endpoint の IP アドレスを取得
...
# AppGw 作成 ※ 時間がかかる

可用性テストの作成

「URL の Ping テスト」を構成する。

※ 現時点では UI から実施とのこと(動画も参考になる)。
※ az コマンドではできない (ARM テンプレートのみ可)

ノード自動再起動

Kured による VM のリブートで自動更新を取り込むAKS のアップグレード

経路の解放

以下のパートのスクリプトを実行

  • VMからgcr(Google コンテナ・レジストリ)
    # Kured インストールに必要な FQDN の解放
    ...
  • 実行ノードからgcr(Google コンテナ・レジストリ)
    # AKS ノードがコンテナを取得するために必要な経路の解放
    ...

※ Kured は、Helmを使用して、gcr経由で配布するらしい。
※ なお、この作業は、保守端末からではなく、
 Azure Cloud Shell (Bash) か、Azure CLIで行う。

Helmでインストール

以下のパートのスクリプトを実行

# mgmt-linux-vm1 または mgmt-win-vm1 上から Kured をインストール

※ この作業は、Windows or Linuxの保守端末上、どちらでもOK。

モニタリング(監視)

モニタリングツールの確認

  • Azure Monitor k8s Insights
  • k8s ダッシュボード
    live data は実行ノードと直接通信できるところ
    =mgmt-windows-vm1 上からでしか確認できない。

Pod 操作履歴

kubectl rollout history で確認できる。

>kubectl rollout history deployment.v1.apps/web --namespace azrefarc-springboot
deployment.apps/web
REVISION  CHANGE-CAUSE
1         <none>
3         <none>
4         <none>
>kubectl rollout history deployment.v1.apps/web --namespace azrefarc-springboot --revision=4
deployment.apps/web with revision #4
Pod Template:

切り分け

  • うーん、動かないですね。
  • 色々、切り分けの戦略を立てよう。

Javaアプリ

  • そもそもDB作ってないので、初期化でDB接続してコケてたりしないか?と。
  • もっと簡単な、HTMLを表示するダケのコンテナ・イメージを作成して、
  • それを、*.yamlの
    image: ***azrefarc7aksacr.azurecr.io/azrefarc.springboot:1***
    と差し替えたら、良いのでは?と。

Firewall外し

  • 実際、
    • コチラの様なケースもあったし、
    • Javaアプリを、voting-appに変更したときも、
      「registry-1.docker.io」を別途、追加したりした。
  • と言う事で、以下のように実行
    ...と言うのも、プライベートAKSクラスタ作成で、
    「An existing route table has not been associated with NodepoolSubnet?.
    Please update the route table association」などと言いよるので。
  • 実行方法
    # Create UDR and assign UDR
  • Firewallの作成は、通常通り実行する。
    # Create Azure Firewall
  • ルーティングの変更も、通常通り実行する。
    良く解って無いが、以下が、AKS_VNET全体に適用される模様。
    # Create UDR and assign UDR
    ...
    # UDR でルートを塞ぐ
    ...
  • ルールの作成に関しては、ガバガバ版に変更して実行する。
    # Create Firewall Rules
    ...
    # Azure Firewall ルールで ... などを許可
    ...

保守端末

検討事項

最後に

「コレ以外にも、下も検討が必要です」

と言う話があったが、

「(疲れたので、)もうエエわ」

と言う感想(暫く休ませて下さい)。

HTTPS化やWAFの導入

AzAD認証統合

K8sの機能活用

CI/CDのワークフロー化

終わりに

結果

一部、未達があるが、
一通り動かすことが出来た。

感想

このハンズオン?をやってみた感想については、

などを、ご参照下さい。

未達部

  • 以下、機会があればやりたいです。
  • 一部、アウトバウンドがガバガバ設定
  • アプリは結局、Javaではなくvoting-appを使った。
  • 外部RDBを使用するケースを試せていない。
  • 後は、シェル流をしながら「なるほど、冪等性」と思ったので、
    クラウド・インフラ自動化」の辺りにもチャレンジしたいと思っています。

お土産のシェル

再開用のシェル

動画で「テキスト・ファイルに保持しておいて。」と言ってたアレ。

  • XXXXXXXXXは置換して利用。
  • ★は、コピー後、消す行のマーカー

★初期化パラメタ

  • ★サブスクリプション
  • ★BASH用
    SUBSCRIPTION_NAME=XXXXXXXXX
    az account set -s "$SUBSCRIPTION_NAME"
    SUBSCRIPTION_ID=$(az account show -s "$SUBSCRIPTION_NAME" --query id -o tsv)
  • ★CMD用
    SET SUBSCRIPTION_NAME=XXXXXXXXX
    az account set -s %SUBSCRIPTION_NAME%
    FOR /F "usebackq" %i IN (`az account show -s "%SUBSCRIPTION_NAME%" --query id -o tsv`) DO SET SUBSCRIPTION_ID=%i
    
  • ★プレフィックス、ロケーション
    • ★BASH用
      NAME_PREFIX=daisukenishino
      LOCATION=japaneast
  • ★CMD用
    SET NAME_PREFIX=daisukenishino
    SET LOCATION=japaneast

★準備

  • ★リソースグループ準備
    RG_OPS="${NAME_PREFIX}-ops-rg"
    RG_AKS="${NAME_PREFIX}-aks-rg"
    RG_DMZ="${NAME_PREFIX}-dmz-rg"
    RG_ONP="${NAME_PREFIX}-onprem-rg"
  • ★ログの準備1
    DIAG_STORAGE_NAME="${NAME_PREFIX}aksdiag"
    DIAG_LA_WS_NAME="${NAME_PREFIX}-aks-laws"
    DIAG_AI_APP_NAME="${NAME_PREFIX}-aks-ai"
  • ★ログの準備2
    DIAG_STORAGE_ID=$(az storage account show --name $DIAG_STORAGE_NAME --query id -o tsv)
    DIAG_LA_WS_GUID=$(az monitor log-analytics workspace show --workspace-name $DIAG_LA_WS_NAME --resource-group $RG_OPS --query customerId -o tsv)
    DIAG_LA_WS_ID=$(az monitor log-analytics workspace show --workspace-name $DIAG_LA_WS_NAME --resource-group $RG_OPS --query id -o tsv)
    DIAG_LA_WS_KEY=$(az monitor log-analytics workspace get-shared-keys --workspace-name $DIAG_LA_WS_NAME --resource-group $RG_OPS --query primarySharedKey -o tsv)

★環境構築

  • ★オンプレ模倣環境
    ONP_VNET_NAME="${NAME_PREFIX}-onprem-vnet"
    ONP_VNET_ADDRESS_PREFIXES=10.0.0.0/16
    ONP_VNET_SUBNET_DEF_NAME=Default
    ONP_VNET_SUBNET_DEF_ADDRESS_PREFIX=10.0.0.0/24
    ONP_VNET_SUBNET_IES_NAME=InternalEndpointSubnet
    ONP_VNET_SUBNET_IES_ADDRESS_PREFIX=10.0.250.0/24
  • ★AKS環境
    AKS_VNET_NAME="${NAME_PREFIX}-aks-vnet"
    AKS_VNET_ADDRESS_PREFIXES=10.0.0.0/8
     
    AKS_VNET_SUBNET_PES_NAME=PrivateEndpointSubnet
    AKS_VNET_SUBNET_PES_ADDRESS_PREFIX=10.15.0.0/16
    AKS_VNET_SUBNET_PLS_NAME=PrivateLinkServiceNatSubnet
    AKS_VNET_SUBNET_PLS_ADDRESS_PREFIX=10.12.0.0/16
    AKS_VNET_SUBNET_IES_NAME=InternalEndpointSubnet
    AKS_VNET_SUBNET_IES_ADDRESS_PREFIX=10.11.0.0/16
    AKS_VNET_SUBNET_NPS_NAME=NodepoolSubnet
    AKS_VNET_SUBNET_NPS_ADDRESS_PREFIX=10.1.0.0/16
    AKS_VNET_SUBNET_FWS_NAME=AzureFirewallSubnet
    AKS_VNET_SUBNET_FWS_ADDRESS_PREFIX=10.31.0.0/16
    AKS_VNET_SUBNET_BTS_NAME=AzureBastionSubnet
    AKS_VNET_SUBNET_BTS_ADDRESS_PREFIX=10.30.0.0/16
    AKS_VNET_SUBNET_MMS_NAME=ManagementSubnet
    AKS_VNET_SUBNET_MMS_ADDRESS_PREFIX=10.16.0.0/16
     
    ACR_NAME="${NAME_PREFIX}aksacr"
     
    FW_NAME="${NAME_PREFIX}-aks-fw"
    FW_PUBLIC_IP_NAME="${FW_NAME}-ip"
    FW_IP_CONFIG="${FW_NAME}-config"
     
    AKS_UDR_NAME="${NAME_PREFIX}-udr"
  • ★保守環境
  • ★Windows端末
    MGMT_WIN_VM_NAME=mgmt-win-vm1
    MGMT_WIN_VM_NIC_NAME="${MGMT_WIN_VM_NAME}-nic"
    MGMT_WIN_VM_ILB_NAME="${MGMT_WIN_VM_NAME}-ilb"
  • ★Linux端末
    MGMT_LINUX_VM_NAME=mgmt-linux-vm1
    MGMT_LINUX_VM_NIC_NAME="${MGMT_LINUX_VM_NAME}-nic"
  • Azure Bastion
    BASTION_NAME="${NAME_PREFIX}-bastion"
    BASTION_PUBLIC_IP_NAME="${BASTION_NAME}-ip"
  • ★AKSクラスタ
    AKS_SP_NAME="${NAME_PREFIX}-aks-sp"
    AKS_CLUSTER_NAME="${NAME_PREFIX}-aks"
    AKS_SERVICE_CIDR=10.10.0.0/16
    AKS_DNS_SERVICE_IP=10.10.0.10
  • ★DMZ環境
    DMZ_VNET_NAME="${NAME_PREFIX}-dmz-vnet"
    DMZ_VNET_ADDRESS_PREFIXES=10.0.0.0/16
    DMZ_VNET_SUBNET_AGW_NAME=AppGwSubnet
    DMZ_VNET_SUBNET_AGW_ADDRESS_PREFIX=10.0.0.0/24
    DMZ_VNET_SUBNET_IES_NAME=InternalEndpointSubnet
    DMZ_VNET_SUBNET_IES_ADDRESS_PREFIX=10.0.250.0/24

コピペ用シェル

参考

テクニカルリファレンス中の...

OSSC > 開発基盤部会 Blog


Tags: :クラウド, :コンテナ, :Azure, :AKS, :IaC, :セキュリティ, :通信技術, :セキュリティ, :認証基盤


添付ファイル: file無題.png 414件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-11-28 (土) 15:37:36 (5d)