Docker 및 Helm을 사용한 자격 증명 풀링

어떤 상황에서는 "풀(pool)"을 만드는 것이 바람직할 수 있습니다. 예를 들어, 속도 제한 문제를 해결하기 위해 자격 증명 풀을 만들 수 있습니다. 이를 위해 쉼표로 각 자격 증명을 구분하여 끝이 _POOL로 끝나는 환경 변수를 만듭니다. Broker Client는 변수 대체를 수행할 때 사용 중인 변수에 _POOL 접미사가 있는지 확인하고 있다면 해당 풀에서 다음 아이템을 사용합니다. 예를 들어, GITHUB_TOKEN 환경 변수를 설정했지만 여러 토큰을 제공하려는 경우 다음과 같이 수행할 수 있습니다:

GITHUB_TOKEN_POOL=token1, token2, token3

이 환경 변수와 값을 Helm Chart에 추가할 수 있습니다.

그러면 Broker Client는 GITHUB_TOKEN이 필요할 때마다 GITHUB_TOKEN_POOL에서 항목을 가져옵니다.

자격 증명은 순환 방식으로 취득되며, 처음, 두 번째, 세 번째와 같이 계속해서 Broker Client가 끝에 도달하고 다시 처음 자격 증명을 취득합니다.

/systemcheck 엔드포인트를 호출하면 모든 자격 증명을 확인하여 순서대로 배열을 반환하며, 첫 번째 항목부터 차례대로 반환합니다. 예를 들어, GitHub Client를 실행하고 다음과 같은 설정이 있는 경우:

GITHUB_TOKEN_POOL=good_token, bad_token

/systemcheck 엔드포인트는 다음과 같이 반환하며 첫 번째 객체는 good_token에 대한 것이고 두 번째는 bad_token에 대한 것입니다:

[
  {
    "brokerClientValidationUrl": "https://api.github.com/user",
    "brokerClientValidationMethod": "GET",
    "brokerClientValidationTimeoutMs": 5000,
    "brokerClientValidationUrlStatusCode": 200,
    "ok": true,
    "maskedCredentials": "goo***ken"
  },
  {
    "brokerClientValidationUrl": "https://api.github.com/user",
    "brokerClientValidationMethod": "GET",
    "brokerClientValidationTimeoutMs": 5000,
    "ok": false,
    "error": "401 - {\"message\":\"Bad credentials\",\"documentation_url\":\"https://docs.github.com/rest\"}",
    "maskedCredentials": "bad***ken"
  }
]

자격 증명은 마스킹되어 표시됩니다. 그러나 사용자 자격 증명에 문자가 6개 이하 포함된 경우 마스크로 완전히 대체됩니다.

자격 증명 풀링의 한계

자격 증명의 유효성이 사용하기 전에 확인되지 않으며, 유효하지 않은 자격 증명이 풀에서 제거되지 않으므로 다른 시간에 자격 증명이 속도 제한에 도달하는 것을 피하기 위해 자격 증명이 Broker Client에 의해 독점적으로 사용되는 것이 강력히 권장됩니다. 또한 사용하기 전에 /systemcheck 엔드포인트를 호출하는 것이 좋습니다.

GitHub와 같은 일부 제공업체는 토큰 또는 자격 증명 당이 아니라 사용자 당 속도 제한을 적용하며, 이러한 경우에는 하나의 자격 증명 당 하나의 계정을 만들어야 합니다.

자격 증명 매트릭스

자격 증명 매트릭스 생성은 지원되지 않습니다.

이 경우 "매트릭스"는 길이가 'x' 및 'y' 인 두 개 이상의 _POOL을 가져와 최종 길이가 x * y인 하나의 최종 풀을 생성하는 것을 정의합니다. 예를 들어, 다음과 같은 입력이 주어진 경우:

USERNAME_POOL=u1, u2, u3
PASSWORD_POOL=p1, p2, p3
CREDENTIALS_POOL=$USERNAME:$PASSWORD

매트릭스 지원은 내부적으로 다음을 생성합니다:

CREDENTIALS_POOL=u1:p1,u1:p2,u1:p3,u2:p1,u2:p2,u2:p3,u3:p1,u3:p2,u3:p3

대신, Broker Client는 내부적으로 첫 번째로 발견된 풀만 사용하여 다음을 생성합니다:

CREDENTIALS_POOL=u1:$PASSWORD,u2:$PASSWORD,u3:$PASSWORD

Last updated