19.5. Amazon Web Services 보안 토큰 서비스에서 수동 모드 사용

STS를 사용하는 수동 모드는 AWS(Amazon Web Services)에서 지원됩니다.

참고

이 인증 정보 전략은 새로운 OpenShift Container Platform 클러스터에 대해서만 지원되며 설치 중에 구성해야 합니다. 이 기능을 사용하기 위해 다른 인증 정보 전략을 사용하는 기존 클러스터를 재구성할 수 없습니다.

19.5.1. AWS 보안 토큰 서비스를 사용하는 수동 모드 정보

STS를 사용하는 수동 모드에서 개별 OpenShift Container Platform 클러스터 구성 요소는 AWS STS(Security Token Service)를 사용하여 단기적이고 제한된 권한 보안 인증 정보를 제공하는 구성 요소 IAM 역할을 할당합니다. 이러한 인증 정보는 AWS API 호출을 수행하는 각 구성 요소에 특정적인 IAM 역할과 연결됩니다.

19.5.1.1. AWS 보안 토큰 서비스 인증 프로세스

AWS STS(Security Token Service) 및 AssumeRole API 작업을 사용하면 Pod에서 IAM 역할 정책에서 정의한 액세스 키를 검색할 수 있습니다.

OpenShift Container Platform 클러스터에는 Kubernetes 서비스 계정 서명 서비스가 포함되어 있습니다. 이 서비스는 개인 키를 사용하여 서비스 계정 JSON 웹 토큰(JWT)에 서명합니다. 서비스 계정 토큰이 필요한 Pod는 Pod 사양을 통해 하나씩 요청합니다. Pod가 생성되어 노드에 할당되면 노드는 서비스 계정 서명 서비스에서 서명된 서비스 계정을 검색하여 Pod에 마운트합니다.

STS를 사용하는 클러스터에는 Kubernetes 구성 시크릿에 IAM 역할 ID가 포함됩니다. 워크로드에서는 이 IAM 역할 ID의 ID를 가정합니다. 워크로드에 발행된 서명된 서비스 계정 토큰은 AWS의 구성과 일치하여 AWS STS가 지정된 IAM 역할의 액세스 키를 워크로드에 부여할 수 있습니다.

AWS STS는 다음 조건을 충족하는 서비스 계정 토큰이 포함된 요청에만 액세스 키를 부여합니다.

  • 토큰 이름 및 네임스페이스는 서비스 계정 이름 및 네임스페이스와 일치합니다.
  • 토큰은 공개 키와 일치하는 키로 서명됩니다. 클러스터에서 사용하는 서비스 계정 서명 키의 공개 키 쌍은 AWS S3 버킷에 저장됩니다. AWS STS 페더레이션은 서비스 계정 토큰 서명이 S3 버킷에 저장된 공개 키와 일치하는지 확인합니다.

19.5.1.2. AWS STS의 인증 흐름

다음 다이어그램은 AWS STS를 사용할 때 AWS와 OpenShift Container Platform 클러스터 간의 인증 흐름을 보여줍니다.

  • 토큰 서명 은 OpenShift Container Platform 클러스터의 Kubernetes 서비스 계정 서명 서비스입니다.
  • Pod의 Kubernetes 서비스 계정 은 서명된 서비스 계정 토큰입니다.

그림 19.2. AWS 보안 토큰 서비스 인증 흐름

AWS STS를 사용할 때 AWS와 클러스터 간의 자세한 인증 흐름

새로운 인증 정보 및 새로 고침 인증 정보에 대한 요청은 AWS IAM 역할과 결합된 적절하게 구성된 AWS IAM OIDC(OpenID Connect) ID 공급자를 사용하여 자동화됩니다. AWS IAM에서 신뢰하는 서비스 계정 토큰은 OpenShift Container Platform에서 서명하고 Pod에 프로젝션하고 인증에 사용할 수 있습니다.

19.5.1.3. AWS STS의 토큰 새로 고침

Pod에서 사용하는 서명된 서비스 계정 토큰이 일정 기간 후에 만료됩니다. AWS STS를 사용하는 클러스터의 경우 이 기간은 3600초 또는 1시간입니다.

