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_LEVELinfo 가 포함되어 있다고 가정합니다. 다음은 출력 파일에 복사됩니다.

  log /var/log/msg local1 info

허용되는 각 경로는 구성 파일에서 행 생성을 종료합니다. 범위를 사용하여 허용된 경로를 통과합니다.

{{ range $cfgIdx, $cfg := .State }}
  backend be_http_{{$cfgIdx}}
{{end}}

.stateServiceAliasConfig 의 맵입니다. 키는 경로 이름입니다. 범위는 맵을 통과하며, 통과할 때마다 키로 $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 }}

여기서 $balanceAlgonil 이 아닌 경우$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"
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.