「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>AKSをセキュアに利用するためのテクニカルリファレンス]]
* 目次 [#i6b72ad0]
#contents
*環境 [#w097879b]
**シェル [#r96cf259]
-[[Azure Cloud Shell]] (Bash) からの作業を想定
-20分でタイムアウトしてしまうため、
--タイムアウトで、変数が失われてしまう。
--これを避けるため、パラメタ設定スクリプトを、
--[[テキスト・ファイル>#ta06f8f8]]などにコピーして残しておく。
--再開の際は、[[テキスト・ファイル>#ta06f8f8]]のスクリプトを再実行する。
**操作者の権限 [#i2ca26f6]
以下の権限を持つユーザで作業
-Ownerロール権限
-[[Azure Active Directory]]に対して[[SPN>Azure サービス プリンシパル]]を作成する権限
**その他 [#h2858ed5]
***アカウント [#r64cf9f2]
以下で固定になってるので、必要に応じて変更する。
-admin-username
--admin-username azrefadmin
-admin-password
--admin-password "p&ssw0rdp&ssw0rd"
***[[F/WへのFQDN追加>AKSをセキュアに利用する構築デモ(コピペ用)#t9e6d1e3]] [#fd9723b4]
***...見つけ次第、書く。 [#l2bf54bc]
*構成 [#k241e08b]
**全体構成図 [#hb722c2e]
[[AKS_TechnicalReference_v0.14(ppt).zip>https://nakama.blob.core.windows.net/mskk/2020_04_25_AKS_TechnicalReference_v0.14(ppt).zip]]に同梱のPPTから引用
#ref(無題.png,left,nowrap,全体構成図,60%)
**ネットワーク構成 [#j8e5bc60]
***構成概要 [#g52607bf]
[[コチラ>AKSをセキュアに利用するためのテクニカルリファレンス#h6e5b109]]の推奨設定と少々異なる([[プライベートAKSクラスタ>Azure Kubernetes Service (AKS)#m0c88b4a]]にする)。
-Azure CNI プラグインを利用した分離型 [[VNET>Azureの仮想ネットワーク]] 構成
-ARM API はプライベート化しない。
-Master API はプライベート化する。~
([[プライベートAKSクラスタ>Azure Kubernetes Service (AKS)#m0c88b4a]])
-実行ノードも既存の[[VNET>Azureの仮想ネットワーク]]に配置する。
※ サマリすると
-ARM API以外は、プライベート化し、
-実行ノードの公開は、
--[[Azure Private Endpoint]]経由(イントラ公開)
--DMZ経由(インターネット公開)
となる。
***入力経路 [#rd647b7a]
インバウンド(イングレス
-アプリ
--イントラ公開~
[[Azure Private Endpoint]] → [[ILB(Internal Load Balancer)>Azure Load Balancer#p2404f03]]
--インターネット公開~
[[Azure Application Gateway]] (DMZ) → [[Azure Private Endpoint]] → [[ILB(Internal Load Balancer)>Azure Load Balancer#p2404f03]]
-保守アクセス
--イントラ公開~
[[Azure Private Endpoint]] 方式
--インターネット公開~
[[Azure Bastion]] 方式
***出力経路 [#v71f3c20]
アウトバウンド(エグレス
以下の併用
-[[Azure Firewall]]:インターネット・アクセス
-[[Azure Private Endpoint]]:Azureの他のサービスへのアクセス
***[[VNET>Azureの仮想ネットワーク]]・[[サブネット>Azureのサブネッティング]] [#l6d4f0a2]
-[[オンプレ模倣環境>#w3d31a84]]
-[[AKS 配置環境>#s8b3bd20]]
**認証・認可 [#taee4d4f]
保守用端末を [[VNET>Azureの仮想ネットワーク]] 内に設置する想定。
***Azureポータル, Azure CLI (ARM API) [#hccf0a02]
プライベート化しない(既存のアクセス制限機能を想定)
***[[制御プレーン>AKSをセキュアに利用するためのテクニカルリファレンス#gcac2445]]の実行アカウント ([[SPN>Azure サービス プリンシパル]]) [#b8d47c5d]
[[Managed ID 方式>AKSクラスタ作成・操作に必要な権限#i3b0bd60]]で作成する。
***ダッシュボード, Kubernetes CLI (Master API) [#z56fa98b]
-クラスタ管理者の[[kube config>AKSをセキュアに利用するためのテクニカルリファレンス#p6cdc458]]を使って、
-必要なら、追加でIPアドレス制限を想定
***AKSユーザ・アプリからのリソース・アクセス [#f379ef3c]
[[Secret機能>AKSユーザ・アプリからのリソース・アクセス#b3245666]]を使用
**基盤保守 [#g4364425]
***日次パッチ [#g4bcd917]
-ノード VM は日次パッチ適用(既定で自動)
-Kured をインストールして自動再起動させる。
***オンデマンド [#g297ed91]
必要に応じて
-[[制御プレーン>AKSをセキュアに利用するためのテクニカルリファレンス#n7feb42c]]
-[[ノードプール>AKSをセキュアに利用するためのテクニカルリファレンス#n7feb42c]]
バージョンアップを手動で実施。
**開発~デプロイ [#wfd95a03]
[[VNET>Azureの仮想ネットワーク]] 内に本番用コンテナ・レジストリを配置するのみ~
([[ACR(コンテナ・レジストリ)をプライベート化する。>Azure Kubernetes Service (AKS)#ja9f4fdf]])
*手順 [#o59fa2c7]
https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md
**[[準備作業>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#0-%E6%BA%96%E5%82%99%E4%BD%9C%E6%A5%AD]] [#qc8143b1]
***[[サブスクリプションの選択>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#%E3%82%B5%E3%83%96%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E9%81%B8%E6%8A%9E]] [#n722891b]
※ 必要に応じて、サブスクリプションの選択を行う。
※ 「SUBSCRIPTION_NAMEは各自で書き換え」とのこと。
※ 再開の際は、再実行([[テキスト・ファイル>#ta06f8f8]]へ)。
***[[パラメタの設定>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF-%E3%81%AE%E8%A8%AD%E5%AE%9A]] [#ybb4fcbb]
※ 「NAME_PREFIXは各自で書き換え」とのこと。
※ 再開の際は、再実行([[テキスト・ファイル>#ta06f8f8]]へ)。
***[[Azure CLI拡張機能のインストール>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#az-%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E6%8B%A1%E5%BC%B5%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB]] [#qcfe77c9]
***[[AKS プレビュー機能のインストール>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#aks-%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E6%A9%9F%E8%83%BD%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB]] [#t6577ca4]
※ 「時間かかるので注意(20 分ぐらい)」とのこと。
**[[共通準備>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#1-%E5%85%B1%E9%80%9A%E6%BA%96%E5%82%99]] [#mbf85f6c]
***パラメタの設定 [#i5b6da65]
以下のパートのスクリプトを実行して、パラメタを設定
# Parameters
※ 再開の際は、再実行([[テキスト・ファイル>#ta06f8f8]]へ)。
***リソース・グループの作成 [#v6f53a61]
以下のパートのスクリプトを実行
# 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
***[[診断ログ>Azureの監視と管理#lf757ca0]]・ストレージの作成 [#f35eaa64]
以下のパートのスクリプトを実行
# Create Diagnostics Storage
※ インターネット・アクセス禁止オプションあり。
***[[Log Analytics]] & [[Application Insights]] の作成 [#rb0b0ae8]
以下のパートのスクリプトを実行
# Create Log Analytics & AppInsights
※ [[Log Analytics]] は 90日ログ保持オプションあり。
***サブスクリプションのアクティビティ・ログの有効化 [#we77d08c]
以下のパートのスクリプトを実行
# Enable Subscription Activity Logging
※ だが、現時点では UI から実施とのこと(動画も参考になる)。
-参考
--Azure Monitor での Azure アクティビティ ログの収集と分析 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/activity-log-collect
**[[オンプレ模倣環境の作成>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#2-%E3%82%AA%E3%83%B3%E3%83%97%E3%83%AC%E6%A8%A1%E5%80%A3%E7%92%B0%E5%A2%83%E3%81%AE%E4%BD%9C%E6%88%90]] [#s5c0518d]
-[[VNET>Azureの仮想ネットワーク]]にVMを新設して、そこをオンプレに見立てるということらしい。
-[[全体構成図>#hb722c2e]]には「OA環境サブスクリプション」と~
あるが、別サブスクリプションでなくても良い。
-多分、後述の、[[Bastionの作成>#a74a73b8]]手順で代替できる~
(が、Private Link、Private Endpoint等を試したいのでコチラを優先したい)。
-あと、[[Azure Private Endpoint]] 引き込みを行うので、~
正確には、「[[オンプレ延伸>FgCF (Financial-grade Cloud Fundamentals)#aed3c834]]模倣環境」ではないだろうか?
***パラメタの設定 [#e47ddc2e]
以下のパートのスクリプトを実行して、パラメタを設定
# Parameters
※ 再開の際は、再実行([[テキスト・ファイル>#ta06f8f8]]へ)。
***[[VNET>Azureの仮想ネットワーク]]・[[サブネット>Azureのサブネッティング]]の作成 [#w3d31a84]
以下のパートのスクリプトを実行
# Create Onpremise VNET
-[[VNET>Azureの仮想ネットワーク]]
ONP_VNET_NAME="${NAME_PREFIX}-onprem-vnet"
ONP_VNET_ADDRESS_PREFIXES=10.0.0.0/16
※ [[全体構成図>#hb722c2e]]と突合して、&color(red){サブネット構成を理解しておくと良い。};
-[[サブネット>Azureのサブネッティング]]
--デフォルトのサブネット(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
※ &color(red){IESじゃなくて、PES(PrivateEndpointSubnet)だね。};
***VMの作成 [#o3bafede]
以下のパートのスクリプトを実行
# Create uservm1 (Public IP + Open RDP Port)
※ VM生成の[[Azure CLI]]スクリプトとして参考になる。~
[[パブリックIP作成、NIC作成を別で行っている>Azure上に素早く環境を構築する#r34348fb]](が特に意味はない模様)。
※ オンプレの模倣ということで、Windows 10 を選択している?
※ Visual Studio のアクティブ・サブスクライバでない場合は、~
Windows 10 ではなく Windows Server 2019 を利用(ライセンスの関係らしい)~
既定のスクリプトは、Windows 10になっているので、必要に応じて変更。
※ 最後に「az vm open-port」でRDPポートを開けるオマケが付いているので注意。
**[[AKS 配置環境の準備>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#3-aks-%E9%85%8D%E7%BD%AE%E7%92%B0%E5%A2%83%E3%81%AE%E6%BA%96%E5%82%99]] [#y8ef1a98]
***パラメタの設定 [#r2212fa2]
以下のパートのスクリプトを実行して、パラメタを設定
# Variables
※ 再開の際は、再実行([[テキスト・ファイル>#ta06f8f8]]へ)。
***[[VNET>Azureの仮想ネットワーク]]・[[サブネット>Azureのサブネッティング]]の作成 [#s8b3bd20]
以下のパートのスクリプトを実行
#Create VNET & Subnets
-[[VNET>Azureの仮想ネットワーク]]
AKS_VNET_NAME="${NAME_PREFIX}-aks-vnet"
AKS_VNET_ADDRESS_PREFIXES=10.0.0.0/8
※ [[全体構成図>#hb722c2e]]と突合して、&color(red){サブネット構成を理解しておくと良い。};
-[[サブネット>Azureのサブネッティング]]
--保守端末用
AKS_VNET_SUBNET_MMS_NAME=ManagementSubnet
AKS_VNET_SUBNET_MMS_ADDRESS_PREFIX=10.16.0.0/16
--[[ノードプール>AKSをセキュアに利用するためのテクニカルリファレンス#n7feb42c]]用
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
※ &color(red){シェルではなく*.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
※ &color(red){使っていない?};
--[[Azure Bastion]]用
AKS_VNET_SUBNET_BTS_NAME=AzureBastionSubnet
AKS_VNET_SUBNET_BTS_ADDRESS_PREFIX=10.30.0.0/16
※ &color(red){使っていない?};
>※ [[ノードプール>AKSをセキュアに利用するためのテクニカルリファレンス#n7feb42c]]のIP消費が多いので、~
/16でサブネッティングしているとの事。
>※ しれっと、VNETの「az monitor diagnostic-settings create」をしている。
***周辺サービスの作成と引き込み [#nf0b7bbb]
-[[ACR>AKSをセキュアに利用するためのテクニカルリファレンス#zbb28090]] の作成と [[Azure Private Endpoint]] 引き込み
-[[ACR>Azure Container Registry]] の作成と [[Azure Private Endpoint]] 引き込み
--[[ACR>AKSをセキュアに利用するためのテクニカルリファレンス#zbb28090]] の作成~
--[[ACR>Azure Container Registry]] の作成~
以下のパートのスクリプトを実行
# Create ACR
※ [[Azure Private Endpoint]] 引き込みをサポートするPremiumのskuを使用。~
※ インターネットアクセス禁止、[[Subscription Activity Logging>#we77d08c]]の出力先を指定
--[[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 Private Endpoint]] 引き込み~
以下のパートのスクリプトを実行
# Service Endpoint for SQL DB
※ マネージド・インスタンスは、[[Azure Private Endpoint]] が使えない~
らしいので [[Azure Service Endpoint]] を利用する(と言うエクスキューズがある)。~
※ 本来、[[コチラの手順>Azure Private Link#j1ec3c2f]]が参考になったハズ。~
-参考
--[[Azure SQL Databaseをプライベート化する。]]
--[[ACR(コンテナ・レジストリ)をプライベート化する。]]
***[[Azure Firewall]]の作成 [#d721831d]
-[[Azure Firewall]]の作成
# Create Azure Firewall
-[[UDR>Azureの仮想ネットワーク#e8a3a7cc]]の設定~
以下のパートのスクリプトを実行
# Create UDR and assign UDR
※ 既定の[[UDR>Azureの仮想ネットワーク#e8a3a7cc]]として、「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>Azureの仮想ネットワーク#e8a3a7cc]](AKS_UDR_NAME)をノードプールのサブネットに適用する。~
※ その他、[[MCR>AKSをセキュアに利用するためのテクニカルリファレンス#u4a1c468]]へのアクセスとか、云々、コレは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 [#e9101111]
-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
**[[保守端末の準備>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#4-%E4%BF%9D%E5%AE%88%E7%AB%AF%E6%9C%AB%E3%81%AE%E6%BA%96%E5%82%99]] [#i3e20909]
***管理マシン(Windows)の作成 [#t74fd3eb]
オンプレから接続する踏み台VM相当。
-パラメタの設定~
以下のパートのスクリプトを実行して、パラメタを設定
# Parameters
※ 再開の際は、再実行([[テキスト・ファイル>#ta06f8f8]]へ)。
-[[UDR>Azureの仮想ネットワーク#e8a3a7cc]]の設定~
以下のパートのスクリプトを実行
# UDR でルートを塞ぐ
※ 前述の既定の[[UDR>Azureの仮想ネットワーク#e8a3a7cc]](AKS_UDR_NAME)を指定。
-[[ILB, NIC>Azure Load Balancer#p2404f03]] の作成~
以下のパートのスクリプトを実行
# ILB 配下に VM を作成
# NIC を先に作成(IP アドレスを確定させる)
※ 後で、[[Azure Private Link]]を作成するので、ILB → NICと作成するのがポイント。
-[[Azure Firewall]]の設定~
以下のパートのスクリプトを実行
# Azure Firewall ルールで Windows Update などを許可
# Azure Firewall ルールで) Azureポータル(を許可
※ 同様に、ルールの作成には、かなり時間がかかるらしい(10分ぐらい?)。
-VM の作成~
以下のパートのスクリプトを実行
# VM 作成 (Windows 2019)
# Create mgmt-win-vm1
※ オンプレ(模倣)環境ではない、Azure環境ということで、コチラは、2019か。~
しかし、踏み台VMにサーバーOSって、やっぱり高額になるのでは?と、少々、心配。
-[[Azure Private Link]], [[Azure Private Endpoint]] の作成~
以下のパートのスクリプトを実行
# Private Link Service 作成
# Create Private Endpoint to MgmtVM ILB
※ [[コチラの手順>Azure Private Link#j1ec3c2f]]が参考になる。
-ツールのインストール~
Windows上で環境を構築する。接続先のアドレスは、~
mgmt-win-vm1-ilb の [[Azure Private Endpoint]]で確認可能。
--AKSのバージョンを確認~
以下のパートのスクリプトを実行
# Cloud Shell 上でインストールする aks バージョンを確認しておく
--[[Azure CLIをインストールしてログイン>Azure CLI]]
--先に取得したバージョン番号に対応する 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
・または、フィアルへのパスを通す。
...
---または、~
・下記 URL からダウンロードし~
https://storage.googleapis.com/kubernetes-release/release/v1.16.8/bin/windows/amd64/kubectl.exe~
・%HOMEPATH% 下へコピー~
https://v1-16.docs.kubernetes.io/ja/docs/tasks/tools/install-kubectl/~
https://v1-16.docs.kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-windows~
--Helm(v3 系列)をインストール
---下記 URL からダウンロード(持ち込み)~
https://get.helm.sh/helm-v3.1.2-windows-amd64.zip
---%HOMEPATH% 下へコピー~
helm.exe を mgmtvm1 の c:\users<username> にコピー
--VS Code
---下記 URL からダウンロード(持ち込み)~
https://code.visualstudio.com/download
---オフラインインストーラでインストール
--Microsoft Edge(Chromium 版)
---下記 URL からダウンロード(持ち込み)~
https://www.microsoft.com/en-us/edge/business/download
---オフラインインストーラでインストール
>※ 「持ち込み」となっているモノは、[[Azure Firewall]]で設定していないもの。
***管理マシン(Linux)の作成 [#v8603bfc]
踏み台VMから接続し、アプリのビルドや、Dockerコンテナ作業を行う。
-パラメタの設定~
以下のパートのスクリプトを実行して、パラメタを設定
# Parameters
※ 再開の際は、再実行([[テキスト・ファイル>#ta06f8f8]]へ)。
-[[UDR>Azureの仮想ネットワーク#e8a3a7cc]]の設定~
以下のパートのスクリプトを実行
# UDR でルートを塞ぐ
※ 前述の既定の[[UDR>Azureの仮想ネットワーク#e8a3a7cc]](AKS_UDR_NAME)を指定。
-NICの作成~
以下のパートのスクリプトを実行
# NIC を先に作成(IP アドレスを確定させる)
※ こちらは、[[Azure Private Link]]を構成しないので、[[ILB>Azure Load Balancer#p2404f03]]は不要。
-[[Azure Firewall]]の設定~
以下のパートのスクリプトを実行
# Azure Firewall ルールで通信を許可
※ コチラは、JavaのビルドやDocker操作があるので、ソレ用に穴をあける。~
※ 同様に、ルールの作成には、かなり時間がかかるらしい(10分ぐらい?)。
-VM の作成~
以下のパートのスクリプトを実行
# Create mgmt-linux-vm1 (Ubuntu)
-ツールのインストール~
Linux上で環境を構築する。
--0. VM にログイン~
Windows 保守端末 からログインする。
ssh mgmt-linux-vm1
--1. Azure CLIのインストール~
https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli-apt?view=azure-cli-latest
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
--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になる。
---必要に応じて、[[サブスクリプションの選択>#n722891b]]を行う。
***[[Bastionの作成>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#4-c-%E5%8F%82%E8%80%83-bastion-%E4%BD%9C%E6%88%90-%E6%99%82%E9%96%93%E3%81%8C%E3%81%8B%E3%81%8B%E3%82%8B]] [#a74a73b8]
[[オンプレ模倣環境の作成>#s5c0518d]]をスキップできる。
-パラメタの設定~
以下のパートのスクリプトを実行して、パラメタを設定
BASTION_NAME="${NAME_PREFIX}-bastion"
BASTION_PUBLIC_IP_NAME="${BASTION_NAME}-ip"
※ 再開の際は、再実行([[テキスト・ファイル>#ta06f8f8]]へ)。
-[[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 クラスタの作成と設定>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#5-aks-%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%81%AE%E4%BD%9C%E6%88%90]] [#f6298299]
***パラメタの設定 [#i3448515]
以下のパートのスクリプトを実行して、パラメタを設定
# Parameters
※ 再開の際は、再実行([[テキスト・ファイル>#ta06f8f8]]へ)。
***AKS クラスタの作成 [#s0ea95d7]
-(必要に応じて)サービスプリンシパル作成~
[[Managed ID>Azure 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クラスタ作成・操作に必要な権限#db6b9d7e]]の話。
***AKS の設定 [#t3e95a42]
-ACR との接続~
-[[ACR>Azure Container Registry]] との接続~
以下のパートのスクリプトを実行
# Configure ACR for connecting from AKS
※ コレは、[[ココ>Azure サービス プリンシパル#e9e4c0d9]]の話。~
※ 2~3分かかるらしい。
-Azure Monitor の有効化~
以下のパートのスクリプトを実行
# Azure Monitor for AKS 有効化
...
※ 数分、時間がかかる。
-診断設定の有効化~
以下のパートのスクリプトを実行
# AKS 診断設定の有効化
...
※ 数分、時間がかかる。
**[[アプリのビルドとデプロイ>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#6-%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E9%85%8D%E7%BD%AE]] [#f3b622a9]
***kubectl/kubeconfig の準備 [#jc45f7bc]
-uservm1 > mgmt-win-vm1, mgmt-linux-vm1 へのログイン
-~/.kube/config ファイルの取得とコピー(非 admin, admin の 2 種類)
--[[6-a. mgmt-win-vm1 上で作業>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#6-b-mgmt-linux-vm1-%E4%B8%8A%E3%81%A7%E4%BD%9C%E6%A5%AD]]
--[[6-b. mgmt-linux-vm1 上で作業>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#6-b-mgmt-linux-vm1-%E4%B8%8A%E3%81%A7%E4%BD%9C%E6%A5%AD]]
※ .kubeに、configとadmin-configファイルが作成される。~
既定では、configが利用される(必要に応じて切り替える)。
***コンテナ・イメージの作成 [#j8b4ecf1]
[[AKS_TechnicalReference_v0.14(ppt).zip>https://nakama.blob.core.windows.net/mskk/2020_04_25_AKS_TechnicalReference_v0.14(ppt).zip]]に同梱の~
構築サンプルアプリ.zipを mgmt-windows-vm1 に持ち込んで作業する。
-ビルドできるように[[Azure Firewall]]に穴をあける。
--[[6-d. Cloud Shell 上で実施>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#6-d-cloud-shell-%E4%B8%8A%E3%81%A7%E5%AE%9F%E6%96%BD]]
-ファイルを mgmt-linux-vm1 に scp で転送し、~
mgmt-linux-vm1 でコンテナをビルドし、作成したコンテナ・イメージを~
コンテナ・レジストリにプッシュ(2 つのバージョンをプッシュ)
--[[6-e. mgmt-windows-vm1 上で実施>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#6-e-mgmt-windows-vm1-%E4%B8%8A%E3%81%A7%E5%AE%9F%E6%96%BD]]
***アプリのデプロイ [#zdb0da67]
YAML ファイルを作成し、kubectl apply を実行し、~
コンテナ・イメージのデプロイ展開を確認する。~
最後に、コンテナ・イメージを切り替える。~
(ダッシュボードの表示も行う)
-[[6-f. アプリの配置>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#6-f-%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E9%85%8D%E7%BD%AE]]
※ コンテナ・イメージの~
レジストリ名(先頭)とタグ名(末尾)~
の部分は必要に応じて変更する。
※ DBアクセスは動かなくても確認はできる。~
DBアクセスをテストするなら、[[コチラで言及されているSQL DB>#nf0b7bbb]]を作成。
手順としては、(...後でどこかに書くか)
**[[オンプレ模倣環境から AKS アプリへの接続>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#7-%E3%82%AA%E3%83%B3%E3%83%97%E3%83%AC%E6%A8%A1%E5%80%A3%E7%92%B0%E5%A2%83%E3%81%8B%E3%82%89-aks-%E3%82%A2%E3%83%97%E3%83%AA%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A]] [#u8505db2]
***AKS ILB に対する Private Link Service の作成 [#u85b7a55]
以下のパートのスクリプトを実行
# AKS ILB に対する Private Link Service の作成
***AKS ILB への Private Endpoint の作成 [#g631313b]
以下のパートのスクリプトを実行
# Create Private Endpoint to AKS
**[[インターネットからの接続>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#8-%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%8B%E3%82%89%E3%81%AE%E6%8E%A5%E7%B6%9A]] [#i43bee2c]
***パラメタの設定 [#xfbb1a53]
以下のパートのスクリプトを実行して、パラメタを設定
# Parameters
※ 再開の際は、再実行([[テキスト・ファイル>#ta06f8f8]]へ)。
***DMZ VNET の作成 [#y114c9c2]
以下のパートのスクリプトを実行
# Create VNET and Subnets
***AKS ILB への Private Endpoint の作成 [#nbeddae0]
以下のパートのスクリプトを実行
# Create AKS Private Endpoint
***Application Gateway の作成 [#g4c99b7e]
以下のパートのスクリプトを実行
# Create AppGateway
...
# Private Endpoint の IP アドレスを取得
...
# AppGw 作成 ※ 時間がかかる
***可用性テストの作成 [#qfae28c3]
「URL の Ping テスト」を構成する。
※ 現時点では UI から実施とのこと(動画も参考になる)。~
※ az コマンドではできない (ARM テンプレートのみ可)
-参考
--Microsoft Docs
---Web サイトの可用性と応答性の監視~
https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/monitor-web-app-availability
---Resource Manager テンプレートでのメトリック アラートの作成~
可用性テスト用のテンプレートとメトリック アラート~
https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/alerts-metric-create-templates#template-for-an-availability-test-along-with-a-metric-alert
**[[ノード自動再起動>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#9-%E3%83%8E%E3%83%BC%E3%83%89%E8%87%AA%E5%8B%95%E5%86%8D%E8%B5%B7%E5%8B%95]] [#l2b5181b]
Kured による VM のリブートで自動更新を取り込むAKS のアップグレード
***経路の解放 [#id240e90]
以下のパートのスクリプトを実行
-VMからgcr(Google コンテナ・レジストリ)
# Kured インストールに必要な FQDN の解放
...
-実行ノードからgcr(Google コンテナ・レジストリ)
# AKS ノードがコンテナを取得するために必要な経路の解放
...
※ Kured は、Helmを使用して、gcr経由で配布するらしい。~
※ なお、この作業は、保守端末からではなく、~
[[Azure Cloud Shell]] (Bash) か、[[Azure CLI]]で行う。
***Helmでインストール [#ieb33038]
以下のパートのスクリプトを実行
# mgmt-linux-vm1 または mgmt-win-vm1 上から Kured をインストール
※ この作業は、Windows or Linuxの保守端末上、どちらでもOK。
**[[モニタリング(監視)>https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md#10-%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E7%9B%A3%E8%A6%96]] [#u74329e5]
***モニタリングツールの確認 [#h4d8334c]
-[[Azure Monitor]] k8s Insights
-k8s ダッシュボード~
live data は実行ノードと直接通信できるところ~
=mgmt-windows-vm1 上からでしか確認できない。
***Pod 操作履歴 [#v72da782]
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:
*切り分け [#n60154f3]
-うーん、動かないですね。
-色々、切り分けの戦略を立てよう。
**Javaアプリ [#l3c5f53f]
-そもそもDB作ってないので、初期化でDB接続してコケてたりしないか?と。
-もっと簡単な、HTMLを表示するダケのコンテナ・イメージを作成して、
-それを、*.yamlの
image: ***azrefarc7aksacr.azurecr.io/azrefarc.springboot:1***
と差し替えたら、良いのでは?と。
-手頃なモノを探していたら、以下を発見。
--docker+Node.js(Express)の最小構成プロジェクトを作成する - Qiita~
https://qiita.com/ryo-ohnishi/items/b54e649b14b51694ef77
>詳しい手順は[[コチラ>AKSをセキュアに利用する構築デモ(コピペ用)#lfb210f2]]に書く。
**Firewall外し [#ta823b80]
-なんとなく、[[Azure Firewall]]が悪さしている気もした。
-実際、
--[[コチラ>AKSをセキュアに利用する構築デモ#fd9723b4]]の様なケースもあったし、
--[[Javaアプリ>#l3c5f53f]]を、[[voting-app>Azure Kubernetes Service (AKS)#c7683828]]に変更したときも、~
「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 でルートを塞ぐ
...
---ルールの作成に関しては、[[ガバガバ版>AKSをセキュアに利用する構築デモ(コピペ用)#ce13e773]]に変更して実行する。
# Create Firewall Rules
...
# Azure Firewall ルールで ... などを許可
...
**保守端末 [#o5cf99dd]
-1つはゴリゴリのWindows開発環境([[Docker Desktop for Windows]])にしてしまう。
-[[Azure Firewall]]を作っても、ココだけ[[Firewallをガバガバに設定>#ta823b80]]可能。
-ローカルで、Dockerビルドして、動作確認したモノを、迅速に[[ACR>AKSをセキュアに利用するためのテクニカルリファレンス#zbb28090]]にプッシュ。
-ローカルで、Dockerビルドして、動作確認したモノを、迅速に[[ACR>Azure Container Registry]]にプッシュ。
*検討事項 [#p1fe10e0]
最後に
>「コレ以外にも、下も検討が必要です」
と言う話があったが、
>「(疲れたので、)もうエエわ」
と言う感想(暫く休ませて下さい)。
**HTTPS化やWAFの導入 [#l0a54701]
**[[Azure Active Directory]]認証統合 [#gbcd98d1]
-[[AKS Master APIにAzAD認証を統合する。]]
-...その他、アプリの認証の検討も必要...
**[[K8s>Azure Kubernetes Service (AKS)#x4a72daa]]の機能活用 [#j94f00bd]
**[[CI/CD]]のワークフロー化 [#la16e1f4]
-[[CI/CD パイプライン]]と言われるが、
-実は、[[コンテナのチェーン]]だと思う。
*終わりに [#h989f86d]
**結果 [#p70dd76f]
一部、未達があるが、~
一通り動かすことが出来た。
**感想 [#b80fc51a]
このハンズオン?をやってみた感想については、
-[[コチラ(検討事項)>#p1fe10e0]]
-[[コンテナのチェーン]]
-[[開発基盤部会 Blog>#g81e9e9e]]
などを、ご参照下さい。
**未達部 [#x06340da]
-以下、機会があればやりたいです。
--一部、アウトバウンドが[[ガバガバ設定>#ta823b80]]
--アプリは結局、Javaではなく[[voting-appを>#l3c5f53f]]使った。
--外部RDBを使用するケースを試せていない。
-後は、シェル流をしながら「なるほど、冪等性」と思ったので、~
「[[クラウド・インフラ自動化]]」の辺りにもチャレンジしたいと思っています。
*お土産のシェル [#a9ba18b6]
**再開用のシェル [#ta06f8f8]
動画で「テキスト・ファイルに保持しておいて。」と言ってたアレ。
-&color(red){XXXXXXXXX};は置換して利用。
-★は、コピー後、消す行のマーカー
***★初期化パラメタ [#ecb71389]
-★サブスクリプション
--★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
***★準備 [#x2449c83]
-★リソースグループ準備
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)
***★環境構築 [#b588803a]
-★オンプレ模倣環境
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
**[[コピペ用シェル>AKSをセキュアに利用する構築デモ(コピペ用)]] [#u2ebb941]
*参考 [#r7d2f9fc]
**[[テクニカルリファレンス中の...>AKSをセキュアに利用するためのテクニカルリファレンス#icc83da1]] [#g9f9b38f]
-https://github.com/tsubasaxZZZ/aks-hardway
--https://github.com/tsubasaxZZZ/aks-hardway/blob/master/deploy-private-cluster.md
**OSSC > 開発基盤部会 Blog [#g81e9e9e]
-セキュアなプライベートAKS構築が出来たので報告。~
https://www.osscons.jp/jo64zcvfj-537/
----
Tags: [[:クラウド]], [[:コンテナ]], [[:Azure]], [[:AKS]], [[:IaC]], [[:セキュリティ]], [[:通信技術]], [[:セキュリティ]], [[:認証基盤]]