토큰이 새로 고쳐지도록 Pod가 할당된 노드의 kubelet입니다. kubelet은 토큰이 80% 이상 경과할 때 토큰을 회전하려고 합니다.

19.5.1.4. AWS STS의 OpenID Connect 요구 사항

OIDC 구성에 대한 암호화 키의 공개 부분을 공개 또는 개인 S3 버킷에 저장할 수 있습니다.

OIDC 사양은 HTTPS를 사용해야 합니다. AWS 서비스에는 JWKS(JSON 웹 키 세트) 공개 키 형식의 OIDC 문서를 노출하려면 공개 끝점이 필요합니다. 이를 통해 AWS 서비스는 Kubernetes에서 서명한 바인딩된 토큰의 유효성을 검사하고 인증서를 신뢰할지 여부를 확인할 수 있습니다. 결과적으로 S3 버킷 옵션에는 공용 HTTPS 끝점과 프라이빗 끝점이 모두 지원되지 않습니다.

AWS STS를 사용하려면 AWS STS 서비스의 공용 AWS 백본이 공용 S3 버킷 또는 공용 CloudFront 엔드포인트가 있는 프라이빗 S3 버킷과 통신할 수 있어야 합니다. 설치 중에 CredentialsRequest 오브젝트를 처리할 때 사용할 버킷 유형을 선택할 수 있습니다.

  • 기본적으로 CCO 유틸리티(ccoctl)는 OIDC 구성 파일을 공용 S3 버킷에 저장하고 S3 URL을 공용 OIDC 엔드포인트로 사용합니다.
  • 또는 ccoctl 유틸리티에서 공개 CloudFront 배포 URL을 통해 IAM ID 공급자가 액세스하는 프라이빗 S3 버킷에 OIDC 구성을 저장할 수 있습니다.

19.5.1.5. AWS 구성 요소 시크릿 형식

STS를 사용하여 수동 모드를 사용하면 개별 OpenShift Container Platform 구성 요소에 제공되는 AWS 인증 정보의 내용이 변경됩니다. 다음 보안 형식을 비교합니다.

수명이 긴 인증 정보를 사용하는 AWS 시크릿 형식

apiVersion: v1
kind: Secret
metadata:
  namespace: <target-namespace> 1
  name: <target-secret-name> 2
data:
  aws_access_key_id: <base64-encoded-access-key-id>
  aws_secret_access_key: <base64-encoded-secret-access-key>

1
구성 요소의 네임스페이스입니다.
2
구성 요소 시크릿의 이름입니다.

STS를 사용하는 AWS 시크릿 형식

apiVersion: v1
kind: Secret
metadata:
  namespace: <target-namespace> 1
  name: <target-secret-name> 2
stringData:
  credentials: |-
    [default]
    sts_regional_endpoints = regional
    role_name: <operator-role-name> 3
    web_identity_token_file: <path-to-token> 4

1
구성 요소의 네임스페이스입니다.
2
구성 요소 시크릿의 이름입니다.
3
구성 요소의 IAM 역할입니다.
4
Pod 내의 서비스 계정 토큰 경로입니다. 관례상 이는 OpenShift Container Platform 구성 요소의 /var/run/secrets/openshift/serviceaccount/token입니다.

19.5.2. STS를 사용하여 수동 모드에 구성된 OpenShift Container Platform 클러스터 설치

STS를 사용하여 수동 모드에서 CCO(Cloud Credential Operator)를 사용하도록 구성된 클러스터를 설치하려면 다음을 수행합니다.

참고

STS를 사용할 때 클러스터가 수동 모드에서 작동하므로 필요한 권한으로 구성 요소에 대한 새 인증 정보를 생성할 수 없습니다. OpenShift Container Platform의 다른 마이너 버전으로 업그레이드할 때 종종 새로운 AWS 권한 요구 사항이 있습니다. STS를 사용하는 클러스터를 업그레이드하기 전에 클러스터 관리자는 AWS 권한이 기존 구성 요소에 충분하고 새 구성 요소에서 사용할 수 있는지 수동으로 확인해야 합니다.

19.5.2.1. Cloud Credential Operator 유틸리티 구성

CCO(Cloud Credential Operator)가 수동 모드에서 작동할 때 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하려면 CCO 유틸리티(ccoctl) 바이너리를 추출 및 준비합니다.

