5.2.2. vaulttenantsa를 사용하기 위한 사전 요구 사항
-
OpenShift Data Foundation 클러스터는
Ready상태입니다. 외부 키 관리 시스템 (KMS)
- 정책이 존재하고 Vault에서 키 값 백엔드 경로가 활성화되어 있는지 확인합니다. 자세한 내용은 Vault에서 키 값 및 정책 활성화를 참조하십시오.
- Vault 서버에서 서명된 인증서를 사용하고 있는지 확인합니다.
다음과 같이 테넌트 네임스페이스에 다음 serviceaccount를 생성합니다.
$ cat <<EOF | oc create -f - apiVersion: v1 kind: ServiceAccount metadata: name: ceph-csi-vault-sa EOFOpenShift Data Foundation에서 인증하고 Vault를 사용하기 전에 Kubernetes 인증 방법을 구성해야 합니다. 아래 지침은 OpenShift Data Foundation이 Vault로 인증할 수 있도록 하는 데 필요한
serviceAccount,ClusterRole,ClusterRoleBinding을 생성 및 구성합니다.Openshift 클러스터에 다음 YAML을 적용합니다.
apiVersion: v1 kind: ServiceAccount metadata: name: rbd-csi-vault-token-review --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: rbd-csi-vault-token-review rules: - apiGroups: ["authentication.k8s.io"] resources: ["tokenreviews"] verbs: ["create", "get", "list"] --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: rbd-csi-vault-token-review subjects: - kind: ServiceAccount name: rbd-csi-vault-token-review namespace: openshift-storage roleRef: kind: ClusterRole name: rbd-csi-vault-token-review apiGroup: rbac.authorization.k8s.io위에서 만든 serviceaccount(SA)와 관련된 시크릿 이름을 확인합니다.
$ oc -n openshift-storage get sa rbd-csi-vault-token-review -o jsonpath="{.secrets[*]['name']}"시크릿에서 토큰 및 CA 인증서를 가져옵니다.
$ oc get secret <secret associated with SA> -o jsonpath="{.data['token']}" | base64 --decode; echo $ oc get secret <secret associated with SA> -o jsonpath="{.data['ca\.crt']}" | base64 --decode; echoOCP 클러스터 끝점을 검색합니다.
$ oc config view --minify --flatten -o jsonpath="{.clusters[0].cluster.server}"다음과 같이 Vault에서 kubernetes 인증 방법을 설정하려면 위 단계에서 수집된 정보를 사용합니다.
$ vault auth enable kubernetes $ vault write auth/kubernetes/config token_reviewer_jwt=<SA token> kubernetes_host=<OCP cluster endpoint> kubernetes_ca_cert=<SA CA certificate>
테넌트 네임스페이스에 대한 Vault에서 역할을 생성합니다.
$ vault write "auth/kubernetes/role/csi-kubernetes" bound_service_account_names="ceph-csi-vault-sa" bound_service_account_namespaces=<tenant_namespace> policies=<policy_name_in_vault>
CSI-kubernetes는 OpenShift Data Foundation에서 Vault를 찾는 기본 역할 이름입니다. Openshift Data Foundation 클러스터의 테넌트 네임스페이스의 기본 서비스 계정 이름은ceph-csi-vault-sa입니다. 이러한 기본값은 테넌트 네임스페이스에 ConfigMap을 생성하여 덮어쓸 수 있습니다.기본 이름을 재정의하는 방법에 대한 자세한 내용은 테넌트 ConfigMap을 사용하여 Vault 연결 세부 정보를 참조하십시오.
PV encrytpion에 대해
vaulttenantsa방법을 사용하는 스토리지 클래스를 생성하려면 기존 ConfigMap을 편집하거나 Vault와의 연결을 설정하는 데 필요한 모든 정보를 보유하는csi-kms-connection-details라는 ConfigMap을 생성해야 합니다.아래 제공된 샘플 yaml을 사용하여
csi-kms-connection-detailConfigMap을 업데이트하거나 생성할 수 있습니다.apiVersion: v1 data: vault-tenant-sa: |- { "encryptionKMSType": "vaulttenantsa", "vaultAddress": "<https://hostname_or_ip_of_vault_server:port>", "vaultTLSServerName": "<vault TLS server name>", "vaultAuthPath": "/v1/auth/kubernetes/login", "vaultAuthNamespace": "<vault auth namespace name>" "vaultNamespace": "<vault namespace name>", "vaultBackendPath": "<vault backend path name>", "vaultCAFromSecret": "<secret containing CA cert>", "vaultClientCertFromSecret": "<secret containing client cert>", "vaultClientCertKeyFromSecret": "<secret containing client private key>", "tenantSAName": "<service account name in the tenant namespace>" } metadata: name: csi-kms-connection-details-
EncryptionKMSType: 자격 증명 모음 인증에 서비스 계정을 사용하도록vaulttenantsa로 설정해야 합니다. -
vaultAddress: 포트 번호를 사용하여 자격 증명 모음 서버의 호스트 이름 또는 IP 주소입니다. -
vaultTLSServerName: (선택 사항) 자격 증명 모음 TLS 서버 이름 -
vaultAuthPath: (선택 사항) Vault에서 kubernetes auth 메서드가 활성화된 경로입니다. 기본 경로는kubernetes입니다.kubernetes이외의 다른 경로에서 auth 메서드를 활성화하면 이 변수를"/v1/auth/<path>/login"으로 설정해야 합니다. -
vaultAuthNamespace: (선택 사항) kubernetes auth 메서드가 활성화된 Vault 네임스페이스입니다. -
vaultNamespace: (선택 사항) 키를 저장하는 데 사용되는 백엔드 경로가 존재하는 Vault 네임스페이스 -
vaultBackendPath: 암호화 키가 저장되는 Vault의 백엔드 경로입니다. -
vaultCAFromSecret: Vault의 CA 인증서를 포함하는 OpenShift Data Foundation 클러스터의 시크릿 -
vaultClientCertFromSecret: Vault의 클라이언트 인증서를 포함하는 OpenShift Data Foundation 클러스터의 시크릿 -
vaultClientCertKeyFromSecret: Vault의 클라이언트 개인 키를 포함하는 OpenShift Data Foundation 클러스터의 시크릿 -
tenantSAName: (선택 사항) 테넌트 네임스페이스의 서비스 계정 이름입니다. 기본값은ceph-csi-vault-sa입니다. 다른 이름을 사용해야 하는 경우 이 변수를 적절하게 설정해야 합니다.
-
다음으로 5.2.3절. “PV 암호화용 스토리지 클래스 생성 절차” 의 단계를 따르십시오.