Container Service for Kubernetes (ACK) は、Alibaba Cloud アカウント、Resource Access Management (RAM) ユーザー、および RAM ロールに kubeconfig ファイルを発行できます。 kubeconfig ファイルには、ACK クラスタへのアクセスに使用される ID 情報が含まれています。 kubeconfig ゴミ箱を使用すると、誤って削除した kubeconfig ファイルを復元したり、kubeconfig ファイルの履歴バージョンを復元したりできます。
使用方法に関する注意事項
必要な権限を持つ Alibaba Cloud アカウントと RAM ユーザーまたは RAM ロールのみが kubeconfig ゴミ箱を使用できます。
RAM ユーザーまたは RAM ロールに AliyunCSFullAccess および AliyunRAMReadOnlyAccess 権限があることを確認してください。
kubeconfig ゴミ箱を使用して、過去 30 日以内に削除された kubeconfig ファイルのみを復元できます。 kubeconfig ファイルの削除方法の詳細については、「kubeconfig ファイルを削除する」をご参照ください。
各 Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールは、1 つの kubeconfig ファイルのみを使用して ACK クラスタにアクセスできます。 kubeconfig ファイルが Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールによって ACK クラスタへのアクセスに既に使用されている場合、kubeconfig ファイルの履歴バージョンを復元することはできません。 そうしないと、kubeconfig ファイルの競合が発生します。
シナリオ
シナリオ 1:誤って削除された kubeconfig ファイルを復元する
管理者 A が、RAM ユーザー B がクラスタ 1 にアクセスするために使用していた kubeconfig ファイルを誤って削除しました。 その結果、RAM ユーザー B はクラスタ 1 にアクセスできません。 このシナリオでは、RAM ユーザー B は管理者 A に連絡して、ゴミ箱から kubeconfig ファイルを復元できます。
シナリオ 2: kubeconfig ファイルの履歴バージョンを復元して現在のバージョンを置き換える
管理者 A は、RAM ユーザー B がクラスタ 1 にアクセスするために使用していた kubeconfig v1 を削除しました。 RAM ユーザー B は ACK コンソールで kubeconfig v2 を取得し、そのファイルを使用してクラスタ 1 にアクセスします。 ただし、既存のアプリケーションの中には、引き続き kubeconfig v1 を使用する必要があるものがあります。 また、kubeconfig v1 はロールベースのアクセス制御 (RBAC) 権限を提供します。 したがって、管理者 A は kubeconfig v1 を復元したいと考えています。
これを行うには、管理者 A は kubeconfig v2 を削除し、ゴミ箱で kubeconfig v1 と v2 のレコードを見つけ、kubeconfig v1 を復元する必要があります。
kubeconfig ファイルを復元する
kubeconfig ファイルと、ファイルが提供する RBAC 権限を一括で復元できます。
ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[認証] をクリックします。
[KubeConfig ファイル管理] タブをクリックします。次に、右上隅にある [KubeConfig ファイルのごみ箱] をクリックします。
kubeconfig ゴミ箱には、過去 30 日以内に削除された kubeconfig ファイルのレコードが表示されます。 次の表でパラメータについて説明します。
パラメータ
説明
[ユーザー名] と [UID]
kubeconfig ファイルを使用する Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールの名前と ID。
[証明書 CN]
kubeconfig ファイルのクライアント証明書の CommonName。 CommonName の詳細については、「参考資料:クライアント証明書の CommonName」をご参照ください。
[クラスタ名] と [クラスタ ID]
kubeconfig ファイルを使用してアクセスされる ACK クラスタの名前と ID。
RBAC 権限
kubeconfig ファイルによって提供される RBAC 権限。
[リサイクル日時]
kubeconfig ファイルが削除され、kubeconfig ゴミ箱に移動された日時。
[削除間隔]
kubeconfig ファイルが完全に削除される日時。
過去 30 日以内に削除され、ゴミ箱に移動された kubeconfig ファイルを復元できます。 kubeconfig ゴミ箱は、保持期間が 30 日を超えた kubeconfig ファイルを自動的に削除します。 kubeconfig ゴミ箱から削除された kubeconfig ファイルは復元できません。
kubeconfig ファイルの [アクション] 列にある [復元] をクリックして、kubeconfig ファイルと対応する RBAC 権限を復元します。
複数の kubeconfig ファイルを選択し、[一括復元] をクリックすることもできます。 kubeconfig ファイルを一括復元する場合は、kubeconfig ファイルが互いに競合していないことを確認してください。
kubeconfig レコードを削除する
対応する kubeconfig ファイルが不要になったことが確認できた場合は、kubeconfig ゴミ箱にある kubeconfig レコードを削除できます。 kubeconfig レコードが削除されると、kubeconfig ファイルを復元できなくなります。
ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[認証] をクリックします。
[KubeConfig ファイル管理] タブをクリックし、次に右上隅にある [KubeConfig ファイルのごみ箱] をクリックします。
削除する kubeconfig レコードを確認し、[削除] をクリックして、クライアント証明書の CommonName を入力します。
参考資料:クライアント証明書の CommonName
クライアント証明書の CommonName は、対応する kubeconfig ファイルを使用して ACK クラスタにアクセスするクライアントの ID です。 kubeconfig ファイルごとにクライアント証明書の CommonName が異なります。 詳細については、「kube-apiserver」をご参照ください。
ACK では、クライアント証明書の CommonName は {UserID}-{SuffixID} 形式を使用します。 UserID は、kubeconfig ファイルを使用する RAM ユーザーまたは RAM ロールの ID を示します。 SuffixID はランダムな文字列を示し、kubeconfig ファイルが取り消されるか削除されるたびに更新されます。 これにより、kubeconfig ファイルの履歴バージョンを使用して ACK クラスタにアクセスできないことが保証されます。
よくある質問
kubeconfig ゴミ箱に、同じ ACK クラスタについて RAM ユーザーの kubeconfig レコードが複数あるのはなぜですか?
クライアント証明書の CommonName の更新により、kubeconfig ゴミ箱に、同じ ACK クラスタについて RAM ユーザーの kubeconfig レコードが複数存在する場合があります。
kubeconfig ゴミ箱にある複数の kubeconfig レコードから、復元する kubeconfig レコードを選択するにはどうすればよいですか?
元の kubeconfig ファイルによって提供される RBAC 権限またはクライアント証明書の CommonName を確認できます。 kubeconfig ファイルのクライアント証明書の CommonName をクエリするには、次のコマンドを実行します。 次に、クライアント証明書の CommonName を使用して kubeconfig レコードを見つけることができます。
openssl x509 -in <(kubectl config view --kubeconfig {Kubeconfig file name} --raw --minify --output=jsonpath='{.users[0].user.client-certificate-data}'|base64 -d) -noout -subjectkubeconfig ゴミ箱の [復元] ボタンが選択不可になっているのはなぜですか?
ACK クラスタでは、各 RAM ユーザーまたは RAM ロールは 1 つの kubeconfig ファイルのみを使用できます。 kubeconfig ファイルが RAM ロールによって ACK クラスタへのアクセスに既に使用されている場合、kubeconfig ファイルの履歴バージョンを復元することはできません。 これにより、kubeconfig の競合を回避できます。
履歴バージョンを復元するには、まず使用中の kubeconfig ファイルを削除する必要があります。 kubeconfig ファイルの削除方法の詳細については、「kubeconfig ファイルを削除する」をご参照ください。
kubeconfig ファイルの復元が失敗する原因となる可能性のある条件は何ですか?
RBAC 権限の不足:kubeconfig ファイルを復元すると、kubeconfig ファイルによって提供される RBAC 権限も復元されます。 ACK クラスタで同じ RBAC 権限を持っていない場合、復元は失敗する可能性があります。 RBAC 権限の付与方法の詳細については、「RAM ユーザーまたは RAM ロールに RBAC 権限を付与する」をご参照ください。
ACK クラスタの状態異常:ACK クラスタが異常な状態にある場合、ACK クラスタにアクセスできなくなります。 その結果、復元は失敗します。
kubeconfig ファイルの競合:別の kubeconfig ファイルが RAM ユーザーまたは RAM ロールによって同じ ACK クラスタにアクセスするために使用されています。 kubeconfig ファイルを一括復元するときに kubeconfig ファイルの競合が発生した場合、ACK は最新の kubeconfig レコードを自動的に復元します。 その他の競合する kubeconfig レコードは復元されません。
関連情報
退職した従業員に発行された kubeconfig ファイルと、セキュリティリスクとなる可能性のある kubeconfig ファイルは削除することをお勧めします。 詳細については、「kubeconfig ファイルを削除する」をご参照ください。
発行された kubeconfig ファイルが誤って開示された場合は、kubeconfig ファイルを取り消してから新しいファイルを生成する必要があります。 詳細については、「KubeConfig ファイルを取り消す」をご参照ください。