참고

ccoctl 유틸리티는 Linux 환경에서 실행해야 하는 Linux 바이너리입니다.

사전 요구 사항

  • 클러스터 관리자 액세스 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • ccoctl 유틸리티에서 다음 권한과 함께 사용할 AWS 계정을 생성했습니다.

    표 19.3. 필요한 GCP 권한

    권한 유형필요한 권한

    IAM 권한

    • iam:CreateOpenIDConnectProvider
    • iam:CreateRole
    • iam:DeleteOpenIDConnectProvider
    • iam:DeleteRole
    • iam:DeleteRolePolicy
    • iam:GetOpenIDConnectProvider
    • iam:GetRole
    • iam:GetUser
    • iam:ListOpenIDConnectProviders
    • iam:ListRolePolicies
    • iam:ListRoles
    • iam:PutRolePolicy
    • iam:TagOpenIDConnectProvider
    • iam:TagRole

    s3 권한

    • s3:CreateBucket
    • s3:DeleteBucket
    • s3:DeleteObject
    • s3:GetBucketAcl
    • s3:GetBucketTagging
    • s3:GetObject
    • s3:GetObjectAcl
    • s3:GetObjectTagging
    • s3:ListBucket
    • s3:PutBucketAcl
    • s3:PutBucketPolicy
    • s3:PutBucketPublicAccessBlock
    • s3:PutBucketTagging
    • s3:PutObject
    • s3:PutObjectAcl
    • s3:PutObjectTagging

    CloudFront 권한

    • cloudfront:ListCloudFrontOriginAccessIdentities
    • cloudfront:ListDistributions
    • cloudfront:ListTagsForResource

    공개 CloudFront 배포 URL을 통해 IAM ID 공급자가 액세스하는 프라이빗 S3 버킷에 OIDC 구성을 저장하려면 ccoctl 유틸리티를 실행하는 AWS 계정에 다음과 같은 추가 권한이 필요합니다.

    • cloudfront:CreateCloudFrontOriginAccessIdentity
    • cloudfront:CreateDistribution
    • cloudfront:DeleteCloudFrontOriginAccessIdentity
    • cloudfront:DeleteDistribution
    • cloudfront:GetCloudFrontOriginAccessIdentity
    • cloudfront:GetCloudFrontOriginAccessIdentityConfig
    • cloudfront:GetDistribution
    • cloudfront:TagResource
    • cloudfront:UpdateDistribution
    참고

    이러한 추가 권한은 ccoctl aws create-all 명령을 사용하여 인증 정보 요청을 처리할 때 --create-private-s3-bucket 옵션을 사용할 수 있도록 지원합니다.

절차

  1. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지를 가져옵니다.

    $ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
  2. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서 CCO 컨테이너 이미지를 가져옵니다.

    $ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
    참고

    $RELEASE_IMAGE 의 아키텍처가 ccoctl 툴을 사용할 환경의 아키텍처와 일치하는지 확인합니다.

  3. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지 내의 CCO 컨테이너 이미지에서 ccoctl 바이너리를 추출합니다.

    $ oc image extract $CCO_IMAGE --file="/usr/bin/ccoctl" -a ~/.pull-secret
  4. 다음 명령을 실행하여 ccoctl 을 실행 가능하게 만들 수 있도록 권한을 변경합니다.

    $ chmod 775 ccoctl

검증

  • ccoctl 을 사용할 준비가 되었는지 확인하려면 다음 명령을 실행하여 도움말 파일을 표시합니다.

    $ ccoctl --help

    ccoctl --help의 출력

    OpenShift credentials provisioning tool
    
    Usage:
      ccoctl [command]
    
    Available Commands:
      alibabacloud Manage credentials objects for alibaba cloud
      aws          Manage credentials objects for AWS cloud
      gcp          Manage credentials objects for Google cloud
      help         Help about any command
      ibmcloud     Manage credentials objects for IBM Cloud
      nutanix      Manage credentials objects for Nutanix
    
    Flags:
      -h, --help   help for ccoctl
    
    Use "ccoctl [command] --help" for more information about a command.

19.5.2.2. Cloud Credential Operator 유틸리티를 사용하여 AWS 리소스 생성

