3.3.3.6. 사용 예
다음은 HAProxy 템플릿 파일을 기반으로 하는 간단한 템플릿입니다.
코멘트로 시작하십시오.
{{/* Here is a small example of how to work with templates taken from the HAProxy template file. */}}
템플릿에서 원하는 수의 출력 파일을 만들 수 있습니다. define 구문을 사용하여 출력 파일을 만듭니다. 파일 이름은 정의할 인수로 지정되며, 내부에 있는 블록은 일치하는 끝까지 모두 파일의 내용으로 작성됩니다.
{{ define "/var/lib/haproxy/conf/haproxy.config" }} global {{ end }}
위의 는 global
을 /var/lib/haproxy/conf/haproxy.config 파일에 복사한 다음 파일을 닫습니다.
환경 변수를 기반으로 로깅을 설정합니다.
{{ with (env "ROUTER_SYSLOG_ADDRESS" "") }} log {{.}} {{env "ROUTER_LOG_FACILITY" "local1"}} {{env "ROUTER_LOG_LEVEL" "warning"}} {{ end }}
env
함수는 환경 변수의 값을 추출합니다. 환경 변수가 정의되지 않았거나 nil
이 없으면 두 번째 인수가 반환됩니다.
with 구문을 사용하여 블록 내에서 "."( 점)의 값을 와 함께 에 인수로 제공됩니다. 를 사용하여
nil
에 대한 Dot를 테스트합니다. nil
이 아니면 절이 종료
까지 처리됩니다. 위의 경우 ROUTER_SYSLOG_ADDRESS
에 /var/log/msg, ROUTER_LOG_FACILITY
가 정의되지 않은 경우 ROUTER_LOG_LEVEL
에 info
가 포함되어 있다고 가정합니다. 다음은 출력 파일에 복사됩니다.
log /var/log/msg local1 info
허용되는 각 경로는 구성 파일에서 행 생성을 종료합니다. 범위를
사용하여 허용된 경로를 통과합니다.
{{ range $cfgIdx, $cfg := .State }} backend be_http_{{$cfgIdx}} {{end}}
.state
는 ServiceAliasConfig
의 맵입니다. 키는 경로 이름입니다. 범위는
맵을 통과하며, 통과할 때마다 키로
$cfgIdx
를 설정하고 경로를 설명하는 ServiceAliasConfig
를 가리키도록 $cfg
Idx를 설정합니다. myroute
라는 두 개의 경로와 hisroute
가 있는 경우 위의 경로는 다음을 출력 파일에 복사합니다.
backend be_http_myroute backend be_http_hisroute
Route Annotations, $cfg.Annotations
는 주석 이름이 키이고 content 문자열이 값으로 있는 맵이기도 합니다. 경로에는 원하는 만큼 많은 주석이 있을 수 있으며, 이 사용은 템플릿 작성자가 정의합니다. 사용자는 주석을 경로에 코딩하고 템플릿 작성자는 주석을 처리하도록 HAProxy 템플릿을 사용자 지정합니다.
일반적인 사용은 주석을 인덱싱하여 값을 가져오는 것입니다.
{{$balanceAlgo := index $cfg.Annotations "haproxy.router.openshift.io/balance"}}
인덱스는 지정된 주석에 대한 값을 추출합니다(있는 경우). 따라서 $balanceAlgo
에는 주석 또는 nil
과 연결된 문자열이 포함됩니다. 위와 같이nil
이 아닌 문자열을 테스트하고 구문을 사용하여 해당 문자열을 작동할 수
있습니다.
{{ with $balanceAlgo }} balance $balanceAlgo {{ end }}
여기서 $balanceAlgo
가 nil
이 아닌 경우$balanceAlgo
가 출력 파일에 복사됩니다.
두 번째 예에서 주석에 설정된 시간 제한 값에 따라 서버 시간 초과를 설정합니다.
$value := index $cfg.Annotations "haproxy.router.openshift.io/timeout"
이제 $
값을 평가하여 올바르게 구성된 문자열이 포함되어 있는지 확인할 수 있습니다. matchPattern
함수는 정규 표현식을 수락하고 인수가 표현식을 만족하는 경우 true
를 반환합니다.
matchPattern "[1-9][0-9]*(us\|ms\|s\|m\|h\|d)?" $value
이 경우 5000ms
가 허용되지만 7y
는 허용되지 않습니다. 결과는 테스트에서 사용할 수 있습니다.
{{if (matchPattern "[1-9][0-9]*(us\|ms\|s\|m\|h\|d)?" $value) }} timeout server {{$value}} {{ end }}
토큰과 일치시키는 데 사용할 수도 있습니다.
matchPattern "roundrobin|leastconn|source" $balanceAlgo
또는 matchValues
를 사용하여 토큰과 일치시킬 수 있습니다.
matchValues $balanceAlgo "roundrobin" "leastconn" "source"