IBM Cloud Kubernetes Service의 클러스터 소유자가 인프라 권한을 잃은 경우 해결 방법

문제의 경위



IBM Cloud Kubernetes Service(이하 IKS)에는 클러스터 소유자라는 개념이 있습니다. 이는 클러스터를 주문할 때 IBM Cloud 사용자가 자동으로 설정됩니다. 소유자는 예를 들어 마스터 또는 작업자를 업그레이드하거나 StorageClass를 사용하여 IBM Cloud Storage를 동적으로 프로비저닝할 때 소유자 자신의 인프라 권한을 사용합니다(작업을 수행하는 사용자가 아님). 즉, 소유자가 적절한 인프라 권한을 갖고 있지 않으면 이러한 작업이 실패합니다.

이제 이 소유자가 되어 버린 사용자가 프로젝트를 이임했으므로 계정에서 지워졌다고 가정해 봅시다. 그러면 그 후 누군가가 버전업 등을 하려고 하면 권한을 가진 소유자가 없기 때문에 실패하게 됩니다.

그리고 어려움에 따라 클러스터 소유자는 나중에 변경할 수 없다고 지원에서 답변했습니다.

그렇기 때문에 이러한 상황이 되어 버렸을 때의 회피책입니다.

대응 방법



적절한 사용자 준비



향후 유지보수 작업에서 착임이나 이임에 영향을 받지 않는 고정 ID 사용자를 준비하는 것이 좋습니다. 준비가 되면 해당 사용자를 계정에 초대하고 필요한 인프라 권한을 부여합니다.

클래식 인프라 API 키 생성



해당 사용자로 IBM Cloud 콘솔에 로그인하고 메뉴에서 관리 → 액세스(IAM) → IBM Cloud API 키로 이동하십시오.

그러면 다음과 같이 "클래식 인프라 API 키 만들기"라는 버튼이 있으므로 누르십시오.



이 버튼이 표시되지 않으면 이미 API 키가 생성되었습니다.

API 키가 생성되면 고급 메뉴를 엽니다.



API 키의 주요 마크를 추측하면 키가 표시됩니다. 여기서 API 사용자 이름과 API 키 값을 삼가해 주십시오.



클러스터에 API 키 설정



클러스터에 대한 관리 권한이 있는 사용자가 IBM Cloud CLI를 사용합니다. 다음 명령을 실행합니다.
$ ibmcloud ks credential set classic --infrastructure-api-key ${APIキー} --infrastructure-username ${APIユーザー名}
$ ibmcloud ks api-key-reset

마지막 api-key-reset을 잊지 마십시오. 이것을 치지 않으면 반영되지 않습니다.

설정 반영 확인



설정은 즉시 반영되지 않습니다. 다음 명령을 정기적으로 실행합니다.
kubectl get secret storage-secret-store -n kube-system -o yaml | grep slclient.toml: | awk '{print $2}' | base64 --decode

그러면 다음과 같이 표시된다고 생각합니다.
[Softlayer]
 encryption = true
 softlayer_username = ""
 softlayer_api_key = ""

정기적으로 커맨드를 계속 치고, 다음과 같은 표시가 되면 설정 반영은 완료입니다. 체감적으로는 몇분~10분 가까이 걸린 것 같습니다.
[Softlayer]
 encryption = true
 softlayer_username = "${APIユーザー名}"
 softlayer_api_key = "${APIキー}"
 softlayer_endpoint_url = "https://api.service.softlayer.com/rest/v3"

이제 이후 버전의 클러스터를 업그레이드하거나 스토리지를 동적으로 프로비저닝할 때 이 API 키를 사용할 수 있습니다.

이상입니다.

좋은 웹페이지 즐겨찾기