Felix 구성 파트 10
Felix 구성 레퍼런스의 열 번째(마지막) 파트예요. 앞 파트의 WireguardMTUV6에 이어서 WireguardPersistentKeepAlive부터 시작하고, AWS 연동과 디버그/테스트 전용 설정, 사용량 리포팅 설정이 뒤따라요. 마지막에는 환경 변수, 구성 파일, 데이터스토어에서 Felix 구성을 읽고 바꾸는 방법을 정리했어요. 각 항목은 구성 파일 키와 환경 변수 탭으로 각각 확인할 수 있어요.
출처: 문서
본문
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | WireguardPersistentKeepAlive |
| 설명 | Wireguard PersistentKeepalive 옵션을 제어해요. 끄려면 0으로 설정해요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 0 (0s) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_WIREGUARDPERSISTENTKEEPALIVE |
| 설명 | Wireguard PersistentKeepalive 옵션을 제어해요. 끄려면 0으로 설정해요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 0 (0s) |
WireguardRoutingRulePriority
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | WireguardRoutingRulePriority |
| 설명 | Wireguard 라우팅 규칙에 사용할 우선순위 값을 제어해요. |
| 스키마 | 정수 |
| 기본값 | 99 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_WIREGUARDROUTINGRULEPRIORITY |
| 설명 | Wireguard 라우팅 규칙에 사용할 우선순위 값을 제어해요. |
| 스키마 | 정수 |
| 기본값 | 99 |
WireguardThreadingEnabled
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | WireguardThreadingEnabled |
| 설명 | Wireguard에서 Threaded NAPI를 켤지 제어해요. Wireguard 인터페이스가 처리할 수 있는 최대 패킷 수가 늘어나요. 포화 상태의 softirq CPU 코어 때문에 패킷이 드롭되는 높은 pps(packet per second) 워크로드에서만 threaded NAPI를 고려하세요. 이 설정에는 피어가 제거될 때 NAPI가 전역 rtnl_mutex를 잡은 채 멈출 수 있는 [알려진 이슈](https://lore.kernel.org/netdev/CALrw=nEoT2emQ0OAYCjM1d_6Xe_kNLSZ6dhjb5FxrLFYh4kozA@mail.gmail.com/T/)가 있어요. 우회 방법: Linux 커널에 NAPI를 되살리는 [이 패치](https://github.com/torvalds/linux/commit/56364c910691f6d10ba88c964c9041b9ab777bd6)가 포함되어 있는지 확인하세요. |
| 스키마 | 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요. |
| 기본값 | false |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_WIREGUARDTHREADINGENABLED |
| 설명 | Wireguard에서 Threaded NAPI를 켤지 제어해요. Wireguard 인터페이스가 처리할 수 있는 최대 패킷 수가 늘어나요. 포화 상태의 softirq CPU 코어 때문에 패킷이 드롭되는 높은 pps(packet per second) 워크로드에서만 threaded NAPI를 고려하세요. 이 설정에는 피어가 제거될 때 NAPI가 전역 rtnl_mutex를 잡은 채 멈출 수 있는 [알려진 이슈](https://lore.kernel.org/netdev/CALrw=nEoT2emQ0OAYCjM1d_6Xe_kNLSZ6dhjb5FxrLFYh4kozA@mail.gmail.com/T/)가 있어요. 우회 방법: Linux 커널에 NAPI를 되살리는 [이 패치](https://github.com/torvalds/linux/commit/56364c910691f6d10ba88c964c9041b9ab777bd6)가 포함되어 있는지 확인하세요. |
| 스키마 | 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요. |
| 기본값 | false |
AWS 연동
AWSSrcDstCheck
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | AWSSrcDstCheck |
| 설명 | Felix가 자신이 실행 중인 EC2 인스턴스의 "소스/데스트 검사(source/dest check)" 설정을 바꿔 볼지 제어해요. "Disable" 값은 소스/데스트 검사를 끄려고 시도해요. 검사를 끄면 같은 AWS 서브넷 안에서 캡슐화 없이 워크로드 트래픽을 보낼 수 있어요. |
| 스키마 | Disable, DoNothing, Enable 중 하나 |
| 기본값 | DoNothing |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_AWSSRCDSTCHECK |
| 설명 | Felix가 자신이 실행 중인 EC2 인스턴스의 "소스/데스트 검사(source/dest check)" 설정을 바꿔 볼지 제어해요. "Disable" 값은 소스/데스트 검사를 끄려고 시도해요. 검사를 끄면 같은 AWS 서브넷 안에서 캡슐화 없이 워크로드 트래픽을 보낼 수 있어요. |
| 스키마 | Disable, DoNothing, Enable 중 하나 |
| 기본값 | DoNothing |
디버그/테스트 전용 (일반적으로 지원되지 않음)
DebugBPFCgroupV2
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | DebugBPFCgroupV2 |
| 설명 | 커넥트 타임 로드 밸런서를 적용할 cgroup v2 경로를 제어해요. 대부분의 배포판은 cgroup v1으로 설정되어 있어서 루트 cgroup v2가 아니면 동작하지 않으니, 지금은 개발할 때만 유용해요. |
| 스키마 | 문자열 |
| 기본값 | 없음 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_DEBUGBPFCGROUPV2 |
| 설명 | 커넥트 타임 로드 밸런서를 적용할 cgroup v2 경로를 제어해요. 대부분의 배포판은 cgroup v1으로 설정되어 있어서 루트 cgroup v2가 아니면 동작하지 않으니, 지금은 개발할 때만 유용해요. |
| 스키마 | 문자열 |
| 기본값 | 없음 |
DebugCPUProfilePath
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | DebugCPUProfilePath |
| 설명 | 지원되지 않는 진단 설정으로, Felix를 테스트할 때 사용해요. FelixConfiguration에는 노출되지 않아요. |
| 스키마 | 파일 경로 |
| 기본값 | /tmp/felix-cpu-<timestamp>.pprof |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_DEBUGCPUPROFILEPATH |
| 설명 | 지원되지 않는 진단 설정으로, Felix를 테스트할 때 사용해요. FelixConfiguration에는 노출되지 않아요. |
| 스키마 | 파일 경로 |
| 기본값 | /tmp/felix-cpu-<timestamp>.pprof |
DebugDisableLogDropping
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | DebugDisableLogDropping |
| 설명 | 로그 버퍼가 가득 찼을 때 로그 메시지를 버리는 동작을 꺼요. 로그 쓰기가 병목이면 성능에 큰 영향을 줄 수 있어요. |
| 스키마 | 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요. |
| 기본값 | false |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_DEBUGDISABLELOGDROPPING |
| 설명 | 로그 버퍼가 가득 찼을 때 로그 메시지를 버리는 동작을 꺼요. 로그 쓰기가 병목이면 성능에 큰 영향을 줄 수 있어요. |
| 스키마 | 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요. |
| 기본값 | false |
DebugHost
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | DebugHost |
| 설명 | 디버그 포트를 바인딩할 호스트 IP 또는 호스트 이름이에요. DebugPort가 설정된 경우에만 사용돼요. |
| 스키마 | 정규식 ^[a-zA-Z0-9:._+-]{1,64}$과 일치하는 문자열 |
| 기본값 | localhost |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_DEBUGHOST |
| 설명 | 디버그 포트를 바인딩할 호스트 IP 또는 호스트 이름이에요. DebugPort가 설정된 경우에만 사용돼요. |
| 스키마 | 정규식 ^[a-zA-Z0-9:._+-]{1,64}$과 일치하는 문자열 |
| 기본값 | localhost |
DebugMemoryProfilePath
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | DebugMemoryProfilePath |
| 설명 | 시그널로 트리거됐을 때 메모리 프로파일을 기록할 경로예요. |
| 스키마 | 파일 경로 |
| 기본값 | 없음 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_DEBUGMEMORYPROFILEPATH |
| 설명 | 시그널로 트리거됐을 때 메모리 프로파일을 기록할 경로예요. |
| 스키마 | 파일 경로 |
| 기본값 | 없음 |
DebugPanicAfter
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | DebugPanicAfter |
| 설명 | 지원되지 않는 진단 설정으로, Felix를 테스트할 때 사용해요. FelixConfiguration에는 노출되지 않아요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 0 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_DEBUGPANICAFTER |
| 설명 | 지원되지 않는 진단 설정으로, Felix를 테스트할 때 사용해요. FelixConfiguration에는 노출되지 않아요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 0 |
DebugPort
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | DebugPort |
| 설명 | 설정하면 Felix의 디버그 HTTP 포트가 켜져서 메모리와 CPU 프로파일을 가져올 수 있어요. 디버그 포트는 안전하지 않으니 인터넷에 노출하면 안 돼요. |
| 스키마 | 정수: [0,65535] |
| 기본값 | 없음 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_DEBUGPORT |
| 설명 | 설정하면 Felix의 디버그 HTTP 포트가 켜져서 메모리와 CPU 프로파일을 가져올 수 있어요. 디버그 포트는 안전하지 않으니 인터넷에 노출하면 안 돼요. |
| 스키마 | 정수: [0,65535] |
| 기본값 | 없음 |
DebugSimulateCalcGraphHangAfter
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | DebugSimulateCalcGraphHangAfter |
| 설명 | 지정한 시간이 지난 뒤 계산 그래프(calculation graph)가 멈추는 상황을 시뮬레이션해요. 워치독 시스템 테스트에서만 유용해요! |
| 스키마 | 초 (부동소수점) |
| 기본값 | 0 (0s) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_DEBUGSIMULATECALCGRAPHHANGAFTER |
| 설명 | 지정한 시간이 지난 뒤 계산 그래프(calculation graph)가 멈추는 상황을 시뮬레이션해요. 워치독 시스템 테스트에서만 유용해요! |
| 스키마 | 초 (부동소수점) |
| 기본값 | 0 (0s) |
DebugSimulateDataRace
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | DebugSimulateDataRace |
| 설명 | 지원되지 않는 진단 설정으로, Felix를 테스트할 때 사용해요. FelixConfiguration에는 노출되지 않아요. |
| 스키마 | 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요. |
| 기본값 | false |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_DEBUGSIMULATEDATARACE |
| 설명 | 지원되지 않는 진단 설정으로, Felix를 테스트할 때 사용해요. FelixConfiguration에는 노출되지 않아요. |
| 스키마 | 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요. |
| 기본값 | false |
DebugSimulateDataplaneApplyDelay
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | DebugSimulateDataplaneApplyDelay |
| 설명 | 모든 데이터플레인 연산에 인위적인 지연을 추가해요. 부하가 심한 시스템을 시뮬레이션하는 테스트 용도로만 유용해요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 0 (0s) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_DEBUGSIMULATEDATAPLANEAPPLYDELAY |
| 설명 | 모든 데이터플레인 연산에 인위적인 지연을 추가해요. 부하가 심한 시스템을 시뮬레이션하는 테스트 용도로만 유용해요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 0 (0s) |
DebugSimulateDataplaneHangAfter
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | DebugSimulateDataplaneHangAfter |
| 설명 | 지정한 시간이 지난 뒤 데이터플레인이 멈추는 상황을 시뮬레이션해요. 워치독 시스템 테스트에서만 유용해요! |
| 스키마 | 초 (부동소수점) |
| 기본값 | 0 (0s) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_DEBUGSIMULATEDATAPLANEHANGAFTER |
| 설명 | 지정한 시간이 지난 뒤 데이터플레인이 멈추는 상황을 시뮬레이션해요. 워치독 시스템 테스트에서만 유용해요! |
| 스키마 | 초 (부동소수점) |
| 기본값 | 0 (0s) |
사용량 리포팅
UsageReportingEnabled
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | UsageReportingEnabled |
| 설명 | 익명의 Calico 버전 번호와 클러스터 크기를 projectcalico.org에 보고해요. 사용량 서버가 돌려준 경고를 로그로 남겨요. 예를 들어 사용 중인 Calico 버전에서 중대한 보안 취약점이 발견됐을 때요. |
| 스키마 | 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요. |
| 기본값 | true |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_USAGEREPORTINGENABLED |
| 설명 | 익명의 Calico 버전 번호와 클러스터 크기를 projectcalico.org에 보고해요. 사용량 서버가 돌려준 경고를 로그로 남겨요. 예를 들어 사용 중인 Calico 버전에서 중대한 보안 취약점이 발견됐을 때요. |
| 스키마 | 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요. |
| 기본값 | true |
UsageReportingInitialDelaySecs
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | UsageReportingInitialDelaySecs |
| 설명 | Felix가 보고를 만들기 전의 최소 지연 시간을 제어해요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 300 (5m0s) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_USAGEREPORTINGINITIALDELAYSECS |
| 설명 | Felix가 보고를 만들기 전의 최소 지연 시간을 제어해요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 300 (5m0s) |
UsageReportingIntervalSecs
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | UsageReportingIntervalSecs |
| 설명 | Felix가 보고를 만드는 주기를 제어해요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 86400 (24h0m0s) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_USAGEREPORTINGINTERVALSECS |
| 설명 | Felix가 보고를 만드는 주기를 제어해요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 86400 (24h0m0s) |
환경 변수
구성 중에서 환경 변수에서 읽은 값이 가장 높은 우선순위를 가져요. 환경 변수로 구성 파라미터를 설정하려면 FELIX_ 뒤에 변수 이름을 대문자로 붙인 환경 변수를 설정하세요. 예를 들어 etcd 주소를 설정하려면 FELIX_ETCDADDR 환경 변수를 설정해요. 그 밖의 예로는 FELIX_ETCDSCHEME, FELIX_ETCDKEYFILE, FELIX_ETCDCERTFILE, FELIX_ETCDCAFILE, FELIX_FELIXHOSTNAME, FELIX_LOGFILEPATH, FELIX_METADATAADDR이 있어요.
SECONDARY: 환경 변수로 파라미터를 빈 값으로 설정하려면 빈 문자열을 할당하세요(예:
FELIX_FAILSAFEINBOUNDHOSTPORTS="").
구성 파일
Felix는 시작할 때 ini 스타일의 구성 파일을 읽어요. 파일 경로의 기본값은 /etc/calico/felix.cfg이고, 명령줄에서 -c 또는 --config-file 옵션으로 바꿀 수 있어요. 파일이 존재하면 읽어서(섹션 이름은 무시해요) 모든 파라미터를 그 파일에서 설정해요.
OpenStack에서는 etcd 데이터베이스가 휘발성이라(특정 오류 상황에서 OpenStack 플러그인이 다시 만들 수 있어요) 모든 구성을 구성 파일에 넣는 걸 권장해요. 반면 Docker 환경에서는 환경 변수나 etcd를 쓰는 게 더 편리할 때가 많아요.
데이터스토어
Felix는 데이터스토어에서도 구성 파라미터를 읽어요. 전역 설정과 호스트별 오버라이드를 지원해요.
-
현재 felixconfig 설정을 가져오세요.
calicoctl get felixconfig default -o yaml --export > felix.yaml -
logFilePath를 원하는 경로로 수정하세요. 예: "/tmp/felix.log"
vim felix.yamlSUCCESS: 전역 변경이면 name을 "default"로 설정하세요. 노드별 변경이면 name을
node.<nodename>으로 설정해요. 예: "node.Calico-node-1" -
현재 felixconfig 설정을 교체하세요.
calicoctl replace -f felix.yaml
자세한 내용은 Felix Configuration Resource를 참고하세요.
더 알아보기 (Learn more)
Felix 구성 레퍼런스의 앞 파트에서 데이터스토어 연결부터 BPF, 오버레이 설정까지 이어서 설명해요. 환경 변수 우선순위와 felix.cfg 경로를 확인한 뒤, 실제 변경은 calicoctl get/replace 절차로 진행하세요.