서비스 프로파일
서비스 프로파일 (Service Profiles)
서비스 프로파일은 Linkerd에 서비스에 대한 추가 정보를 제공해요. 이 문서는 서비스 프로파일로 할 수 있는 모든 것을 다루는 레퍼런스예요. 다만 Linkerd 2.16부터 ServiceProfile은 라우트별 메트릭, 타임아웃, 재시도 지정을 포함해 Gateway API 유형으로 완전히 대체되었고, 하위 호환성을 위해 계속 지원되지만 더 이상의 기능 개발은 없어요.
본문
경고
Linkerd 2.16부터 ServiceProfile은 Gateway API 유형으로 완전히 대체되었어요. 여기에는 라우트별 메트릭 얻기, 타임아웃 지정, 재시도 지정이 포함돼요. 서비스 프로파일은 하위 호환성을 위해 계속 지원되지만, 더 이상의 기능 개발은 없어요.
서비스 프로파일은 Linkerd에 서비스에 대한 추가 정보를 제공해요. 이 문서는 서비스 프로파일로 할 수 있는 모든 것에 대한 레퍼런스예요.
Spec
서비스 프로파일 스펙은 다음 최상위 필드를 포함해야 해요.
| field | value |
|---|---|
| field | value |
| routes | 라우트 객체 목록 |
| retryBudget | 이 서비스로의 최대 재시도 비율을 정의하는 재시도 예산 객체 |
Route
라우트 객체는 다음 필드를 포함해야 해요.
| field | value |
|---|---|
| field | value |
| name | 라우트 레이블에 나타날 이 라우트의 이름 |
| condition | 요청이 이 라우트와 일치하는지 정의하는 요청 매치 객체 |
| responseClasses | (선택) 응답 클래스 객체 목록 |
| isRetryable | 이 라우트로의 요청이 항상 재시도하기에 안전하다는 것을 나타내며, 가능할 때마다 프록시가 이 라우트의 실패한 요청을 재시도하게 함 |
| timeout | 요청 전송 후 응답(재시도 포함)이 완료될 때까지 기다리는 최대 시간 |
Request Match
요청 매치 객체는 다음 필드 중 정확히 하나를 포함해야 해요.
| field | value |
|---|---|
| field | value |
| pathRegex | 요청 경로와 매칭할 정규식 |
| method | GET, POST, PUT, DELETE, OPTION, HEAD, TRACE 중 하나 |
| all | 모두 일치해야 하는 요청 매치 객체 목록 |
| any | 적어도 하나는 일치해야 하는 요청 매치 객체 목록 |
| not | 일치하지 않아야 하는 요청 매치 객체 |
Request Match 사용 예시
가장 단순한 조건은 경로 정규식이에요.
`pathRegex: '/authors/\d+'
`
이것은 요청 메서드를 확인하는 조건이에요.
`method: POST
`
둘 이상의 조건 필드가 설정되면 모두 충족되어야 해요. 이는 'all' 조건을 사용하는 것과 같아요.
`all:
- pathRegex: '/authors/\d+'
- method: POST
`
조건은 'all', 'any', 'not'으로 결합할 수 있어요.
`any:
- all:
- method: POST
- pathRegex: '/authors/\d+'
- all:
- not:
method: DELETE
- pathRegex: /info.txt
`
Response Class
응답 클래스 객체는 다음 필드를 포함해야 해요.
| field | value |
|---|---|
| field | value |
| condition | 응답이 이 응답 클래스와 일치하는지 정의하는 응답 매치 객체 |
| isFailure | 이 응답들을 실패로 분류해야 하는지 정의하는 불리언 |
Response Match
응답 매치 객체는 다음 필드 중 정확히 하나를 포함해야 해요.
| field | value |
|---|---|
| field | value |
| status | 응답 상태 코드를 매칭할 상태 범위 객체 |
| all | 모두 일치해야 하는 응답 매치 객체 목록 |
| any | 적어도 하나는 일치해야 하는 응답 매치 객체 목록 |
| not | 일치하지 않아야 하는 응답 매치 객체 |
Response Match 조건은 위의 Request Match 사용 예시와 비슷한 방식으로 결합할 수 있어요.
Status Range
상태 범위 객체는 다음 필드 중 적어도 하나를 포함해야 해요. min이나 max 중 하나만 지정하면 그 단일 상태 코드만 매칭돼요.
| field | value |
|---|---|
| field | value |
| min | 상태 코드가 이 값보다 크거나 같아야 함 |
| max | 상태 코드가 이 값보다 작거나 같아야 함 |
Retry Budget
재시도 예산은 원래 요청량의 비율로 이 서비스로 보내야 하는 최대 총 재시도 횟수를 지정해요.
| field | value |
|---|---|
| field | value |
| retryRatio | 원래 요청에 대한 재시도 요청의 최대 비율 |
| minRetriesPerSecond | retryRatio가 허용하는 것 외에 초당 추가로 허용되는 재시도 |
| ttl | retryRatio 계산 목적으로 요청을 얼마나 오랫동안 고려해야 하는지 나타냄 |