CCO 유틸리티(ccoctl)를 사용하여 필요한 AWS 리소스를 개별적으로 생성하거나 단일 명령으로 생성할 수 있습니다.

19.5.2.2.1. 개별적으로 AWS 리소스 생성

AWS 리소스를 수정하기 전에 ccoctl 툴에서 생성하는 JSON 파일을 검토해야 하거나 ccoctl 툴에서 AWS 리소스를 생성하는 프로세스에서 조직의 요구 사항을 자동으로 충족하지 않는 경우 AWS 리소스를 개별적으로 생성할 수 있습니다. 예를 들어 이 옵션은 다양한 사용자 또는 부서 간에 이러한 리소스를 만드는 책임을 공유하는 조직에 유용할 수 있습니다.

그렇지 않으면 ccoctl aws create-all 명령을 사용하여 AWS 리소스를 자동으로 생성할 수 있습니다.

참고

기본적으로 ccoctl은 명령이 실행되는 디렉터리에 오브젝트를 생성합니다. 다른 디렉터리에서 오브젝트를 생성하려면 --output-dir 플래그를 사용합니다. 이 절차에서는 < path_to_ccoctl_output_dir >을 사용하여 이 디렉터리를 참조합니다.

일부 ccoctl 명령은 AWS API를 호출하여 AWS 리소스를 생성하거나 수정합니다. --dry-run 플래그를 사용하여 API 호출을 수행하지 않도록 할 수 있습니다. 이 플래그를 사용하면 로컬 파일 시스템에 JSON 파일이 생성됩니다. JSON 파일을 검토 및 수정한 다음 --cli-input-json 매개변수를 사용하여 AWS CLI 툴에 적용할 수 있습니다.

사전 요구 사항

  • ccoctl 바이너리를 추출하고 준비합니다.

