AKSをセキュアに利用する構築デモ(コピペ用)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>AKSをセキュアに利用する構築デモ]]
* 目次 [#b6b327f1]
#contents
*概要 [#y0aa18d3]
「[[AKSをセキュアに利用する構築デモ]]」で使ったシェルのコ...
**カスタマイズ [#zee65a74]
以下の点をカスタマイズした。
-アカウントが固定な所を修正
-Windowsを既存のディスクで作成する。
-選択的な所を推奨設定に絞った。
-あと、トラブルシュートの切り分け~
で使用したシェルやDeployment.yamlなど。
**[[WSL>Windows Subsystem for Linux]]で[[Azure CLI]] [#o1...
タイムアウトや、エクステンションの既定値?~
の関係で、やっぱ、ローカルで利用したいなぁと。
-「[[WSLへのインストール方法>Azure CLI#b0af5ab5]]」を参照。
-なお、[[Azure CLI拡張のインストール>AKSをセキュアに利用...
*詳細 [#x12df70d]
**変数 [#l448f4d0]
***[[初期化パラメタ>AKSをセキュアに利用する構築デモ#ecb71...
***アカウント(追加) [#c634ed97]
&color(red){XXXXXXXXX};は置換して利用。
OS_USER_ID=XXXXXXXXX
OS_PASSWORD=XXXXXXXXX
**VM作成部 [#e370726b]
***前段 [#ee57f9aa]
-オンプレVM~
&color(red){[X]};は置換して利用 (1-n)。
az network public-ip create --name uservmX-ip --resource...
ONP_VNET_SUBNET_DEF_ID=$(az network vnet subnet show --r...
az network nic create --name uservmXnic --subnet $ONP_VN...
-Windows保守端末VM
--[[Azure Private Link]]設定するので何台も作れない。
--ターミナル化して使うのが良いのかも(Linuxターミナルとい...
-Linux保守端末VM~
&color(red){[X]};は置換して利用 (1-n)。
MGMT_LINUX_VM_NAME=mgmt-linux-vmX
MGMT_LINUX_VM_NIC_NAME="${MGMT_LINUX_VM_NAME}-nic"
***パスワード変更 [#f86ee9be]
-オンプレVM~
&color(red){[X]};は置換して利用 (1-n)。
az vm create --name uservmX --image "MicrosoftWindowsDes...
-Windows保守端末VM
az vm create --name $MGMT_WIN_VM_NAME --image Win2019Dat...
-Linux保守端末VM
az vm create --name $MGMT_LINUX_VM_NAME --image UbuntuLT...
***既存ディスク使用 [#m84ba9f4]
&color(red){<管理ディスク名>};は置換して利用。
-オンプレVM~
&color(red){[X]};は置換して利用 (1-n)。
az vm create --name uservmX --attach-os-disk <管理ディス...
-Windows保守端末VM
az vm create --name $MGMT_WIN_VM_NAME --attach-os-disk <...
※ &color(red){<管理ディスク名>};の準備方法は、[[この辺>Az...
***後段 [#y8eb68a3]
-オンプレVM~
&color(red){[X]};は置換して利用。
az vm open-port --resource-group $RG_ONP --name uservmX ...
-Windows保守端末VM
--[[Azure Private Link]]設定するので何台も作れない。
--ターミナル化して使うのが良いのかも(Linuxターミナルとい...
-Linux保守端末VM~
なし(open-portしないのでなにもない)
**F/W ルール [#t9e6d1e3]
***AKSクラスタ [#nd13ebe9]
-Required_for_AKS_clusters > MCR~
az network firewall application-rule create --firewall-...
--collection-name "Required_for_AKS_clusters" --priority...
--name "MCR" --source-addresses "${AKS_VNET_SUBNET_NPS_A...
--target-fqdns "*.cdn.mscr.io" "mcr.microsoft.com" "*.da...
--「[[n-app>#lfb210f2]]」と言うコンテナをテストしようとし...
「registry-1.docker.io」が必要になったりした。
--なお、
---[[MCR>Microsoft Container Registry]]とあるが、[[ACR>Az...
---以下のような方法もあるらしい。
--参考
---コンテナー イメージのインポート | Microsoft Docs~
パブリック レジストリからインポートする~
https://docs.microsoft.com/ja-jp/azure/container-registry...
***Windows保守端末 [#q6a74f52]
-Required_for_management_Windows_VMs > Azure AD Authentic...
az network firewall application-rule create --firewall-...
--collection-name "Required_for_management_Windows_VMs" \
--name "Azure AD Authentication" --source-addresses "${M...
--target-fqdns "login.microsoftonline.com" "aadcdn.msfta...
--"login.live.com" が空いてないので追加。
--組織アカウントでないからかもしれない。~
組織アカウントに絞るなら開けないほうが良いかも。
***...。 [#h16bb88c]
他にもあったら足して行く。
なお、以下が参考になる。
-Azure Kubernetes Service (AKS) でエグレス トラフィックを...
https://docs.microsoft.com/ja-jp/azure/aks/limit-egress-t...
***ガバガバ版 [#ce13e773]
動かない時に、Firewallの問題との切り分けが大変なので、~
application-ruleを無くし、network-rule で dst を any の *...
-AKS環境
--オリジナル版
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall network-rule create --firewall-n...
--ガバガバ版~
network-ruleのみ。
az network firewall network-rule create --firewall-...
-保守環境(Win)
--オリジナル版
MGMT_WIN_NIC_IP_ADDRESS=$(az network nic show --name $MG...
az network firewall application-rule create --firewall-n...
--ガバガバ版~
network-ruleのみ。
MGMT_WIN_NIC_IP_ADDRESS=$(az network nic show --name $MG...
az network firewall network-rule create --firewall-n...
**プライベートAKSクラスタ [#dc763501]
ゴチャゴチャしているので、[[コチラ>AKSをセキュアに利用す...
***[[Managed ID>Azure Managed ID]]方式で作成 [#k45473a7]
# Create AKS Cluster ===================================...
# Prepare for creating cluster
AKS_VERSION=$(az aks get-versions --location $LOCATION -...
AKS_VNET_SUBNET_NPS_ID=$(az network vnet subnet show --r...
# Create AKS Cluster ※ 時間がかかる
az aks create --resource-group $RG_AKS --name $AKS_CLUST...
# VNET に対する Contributor 権限を与える(VNET が管理リ...
AKS_VNET_ID=$(az network vnet show --name $AKS_VNET_NAME...
AKS_MANAGED_ID=$(az aks show --name $AKS_CLUSTER_NAME --...
az role assignment create --assignee $AKS_MANAGED_ID --r...
# End of Create AKS Cluster ============================...
***この場合のAcrPull ロール付与方式 [#x3d4c330]
# Configure ACR for connecting from AKS
# この作業により、Service Principal に対して ACR の AcrP...
az aks update --name $AKS_CLUSTER_NAME --resource-group ...
***その後のログ関連の設定 [#ed6a447f]
# Azure Monitor for AKS 有効化
DIAG_LA_WS_RESOURCE_ID=$(az monitor log-analytics worksp...
# 以下のエラーが出た場合は、Azure CLI のバージョンを変更...
# The request content was invalid and could not be deser...
az aks enable-addons --addons monitoring --name $AKS_CLU...
# AKS 診断設定の有効化
DIAG_STORAGE_ID=$(az storage account show --name $DIAG_S...
DIAG_LA_WS_ID=$(az monitor log-analytics workspace show ...
AKS_CLUSTER_ID=$(az aks show --name $AKS_CLUSTER_NAME --...
az monitor diagnostic-settings create --name $AKS_CLUSTE...
--logs '[{"category": "kube-apiserver","enabled": tru...
--metrics '[{"category": "AllMetrics","enabled": true}]' \
--storage-account $DIAG_STORAGE_ID --workspace $DIAG_LA_...
***ポイントの説明 [#j012fc59]
-なぜ、ココのスクリプトがゴチャゴチャしているか?と言うと、
>「AKS クラスタを[[Azure Firewall]]配下の[[VNET>Azureの仮...
コレを非プライベート・クラスタとして作成しようとすると、...
>です。
-ゴチャゴチャしている所で、以下の様な事をしています。
--非プライベート AKS クラスタの場合、Master APIに外回りで...
---従って、Azure Firewall のルールに追加が必要になるが、
---Master API へのアクセス経路が必要Master API のアドレス...
---いったん "*" 宛として TCP 22, 443, 9000, UDP 1194 を空...
--最後に、Master API アドレスが確定したら、
---上記で開放した経路を絞る。
---また、保守端末からもMaster API へアクセスできるように...
---追加で、Master API 側の IP アドレス制限機能を有効化す...
**保守端末上の作業 [#d5807581]
置換するところが多いので。
***6-a. mgmt-win-vm1 上で作業 [#j09d4792]
&color(red){XXXXXXXXX};は置換して利用。
rem cmd を開いてホームに移動
az login
rem ブラウザが開くのでログイン
rem Select Subscription
SET SUBSCRIPTION_NAME=XXXXXXXXX
az account set -s %SUBSCRIPTION_NAME%
rem kubeconfig ファイルを取得
SET NAME_PREFIX=daisukenishino
SET RG_AKS=%NAME_PREFIX%-aks-rg
SET AKS_CLUSTER_NAME=%NAME_PREFIX%-aks
del .kube\config
rem clusterAdmin 用のトークン取得
az aks get-credentials --resource-group %RG_AKS% --name ...
ren .kube\config admin-config
rem clusterUser 用のトークン取得
az aks get-credentials --resource-group %RG_AKS% --name ...
***6-b. mgmt-linux-vm1 上で作業 [#mc837122]
&color(red){XXXXXXXXX};は置換して利用。
sudo az login
# Select Subscription
SUBSCRIPTION_NAME=XXXXXXXXX
sudo az account set -s "$SUBSCRIPTION_NAME"
SUBSCRIPTION_ID=$(az account show -s "$SUBSCRIPTION_NAME...
NAME_PREFIX=daisukenishino
LOCATION=japaneast
RG_AKS="${NAME_PREFIX}-aks-rg"
AKS_CLUSTER_NAME="${NAME_PREFIX}-aks"
sudo rm .kube/config
sudo az aks get-credentials --resource-group $RG_AKS --n...
sudo mv .kube/config .kube/admin-config
sudo az aks get-credentials --resource-group $RG_AKS --n...
***6-e. mgmt-windows-vm1 上で実施 [#ve1977aa]
[[OS_USER_ID>#c634ed97]]は置換して利用。
-以下は、CMDで
rem C:\Users\OS_USER_ID\AzRefArc.SpringBoot 下にファイル...
rem .mvn, src. Dockerfile, mvnw などがこのフォルダの直下...
rem mgmt-windows-vm1 のコマンドラインから以下を実行
scp -r C:\Users\OS_USER_ID\AzRefArc.SpringBoot OS_USER_I...
-以下は、SSHで
--Dockerビルド
# mgmt-linux-vm1 にログインし、Docker コンテナを 2 つビ...
# ライブラリをオンデマンドダウンロードするためビルドには...
# Docker build は最後のピリオドを忘れないように
cd ~/AzRefArc.SpringBoot
sudo docker build -t azrefarc.springboot:1 .
# トップページの文字を入れ替えた v2 アプリを作っておく
cp -b index_v2.html src/main/resources/templates/index.h...
sudo docker build -t azrefarc.springboot:2 .
cd ~
# レポジトリにプッシュ
NAME_PREFIX=daisukenishino
ACR_NAME="${NAME_PREFIX}aksacr"
sudo docker tag azrefarc.springboot:1 ${ACR_NAME}.azurec...
sudo docker tag azrefarc.springboot:2 ${ACR_NAME}.azurec...
--ワンクッション
# sudo docker login ${ACR_NAME}.azurecr.io だと username...
# Azure AD 認証でログインするために、sudo az login した...
# トークン書き込みのために sudo で実行
sudo az login
sudo az acr login --name ${ACR_NAME}.azurecr.io
--コンテナ・イメージをプッシュ
sudo docker push ${ACR_NAME}.azurecr.io/azrefarc.springb...
sudo docker push ${ACR_NAME}.azurecr.io/azrefarc.springb...
***6-f. アプリケーションの配置 [#dd2b52c9]
-*.yamlフィアイルの中~
&color(red){[X](タグ)};は必要に応じて修正。
image: daisukenishinoaksacr.azurecr.io/azrefarc.springbo...
-k8s ダッシュボード起動
SET NAME_PREFIX=daisukenishino
SET RG_AKS=%NAME_PREFIX%-aks-rg
SET AKS_CLUSTER_NAME=%NAME_PREFIX%-aks
az aks browse -n %AKS_CLUSTER_NAME% -g %RG_AKS%
-デプロイの
--apply
kubectl apply -f web_v1.yaml
--delete
kubectl delete services web --namespace azrefarc-springb...
>※ web_v1.yamlは、[[ココ>https://github.com/tsubasaxZZZ/a...
**切り分け関係の作業 [#c37d813a]
***切り分け用のオリジナル手順 [#lfb210f2]
ココの作業は、[[コチラ>AKSをセキュアに利用する構築デモ#o5...
-起動
git clone https://github.com/ryo-ohnishi/node_express.git
cd node_express
docker-compose up -d
-実行確認
>http://localhost:3000/
-停止
>docker-compose down
>※ 動かなかったら何回か起動・停止を繰り返してみる。
-イメージを確認し
>docker images
REPOSITORY TAG ...
n-app lates...
-タグを設定し
>docker tag n-app daisukenishinoaksacr.azurecr.io/n-app:v1
>※ ACR_NAMEは、以下で確認する。
$ echo $ACR_NAME
-プッシュする
--azでログイン
az login
--azでacrにログイン
az acr login --name daisukenishinoaksacr.azurecr.io
--dockerでプッシュ~
(az → dockerに、Tokenが渡っているらしい)
docker push daisukenishinoaksacr.azurecr.io/n-app:v1
-[[*.yamlを書き換えて再チャレンジしたが...>#k2e546f4]]
*** *.yamlがダメっぽいので、カスタムした。 [#k2e546f4]
-色々調査を進めていると、オリジナルの*.yamlがダメっぽい。
--具体的に言うと、Podがエラーになる(以下のようなエラー)。
CrashLoopBackOff, SyncLoadBalancerFailed
--...で、別のモノ([[voting-app>Azure Kubernetes Service ...
---Podは上がるが、Serviceが上がらない。
---ただ、コレは、VNETに接続しているからアドレス体系の問題...
-という事で、~
コンテナイ・メージを、下記のハイブリッドな*.yamlに組込む...
(コレは、簡易アプリのDeploymentに、本デモ用のServiceを加...
--&color(red){***};の部分を書き換える。
--&color(red){XXX};の部分は以下から選択。
---azure-vote-front(containerPortは80)
---n-app(containerPortは3000)
>
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp
spec:
replicas: 3
selector:
matchLabels:
app: webapp
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: ***daisukenishinoaksacr.azurecr.io/XXXX:v...
ports:
- containerPort: ***3000***
resources:
requests:
cpu: 250m
limits:
cpu: 500m
---
apiVersion: v1
kind: Service
metadata:
name: webapp
annotations:
service.beta.kubernetes.io/azure-load-balancer-inter...
service.beta.kubernetes.io/azure-load-balancer-inter...
spec:
selector:
app: webapp
ports:
- protocol: TCP
port: 80
targetPort: ***3000***
type: LoadBalancer
loadBalancerIP: 10.11.0.10
-...結局、以下で(voting-appで)動作した
--AKSチュートリアルで実績のある、voting-appでのみ上手く起...
--n-appは、Javaアプリ同様、Docker Composeでは動作したが、...
--なお、voting-appは、azure-vote-backも動かさないとazure-...
>
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 3
selector:
matchLabels:
app: azure-vote-back
template:
metadata:
labels:
app: azure-vote-back
spec:
nodeSelector:
"beta.kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: redis
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp
spec:
replicas: 3
selector:
matchLabels:
app: webapp
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: daisukenishinoaksacr.azurecr.io/azure-vot...
ports:
- containerPort: 80
resources:
requests:
cpu: 250m
limits:
cpu: 500m
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: webapp
annotations:
service.beta.kubernetes.io/azure-load-balancer-inter...
service.beta.kubernetes.io/azure-load-balancer-inter...
spec:
selector:
app: webapp
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
loadBalancerIP: 10.11.0.10
*参考 [#x5c6efe2]
----
Tags: [[:クラウド]], [[:コンテナ]], [[:Azure]], [[:AKS]],...
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>AKSをセキュアに利用する構築デモ]]
* 目次 [#b6b327f1]
#contents
*概要 [#y0aa18d3]
「[[AKSをセキュアに利用する構築デモ]]」で使ったシェルのコ...
**カスタマイズ [#zee65a74]
以下の点をカスタマイズした。
-アカウントが固定な所を修正
-Windowsを既存のディスクで作成する。
-選択的な所を推奨設定に絞った。
-あと、トラブルシュートの切り分け~
で使用したシェルやDeployment.yamlなど。
**[[WSL>Windows Subsystem for Linux]]で[[Azure CLI]] [#o1...
タイムアウトや、エクステンションの既定値?~
の関係で、やっぱ、ローカルで利用したいなぁと。
-「[[WSLへのインストール方法>Azure CLI#b0af5ab5]]」を参照。
-なお、[[Azure CLI拡張のインストール>AKSをセキュアに利用...
*詳細 [#x12df70d]
**変数 [#l448f4d0]
***[[初期化パラメタ>AKSをセキュアに利用する構築デモ#ecb71...
***アカウント(追加) [#c634ed97]
&color(red){XXXXXXXXX};は置換して利用。
OS_USER_ID=XXXXXXXXX
OS_PASSWORD=XXXXXXXXX
**VM作成部 [#e370726b]
***前段 [#ee57f9aa]
-オンプレVM~
&color(red){[X]};は置換して利用 (1-n)。
az network public-ip create --name uservmX-ip --resource...
ONP_VNET_SUBNET_DEF_ID=$(az network vnet subnet show --r...
az network nic create --name uservmXnic --subnet $ONP_VN...
-Windows保守端末VM
--[[Azure Private Link]]設定するので何台も作れない。
--ターミナル化して使うのが良いのかも(Linuxターミナルとい...
-Linux保守端末VM~
&color(red){[X]};は置換して利用 (1-n)。
MGMT_LINUX_VM_NAME=mgmt-linux-vmX
MGMT_LINUX_VM_NIC_NAME="${MGMT_LINUX_VM_NAME}-nic"
***パスワード変更 [#f86ee9be]
-オンプレVM~
&color(red){[X]};は置換して利用 (1-n)。
az vm create --name uservmX --image "MicrosoftWindowsDes...
-Windows保守端末VM
az vm create --name $MGMT_WIN_VM_NAME --image Win2019Dat...
-Linux保守端末VM
az vm create --name $MGMT_LINUX_VM_NAME --image UbuntuLT...
***既存ディスク使用 [#m84ba9f4]
&color(red){<管理ディスク名>};は置換して利用。
-オンプレVM~
&color(red){[X]};は置換して利用 (1-n)。
az vm create --name uservmX --attach-os-disk <管理ディス...
-Windows保守端末VM
az vm create --name $MGMT_WIN_VM_NAME --attach-os-disk <...
※ &color(red){<管理ディスク名>};の準備方法は、[[この辺>Az...
***後段 [#y8eb68a3]
-オンプレVM~
&color(red){[X]};は置換して利用。
az vm open-port --resource-group $RG_ONP --name uservmX ...
-Windows保守端末VM
--[[Azure Private Link]]設定するので何台も作れない。
--ターミナル化して使うのが良いのかも(Linuxターミナルとい...
-Linux保守端末VM~
なし(open-portしないのでなにもない)
**F/W ルール [#t9e6d1e3]
***AKSクラスタ [#nd13ebe9]
-Required_for_AKS_clusters > MCR~
az network firewall application-rule create --firewall-...
--collection-name "Required_for_AKS_clusters" --priority...
--name "MCR" --source-addresses "${AKS_VNET_SUBNET_NPS_A...
--target-fqdns "*.cdn.mscr.io" "mcr.microsoft.com" "*.da...
--「[[n-app>#lfb210f2]]」と言うコンテナをテストしようとし...
「registry-1.docker.io」が必要になったりした。
--なお、
---[[MCR>Microsoft Container Registry]]とあるが、[[ACR>Az...
---以下のような方法もあるらしい。
--参考
---コンテナー イメージのインポート | Microsoft Docs~
パブリック レジストリからインポートする~
https://docs.microsoft.com/ja-jp/azure/container-registry...
***Windows保守端末 [#q6a74f52]
-Required_for_management_Windows_VMs > Azure AD Authentic...
az network firewall application-rule create --firewall-...
--collection-name "Required_for_management_Windows_VMs" \
--name "Azure AD Authentication" --source-addresses "${M...
--target-fqdns "login.microsoftonline.com" "aadcdn.msfta...
--"login.live.com" が空いてないので追加。
--組織アカウントでないからかもしれない。~
組織アカウントに絞るなら開けないほうが良いかも。
***...。 [#h16bb88c]
他にもあったら足して行く。
なお、以下が参考になる。
-Azure Kubernetes Service (AKS) でエグレス トラフィックを...
https://docs.microsoft.com/ja-jp/azure/aks/limit-egress-t...
***ガバガバ版 [#ce13e773]
動かない時に、Firewallの問題との切り分けが大変なので、~
application-ruleを無くし、network-rule で dst を any の *...
-AKS環境
--オリジナル版
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall application-rule create --firewall-n...
az network firewall network-rule create --firewall-n...
--ガバガバ版~
network-ruleのみ。
az network firewall network-rule create --firewall-...
-保守環境(Win)
--オリジナル版
MGMT_WIN_NIC_IP_ADDRESS=$(az network nic show --name $MG...
az network firewall application-rule create --firewall-n...
--ガバガバ版~
network-ruleのみ。
MGMT_WIN_NIC_IP_ADDRESS=$(az network nic show --name $MG...
az network firewall network-rule create --firewall-n...
**プライベートAKSクラスタ [#dc763501]
ゴチャゴチャしているので、[[コチラ>AKSをセキュアに利用す...
***[[Managed ID>Azure Managed ID]]方式で作成 [#k45473a7]
# Create AKS Cluster ===================================...
# Prepare for creating cluster
AKS_VERSION=$(az aks get-versions --location $LOCATION -...
AKS_VNET_SUBNET_NPS_ID=$(az network vnet subnet show --r...
# Create AKS Cluster ※ 時間がかかる
az aks create --resource-group $RG_AKS --name $AKS_CLUST...
# VNET に対する Contributor 権限を与える(VNET が管理リ...
AKS_VNET_ID=$(az network vnet show --name $AKS_VNET_NAME...
AKS_MANAGED_ID=$(az aks show --name $AKS_CLUSTER_NAME --...
az role assignment create --assignee $AKS_MANAGED_ID --r...
# End of Create AKS Cluster ============================...
***この場合のAcrPull ロール付与方式 [#x3d4c330]
# Configure ACR for connecting from AKS
# この作業により、Service Principal に対して ACR の AcrP...
az aks update --name $AKS_CLUSTER_NAME --resource-group ...
***その後のログ関連の設定 [#ed6a447f]
# Azure Monitor for AKS 有効化
DIAG_LA_WS_RESOURCE_ID=$(az monitor log-analytics worksp...
# 以下のエラーが出た場合は、Azure CLI のバージョンを変更...
# The request content was invalid and could not be deser...
az aks enable-addons --addons monitoring --name $AKS_CLU...
# AKS 診断設定の有効化
DIAG_STORAGE_ID=$(az storage account show --name $DIAG_S...
DIAG_LA_WS_ID=$(az monitor log-analytics workspace show ...
AKS_CLUSTER_ID=$(az aks show --name $AKS_CLUSTER_NAME --...
az monitor diagnostic-settings create --name $AKS_CLUSTE...
--logs '[{"category": "kube-apiserver","enabled": tru...
--metrics '[{"category": "AllMetrics","enabled": true}]' \
--storage-account $DIAG_STORAGE_ID --workspace $DIAG_LA_...
***ポイントの説明 [#j012fc59]
-なぜ、ココのスクリプトがゴチャゴチャしているか?と言うと、
>「AKS クラスタを[[Azure Firewall]]配下の[[VNET>Azureの仮...
コレを非プライベート・クラスタとして作成しようとすると、...
>です。
-ゴチャゴチャしている所で、以下の様な事をしています。
--非プライベート AKS クラスタの場合、Master APIに外回りで...
---従って、Azure Firewall のルールに追加が必要になるが、
---Master API へのアクセス経路が必要Master API のアドレス...
---いったん "*" 宛として TCP 22, 443, 9000, UDP 1194 を空...
--最後に、Master API アドレスが確定したら、
---上記で開放した経路を絞る。
---また、保守端末からもMaster API へアクセスできるように...
---追加で、Master API 側の IP アドレス制限機能を有効化す...
**保守端末上の作業 [#d5807581]
置換するところが多いので。
***6-a. mgmt-win-vm1 上で作業 [#j09d4792]
&color(red){XXXXXXXXX};は置換して利用。
rem cmd を開いてホームに移動
az login
rem ブラウザが開くのでログイン
rem Select Subscription
SET SUBSCRIPTION_NAME=XXXXXXXXX
az account set -s %SUBSCRIPTION_NAME%
rem kubeconfig ファイルを取得
SET NAME_PREFIX=daisukenishino
SET RG_AKS=%NAME_PREFIX%-aks-rg
SET AKS_CLUSTER_NAME=%NAME_PREFIX%-aks
del .kube\config
rem clusterAdmin 用のトークン取得
az aks get-credentials --resource-group %RG_AKS% --name ...
ren .kube\config admin-config
rem clusterUser 用のトークン取得
az aks get-credentials --resource-group %RG_AKS% --name ...
***6-b. mgmt-linux-vm1 上で作業 [#mc837122]
&color(red){XXXXXXXXX};は置換して利用。
sudo az login
# Select Subscription
SUBSCRIPTION_NAME=XXXXXXXXX
sudo az account set -s "$SUBSCRIPTION_NAME"
SUBSCRIPTION_ID=$(az account show -s "$SUBSCRIPTION_NAME...
NAME_PREFIX=daisukenishino
LOCATION=japaneast
RG_AKS="${NAME_PREFIX}-aks-rg"
AKS_CLUSTER_NAME="${NAME_PREFIX}-aks"
sudo rm .kube/config
sudo az aks get-credentials --resource-group $RG_AKS --n...
sudo mv .kube/config .kube/admin-config
sudo az aks get-credentials --resource-group $RG_AKS --n...
***6-e. mgmt-windows-vm1 上で実施 [#ve1977aa]
[[OS_USER_ID>#c634ed97]]は置換して利用。
-以下は、CMDで
rem C:\Users\OS_USER_ID\AzRefArc.SpringBoot 下にファイル...
rem .mvn, src. Dockerfile, mvnw などがこのフォルダの直下...
rem mgmt-windows-vm1 のコマンドラインから以下を実行
scp -r C:\Users\OS_USER_ID\AzRefArc.SpringBoot OS_USER_I...
-以下は、SSHで
--Dockerビルド
# mgmt-linux-vm1 にログインし、Docker コンテナを 2 つビ...
# ライブラリをオンデマンドダウンロードするためビルドには...
# Docker build は最後のピリオドを忘れないように
cd ~/AzRefArc.SpringBoot
sudo docker build -t azrefarc.springboot:1 .
# トップページの文字を入れ替えた v2 アプリを作っておく
cp -b index_v2.html src/main/resources/templates/index.h...
sudo docker build -t azrefarc.springboot:2 .
cd ~
# レポジトリにプッシュ
NAME_PREFIX=daisukenishino
ACR_NAME="${NAME_PREFIX}aksacr"
sudo docker tag azrefarc.springboot:1 ${ACR_NAME}.azurec...
sudo docker tag azrefarc.springboot:2 ${ACR_NAME}.azurec...
--ワンクッション
# sudo docker login ${ACR_NAME}.azurecr.io だと username...
# Azure AD 認証でログインするために、sudo az login した...
# トークン書き込みのために sudo で実行
sudo az login
sudo az acr login --name ${ACR_NAME}.azurecr.io
--コンテナ・イメージをプッシュ
sudo docker push ${ACR_NAME}.azurecr.io/azrefarc.springb...
sudo docker push ${ACR_NAME}.azurecr.io/azrefarc.springb...
***6-f. アプリケーションの配置 [#dd2b52c9]
-*.yamlフィアイルの中~
&color(red){[X](タグ)};は必要に応じて修正。
image: daisukenishinoaksacr.azurecr.io/azrefarc.springbo...
-k8s ダッシュボード起動
SET NAME_PREFIX=daisukenishino
SET RG_AKS=%NAME_PREFIX%-aks-rg
SET AKS_CLUSTER_NAME=%NAME_PREFIX%-aks
az aks browse -n %AKS_CLUSTER_NAME% -g %RG_AKS%
-デプロイの
--apply
kubectl apply -f web_v1.yaml
--delete
kubectl delete services web --namespace azrefarc-springb...
>※ web_v1.yamlは、[[ココ>https://github.com/tsubasaxZZZ/a...
**切り分け関係の作業 [#c37d813a]
***切り分け用のオリジナル手順 [#lfb210f2]
ココの作業は、[[コチラ>AKSをセキュアに利用する構築デモ#o5...
-起動
git clone https://github.com/ryo-ohnishi/node_express.git
cd node_express
docker-compose up -d
-実行確認
>http://localhost:3000/
-停止
>docker-compose down
>※ 動かなかったら何回か起動・停止を繰り返してみる。
-イメージを確認し
>docker images
REPOSITORY TAG ...
n-app lates...
-タグを設定し
>docker tag n-app daisukenishinoaksacr.azurecr.io/n-app:v1
>※ ACR_NAMEは、以下で確認する。
$ echo $ACR_NAME
-プッシュする
--azでログイン
az login
--azでacrにログイン
az acr login --name daisukenishinoaksacr.azurecr.io
--dockerでプッシュ~
(az → dockerに、Tokenが渡っているらしい)
docker push daisukenishinoaksacr.azurecr.io/n-app:v1
-[[*.yamlを書き換えて再チャレンジしたが...>#k2e546f4]]
*** *.yamlがダメっぽいので、カスタムした。 [#k2e546f4]
-色々調査を進めていると、オリジナルの*.yamlがダメっぽい。
--具体的に言うと、Podがエラーになる(以下のようなエラー)。
CrashLoopBackOff, SyncLoadBalancerFailed
--...で、別のモノ([[voting-app>Azure Kubernetes Service ...
---Podは上がるが、Serviceが上がらない。
---ただ、コレは、VNETに接続しているからアドレス体系の問題...
-という事で、~
コンテナイ・メージを、下記のハイブリッドな*.yamlに組込む...
(コレは、簡易アプリのDeploymentに、本デモ用のServiceを加...
--&color(red){***};の部分を書き換える。
--&color(red){XXX};の部分は以下から選択。
---azure-vote-front(containerPortは80)
---n-app(containerPortは3000)
>
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp
spec:
replicas: 3
selector:
matchLabels:
app: webapp
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: ***daisukenishinoaksacr.azurecr.io/XXXX:v...
ports:
- containerPort: ***3000***
resources:
requests:
cpu: 250m
limits:
cpu: 500m
---
apiVersion: v1
kind: Service
metadata:
name: webapp
annotations:
service.beta.kubernetes.io/azure-load-balancer-inter...
service.beta.kubernetes.io/azure-load-balancer-inter...
spec:
selector:
app: webapp
ports:
- protocol: TCP
port: 80
targetPort: ***3000***
type: LoadBalancer
loadBalancerIP: 10.11.0.10
-...結局、以下で(voting-appで)動作した
--AKSチュートリアルで実績のある、voting-appでのみ上手く起...
--n-appは、Javaアプリ同様、Docker Composeでは動作したが、...
--なお、voting-appは、azure-vote-backも動かさないとazure-...
>
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 3
selector:
matchLabels:
app: azure-vote-back
template:
metadata:
labels:
app: azure-vote-back
spec:
nodeSelector:
"beta.kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: redis
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp
spec:
replicas: 3
selector:
matchLabels:
app: webapp
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: daisukenishinoaksacr.azurecr.io/azure-vot...
ports:
- containerPort: 80
resources:
requests:
cpu: 250m
limits:
cpu: 500m
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: webapp
annotations:
service.beta.kubernetes.io/azure-load-balancer-inter...
service.beta.kubernetes.io/azure-load-balancer-inter...
spec:
selector:
app: webapp
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
loadBalancerIP: 10.11.0.10
*参考 [#x5c6efe2]
----
Tags: [[:クラウド]], [[:コンテナ]], [[:Azure]], [[:AKS]],...
ページ名: