6.8. kube-system 프로젝트에 관리자 수준 시크릿을 저장하는 대안
기본적으로 관리자 시크릿은 kube-system
프로젝트에 저장됩니다. install-config.yaml
파일에서 credentialsMode
매개변수를 Manual
로 구성한 경우 다음 대안 중 하나를 사용해야 합니다.
- 장기 클라우드 인증 정보를 수동으로 관리하려면 수동으로 장기 인증 정보를 생성하는 절차를 따르십시오.
- 개별 구성 요소의 클러스터 외부에서 관리되는 단기 인증 정보를 구현하려면 AWS 클러스터 구성 절차에 따라 단기 인증 정보를 사용합니다.
6.8.1. 수동으로 장기 인증 정보 생성 링크 복사링크가 클립보드에 복사되었습니다!
Cloud Credential Operator (CCO)는 클라우드 아이덴티티 및 액세스 관리 (IAM) API에 연결할 수 없는 환경에서 설치하기 전에 수동 모드로 전환할 수 있습니다. 또는 관리자가 클러스터 kube-system
네임 스페이스에 관리자 수준의 인증 정보 시크릿을 저장하지 않도록 합니다.
프로세스
install-config.yaml
구성 파일의credentialsMode
매개변수를Manual
로 설정하지 않은 경우 다음과 같이 값을 수정합니다.구성 파일 스니펫 샘플
apiVersion: v1 baseDomain: example.com credentialsMode: Manual # ...
apiVersion: v1 baseDomain: example.com credentialsMode: Manual # ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전에 설치 매니페스트 파일을 생성하지 않은 경우 다음 명령을 실행하여 수행합니다.
openshift-install create manifests --dir <installation_directory>
$ openshift-install create manifests --dir <installation_directory>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서
<installation_directory>
는 설치 프로그램이 파일을 생성하는 디렉터리입니다.다음 명령을 실행하여 설치 파일의 릴리스 이미지로
$RELEASE_IMAGE
변수를 설정합니다.RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서
CredentialsRequest
CR(사용자 정의 리소스) 목록을 추출합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 수행하면 각
CredentialsRequest
오브젝트에 대해 YAML 파일이 생성됩니다.샘플
CredentialsRequest
개체Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전에 생성한
openshift-install
매니페스트 디렉터리에 시크릿 YAML 파일을 만듭니다. 시크릿은 각CredentialsRequest
오브젝트의spec.secretRef
에 정의된 네임 스페이스 및 시크릿 이름을 사용하여 저장해야 합니다.보안이 포함된 샘플
CredentialsRequest
오브젝트Copy to Clipboard Copied! Toggle word wrap Toggle overflow 샘플
Secret
오브젝트Copy to Clipboard Copied! Toggle word wrap Toggle overflow
수동으로 유지 관리되는 인증 정보를 사용하는 클러스터를 업그레이드하기 전에 CCO가 업그레이드 가능한 상태인지 확인해야 합니다.
6.8.2. 단기 인증 정보를 사용하도록 AWS 클러스터 구성 링크 복사링크가 클립보드에 복사되었습니다!
AWS STS(보안 토큰 서비스)를 사용하도록 구성된 클러스터를 설치하려면 CCO 유틸리티를 구성하고 클러스터에 필요한 AWS 리소스를 생성해야 합니다.
6.8.2.1. Cloud Credential Operator 유틸리티 구성 링크 복사링크가 클립보드에 복사되었습니다!
CCO(Cloud Credential Operator)가 수동 모드에서 작동할 때 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하려면 CCO 유틸리티(ccoctl
) 바이너리를 추출 및 준비합니다.
ccoctl
유틸리티는 Linux 환경에서 실행해야 하는 Linux 바이너리입니다.
사전 요구 사항
- 클러스터 관리자 액세스 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다.
ccoctl
유틸리티에서 다음 권한과 함께 사용할 AWS 계정을 생성했습니다.예 6.1. 필요한 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 계정에 다음과 같은 추가 권한이 필요합니다.예 6.2. CloudFront를 사용한 개인 S3 버킷에 대한 추가 권한
-
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
옵션을 사용할 수 있도록 지원합니다.-
프로세스
다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지의 변수를 설정합니다.
RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서 CCO 컨테이너 이미지를 가져옵니다.
CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
$ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고$RELEASE_IMAGE
의 아키텍처가ccoctl
툴을 사용할 환경의 아키텍처와 일치하는지 확인합니다.다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지 내에서
ccoctl
바이너리를 추출합니다.oc image extract $CCO_IMAGE --file="/usr/bin/ccoctl" -a ~/.pull-secret
$ oc image extract $CCO_IMAGE --file="/usr/bin/ccoctl" -a ~/.pull-secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
ccoctl
을 실행할 수 있도록 권한을 변경합니다.chmod 775 ccoctl
$ chmod 775 ccoctl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
ccoctl
을 사용할 준비가 되었는지 확인하려면 도움말 파일을 표시합니다. 명령을 실행할 때 상대 파일 이름을 사용합니다. 예를 들면 다음과 같습니다../ccoctl.rhel9
$ ./ccoctl.rhel9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.8.2.2. Cloud Credential Operator 유틸리티를 사용하여 AWS 리소스 생성 링크 복사링크가 클립보드에 복사되었습니다!
AWS 리소스를 생성할 때 다음과 같은 옵션이 있습니다.
-
ccoctl aws create-all
명령을 사용하여 AWS 리소스를 자동으로 생성할 수 있습니다. 리소스를 생성하는 가장 빠른 방법입니다. 단일 명령을 사용하여 AWS 리소스 생성을 참조하십시오. -
AWS 리소스를 수정하기 전에
ccoctl
툴에서 생성하는 JSON 파일을 검토해야 하거나ccoctl
툴에서 AWS 리소스를 생성하는 프로세스에서 조직의 요구 사항을 자동으로 충족하지 않는 경우 AWS 리소스를 개별적으로 생성할 수 있습니다. AWS 리소스 생성을 개별적으로 참조하십시오.
6.8.2.2.1. 단일 명령으로 AWS 리소스 생성 링크 복사링크가 클립보드에 복사되었습니다!
ccoctl
툴에서 AWS 리소스를 생성하는 데 사용하는 프로세스가 조직의 요구 사항을 자동으로 충족하는 경우 ccoctl aws create-all
명령을 사용하여 AWS 리소스 생성을 자동화할 수 있습니다.
그렇지 않으면 AWS 리소스를 개별적으로 생성할 수 있습니다. 자세한 내용은 "개인 AWS 리소스 생성"을 참조하십시오.
기본적으로 ccoctl
은 명령이 실행되는 디렉터리에 오브젝트를 생성합니다. 다른 디렉터리에 오브젝트를 생성하려면 --output-dir
플래그를 사용합니다. 이 절차에서는 <path_to_ccoctl_output_dir>
을 사용하여 이 디렉터리를 나타냅니다.
사전 요구 사항
다음이 있어야 합니다.
-
ccoctl
바이너리를 추출하여 준비합니다.
프로세스
다음 명령을 실행하여 설치 파일의 릴리스 이미지로
$RELEASE_IMAGE
변수를 설정합니다.RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서
CredentialsRequest
오브젝트 목록을 추출합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이 명령을 실행하는 데 시간이 다소 걸릴 수 있습니다.
ccoctl
툴을 사용하여 다음 명령을 실행하여 모든CredentialsRequest
오브젝트를 처리합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 추적을 위해 생성된 클라우드 리소스에 태그를 지정하는 데 사용되는 이름을 지정합니다.
- 2
- 클라우드 리소스가 생성될 AWS 리전을 지정합니다.
- 3
- 구성 요소
CredentialsRequest
오브젝트에 대한 파일이 포함된 디렉터리를 지정합니다. - 4
- 선택 사항:
ccoctl
유틸리티에서 오브젝트를 생성할 디렉터리를 지정합니다. 기본적으로 유틸리티는 명령이 실행되는 디렉터리에 오브젝트를 생성합니다. - 5
- 선택사항: 기본적으로
ccoctl
유틸리티는 공개 S3 버킷에 OIDC(OpenID Connect) 구성 파일을 저장하고 공개 OIDC 엔드포인트로 S3 URL을 사용합니다. OIDC 구성을 공용 CloudFront 배포 URL을 통해 IAM ID 공급자가 액세스하는 개인 S3 버킷에 저장하려면--create-private-s3-bucket
매개변수를 사용합니다.
참고클러스터에서
TechPreviewNoUpgrade
기능 세트에서 활성화한 기술 프리뷰 기능을 사용하는 경우--enable-tech-preview
매개변수를 포함해야 합니다.
검증
OpenShift Container Platform 보안이 생성되었는지 확인하려면
<path_to_ccoctl_output_dir>/manifests
디렉터리에 파일을 나열합니다.ls <path_to_ccoctl_output_dir>/manifests
$ ls <path_to_ccoctl_output_dir>/manifests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS를 쿼리하여 IAM 역할이 생성되었는지 확인할 수 있습니다. 자세한 내용은 IAM 역할 나열에 대한 AWS 설명서를 참조하십시오.
6.8.2.2.2. 개별적으로 AWS 리소스 생성 링크 복사링크가 클립보드에 복사되었습니다!
ccoctl
툴을 사용하여 AWS 리소스를 개별적으로 생성할 수 있습니다. 이 옵션은 서로 다른 사용자 또는 부서 간에 이러한 리소스를 생성하는 책임을 공유하는 조직에 유용할 수 있습니다.
그렇지 않으면 ccoctl aws create-all
명령을 사용하여 AWS 리소스를 자동으로 생성할 수 있습니다. 자세한 내용은 "단일 명령으로 AWS 리소스 생성"을 참조하십시오.
기본적으로 ccoctl
은 명령이 실행되는 디렉터리에 오브젝트를 생성합니다. 다른 디렉터리에 오브젝트를 생성하려면 --output-dir
플래그를 사용합니다. 이 절차에서는 <path_to_ccoctl_output_dir>
을 사용하여 이 디렉터리를 나타냅니다.
일부 ccoctl
명령은 AWS API를 호출하여 AWS 리소스를 생성하거나 수정합니다. --dry-run
플래그를 사용하여 API 호출을 방지할 수 있습니다. 이 플래그를 사용하면 로컬 파일 시스템에 JSON 파일이 생성됩니다. JSON 파일을 검토 및 수정한 다음 --cli-input-json
매개변수를 사용하여 AWS CLI 툴로 적용할 수 있습니다.
사전 요구 사항
-
ccoctl
바이너리를 추출하고 준비합니다.
프로세스
다음 명령을 실행하여 클러스터의 OpenID Connect 공급자를 설정하는 데 사용되는 공개 및 개인 RSA 키 파일을 생성합니다.
ccoctl aws create-key-pair
$ ccoctl aws create-key-pair
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서
serviceaccount-signer.private
및serviceaccount-signer.public
은 생성된 키 파일입니다.또한 이 명령은
/<path_to_ccoctl_output_dir>/tls/bound-service-account-signing-key.key
에 설치하는 동안 클러스터가 필요한 개인 키를 생성합니다.다음 명령을 실행하여 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
$ ccoctl aws create-identity-provider \ --name=<name> \
1 --region=<aws_region> \
2 --public-key-file=<path_to_ccoctl_output_dir>/serviceaccount-signer.public
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서
openid-configuration
은 검색 문서이고keys.json
은 JSON 웹 키 세트 파일입니다.이 명령은
/<path_to_ccoctl_output_dir>/manifests/cluster-authentication-02-config.yaml
에 YAML 구성 파일도 생성합니다. 이 파일은 AWS IAM ID 공급자가 토큰을 신뢰하도록 클러스터가 생성하는 서비스 계정 토큰의 발급자 URL 필드를 설정합니다.클러스터의 각 구성 요소에 대한 IAM 역할을 생성합니다.
다음 명령을 실행하여 설치 파일의 릴리스 이미지로
$RELEASE_IMAGE
변수를 설정합니다.RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform 릴리스 이미지에서
CredentialsRequest
오브젝트 목록을 추출합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow ccoctl
툴을 사용하여 다음 명령을 실행하여 모든CredentialsRequest
오브젝트를 처리합니다.ccoctl aws create-iam-roles \ --name=<name> \ --region=<aws_region> \ --credentials-requests-dir=<path_to_credentials_requests_directory> \ --identity-provider-arn=arn:aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com
$ ccoctl aws create-iam-roles \ --name=<name> \ --region=<aws_region> \ --credentials-requests-dir=<path_to_credentials_requests_directory> \ --identity-provider-arn=arn:aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고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
디렉터리에 파일을 나열합니다.ls <path_to_ccoctl_output_dir>/manifests
$ ls <path_to_ccoctl_output_dir>/manifests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS를 쿼리하여 IAM 역할이 생성되었는지 확인할 수 있습니다. 자세한 내용은 IAM 역할 나열에 대한 AWS 설명서를 참조하십시오.
6.8.2.3. Cloud Credential Operator 유틸리티 매니페스트 통합 링크 복사링크가 클립보드에 복사되었습니다!
개별 구성 요소에 대해 클러스터 외부에서 관리되는 단기 보안 인증 정보를 구현하려면 Cloud Credential Operator 유틸리티(ccoctl
)가 생성된 매니페스트 파일을 설치 프로그램의 올바른 디렉터리로 이동해야 합니다.
사전 요구 사항
- 클러스터를 호스팅하는 클라우드 플랫폼으로 계정을 구성했습니다.
-
Cloud Credential Operator 유틸리티(
ccoctl
)를 구성했습니다. -
ccoctl
유틸리티를 사용하여 클러스터에 필요한 클라우드 공급자 리소스를 생성했습니다.
프로세스
install-config.yaml
구성 파일의credentialsMode
매개변수를Manual
로 설정하지 않은 경우 다음과 같이 값을 수정합니다.구성 파일 스니펫 샘플
apiVersion: v1 baseDomain: example.com credentialsMode: Manual # ...
apiVersion: v1 baseDomain: example.com credentialsMode: Manual # ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전에 설치 매니페스트 파일을 생성하지 않은 경우 다음 명령을 실행하여 수행합니다.
openshift-install create manifests --dir <installation_directory>
$ openshift-install create manifests --dir <installation_directory>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서
<installation_directory>
는 설치 프로그램이 파일을 생성하는 디렉터리입니다.ccoctl
유틸리티가 생성된매니페스트
를 다음 명령을 실행하여 설치 프로그램에서 생성한 매니페스트에 복사합니다.cp /<path_to_ccoctl_output_dir>/manifests/* ./manifests/
$ cp /<path_to_ccoctl_output_dir>/manifests/* ./manifests/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 개인 키가 포함된
tls
디렉터리를 설치 디렉터리에 복사합니다.cp -a /<path_to_ccoctl_output_dir>/tls .
$ cp -a /<path_to_ccoctl_output_dir>/tls .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow