21.3. 보안 토큰 서비스 클러스터에 AWS Load Balancer Operator 설치
STS(Security Token Service) 클러스터에 AWS Load Balancer Operator를 설치할 수 있습니다.
AWS Load Balancer Operator는 CredentialsRequest
를 사용하여 Operator 및 각 AWSLoadBalancerController
인스턴스를 부트스트랩합니다. AWS Load Balancer Operator는 필요한 시크릿이 생성되고 사용 가능할 때까지 기다립니다. Cloud Credential Operator는 STS 클러스터에서 자동으로 시크릿을 프로비저닝하지 않습니다. ccoctl
바이너리를 사용하여 인증 정보 시크릿을 수동으로 설정해야 합니다.
Cloud Credential Operator를 사용하여 인증 정보 시크릿을 프로비저닝하지 않으려면 AWS load Balancer Controller CR(사용자 정의 리소스)에 인증 정보 시크릿을 지정하여 STS 클러스터에서 AWSLoadBalancerController
인스턴스를 구성할 수 있습니다.
21.3.1. 보안 토큰 서비스 클러스터에서 AWS Load Balancer Operator 부트스트랩
사전 요구 사항
-
ccoctl
바이너리를 추출하고 준비해야 합니다.
절차
다음 명령을 실행하여
aws-load-balancer-operator
네임스페이스를 생성합니다.oc create namespace aws-load-balancer-operator
$ oc create namespace aws-load-balancer-operator
Copy to Clipboard Copied! AWS Load Balancer Operator의
CredentialsRequest
CR(사용자 정의 리소스)을 다운로드하고 다음 명령을 실행하여 저장할 디렉터리를 생성합니다.curl --create-dirs -o <path-to-credrequests-dir>/cr.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yaml
$ curl --create-dirs -o <path-to-credrequests-dir>/cr.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yaml
Copy to Clipboard Copied! ccoctl
툴을 사용하여 다음 명령을 실행하여 AWS Load Balancer Operator의CredentialsRequest
오브젝트를 처리합니다.ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>
$ ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>
Copy to Clipboard Copied! 다음 명령을 실행하여 클러스터의 매니페스트 디렉터리에 생성된 보안을 적용합니다.
ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
$ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
Copy to Clipboard Copied! 다음 명령을 실행하여 AWS Load Balancer Operator의 인증 정보 시크릿이 생성되었는지 확인합니다.
oc -n aws-load-balancer-operator get secret aws-load-balancer-operator --template='{{index .data "credentials"}}' | base64 -d
$ oc -n aws-load-balancer-operator get secret aws-load-balancer-operator --template='{{index .data "credentials"}}' | base64 -d
Copy to Clipboard Copied! 출력 예
[default] sts_regional_endpoints = regional role_arn = arn:aws:iam::999999999999:role/aws-load-balancer-operator-aws-load-balancer-operator web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token
[default] sts_regional_endpoints = regional role_arn = arn:aws:iam::999999999999:role/aws-load-balancer-operator-aws-load-balancer-operator web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token
Copy to Clipboard Copied!
21.3.2. 관리형 CredentialsRequest
오브젝트를 사용하여 보안 토큰 서비스 클러스터에서 AWS Load Balancer Operator 구성
사전 요구 사항
-
ccoctl
바이너리를 추출하고 준비해야 합니다.
절차
AWS Load Balancer Operator는 각
AWSLoadBalancerController
사용자 정의 리소스(CR)의openshift-cloud-credential-operator
네임스페이스에CredentialsRequest
오브젝트를 생성합니다. 다음 명령을 실행하여 생성된CredentialsRequest
오브젝트를 디렉터리에 추출 및 저장할 수 있습니다.oc get credentialsrequest -n openshift-cloud-credential-operator \ aws-load-balancer-controller-<cr-name> -o yaml > <path-to-credrequests-dir>/cr.yaml
$ oc get credentialsrequest -n openshift-cloud-credential-operator \ aws-load-balancer-controller-<cr-name> -o yaml > <path-to-credrequests-dir>/cr.yaml
1 Copy to Clipboard Copied! - 1
aws-load-balancer-controller-<cr-name
> 매개변수는 AWS Load Balancer Operator가 생성한 인증 정보 요청 이름을 지정합니다.cr-name
은 AWS Load Balancer Controller 인스턴스의 이름을 지정합니다.
ccoctl
도구를 사용하여 다음 명령을 실행하여credrequests
디렉터리의 모든CredentialsRequest
오브젝트를 처리합니다.ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>
$ ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>
Copy to Clipboard Copied! 다음 명령을 실행하여 매니페스트 디렉터리에 생성된 보안을 클러스터에 적용합니다.
ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
$ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
Copy to Clipboard Copied! aws-load-balancer-controller
Pod가 생성되었는지 확인합니다.oc -n aws-load-balancer-operator get pods
$ oc -n aws-load-balancer-operator get pods NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-9b766d6-gg82c 1/1 Running 0 137m aws-load-balancer-operator-controller-manager-b55ff68cc-85jzg 2/2 Running 0 3h26m
Copy to Clipboard Copied!
21.3.3. 특정 인증 정보를 사용하여 보안 토큰 서비스 클러스터에서 AWS Load Balancer Operator 구성
AWS Load Balancer Controller CR(사용자 정의 리소스)에서 spec.credentials
필드를 사용하여 인증 정보 시크릿을 지정할 수 있습니다. 컨트롤러의 사전 정의된 CredentialsRequest
오브젝트를 사용하여 필요한 역할을 확인할 수 있습니다.
사전 요구 사항
-
ccoctl
바이너리를 추출하고 준비해야 합니다.
절차
AWS Load Balancer 컨트롤러의 CredentialsRequest CR(사용자 정의 리소스)을 다운로드하고 다음 명령을 실행하여 저장할 디렉터리를 생성합니다.
curl --create-dirs -o <path-to-credrequests-dir>/cr.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yaml
$ curl --create-dirs -o <path-to-credrequests-dir>/cr.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yaml
Copy to Clipboard Copied! ccoctl
도구를 사용하여 컨트롤러의CredentialsRequest
오브젝트를 처리합니다.ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>
$ ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>
Copy to Clipboard Copied! 클러스터에 시크릿을 적용합니다.
ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
$ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
Copy to Clipboard Copied! 컨트롤러에서 사용할 인증 정보 시크릿이 생성되었는지 확인합니다.
oc -n aws-load-balancer-operator get secret aws-load-balancer-controller-manual-cluster --template='{{index .data "credentials"}}' | base64 -d
$ oc -n aws-load-balancer-operator get secret aws-load-balancer-controller-manual-cluster --template='{{index .data "credentials"}}' | base64 -d
Copy to Clipboard Copied! 출력 예
[default] sts_regional_endpoints = regional role_arn = arn:aws:iam::999999999999:role/aws-load-balancer-operator-aws-load-balancer-controller web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token
[default] sts_regional_endpoints = regional role_arn = arn:aws:iam::999999999999:role/aws-load-balancer-operator-aws-load-balancer-controller web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token
Copy to Clipboard Copied! 다음과 같이
AWSLoadBalancerController
리소스 YAML 파일 (예:sample-aws-lb-lb-ECDHE-creds.yaml
)을 만듭니다.apiVersion: networking.olm.openshift.io/v1alpha1 kind: AWSLoadBalancerController metadata: name: cluster spec: credentials: name: <secret-name>
apiVersion: networking.olm.openshift.io/v1alpha1 kind: AWSLoadBalancerController
1 metadata: name: cluster
2 spec: credentials: name: <secret-name>
3 Copy to Clipboard Copied!