개요
이 기능을 사용하면 플랫폼 관리자가 다음을 수행할 수 있습니다.
- Hashicorp Vault에서 Cassandra 사용자 인증 정보를 순환합니다.
- 비밀번호 순환 중 문제가 발생하면 Vault에 있는 이전 Cassandra 사용자 인증 정보로 롤백합니다.
- 한 번에 하나의 리전에 대해 Cassandra 비밀번호를 순환하여 서비스 가용성에 대한 영향을 최소화하고 순환 프로세스를 효율적으로 제어할 수 있습니다.
- 단일 리전의 순환 시작, 진행률 및 완료를 추적합니다.
이 기능은 Apigee Hybrid 1.13.1 이상에서 제공됩니다.
시작하기 전에
사용자 인증 정보 순환을 설정하기 전
- Cassandra 데이터베이스를 백업합니다. 이 백업은 순환 전 사용자 인증 정보를 복원할 수 있도록 하기 위한 것입니다.
- 클러스터가 정상 상태인지 확인합니다(즉, 모든 Apigee 리소스가 실행 중이고 대기 중인 상태 변경사항이 없음).
단일 리전 설정
- 
    새 Cassandra 사용자 인증 정보에 대해 Apigee 네임스페이스에 새로운 SecretProviderClassKubernetes 리소스를 만듭니다. 사용할 템플릿은 Hashicorp Vault에 Cassandra 보안 비밀 저장을 참조하세요. 이렇게 하면 Vault 역할이 Kubernetes 네임스페이스 내의 보안 비밀에 액세스할 수 있습니다.
- 
    다음 템플릿을 사용하여 새 SecretRotation커스텀 리소스를 만듭니다.# rotation.yaml apiVersion: apigee.cloud.google.com/v1alpha1 kind: SecretRotation metadata: name: ROTATION_PROCESS_NAME namespace: APIGEE_NAMESPACE spec: organizationId: ORG_NAME rotationId: ROTATION_ID timeoutMinutes: 480 # optional. overrides the default (480m == 8hr). # less than or equal to 0 means infinite timeout. precheck: true cassandra: oldSecretProviderClass: OLD_SPC_NAME newSecretProviderClass: NEW_SPC_NAME jobType: ROTATE- ROTATION_PROCESS_NAME: 순환 작업의 고유 이름입니다. 순환 사전 확인 작업 및 순환 작업에 대해 metadata.name을 고유한 값으로 설정해야 합니다. 예를 들어sr-1-precheck다음에sr-1과 같이 설정할 수 있습니다.
- ROTATION_ID: spec.rotationId를 커스텀 식별자(예:rotation-1-precheck)로 설정합니다.
- NEW_SPC_NAME: spec.cassandra.newSecretProviderClass를 이전 단계에서 만든 새로운 보안 비밀 제공자 클래스 이름으로 설정합니다.
- OLD_SPC_NAME: spec.cassandra.oldSecretProviderClass를ApigeeDatastore에서 현재 사용 중인 SPC 이름으로 설정합니다.
 
- ROTATION_PROCESS_NAME: 순환 작업의 고유 이름입니다. 순환 사전 확인 작업 및 순환 작업에 대해 
- 
    rotation.yaml파일을 적용하여 순환 사전 확인 작업을 트리거합니다.kubectl -n APIGEE_NAMESPACE apply -f rotation.yaml 
- 
    사전 확인 작업이 완료되었을 때 확인할 작업 상태를 확인합니다.
    kubectl -n APIGEE_NAMESPACE get job sr-(rotationId)-(rotate|rollback|cleanup)-job 
- 
    순환 사전 확인 작업이 완료되면 metadata.name값을 변경하고spec.precheck를false로 설정합니다. 파일을 다시 적용하여 순환을 수행합니다.kubectl -n APIGEE_NAMESPACE apply -f rotation.yaml 
- 
    순환 작업이 완료되고 트래픽이 계속 올바르게 작동하는지 확인되었으면 다음 두 단계에 따라 프로세스를 정리합니다.
    - 
        metadata.name의 값을 업데이트하고spec.cassandra.jobType을CLEANUP으로 설정합니다.
