OpenShift Data Foundation 추가 기능에 대한 신뢰할 수 있는 프로파일 설정
가상 프라이빗 클라우드 클래식 클러스터
ODF에 신뢰할 수 있는 프로파일을 사용하여 클러스터에서 실행 중인 파드가 계정 또는 클러스터의 다른 리소스에 액세스할 수 있는 권한을 제한할 수 있습니다. 신뢰할 수 있는 프로파일에 대한 자세한 정보는 신뢰할 수 있는 프로파일 작성 을 참조하십시오.
OpenShift Data Foundation 추가 기능 사용
-
계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
-
클러스터에서 해당 애드온을 활성화하십시오. 매개변수 참조 를 검토하십시오.
명령 예제:
ibmcloud oc cluster addon enable openshift-data-foundation -c CLUSTER_NAME --version 4.X.X -
추가 기능 상태가
normal이고 상태가ready인지 확인하십시오.ibmcloud oc cluster addon ls --cluster CLUSTER-ID -
메트릭 에이전트 팟 (Pod) 이 배치되었으며 상태가
Running인지 확인하십시오.kubectl get pods -n kube-system | grep ibm-storage-metrics-agent출력 예:
ibm-storage-metrics-agent-644cd95b5b-rh2gd 2/2 Running 0 7h42m
ODF에 대한 신뢰할 수 있는 프로필 설정하기
-
신뢰할 수 있는 프로파일 작성 단계를 수행하십시오. 프로파일의 조건 에서 다음 액세스 권한을 지정하십시오.
- 네임스페이스 가
kube-system인 경우 액세스 허용 - Satellite 서비스 역할- Satellite Link 관리자, 독자
- Kubernetes Service 역할-관리자, 편집자
- 청구 서비스 역할-독자, 운영자
- 네임스페이스 가
-
신뢰할 수 있는 프로파일을 작성한 후 콘솔의 신뢰할 수 있는 프로파일 페이지에서 ID를 복사하십시오.
-
추가 기능이 사용하는 Kubernetes 시크릿에서 프로파일 ID 또는 API키 를 사용할지 결정하십시오. 신뢰할 수 있는 프로파일에 대한 ID 또는 API키를 사용하여 시크릿을 작성할 수 있습니다. 다음 텍스트를 저장하고 신임 정보를 입력하십시오. 단계에 따라 시크릿을 수동으로 작성하거나 쉘 스크립트를 사용하여 클러스터에서 시크릿을 자동으로 작성 할 수 있습니다.
팟 (Pod) ID가 있는 예제 신임 정보:
IBMCLOUD_AUTHTYPE=pod-identity IBMCLOUD_PROFILEID=<TRUSTED-PROFILE-ID>API키가 있는 예제 신임 정보입니다.
IBMCLOUD_AUTHTYPE=iam IBMCLOUD_APIKEY=<API-KEY> -
base64 에 자격 증명을 인코딩하십시오.
echo -n "IBMCLOUD_AUTHTYPE=<IAM-OR-POD-IDENTITY> IBMCLOUD_APIKEY=<API-KEY>" | base64 -
신뢰할 수 있는 프로파일에 대한 신임 정보를 포함하는 클러스터에서 시크릿을 작성하십시오. 다음 YAML을
ibm-cloud-credentials.yaml파일에 저장하십시오.ibm-credentials.env:필드에 base64 인코딩 API키 또는 신뢰할 수 있는 프로파일의 ID를 입력하십시오.apiVersion: v1 data: ibm-credentials.env: # Trusted profile ID kind: Secret metadata: name: ibm-cloud-credentials namespace: kube-system type: Opaque -
계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
-
클러스터의 시크릿을 작성하십시오.
kubectl apply -f ibm-cloud-credentials.yaml -
에이전트 팟 (Pod) 을 다시 시작하십시오.
kubectl delete pod <ibm-storage-metrics-agent> -n kube-system>
쉘 스크립트를 사용하여 시크릿 자동 작성
-
신뢰할 수 있는 프로파일 작성 단계를 수행하십시오. 프로파일의 조건 에서 다음 액세스 권한을 지정하십시오.
- 네임스페이스 가
kube-system인 경우 액세스 허용 - Satellite 서비스 역할- Satellite Link 관리자, 독자
- Kubernetes Service 역할-관리자, 편집자
- 청구 서비스 역할-독자, 운영자
- 네임스페이스 가
-
다음 스크립트를
generate-secret.sh파일에 저장하십시오.IBMCLOUD_AUTHTYPE= SECRET= error() { if [[ $? != 0 ]]; then echo "$1"; exit 1 fi } #validate_arguments validates the arguments provided to the script validate_arguments() { if [[ "$#" -eq 1 ]]; then if [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then usage; exit 1 fi fi #number of arguments provided to the script must be 2 if [[ "$#" -ne 2 ]]; then echo "Invalid number of arguments provided" usage; exit 1 fi #1st argument must be 'iam' or 'pod-identity' if [[ "$1" != "iam" ]] && [[ "$1" != "pod-identity" ]]; then echo "Provide a valid auth-type" usage; exit 1 fi IBMCLOUD_AUTHTYPE=$1 SECRET=$2 } #usage - prints the usage for execution of script usage() { echo "USAGE: bash generate-secret.sh <auth-type> <apikey/profile-id> auth-type: auth-type should be either iam or pod-identity. Provide iam to use api key, pod-identity to use trusted profile" } #main main() { validate_arguments "$@" auth_type="IBMCLOUD_AUTHTYPE=$IBMCLOUD_AUTHTYPE" secret= if [[ "$IBMCLOUD_AUTHTYPE" == "iam" ]]; then secret="IBMCLOUD_APIKEY=$SECRET" else secret="IBMCLOUD_PROFILEID=$SECRET" fi encodedValue=$(echo -e "$auth_type\n$secret" | base64) #on certain os, base64 encoding introduces newline, removing the same here. encodedValue=${encodedValue//$'\n'/} #fetch the agent pod name agentPodName=$(kubectl get pods -n kube-system | grep ibm-storage-metrics-agent | awk '{print $1}') error "$(date +"%b %d %G %H:%M:%S"): Unable to fetch ODF agent pod." if [[ "$agentPodName" == "" ]]; then echo "$(date +"%b %d %G %H:%M:%S"): Error - ibm-storage-metrics-agent pod not found" exit 1 fi echo "apiVersion: v1 data: ibm-credentials.env: $encodedValue kind: Secret metadata: name: ibm-cloud-credentials namespace: kube-system type: Opaque" > ibm-cloud-credentials.yaml #create the k8s secret kubectl apply -f ibm-cloud-credentials.yaml &> /dev/null error "$(date +"%b %d %G %H:%M:%S"): Error creating ibm-cloud-credentials secret." echo "$(date +"%b %d %G %H:%M:%S"): Created ibm-cloud-credentials secret" #restart the ODF agent pod echo "$(date +"%b %d %G %H:%M:%S"): Restarting $agentPodName pod" kubectl delete pod "$agentPodName" -n kube-system &> /dev/null error "$(date +"%b %d %G %H:%M:%S"): Error restarting $agentPodName pod in kube-system namespace." agentPodStatus= for i in {1..12} do sleep 5 agentPodStatus=$(kubectl get pods -n kube-system | grep ibm-storage-metrics-agent | awk '{print $3}') if [[ "$agentPodStatus" == "Running" ]]; then echo "$(date +"%b %d %G %H:%M:%S"): $i: ODF billing agent is now using ibm-cloud-credentials secret" rm ibm-cloud-credentials.yaml error "Error deleting ibm-cloud-credentials.yaml." exit 0 fi done error "$(date +"%b %d %G %H:%M:%S"): Error - ibm-storage-metrics-agent is in $agentPodStatus state" } main "$@" -
generate-secret.sh스크립트를 실행하고iam또는pod-identity를IBMCLOUD_AUTHTYPE및PROFILE-ID또는API-KEY로 지정하십시오.신뢰할 수 있는 프로파일 ID로
pod-identity를 사용하여generate-secret.sh를 실행하는 예제 명령입니다.sh ./generate-secret.sh pod-identity PROFILE-IDAPI키와 함께
iam를 사용하여generate-secret.sh를 실행하는 예제 명령입니다.sh ./generate-secret.sh iam API-KEY -
에이전트 팟 (Pod) 을 다시 시작하십시오.
oc delete pod <ibm-storage-metrics-agent> -n kube-sysem -
출력에서
secret type를 찾아 에이전트 팟 (Pod) 의 로그를 가져와서 드라이버가 올바른 신임 정보를 사용하는지 확인하십시오. 예를 들면"secret-used":"ibm-cloud-credentials","type":"pod-identity"입니다.oc logs ibm-storage-metrics-agent-xxx -c storage-secret-sidecar -n kube-system