3.3.4.5. 암호 변경
암호는 이미지 구성의 일부이므로 데이터베이스 사용자(POSTGRESQL_USER
) 및 postgres 관리자 사용자의 암호를 변경하는 데 지원되는 유일한 방법은 환경 변수 POSTGRESQL_PASSWORD
및 POSTGRESQL_ADMIN_PASSWORD
를 각각 변경하는 것입니다.
웹 콘솔에서 Pod 또는 배포 구성을 보거나 CLI로 환경 변수를 나열하여 현재 암호를 볼 수 있습니다.
$ oc set env pod <pod_name> --list
SQL 문을 통해 데이터베이스 암호를 변경하거나 앞서 언급한 환경 변수를 제외한 다른 방식으로 데이터베이스 암호를 변경하면 변수에 저장된 값과 실제 암호가 일치하지 않습니다. 데이터베이스 컨테이너가 시작될 때마다 환경 변수에 저장된 값으로 암호를 재설정합니다.
이러한 암호를 변경하려면 oc set env
명령을 사용하여 관련 배포 구성에 대해 원하는 환경 변수를 하나 또는 둘 다 업데이트합니다. 여러 배포 구성에서 이러한 환경 변수를 활용하는 경우 예를 들어 템플릿에서 생성된 애플리케이션의 경우 암호가 모든 위치에서 동기화되도록 각 배포 구성에서 변수를 업데이트해야 합니다. 이 작업은 모두 동일한 명령에서 수행할 수 있습니다.
$ oc set env dc <dc_name> [<dc_name_2> ...] \ POSTGRESQL_PASSWORD=<new_password> \ POSTGRESQL_ADMIN_PASSWORD=<new_admin_password>
애플리케이션에 따라 애플리케이션의 다른 부분에서 일치하도록 업데이트해야 하는 다른 환경 변수가 있을 수 있습니다. 예를 들어, 데이터베이스 사용자의 암호와 일치해야 하는 프런트 엔드 포드에 더 많은 일반적인 benefits _USER
변수가 있을 수 있습니다. 애플리케이션당 필요한 모든 환경 변수에 대해 암호가 동기화되었는지 확인합니다. 그러지 않으면 트리거 시 Pod가 재배포되지 않을 수 있습니다.
환경 변수를 업데이트하면 구성 변경 트리거 가 있는 경우 데이터베이스 서버의 재배포가 트리거됩니다. 그러지 않으면 암호 변경 사항을 적용하려면 새 배포를 수동으로 시작해야 합니다.
새 암호가 적용되었는지 확인하려면 먼저 실행 중인 PostgreSQL 포드에 대한 원격 쉘 세션을 엽니다.
$ oc rsh <pod>
bash 쉘에서 데이터베이스 사용자의 새 암호를 확인합니다.
bash-4.2$ PGPASSWORD=<new_password> psql -h postgresql $POSTGRESQL_DATABASE $POSTGRESQL_USER -c "SELECT * FROM (SELECT current_database()) cdb CROSS JOIN (SELECT current_user) cu"
암호가 올바르게 변경된 경우 다음과 같은 테이블이 표시됩니다.
current_database | current_user ------------------+-------------- default | django (1 row)
bash 쉘에서 postgres 관리자의 새 암호를 확인합니다.
bash-4.2$ PGPASSWORD=<new_admin_password> psql -h postgresql $POSTGRESQL_DATABASE postgres -c "SELECT * FROM (SELECT current_database()) cdb CROSS JOIN (SELECT current_user) cu"
암호가 올바르게 변경된 경우 다음과 같은 테이블이 표시됩니다.
current_database | current_user ------------------+-------------- default | postgres (1 row)