さて、私はめちゃくちゃだったので、誤って実行しましたaz ad sp reset-credentials
AKSクラスターが実行されているサービスプリンシパルに対して。そして今、次のようなエラーが発生しています。
ロードバランサーの作成エラー(再試行します):サービスtest/admin-apiのLBを取得中にエラーが発生しました:Azure.BearerAuthorizer#WithAuthorization: https://management.Azure.com/subscriptions/へのリクエストのトークンを更新できませんでした ****/resourceGroups/MC _ ****/providers/Microsoft.Network/loadBalancers?api-version = 2017-09-01:StatusCode = 0-Original Error:adal:Failed request failed。ステータスコード= '401'。レスポンスボディ:{"error": "invalid_client"、 "error_description": "AADSTS70002:資格情報の検証中にエラーが発生しました。AADSTS50012:無効なクライアントシークレットが提供されました。\ r\nトレースID:****\r\n相関ID:*** *\r\nタイムスタンプ:2018-08-23 12:01:33Z "、" error_codes ":[70002,50012]、" timestamp ":" 2018-08-23 12:01:33Z "、" trace_id ":" **** "、" correlation_id ":" **** "}
そして
イメージ "****。azurecr.io/****:****"のプルに失敗しました:rpcエラー:コード=不明desc =デーモンからのエラー応答:https://****.azurecrを取得します。 io/v2/****/manifests/****:無許可:認証が必要です
そこで、サービスプリンシパルが使用する元のクライアントシークレットを見つけて、サービスプリンシパルのキーとして再度追加できるようにします。これは、クラスター全体を再作成する以外に考えられる唯一のソリューションです。
何か案は?
この問題を解決した人は誰でも、マイクロソフトからの更新されたソリューションがあります
デフォルトでは、AKSクラスターは、1年の有効期限を持つサービスプリンシパルで作成されます。
また、Azure CLI 2.0.68以降では、ユーザーが定義したパスワードでサービスプリンシパルを作成するための--passwordパラメーターは、弱いパスワードの誤った使用を防ぐためにサポートされなくなりました。サービスプリンシパルのパスワードを変更する最初の解決策が機能しなくなりました。
それはあなたがやりたいと思う迷惑なことです。問題については、認証なしに画像をプルすることはできません。
まず、コンテナーレジストリのサービスプリンシパルを見つける必要があります。 Azureポータルでこれを実行し、レジストリパネルに移動すると、次のようなサービスプリンシパルを見つけることができます。
または、Azure CLIコマンドを使用して、次のようなレジストリIDを見つけることができます。
az acr show --resource-group groupName --name registryName --query id --output tsv
次に、コマンドを使用して、次のようなサービスプリンシパルIDを見つけます。
az role assignment list --scope registryID
必要なサービスプリンシパルを選択できます。
次に、コマンドkubectl get secrets
およびkubectl get secrets secretName -o yaml
を使用してすべてのシークレットを取得し、シークレットのトークンを取得します。次に、1つずつ分析して、ユーザー名がサービスプリンシパルIDと同じかどうかを確認します。 JWTなどのツールを使用して、シークレットトークンを分析できます。結果は次のようになります。
ユーザー名が、見つけたサービスプリンシパルIDと同じ場合、それが必要なシークレットです。このステップは問題です。秘密を1つずつチェックする必要があります。そうしないと、チェックするためのより優れた方法が得られます。
ちなみに、サービスプリンシパルのパスワードは、作成したときに一度だけ確認できるようです。 Azureは再び表示しません。ただし、Kubernetesシークレットを作成すると、パスワードはそのシークレットに保存されます。