22.4. AWS Security Token Service를 사용하여 클러스터에서 AWS Load Balancer Operator 준비
STS를 사용하는 클러스터에 AWS Load Balancer Operator를 설치할 수 있습니다. 다음 단계에 따라 Operator를 설치하기 전에 클러스터를 준비합니다.
AWS Load Balancer Operator는 CredentialsRequest
오브젝트를 사용하여 Operator 및 AWS Load Balancer 컨트롤러를 부트스트랩합니다. AWS Load Balancer Operator는 필요한 시크릿이 생성되고 사용 가능할 때까지 기다립니다. Cloud Credential Operator는 STS 클러스터에서 자동으로 시크릿을 프로비저닝하지 않습니다. ccoctl
바이너리를 사용하여 인증 정보 보안을 수동으로 설정해야 합니다.
Cloud Credential Operator를 사용하여 인증 정보 시크릿을 프로비저닝하지 않으려면 AWS load Balancer Controller CR(사용자 정의 리소스)에 인증 정보 시크릿을 지정하여 STS 클러스터에서 AWSLoadBalancerController
인스턴스를 구성할 수 있습니다.
22.4.1. 보안 토큰 서비스 클러스터에서 AWS Load Balancer Operator 부트스트랩
사전 요구 사항
-
ccoctl
바이너리를 추출하고 준비해야 합니다.
절차
다음 명령을 실행하여
aws-load-balancer-operator
네임스페이스를 생성합니다.$ oc create namespace aws-load-balancer-operator
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
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>
다음 명령을 실행하여 클러스터의 매니페스트 디렉터리에 생성된 보안을 적용합니다.
$ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
다음 명령을 실행하여 AWS Load Balancer Operator의 인증 정보 시크릿이 생성되었는지 확인합니다.
$ oc -n aws-load-balancer-operator get secret aws-load-balancer-operator --template='{{index .data "credentials"}}' | base64 -d
출력 예
[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
22.4.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 1
- 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>
다음 명령을 실행하여 매니페스트 디렉터리에 생성된 보안을 클러스터에 적용합니다.
$ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
aws-load-balancer-controller
Pod가 생성되었는지 확인합니다.$ 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
22.4.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
ccoctl
도구를 사용하여 컨트롤러의CredentialsRequest
오브젝트를 처리합니다.$ ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>
클러스터에 시크릿을 적용합니다.
$ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
컨트롤러에서 사용할 인증 정보 시크릿이 생성되었는지 확인합니다.
$ oc -n aws-load-balancer-operator get secret aws-load-balancer-controller-manual-cluster --template='{{index .data "credentials"}}' | base64 -d
출력 예
[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
다음과 같이
AWSLoadBalancerController
리소스 YAML 파일 (예:sample-aws-lb-lb-ECDHE-creds.yaml
)을 만듭니다.apiVersion: networking.olm.openshift.io/v1 kind: AWSLoadBalancerController 1 metadata: name: cluster 2 spec: credentials: name: <secret-name> 3