keenauth config promote로 설정 승격하기

keenauth config promote은 한 환경의 설정을 다른 환경으로 복사합니다(예: staging에서 production으로). 이 명령은 config export, config plan, config apply으로 직접 수행할 단계와 같은 단계를 실행하되, 문서를 파일에 쓰지는 않습니다:

  1. --from 환경의 설정 문서를 내보냅니다.
  2. --to 환경에 대해 이 문서의 계획을 만듭니다.
  3. 차이를 출력합니다: + 생성, ~ 업데이트, - 삭제; 변경되지 않은 리소스는 개수만 집계합니다.
  4. 확인 후 계획을 적용합니다.

두 환경은 서로 다른 리전에 있을 수 있습니다. 리전끼리는 서로 호출하지 않으며, 문서는 사용자의 컴퓨터를 거쳐 메모리에만 머무릅니다.

시작하기 전에

이 명령은 두 환경 모두에 접근해야 하므로 대시보드 로그인을 사용합니다. keenauth login로 로그인하십시오(keenauth login으로 로그인하기 참조). 두 환경 모두에서 원본의 설정을 읽고 대상의 설정을 쓸 수 있는 대시보드 역할이 필요합니다. API 키는 하나의 환경에 속하므로, KEENAUTH_API_KEY가 설정되어 있으면 명령은 실행을 거부하고 종료 코드 2로 끝납니다.

사용법

keenauth config promote --from env_01j9z3k4m5n6p7q8r9s0t1stg0 --to env_01j9z3k4m5n6p7q8r9s0t1prd0
플래그 설명
--from 원본 환경의 ID(env_…)로, 설정을 내보냅니다(필수).
--to 대상 환경의 ID(env_…)로, 계획이 생성되고 적용됩니다(필수).
--kinds 승격할 종류. 쉼표로 구분하거나 반복하여 지정합니다. config export와 같습니다. 기본값: 모든 종류.
--prune 승격 대상 종류 중 대상 환경에만 있는 리소스도 삭제합니다. 이 플래그가 없으면 유지됩니다.
--secrets-from-env 계획에 필요한 클라이언트 시크릿을 로컬 환경 변수에서 읽습니다(아래 참조).
--confirm-deletion 보호된 삭제를 <kind>/<key>로 확인합니다. config apply와 같습니다.
--sp-host 대상 환경의 서비스 제공자 호스트(예: login.example.com). 계획이 대상에 엔터프라이즈 연결의 OIDC 자료를 생성할 때만 필요하며, 그 외에는 생략하십시오.
--yes, -y 묻지 않고 적용합니다. 표준 입력이 터미널이 아닐 때 필요합니다.
--output, -o table, json 또는 yaml 형식으로 출력합니다. 플래그가 없으면 CLI는 터미널에서 표를, 그 외에는 JSON을 출력합니다.

터미널에서(table) 차이는 표준 출력에, 질문은 표준 에러에 출력되며, 적용 후에는 계획 ID, 상태, 변경 수가 담긴 한 줄이 출력됩니다. json 또는 yaml을 사용하면 차이는 표준 에러로 출력되고 표준 출력에는 적용된 계획만 담기므로 스크립트에서 읽을 수 있습니다. 대상이 이미 원본과 같으면 명령은 nothing to promote를 출력하고 아무것도 적용하지 않습니다.

표준 입력이 터미널이 아니고 --yes가 없으면, 명령은 어떤 요청도 보내기 전에 종료 코드 2로 끝납니다.

시크릿은 승격되지 않습니다

내보낸 문서에는 시크릿 값이 전혀 들어 있지 않습니다. 연결의 클라이언트 시크릿은 secret_ref 자리표시자(예: KEENAUTH_CONNECTION_GOOGLE_CLIENT_SECRET)로 나타납니다. 시크릿이 필요한 대상의 변경은 [needs a client secret]와 함께 표시됩니다.

이러한 계획은 직접 시크릿을 제공하지 않으면 적용되지 않습니다. 오류에 표시된 환경 변수를 설정하고 --secrets-from-env와 함께 명령을 다시 실행하십시오. 값은 로컬 환경에서 읽히며 적용 요청의 본문으로만 전송됩니다. 출력되거나 파일에 기록되거나 원본 환경에서 읽히는 일은 없습니다.

export KEENAUTH_CONNECTION_GOOGLE_CLIENT_SECRET=...   # the production client secret
keenauth config promote --from env_01j9z3k4m5n6p7q8r9s0t1stg0 --to env_01j9z3k4m5n6p7q8r9s0t1prd0 --secrets-from-env

엔터프라이즈 OIDC 및 소셜 연결

엔터프라이즈 연결의 OIDC 설정(spec.oidc: 발급자, 클라이언트 ID, 클라이언트 인증 방식, 공급자 프로필)은 연결과 함께 승격됩니다. 대상에 아직 이 설정이 없으면 적용 시 설정이 생성되고 콜백 URL이 대상의 호스트로 고정됩니다. 따라서 대상 환경에서 사용자가 로그인하는 호스트를 --sp-host와 함께 전달하십시오. 호스트는 환경마다 다르므로 문서에 포함되지 않습니다.

소셜 연결의 클라이언트 시크릿은 아직 계획에서 적용할 수 없습니다. 계획에 이것이 필요하면 --secrets-from-env를 사용하더라도 적용은 501 not_implemented와 함께 거부되며 아무것도 변경되지 않습니다. 다른 종류는 --kinds로 승격하거나, 지원되기 전까지 소셜 연결을 원본에서 제외하십시오.

오류

계획은 한 시간 동안 유효합니다. 계획과 적용 사이에 대상의 리소스가 변경되면 적용은 409 config_conflict와 함께 거부되며 아무것도 변경되지 않습니다. 명령을 다시 실행하십시오. 그 밖의 적용 오류는 config apply와 같습니다.

종료 코드

코드 의미
0 계획이 적용되었거나, 승격할 것이 없었습니다.
1 서버 오류이거나, 확인을 거절했습니다(aborted).
2 사용 오류: 잘못되었거나 동일한 환경 ID, 대화형이 아닌 터미널에서 --yes 누락, KEENAUTH_API_KEY 설정됨, 또는 계획에 필요한 시크릿 누락. 아무것도 적용되지 않았습니다.
3 로그인되어 있지 않거나, 서버가 401 또는 403로 응답했습니다.
4 계획에 해당 기능이 포함되어 있지 않습니다(403와 plan_feature_unavailable).