今回はAKS(Azure Kubernetes Service)使用中に遭遇した
下記みたいなエラーの対処法を記載します。
ニッチなエラーだとは思いますが、そこそこ調べるのに時間がかかったので
同じエラーでつまずくであろう、5人くらいの方の参考になれれば良いなとおもっとります。めざせ5pv
病状
それはこんなコマンドを発行した時に起こりました
az ad sp create-for-rbac --name $SP_NAME --role Reader --scopes $ACR_ID --query password --output tsv
な、な、な、、なななななんとこんなエラーがが
Changing "tomato-service-principal" to a valid URI of "http://tomato-service-principal", which is the required format used for service principal names
Found an existing application instance of "<<サービスプリンシパルID>>". We will patch it
Insufficient privileges to complete the operation.
...あ、エラーさんですね?お帰りください。間に合ってますので。
いやだから、うちテレビないので!
要するに「パッチを適用しようとしたけど権限がないぜコノヤロー」的なことを言ってるんだと思います、たぶん。知らんけど。
解決方法
サービスプリンシパルのクレデンシャル...つまり資格情報をアップデートしてパスワードをリセットしてあげます。
で、AKS様を更新してさしあげます。ありがたく更新させていただくのです。
# クラスタのリソースグループをセット
$ AKS_RES_GROUP=tomato-rg-k8s
# クラスタ名をセット
$ AKS_CLUSTER_NAME=tomato-cluster
# サービスプリンシパルのIDをゲット
$ SP_ID=$(az aks show --resource-group $AKS_RES_GROUP --name $AKS_CLUSTER_NAME --query servicePrincipalProfile.clientId -o tsv)
# 資格情報を更新してサービスプリンシパルのパスワードをゲット
$ SP_SECRET=$(az ad sp credential reset --name $SP_ID --query password -o tsv)
# クラスタの資格情報を更新
$ az aks update-credentials --resource-group $AKS_RES_GROUP --name $AKS_CLUSTER_NAME --reset-service-principal --service-principal $SP_ID --client-secret $SP_SECRET
たぶんこれで直る..きっと、うん。
原因はおそらく、クラスタを何回か構築してたので、サービスプリンシパル名が被っちゃってたとかなんだろうなぁー...
ちなみにサービスプリンシパルのパスワードを忘れてしまった際にも、有効なコマンドであります。
つまり、SP_SECRETに保存されたパスワードは保管しておくのが吉です。
ではまた
さいごに
ZEROBILLBANKでは一緒に働く仲間を募集中です。
なんとかjsとか、ブロックチェーンとか、kubernetesとかでいろんなAPIを作るお仕事。
今のところエンジニアは5人くらい。スタートアップだけど、結構ホワイトで働きやすいです。