절차

  1. 클러스터의 OpenID Connect 공급자를 설정하는 데 사용되는 공개 및 개인 RSA 키 파일을 생성합니다.

    $ ccoctl aws create-key-pair

    출력 예:

    2021/04/13 11:01:02 Generating RSA keypair
    2021/04/13 11:01:03 Writing private key to /<path_to_ccoctl_output_dir>/serviceaccount-signer.private
    2021/04/13 11:01:03 Writing public key to /<path_to_ccoctl_output_dir>/serviceaccount-signer.public
    2021/04/13 11:01:03 Copying signing key for use by installer

    여기서 serviceaccount-signer.privateserviceaccount-signer.public은 생성된 키 파일입니다.

    이 명령은 /< path_to_ccoctl_output_dir>/tls/bound-service-account-signing-key.key 에 설치하는 동안 클러스터에 필요한 개인 키도 생성합니다.

  2. AWS에서 OpenID Connect ID 공급자 및 S3 버킷을 생성합니다.

    $ ccoctl aws create-identity-provider \
    --name=<name> \
    --region=<aws_region> \
    --public-key-file=<path_to_ccoctl_output_dir>/serviceaccount-signer.public

    다음과 같습니다.

    • <name >은 추적을 위해 생성된 클라우드 리소스를 태그하는 데 사용되는 이름입니다.
    • <AWS-region >은 클라우드 리소스를 생성할 AWS 리전입니다.
    • <path_to_ccoctl_output_dir >은 ccoctl aws create-key-pair 명령이 생성된 공개 키 파일의 경로입니다.

    출력 예:

    2021/04/13 11:16:09 Bucket <name>-oidc created
    2021/04/13 11:16:10 OpenID Connect discovery document in the S3 bucket <name>-oidc at .well-known/openid-configuration updated
    2021/04/13 11:16:10 Reading public key
    2021/04/13 11:16:10 JSON web key set (JWKS) in the S3 bucket <name>-oidc at keys.json updated
    2021/04/13 11:16:18 Identity Provider created with ARN: arn:aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com

    여기서 openid-configuration 은 검색 문서이고 keys.json 은 JSON 웹 키 세트 파일입니다.

    또한 이 명령은 /<path_to_ccoctl_output_dir>/manifests/cluster-authentication-02-config.yaml 에 YAML 구성 파일을 생성합니다. 이 파일은 AWS IAM ID 공급자가 토큰을 신뢰하도록 클러스터가 생성하는 서비스 계정 토큰의 발급자 URL 필드를 설정합니다.

  3. 클러스터의 각 구성 요소에 대한 IAM 역할을 생성합니다.

    1. OpenShift Container Platform 릴리스 이미지에서 CredentialsRequest 오브젝트 목록을 추출합니다.

      $ oc adm release extract --credentials-requests \
      --cloud=aws \
      --to=<path_to_directory_with_list_of_credentials_requests>/credrequests 1
      --from=quay.io/<path_to>/ocp-release:<version>
      1
      credrequestsCredentialsRequest 오브젝트 목록이 저장되는 디렉터리입니다. 이 명령은 디렉터리가 없는 경우 해당 디렉터리를 생성합니다.
    2. 클러스터에서 클러스터 기능을 사용하여 하나 이상의 선택적 구성 요소를 비활성화하는 경우 비활성화된 구성 요소에 대한 CredentialsRequest 사용자 정의 리소스를 삭제합니다.

      AWS의 OpenShift Container Platform 4.12의 credrequests 디렉터리 내용 예

      0000_30_machine-api-operator_00_credentials-request.yaml 1
      0000_50_cloud-credential-operator_05-iam-ro-credentialsrequest.yaml 2
      0000_50_cluster-image-registry-operator_01-registry-credentials-request.yaml 3
      0000_50_cluster-ingress-operator_00-ingress-credentials-request.yaml 4
      0000_50_cluster-network-operator_02-cncc-credentials.yaml 5
      0000_50_cluster-storage-operator_03_credentials_request_aws.yaml 6

      1
      Machine API Operator CR이 필요합니다.
      2
      Cloud Credential Operator CR이 필요합니다.
      3
      Image Registry Operator CR이 필요합니다.
      4
      Ingress Operator CR이 필요합니다.
      5
      Network Operator CR이 필요합니다.
      6
      Storage Operator CR은 선택적 구성 요소이며 클러스터에서 비활성화될 수 있습니다.
    3. ccoctl 툴을 사용하여 redrequests 디렉터리의 모든 CredentialsRequest 오브젝트를 처리합니다.

      $ ccoctl aws create-iam-roles \
      --name=<name> \
      --region=<aws_region> \
      --credentials-requests-dir=<path_to_directory_with_list_of_credentials_requests>/credrequests \
      --identity-provider-arn=arn:aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com
      참고

      GovCloud와 같은 대체 IAM API 끝점을 사용하는 AWS 환경의 경우 --region 매개변수를 사용하여 리전을 지정해야 합니다.

      클러스터에서 TechPreviewNoUpgrade 기능 세트를 통해 활성화된 기술 프리뷰 기능을 사용하는 경우 --enable-tech-preview 매개변수를 포함해야 합니다.

      CredentialsRequest 오브젝트에 대해 ccoctl 은 지정된 OIDC ID 공급자와 연결된 신뢰 정책과 OpenShift Container Platform 릴리스 이미지의 각 CredentialsRequest 오브젝트에 정의된 권한 정책을 사용하여 IAM 역할을 생성합니다.

검증

  • OpenShift Container Platform 보안이 생성되었는지 확인하려면 < path_to_ccoctl_output_dir>/manifests 디렉터리의 파일을 나열합니다.

    $ ll <path_to_ccoctl_output_dir>/manifests

    출력 예:

    total 24
    -rw-------. 1 <user> <user> 161 Apr 13 11:42 cluster-authentication-02-config.yaml
    -rw-------. 1 <user> <user> 379 Apr 13 11:59 openshift-cloud-credential-operator-cloud-credential-operator-iam-ro-creds-credentials.yaml
    -rw-------. 1 <user> <user> 353 Apr 13 11:59 openshift-cluster-csi-drivers-ebs-cloud-credentials-credentials.yaml
    -rw-------. 1 <user> <user> 355 Apr 13 11:59 openshift-image-registry-installer-cloud-credentials-credentials.yaml
    -rw-------. 1 <user> <user> 339 Apr 13 11:59 openshift-ingress-operator-cloud-credentials-credentials.yaml
    -rw-------. 1 <user> <user> 337 Apr 13 11:59 openshift-machine-api-aws-cloud-credentials-credentials.yaml

