본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

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는 데이터스토어에서도 구성 파라미터를 읽어요. 전역 설정과 호스트별 오버라이드를 지원해요.

  1. 현재 felixconfig 설정을 가져오세요.

    calicoctl get felixconfig default -o yaml --export > felix.yaml
    
  2. logFilePath를 원하는 경로로 수정하세요. 예: "/tmp/felix.log"

    vim felix.yaml
    

    SUCCESS: 전역 변경이면 name을 "default"로 설정하세요. 노드별 변경이면 name을 node.<nodename>으로 설정해요. 예: "node.Calico-node-1"

  3. 현재 felixconfig 설정을 교체하세요.

    calicoctl replace -f felix.yaml
    

자세한 내용은 Felix Configuration Resource를 참고하세요.

더 알아보기 (Learn more)

Felix 구성 레퍼런스의 앞 파트에서 데이터스토어 연결부터 BPF, 오버레이 설정까지 이어서 설명해요. 환경 변수 우선순위와 felix.cfg 경로를 확인한 뒤, 실제 변경은 calicoctl get/replace 절차로 진행하세요.