- 
        파일을 적용하여 정리 작업을 트리거합니다.
        kubectl -n APIGEE_NAMESPACE apply -f rotation.yaml 
 정리 작업이 끝나면 순환 프로세스가 완료됩니다. 
- 
        
- Cassandra 데이터베이스를 백업합니다. 이 백업은 순환된 사용자 인증 정보를 복원할 수 있도록 하기 위한 것입니다.
- Vault에서 이전 Cassandra 사용자 인증 정보, 역할, 정책을 삭제합니다.
멀티 리전 설정
멀티 리전 설정 절차는 첫 번째 리전 설정과 남은 리전 설정의 두 섹션으로 구분됩니다.
- 후속 리전을 시작하기 전에 첫 번째 리전에서 다음 단계를 완료합니다.
    - 
        새 Cassandra 사용자 인증 정보에 대해 APIGEE_NAMESPACE네임스페이스에 새로운SecretProviderClassKubernetes 리소스를 만듭니다. 사용할 템플릿은 Hashicorp Vault에 Cassandra 보안 비밀 저장을 참조하세요. 이렇게 하면 Vault 역할이 Kubernetes 네임스페이스 내의 보안 비밀에 액세스할 수 있습니다.
- 
        다음 템플릿을 사용하여 새 SecretRotation커스텀 리소스를 만듭니다.# rotation.yaml apiVersion: apigee.cloud.google.com/v1alpha1 kind: SecretRotation metadata: name: ROTATION_PROCESS_NAME namespace: APIGEE_NAMESPACE spec: organizationId: ORG_NAME rotationId: ROTATION_ID timeoutMinutes: -1 # this value is required and should not be changed. precheck: true cassandra: oldSecretProviderClass: OLD_SPC_NAME newSecretProviderClass: NEW_SPC_NAME jobType: ROTATE- ROTATION_PROCESS_NAME: 순환 작업의 고유 이름입니다. 순환 사전 확인 작업 및 순환 작업에 대해 metadata.name을 고유한 값으로 설정해야 합니다. 예를 들어sr-1-precheck다음에sr-1과 같이 설정할 수 있습니다.
- ROTATION_ID: spec.rotationId를 커스텀 식별자(예:rotation-1-precheck)로 설정합니다.
- NEW_SPC_NAME: spec.cassandra.newSecretProviderClass를 이전 단계에서 만든 새로운 보안 비밀 제공자 클래스 이름으로 설정합니다.
- OLD_SPC_NAME: spec.cassandra.oldSecretProviderClass를ApigeeDatastore에서 현재 사용 중인 SPC 이름으로 설정합니다.
 
- ROTATION_PROCESS_NAME: 순환 작업의 고유 이름입니다. 순환 사전 확인 작업 및 순환 작업에 대해 
- 
        rotation.yaml파일을 적용하여 순환 사전 확인 작업을 트리거합니다.kubectl -n APIGEE_NAMESPACE apply -f rotation.yaml 
- 
        사전 확인 작업이 완료되었을 때 확인할 작업 상태를 확인합니다.
        kubectl -n APIGEE_NAMESPACE get job sr-(rotationId)-(rotate|rollback|cleanup)-job 
- 
        순환 사전 확인 작업이 완료된 후 다음 안내를 따르세요.
        - metadata.name값을 변경합니다(예:- sr-1-precheck에서- sr-1로).
- spec.precheck를- false로 설정하여 사전 확인을 사용 중지하고 순환을 실행합니다.
- spec.rotationId를 새 식별자로 설정합니다(예:- rotation-1).
 
- 
        파일을 다시 적용하여 순환을 수행합니다.
        kubectl -n APIGEE_NAMESPACE apply -f rotation.yaml 
- 
        SecretRotation상태를 확인하고complete가 될 때까지 기다립니다.kubectl -n APIGEE_NAMESPACE get sr SR_NAME 
 
- 
        새 Cassandra 사용자 인증 정보에 대해 