AWS를 쿼리하여 IAM 역할이 생성되었는지 확인할 수 있습니다. 자세한 내용은 IAM 역할 나열에 대한 AWS 설명서를 참조하십시오.

19.5.2.2.2. 단일 명령으로 AWS 리소스 생성

AWS 리소스를 수정하기 전에 ccoctl 툴에서 생성하는 JSON 파일을 검토할 필요가 없으며, ccoctl 툴에서 AWS 리소스를 생성하는 데 사용하는 프로세스가 조직의 요구 사항을 자동으로 충족하는 경우 ccoctl aws create-all 명령을 사용하여 AWS 리소스 생성을 자동화할 수 있습니다.

그렇지 않으면 AWS 리소스를 개별적으로 생성할 수 있습니다.

참고

기본적으로 ccoctl은 명령이 실행되는 디렉터리에 오브젝트를 생성합니다. 다른 디렉터리에서 오브젝트를 생성하려면 --output-dir 플래그를 사용합니다. 이 절차에서는 < path_to_ccoctl_output_dir >을 사용하여 이 디렉터리를 참조합니다.

사전 요구 사항

다음이 있어야 합니다.

  • ccoctl 바이너리를 추출하여 준비합니다.

절차

  1. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서 CredentialsRequest 오브젝트 목록을 추출합니다.

    $ oc adm release extract \
    --credentials-requests \
    --cloud=aws \
    --to=<path_to_directory_with_list_of_credentials_requests>/credrequests \ 1
    --from=quay.io/<path_to>/ocp-release:<version>
    1
    credrequestsCredentialsRequest 오브젝트 목록이 저장되는 디렉터리입니다. 이 명령은 디렉터리가 없는 경우 해당 디렉터리를 생성합니다.
    참고

    이 명령을 실행하는 데 시간이 다소 걸릴 수 있습니다.

  2. 클러스터에서 클러스터 기능을 사용하여 하나 이상의 선택적 구성 요소를 비활성화하는 경우 비활성화된 구성 요소에 대한 CredentialsRequest 사용자 정의 리소스를 삭제합니다.

    AWS의 OpenShift Container Platform 4.12의 credrequests 디렉터리 내용 예

    0000_30_machine-api-operator_00_credentials-request.yaml 1
    0000_50_cloud-credential-operator_05-iam-ro-credentialsrequest.yaml 2
    0000_50_cluster-image-registry-operator_01-registry-credentials-request.yaml 3
    0000_50_cluster-ingress-operator_00-ingress-credentials-request.yaml 4
    0000_50_cluster-network-operator_02-cncc-credentials.yaml 5
    0000_50_cluster-storage-operator_03_credentials_request_aws.yaml 6

    1
    Machine API Operator CR이 필요합니다.
    2
    Cloud Credential Operator CR이 필요합니다.
    3
    Image Registry Operator CR이 필요합니다.
    4
    Ingress Operator CR이 필요합니다.
    5
    Network Operator CR이 필요합니다.
    6
    Storage Operator CR은 선택적 구성 요소이며 클러스터에서 비활성화될 수 있습니다.
  3. ccoctl 툴을 사용하여 redrequests 디렉터리의 모든 CredentialsRequest 오브젝트를 처리합니다.

    $ ccoctl aws create-all \
      --name=<name> \1
      --region=<aws_region> \2
      --credentials-requests-dir=<path_to_directory_with_list_of_credentials_requests>/credrequests \3
      --output-dir=<path_to_ccoctl_output_dir> \4
      --create-private-s3-bucket 5
    1
    추적을 위해 생성된 클라우드 리소스를 태그하는 데 사용되는 이름을 지정합니다.
    2
    클라우드 리소스를 생성할 AWS 리전을 지정합니다.
    3
    구성 요소 CredentialsRequest 개체에 대한 파일이 포함된 디렉터리를 지정합니다.
    4
    선택 사항: ccoctl 유틸리티에서 오브젝트를 생성할 디렉터리를 지정합니다. 기본적으로 유틸리티는 명령이 실행되는 디렉터리에 오브젝트를 생성합니다.
    5
    선택 사항: 기본적으로 ccoctl 유틸리티는 OpenID Connect(OIDC) 구성 파일을 공용 S3 버킷에 저장하고 S3 URL을 공용 OIDC 엔드포인트로 사용합니다. 대신 공용 CloudFront 배포 URL을 통해 IAM ID 공급자가 액세스하는 프라이빗 S3 버킷에 OIDC 구성을 저장하려면 --create-private-s3-bucket 매개변수를 사용합니다.
    참고

    클러스터에서 TechPreviewNoUpgrade 기능 세트를 통해 활성화된 기술 프리뷰 기능을 사용하는 경우 --enable-tech-preview 매개변수를 포함해야 합니다.