- 
    이후 각 리전에서 다음 단계를 완료합니다.
    - 새 Cassandra 사용자 인증 정보에 대해 Apigee 네임스페이스에 새로운 SecretProviderClassKubernetes 리소스를 만듭니다. 사용할 템플릿은 Hashicorp Vault에 Cassandra 보안 비밀 저장을 참조하세요. 1a단계와 동일한 정의여야 합니다.
- overrides.yaml을 업데이트하고- rotation.yaml파일의- spec.cassandra.newSecretProviderClass값과 일치하도록- cassandra.auth.secretProviderClass를 설정합니다.- cassandra: auth: secretProviderClass: NEW_SPC_NAME
- 연산자 차트를 적용합니다.
        helm upgrade operator apigee-operator/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE 
- 
        새 ReplicaSet가 생성됩니다. 새 컨트롤러 관리자 포드가 새 SPC를 사용하는지 확인합니다.export POD=NEW_CONTROLLER_MANAGER_POD_NAME kubectl -n APIGEE_NAMESPACE get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'결과는 rotation.yaml에서spec.cassandra.newSecretProviderClass에 설정한 값과 일치해야 합니다. 예를 들면 다음과 같습니다.kubectl -n apigee get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'my-new-spc
- 데이터 스토어 차트를 적용합니다.
        helm upgrade datastore apigee-datastore/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE 
- 데이터 스토어가 출시 상태로 전환됩니다. 데이터 스토어의 출시가 완료되고 실행 상태가 될 때까지 기다립니다.
        kubectl -n APIGEE_NAMESPACE get apigeedatastore DATASTORE_NAME 대부분의 설치에서 DATASTORE_NAME은 default입니다.
- 새 데이터 스토어 포드에서 새 SPC를 사용하는지 확인합니다.
        export POD=NEW_DATASTORE_POD_NAME kubectl -n APIGEE_NAMESPACE get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'결과는 rotation.yaml에서spec.cassandra.newSecretProviderClass에 설정한 값과 일치해야 합니다. 예를 들면 다음과 같습니다.kubectl -n apigee get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'my-new-spc
- 조직 및 환경 출시가 완료되고 실행 중 상태로 돌아갈 때까지 기다립니다.
        kubectl -n APIGEE_NAMESPACE get apigeeorg ORG_NAME kubectl -n APIGEE_NAMESPACE get apigeeenv ENV_NAME
- 새 MART, 런타임, 동기화기 포드가 새 SPC를 사용하는지 확인합니다.
        export POD=NEW_MART_POD_NAME kubectl -n APIGEE_NAMESPACE get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'export POD=NEW_RUNTIME_POD_NAMEkubectl -n APIGEE_NAMESPACE get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'export POD=NEW_SYNCHRONIZER_POD_NAMEkubectl -n APIGEE_NAMESPACE get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'결과는 rotation.yaml에서spec.cassandra.newSecretProviderClass에 설정한 값과 일치해야 합니다. 예를 들면 다음과 같습니다.kubectl -n apigee get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'my-new-spc
 
- 새 Cassandra 사용자 인증 정보에 대해 Apigee 네임스페이스에 새로운 
- 
    모든 리전의 단계를 완료하고 트래픽이 올바르게 작동하는지 확인한 후 다음 두 단계에 따라 첫 번째 리전에서 프로세스를 정리합니다.
    - 
        첫 번째 리전에서 metadata.name값을 업데이트하고spec.cassandra.jobType을CLEANUP으로 설정합니다.
- 
        파일을 적용하여 정리 작업을 트리거합니다.
        kubectl -n APIGEE_NAMESPACE apply -f rotation.yaml 
- 작업 상태를 확인하고 작업 로그를 통해 정리 작업이 완료되었는지 확인합니다.
 정리 작업이 끝나면 순환 프로세스가 완료됩니다. 
- 
        첫 번째 리전에서 
- Cassandra 데이터베이스를 백업합니다. 이 백업은 순환된 사용자 인증 정보를 복원할 수 있도록 하기 위한 것입니다.
- Vault에서 이전 Cassandra 사용자 인증 정보, 역할, 정책을 삭제합니다.