검증

  • OpenShift Container Platform 보안이 생성되었는지 확인하려면 < path_to_ccoctl_output_dir>/manifests 디렉터리의 파일을 나열합니다.

    $ ls <path_to_ccoctl_output_dir>/manifests

    출력 예:

    cluster-authentication-02-config.yaml
    openshift-cloud-credential-operator-cloud-credential-operator-iam-ro-creds-credentials.yaml
    openshift-cluster-csi-drivers-ebs-cloud-credentials-credentials.yaml
    openshift-image-registry-installer-cloud-credentials-credentials.yaml
    openshift-ingress-operator-cloud-credentials-credentials.yaml
    openshift-machine-api-aws-cloud-credentials-credentials.yaml

AWS를 쿼리하여 IAM 역할이 생성되었는지 확인할 수 있습니다. 자세한 내용은 IAM 역할 나열에 대한 AWS 설명서를 참조하십시오.

19.5.2.3. 설치 프로그램 실행

사전 요구 사항

  • 클러스터를 호스팅하는 클라우드 플랫폼으로 계정을 구성합니다.
  • OpenShift Container Platform 릴리스 이미지를 가져옵니다.

절차

  1. 설치 프로그램이 포함된 디렉터리로 변경하고 install-config.yaml 파일을 생성합니다.

    $ openshift-install create install-config --dir <installation_directory>

    여기서 <installation_directory>는 설치 프로그램이 파일을 생성하는 디렉터리입니다.

  2. install-config.yaml 구성 파일을 편집하여 credentialsMode 매개 변수가 Manual로 설정되도록 합니다.

    install-config.yaml 설정 파일 예

    apiVersion: v1
    baseDomain: cluster1.example.com
    credentialsMode: Manual 1
    compute:
    - architecture: amd64
      hyperthreading: Enabled

    1
    이 행은 credentialsMode 매개변수를 Manual로 설정하기 위해 추가됩니다.
  3. 필요한 OpenShift Container Platform 설치 매니페스트를 생성합니다.

    $ openshift-install create manifests
  4. ccoctl이 생성한 매니페스트를 설치 프로그램이 생성한 매니페스트 디렉터리에 복사합니다.

    $ cp /<path_to_ccoctl_output_dir>/manifests/* ./manifests/
  5. ccoctltls 디렉터리에 생성된 개인 키를 설치 디렉터리에 복사합니다.

    $ cp -a /<path_to_ccoctl_output_dir>/tls .
  6. OpenShift Container Platform 설치 프로그램을 실행합니다.

    $ ./openshift-install create cluster

19.5.2.4. 설치 확인

  1. OpenShift Container Platform 클러스터에 연결합니다.
  2. 클러스터에 root 인증 정보가 없는지 확인합니다.

    $ oc get secrets -n kube-system aws-creds

    출력은 다음과 유사해야 합니다.

    Error from server (NotFound): secrets "aws-creds" not found
  3. 구성 요소가 CCO에서 생성한 인증 정보를 사용하는 대신 시크릿 매니페스트에 지정된 IAM 역할을 가정하는지 확인합니다.

    이미지 레지스트리 Operator가 있는 명령 예

    $ oc get secrets -n openshift-image-registry installer-cloud-credentials -o json | jq -r .data.credentials | base64 --decode

    출력에 구성 요소에서 사용하는 역할 및 웹 ID 토큰이 표시되고 다음과 유사해야 합니다.

    이미지 레지스트리 Operator가 있는 출력 예

    [default]
    role_arn = arn:aws:iam::123456789:role/openshift-image-registry-installer-cloud-credentials
    web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token

19.5.3. 추가 리소스