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

Felix 구성 리소스 파트 1

원문 보기 위키 갱신

Felix 구성 리소스(FelixConfiguration) 레퍼런스의 첫 번째 파트예요. FelixConfiguration 리소스는 클러스터 전체의 Felix 구성 옵션을 나타내고, 이 파트에서는 샘플 YAML과 메타데이터, 셀렉터 범위 구성을 먼저 살펴봐요. 이어지는 스펙 섹션에서는 기능 감지/오버라이드부터 Go 런타임, 헬스 포트, 로깅, Prometheus 메트릭, 공통 데이터플레인 설정까지 키들이 쭉 이어져요. 코드와 키 이름은 원문 그대로 유지했으니 실제 설정할 때 그대로 참고하면 돼요.

출처: 문서

본문

Felix 구성 리소스(FelixConfiguration)는 클러스터의 Felix 구성 옵션을 나타내요.

자세한 내용은 Felix 구성하기를 참고하세요.

샘플 YAML

apiVersion: projectcalico.org/v3
kind: FelixConfiguration
metadata:
  name: default
spec:
  ipv6Support: false
  ipipMTU: 1400
  chainInsertMode: Append

Felix 구성 정의

메타데이터

필드 설명 허용되는 값 스키마
name 이 리소스 인스턴스를 설명하는 고유한 이름이에요. 필수 값이에요. 알파벳·숫자 문자열에 ., _, -를 선택적으로 쓸 수 있어요. string
  • Calico는 Felix의 전역 기본 구성 설정을 담은 default라는 이름의 리소스를 자동으로 만들어요. calicoctl로 이 설정을 조회하고 수정할 수 있어요.
  • 이름이 node.<nodename>인 리소스는 노드별 오버라이드 설정을 담고 있고, <nodename> 노드에 적용돼요. 노드를 삭제하면 그 노드와 연결된 FelixConfiguration 리소스도 함께 삭제돼요.
  • 그 외 다른 이름을 가진 리소스는 nodeSelector 필드로 레이블을 기준으로 노드 그룹을 대상으로 지정할 수 있어요(아래 셀렉터 범위 구성 참고).

셀렉터 범위 구성

이름이 default가 아니고 node.로 시작하지 않는 FelixConfiguration 리소스는 nodeSelector 필드를 넣어서, 셀렉터와 레이블이 일치하는 노드로만 구성 범위를 좁힐 수 있어요. 이렇게 하면 노드별 리소스를 일일이 만들지 않고도 노드 그룹마다 다른 Felix 설정을 적용할 수 있죠.

예제

apiVersion: projectcalico.org/v3
kind: FelixConfiguration
metadata:
  name: gpu-nodes
spec:
  nodeSelector: "role == 'gpu'"
  logSeverityScreen: Debug
  bpfEnabled: true

이 리소스는 role=gpu 레이블이 붙은 노드에만 logSeverityScreen: Debug와 bpfEnabled: true를 적용해요.

구성 우선순위

셀렉터 범위 FelixConfiguration이 어떤 노드와 일치하면, 그 설정은 노드별 구성과 전역 구성 사이에서 다음 우선순위로 적용돼요.

  1. 환경 변수 (가장 높은 우선순위)
  2. Felix 구성 파일
  3. 호스트별 FelixConfiguration 리소스 (node.<nodename>)
  4. 셀렉터 범위 FelixConfiguration 리소스
  5. 전역 FelixConfiguration 리소스 (default)
  6. 내장 기본값 (가장 낮은 우선순위)

셀렉터 범위 설정은 전역 default 리소스의 같은 설정을 덮어쓰지만, 노드별 node.<nodename> 리소스나 환경 변수에는 밀려요.

겹치는 셀렉터

하나의 노드에는 최대 한 개의 셀렉터 범위 FelixConfiguration만 일치시키는 게 좋아요. 여러 셀렉터 범위 리소스가 같은 노드와 일치하면 잘못된 구성으로 보고, 생성 시각이 가장 오래된 리소스를 사용하면서 경고를 기록해요. 이 동작은 이후 릴리스에서 바뀔 수 있어요.

제약 사항

  • default 리소스나 node.<nodename> 리소스에는 nodeSelector 필드를 설정할 수 없어요. 이 이름들은 고정된 범위 규칙을 가져요.
  • nodeSelector 필드는 다른 Calico 리소스와 같은 셀렉터 문법을 사용해요.

스펙

프로세스: 기능 감지/오버라이드

featureDetectOverride
속성 값
키 featureDetectOverride
설명 자동으로 감지한 플랫폼 기능을 기준으로 하는 기능 감지 결과를 강제로 바꿀 때 사용해요. 값은 공백 없이 쉼표로 구분한 목록으로 지정해요. 예를 들면 "SNATFullyRandom=true,MASQFullyRandom=false,RestoreSupportsLock=" 같은 식이에요. "true"나 "false"를 넣으면 해당 기능을 강제로 켜거나 꺼고, 값을 비우거나 생략하면 자동 감지 결과를 따라가요.
스키마 정규식 ^([a-zA-Z0-9-_]+=(true|false|),)*([a-zA-Z0-9-_]+=(true|false|))?$와 일치하는 문자열
기본값 없음
featureGates
속성 값
키 featureGates
설명 기술 프리뷰 상태인 Calico 기능을 켜거나 끌 때 사용해요. 값은 공백 없이 쉼표로 구분한 목록으로 지정해요. 예를 들면 "BPFConnectTimeLoadBalancingWorkaround=enabled,XyZ=false" 같은 식이에요. 아직 프로덕션 준비가 완전히 끝나지 않은 기능을 켜는 용도로 쓰여요.
스키마 정규식 ^([a-zA-Z0-9-_]+=([^=]+),)*([a-zA-Z0-9-_]+=([^=]+))?$와 일치하는 문자열
기본값 없음

프로세스: Go 런타임

goGCThreshold
속성 값
키 goGCThreshold
설명 Go 런타임의 가비지 컬렉션 임계값을 설정해요. 즉, 가비지 컬렉션이 발동하기 전까지 힙이 얼마나 커질 수 있는지를 퍼센트로 정하는 값이에요. 일반적으로 값을 두 배로 늘리면 GC에 쓰는 CPU 시간이 절반으로 줄지만, GC의 최대 메모리 사용량도 두 배가 돼요. 특수한 값 -1을 쓰면 GC를 완전히 끌 수 있어요. 이 경우 GoMemoryLimitMB 설정과 함께 쓰는 경우에만 사용해야 해요. 이 설정은 GOGC 환경 변수가 덮어써요.
스키마 정수: [-1,263-1]
기본값 40
goMaxProcs
속성 값
키 goMaxProcs
설명 Go 런타임이 동시에 사용할 최대 CPU 개수를 설정해요. -1은 "시스템 기본값 사용"을 뜻하고, 보통 시스템의 실제 CPU 개수예요. 이 설정은 GOMAXPROCS 환경 변수가 덮어써요.
스키마 정수: [-1,263-1]
기본값 -1
goMemoryLimitMB
속성 값
키 goMemoryLimitMB
설명 Go 런타임의 (소프트) 메모리 제한을 MB 단위로 설정해요. Go 런타임은 필요할 때 GC를 발동시켜서 메모리 사용량을 이 한계 아래로 유지하려고 해요. 쓰래싱(thrashing)을 막기 위해, GC가 프로세스 CPU 시간의 50%를 넘기기 시작하면 한계를 넘어설 수도 있어요. -1을 넣으면 메모리 제한을 끄는 거예요. 이 한계를 쓰기로 했다면, 컨테이너나 파드 수준에서 설정한 하드 리소스 제한보다 충분히 작게 잡아야 해요. 컨테이너나 파드에서 felix만 돌아가는 게 아니기 때문이에요. 이 설정은 GOMEMLIMIT 환경 변수가 덮어써요.
스키마 정수: [-1,263-1]
기본값 -1

프로세스: 헬스 포트와 타임아웃

healthEnabled
속성 값
키 healthEnabled
설명 true로 설정하면 Felix의 헬스 포트를 켜요. 이 포트는 readiness와 liveness 엔드포인트를 제공해요.
스키마 불리언
기본값 false
healthHost
속성 값
키 healthHost
설명 헬스 서버가 바인딩할 호스트예요.
스키마 문자열
기본값 localhost
healthPort
속성 값
키 healthPort
설명 헬스 서버가 바인딩할 TCP 포트예요.
스키마 정수: [0,65535]
기본값 9099
healthTimeoutOverrides
속성 값
키 healthTimeoutOverrides
설명 개별 서브컴포넌트의 내부 워치독 타임아웃을 재정의할 수 있게 해줘요. CPU가 부족하거나 특히 부하가 심한 워크로드에서 생기는 "오탐(false positive)" liveness 타임아웃을 우회할 때 유용해요. 활성 서브컴포넌트 목록은 Felix 로그에서 확인할 수 있어요.
스키마 헬스 타임아웃 오버라이드 목록: [{name: "<name>", timeout: "<duration>"}, ...] 형태이고, <duration>은 Go duration 형식이에요. 예를 들면 1m30s처럼 써요.
기본값 없음

프로세스: 로깅

logActionRateLimit
속성 값
키 logActionRateLimit
설명 Log 액션에 도달하는 속도를 제한해요. 값은 "N/unit" 형식이어야 하고, N은 숫자, unit은 second, minute, hour, day 중 하나예요. 예를 들면 "10/second" 또는 "100/hour" 같은 식이에요. LogConnectionTransitions가 켜져 있으면 후속 로그에도 이 제한이 적용돼요. 초기 로그가 이 레이트 리밋으로 억제된 연결은 후속 로그도 받지 않아요.
스키마 정규식 ^[1-9]\d{0,3}/(?:second|minute|hour|day)$와 일치하는 문자열
기본값 없음
logActionRateLimitBurst
속성 값
키 logActionRateLimitBurst
설명 LogActionRateLimit가 켜져 있을 때 Log 액션에 도달하는 레이트 리밋 버스트를 설정해요.
스키마 정수: [0,263-1], [9999,263-1]
기본값 5
logConnectionTransitions
속성 값
키 logConnectionTransitions
설명 Log 액션이 붙은 정책 규칙에 걸린 각 연결에 대해, 처음 관찰된 응답을 기록하는 추가 커널 로그를 Felix가 내보낼지 제어해요. FirstResponseAfterLog로 설정하면, 초기 로그가 발행된 각 연결이 후속 로그 하나를 추가로 받아요. 후속 로그는 LogConnectionTransitionsPrefix 접두사에 전환을 식별하는 접미사가 붙어요. 첫 응답 패킷이 보이면 "-est", 응답이 TCP RST(연결 거부)면 "-rst", 관련된 ICMP 오류(예: port unreachable)면 "-icmp-err"예요. 로그 본문은 응답 패킷의 표준 커널 패킷 로그예요. "-est"와 "-rst"는 5튜플이 원래 정책 Log 라인의 출발지와 목적지를 뒤바꾼 형태고, "-icmp-err"는 괄호로 묶인 내부 헤더에 원래 5튜플이 그대로 실려요. 후속 로그가 없는 기록된 연결은 응답을 한 번도 받지 못한 연결이에요. 초기 로그가 LogActionRateLimit으로 억제된 연결은 후속 로그도 없으니, 모든 후속 로그에는 짝이 되는 초기 로그가 있어요. 이 기능을 켜면 Iptables/NftablesMarkMask 공간에서 비트 하나를 소모해요. eBPF 모드에서는 지원되지 않아요.
스키마 "Disabled", "FirstResponseAfterLog" 중 하나
기본값 Disabled
logConnectionTransitionsPrefix
속성 값
키 logConnectionTransitionsPrefix
설명 LogConnectionTransitions가 켜져 있을 때 발행되는 로그에 쓰이는 로그 접두사예요. 전환 접미사("-est", "-rst", "-icmp-err")가 이 접두사 뒤에 붙어요. LogPrefix와 달리 %-지정자(예: %p)를 지원하지 않아요. 이 로그를 내보내는 규칙은 모든 정책이 공유하기 때문에 정책별 값을 치환할 수 없고, %-지정자는 문자 그대로 표시돼요.
스키마 정규식 ^([a-zA-Z0-9%: /_-])*$와 일치하는 문자열
기본값 calico-response
logDebugFilenameRegex
속성 값
키 logDebugFilenameRegex
설명 어떤 소스 코드 파일의 Debug 로그 출력을 로그에 포함할지 제어해요. 주어진 정규식과 파일 이름이 일치하는 파일에서 나온 로그만 포함돼요. 이 필터는 Debug 레벨 로그에만 적용돼요.
스키마 문자열
기본값 없음
logFilePath
속성 값
키 logFilePath
설명 Felix 로그의 전체 경로예요. none으로 설정하면 파일 로깅을 끌 수 있어요.
스키마 문자열
기본값 /var/log/calico/felix.log
logPrefix
속성 값
키 logPrefix
설명 Felix가 LOG 규칙을 렌더링할 때 쓰는 로그 접두사예요. 다음 지정자를 사용해서 로그 접두사에 추가 정보를 넣을 수 있어요. - %t: Tier 이름이에요. - %k: Kind(짧은 이름)예요. - %n: 정책 또는 프로파일 이름이에요. - %p: 정책 또는 프로파일 이름이에요(네임스페이스가 있는 kind면 namespace/name, 없는 kind면 name만). Calico는 생성된 로그 접두사 끝에 ": " 문자를 붙여요. iptables는 로그 접두사를 29자까지, nftables는 127자까지 표시하니, 넘치는 문자는 잘려요.
스키마 정규식 ^([a-zA-Z0-9%: /_-])*$와 일치하는 문자열
기본값 calico-packet
logSeverityFile
속성 값
키 logSeverityFile
설명 이 심각도 이상의 로그를 로그 파일로 보내요.
스키마 Debug, Error, Fatal, Info, Trace, Warning 중 하나
기본값 Info
logSeverityScreen
속성 값
키 logSeverityScreen
설명 이 심각도 이상의 로그를 stdout으로 보내요.
스키마 Debug, Error, Fatal, Info, Trace, Warning 중 하나
기본값 Info
logSeveritySys
속성 값
키 logSeveritySys
설명 이 심각도 이상의 로그를 syslog로 보내요. syslog 로깅을 끄려면 None으로 설정해요.
스키마 Debug, Error, Fatal, Info, Trace, Warning 중 하나
기본값 Info

프로세스: Prometheus 메트릭

prometheusGoMetricsEnabled
속성 값
키 prometheusGoMetricsEnabled
설명 false로 설정하면 Prometheus 클라이언트가 기본으로 수집하는 Go 런타임 메트릭 수집을 끊어요. 보고되는 메트릭 수가 줄어서 Prometheus 부하가 낮아져요.
스키마 불리언
기본값 true
prometheusMetricsCAFile
속성 값
키 prometheusMetricsCAFile
설명 /metrics 엔드포인트를 보호하는 데 쓰는 TLS CA 인증서 파일의 절대 경로를 정의해요. 이 인증서는 유효해야 하고 calico-node 프로세스가 접근할 수 있어야 해요.
스키마 문자열
기본값 없음
prometheusMetricsCertFile
속성 값
키 prometheusMetricsCertFile
설명 /metrics 엔드포인트를 보호하는 데 쓰는 TLS 인증서 파일의 절대 경로를 정의해요. 이 인증서는 유효해야 하고 calico-node 프로세스가 접근할 수 있어야 해요.
스키마 문자열
기본값 없음
prometheusMetricsClientAuth
속성 값
키 prometheusMetricsClientAuth
설명 /metrics 엔드포인트의 클라이언트 인증 방식을 지정해요. 서버가 클라이언트 인증서를 어떻게 검증할지 결정해요. 기본값은 "NoClientCert"예요.
스키마 "NoClientCert", "RequireAndVerifyClientCert", "RequireAnyClientCert", "VerifyClientCertIfGiven" 중 하나
기본값 NoClientCert
prometheusMetricsEnabled
속성 값
키 prometheusMetricsEnabled
설명 true로 설정하면 Felix에서 Prometheus 메트릭 서버를 켜요.
스키마 불리언
기본값 false
prometheusMetricsHost
속성 값
키 prometheusMetricsHost
설명 Prometheus 메트릭 서버가 바인딩할 호스트예요.
스키마 문자열
기본값 없음
prometheusMetricsKeyFile
속성 값
키 prometheusMetricsKeyFile
설명 /metrics 엔드포인트를 보호하는 데 쓰는 TLS 인증서에 대응하는 개인 키 파일의 절대 경로를 정의해요. 이 개인 키는 유효해야 하고 calico-node 프로세스가 접근할 수 있어야 해요.
스키마 문자열
기본값 없음
prometheusMetricsPort
속성 값
키 prometheusMetricsPort
설명 Prometheus 메트릭 서버가 바인딩할 TCP 포트예요.
스키마 정수: [0,65535]
기본값 9091
prometheusProcessMetricsEnabled
속성 값
키 prometheusProcessMetricsEnabled
설명 false로 설정하면 Prometheus 클라이언트가 기본으로 수집하는 프로세스 메트릭 수집을 끊어요. 보고되는 메트릭 수가 줄어서 Prometheus 부하가 낮아져요.
스키마 불리언
기본값 true
prometheusWireGuardMetricsEnabled
속성 값
키 prometheusWireGuardMetricsEnabled
설명 false로 설정하면 Prometheus 클라이언트가 기본으로 수집하는 wireguard 메트릭 수집을 끊어요. 보고되는 메트릭 수가 줄어서 Prometheus 부하가 낮아져요.
스키마 불리언
기본값 true

데이터플레인: 공통

allowIPIPPacketsFromWorkloads
속성 값
키 allowIPIPPacketsFromWorkloads
설명 Felix가 워크로드에서 들어오는 IPIP 캡슐화 트래픽을 드롭하는 규칙을 추가할지 제어해요.
스키마 불리언
기본값 false
allowVXLANPacketsFromWorkloads
속성 값
키 allowVXLANPacketsFromWorkloads
설명 Felix가 워크로드에서 들어오는 VXLAN 캡슐화 트래픽을 드롭하는 규칙을 추가할지 제어해요.
스키마 불리언
기본값 false
cgroupV2Path
속성 값
키 cgroupV2Path
설명 cgroup 계층 구조를 찾을 기본 위치를 바꿔요.
스키마 문자열
기본값 없음
chainInsertMode
속성 값
키 chainInsertMode
설명 Felix가 커널의 최상위 iptables 체인에 규칙을 체인 맨 위에 삽입(insert)할지, 맨 아래에 추가(append)할지 제어해요. insert가 안전한 기본값이에요. Calico 규칙이 우회되는 걸 막아주기 때문이죠. append 모드로 바꾼다면, 체인의 다른 규칙들이 최종적으로 Calico 규칙으로 떨어지도록(fall through) 처리했는지 꼭 확인해야 해요. 그렇지 않으면 Calico 정책이 우회돼요.
스키마 Append, Insert 중 하나
기본값 Insert
dataplaneDriver
속성 값
키 dataplaneDriver
설명 사용할 외부 데이터플레인 드라이버의 파일 이름이에요. UseInternalDataplaneDriver가 false로 설정된 경우에만 사용돼요.
스키마 문자열
기본값 calico-iptables-plugin
dataplaneWatchdogTimeout
속성 값
키 dataplaneWatchdogTimeout
설명 Felix의 (내부) 데이터플레인 드라이버에 사용되는 readiness/liveness 타임아웃이에요. 폐기(deprecated)됐어요: 범용 HealthTimeoutOverrides로 대체됐어요.
스키마 duration 문자열, 예를 들면 1m30s123ms 또는 1h5m
기본값 1m30s
defaultEndpointToHostAction
속성 값
키 defaultEndpointToHostAction
설명 워크로드 엔드포인트에서 호스트 자신으로 가는 트래픽(엔드포인트의 egress 정책이 적용된 이후)이 어떻게 처리되는지 제어해요. 기본적으로 Calico는 iptables "DROP" 액션으로 워크로드 엔드포인트에서 호스트로 가는 트래픽을 막아요. 일부 또는 전체 트래픽을 허용하고 싶다면 이 파라미터를 RETURN 또는 ACCEPT로 설정해요. iptables "INPUT" 체인에 자신만의 규칙이 있다면 RETURN을 쓰세요. Calico는 그 체인 맨 위에 규칙을 삽입하고, 워크로드 엔드포인트 egress 정책 처리를 마친 뒤 패킷을 "INPUT" 체인으로 "RETURN"해요. 워크로드 egress 정책 처리 후 패킷을 무조건 수락하려면 ACCEPT를 쓰면 돼요.
스키마 Accept, Drop, Return 중 하나
기본값 Drop
deviceRouteProtocol
속성 값
키 deviceRouteProtocol
설명 Felix가 프로그래밍하는 경로에 붙일 프로토콜을 제어해요. 프로토콜은 경로의 소유자를 식별하는 8비트 레이블이에요.
스키마 정수
기본값 3
deviceRouteSourceAddress
속성 값
키 deviceRouteSourceAddress
설명 Felix가 프로그래밍하는 경로의 소스 힌트로 쓸 IPv4 주소예요. 설정하지 않으면 호스트에서 워크로드로 가는 로컬 트래픽의 소스 주소는 커널이 결정해요.
스키마 문자열
기본값 없음
deviceRouteSourceAddressIPv6
속성 값
키 deviceRouteSourceAddressIPv6
설명 Felix가 프로그래밍하는 경로의 소스 힌트로 쓸 IPv6 주소예요. 설정하지 않으면 호스트에서 워크로드로 가는 로컬 트래픽의 소스 주소는 커널이 결정해요.
스키마 문자열
기본값 없음
disableConntrackInvalidCheck
속성 값
키 disableConntrackInvalidCheck
설명 conntrack에서 유효하지 않은 연결 검사를 끕니다. conntrack invalid 검사는 악성 트래픽을 탐지하는 데 도움이 되지만, 특정 멀티 NIC 시나리오에서는 문제를 일으킬 수도 있어요.
스키마 불리언
기본값 false
endpointStatusPathPrefix
속성 값
키 endpointStatusPathPrefix
설명 엔드포인트 상태가 기록될 디렉터리의 경로예요. 이 필드를 비워 두면 엔드포인트 상태 파일 보고가 꺼져요. 선택한 디렉터리는 PodStartupDelay에 쓰는 CNI 플러그인의 디렉터리와 일치시켜야 해요.
스키마 문자열
기본값 /var/run/calico
externalNodesList
속성 값
키 externalNodesList
설명 VXLAN/IPIP 오버레이 트래픽을 허용할, Calico 밖의 외부 노드 CIDR 목록이에요. 기본적으로는 공격 표면을 줄이기 위해 외부 터널 트래픽은 차단돼요.
스키마 문자열 목록: ["<string>", ...]
기본값 없음
failsafeInboundHostPorts
속성 값
키 failsafeInboundHostPorts
설명 UDP/TCP/SCTP 포트와 CIDR을 담은 ProtoPort 구조체 객체 목록이에요. Felix는 보안 정책과 무관하게 호스트 엔드포인트로 들어오는 트래픽을 이 포트들에 허용해요. 잘못된 구성으로 호스트를 실수로 차단하는 사고를 막는 데 유용하죠. 하위 호환성을 위해 프로토콜을 지정하지 않으면 "tcp"가 기본값이에요. CIDR을 지정하지 않으면 모든 주소에서 오는 트래픽을 허용해요. 인바운드 호스트 포트를 전부 끄려면 "[]" 값을 쓰세요. 기본값은 ssh 접근, DHCP, BGP, etcd, 쿠버네티스 API를 허용해요.
스키마 선택적 CIDR 매치가 있는 프로토콜/포트 객체 목록: [{protocol: "TCP|UDP", port: <port>, net: "<cidr>"}, ...]
기본값 [{"protocol":"tcp","port":22},{"protocol":"udp","port":68},{"protocol":"tcp","port":179},{"protocol":"tcp","port":2379},{"protocol":"tcp","port":2380},{"protocol":"tcp","port":5473},{"protocol":"tcp","port":6443},{"protocol":"tcp","port":6666},{"protocol":"tcp","port":6667}]
failsafeOutboundHostPorts
속성 값
키 failsafeOutboundHostPorts
설명 UDP/TCP/SCTP 포트와 CIDR을 담은 PortProto 구조체 객체 목록이에요. Felix는 보안 정책과 무관하게 호스트 엔드포인트에서 나가는 트래픽을 이 포트들로 허용해요. 잘못된 구성으로 호스트를 실수로 차단하는 사고를 막는 데 유용하죠. 하위 호환성을 위해 프로토콜을 지정하지 않으면 "tcp"가 기본값이에요. CIDR을 지정하지 않으면 모든 주소로 나가는 트래픽을 허용해요. 아웃바운드 호스트 포트를 전부 끄려면 "[]" 값을 쓰세요. 기본값은 etcd 표준 포트를 열어 Felix가 etcd와 연결이 끊기지 않게 하고, DHCP, DNS, BGP, 쿠버네티스 API도 허용해요.
스키마 선택적 CIDR 매치가 있는 프로토콜/포트 객체 목록: [{protocol: "TCP|UDP", port: <port>, net: "<cidr>"}, ...]
기본값 [{"protocol":"udp","port":53},{"protocol":"udp","port":67},{"protocol":"tcp","port":179},{"protocol":"tcp","port":2379},{"protocol":"tcp","port":2380},{"protocol":"tcp","port":5473},{"protocol":"tcp","port":6443},{"protocol":"tcp","port":6666},{"protocol":"tcp","port":6667}]
floatingIPs
속성 값
키 floatingIPs
설명 Felix가 OpenStack이 아닌 플로팅 IP 주소를 프로그래밍할지 설정해요. (OpenStack에서 유래한 플로팅 IP는 이 설정과 무관하게 항상 프로그래밍돼요.)
스키마 "Disabled", "Enabled" 중 하나
기본값 Disabled
ipForwarding
속성 값
키 ipForwarding
설명 Felix가 IP forwarding을 켜도록 호스트 sysctl을 설정할지 제어해요. IP forwarding은 Calico를 워크로드 네트워킹에 쓸 때 필요해요. 이 설정을 끄는 건 Calico를 호스트 보호에만 쓰는 호스트에서만 고려해요. BPF 모드에서는 커널과의 상호작용 때문에 IPForwarding을 켜거나 BPFEnforceRPF를 꺼야 해요.
스키마 "Disabled", "Enabled" 중 하나
기본값 Enabled
ipv4ElevatedRoutePriority
속성 값
키 ipv4ElevatedRoutePriority
설명 상위 우선순위(elevated priority)로 프로그래밍되는 Calico IPv4 경로의 라우트 우선순위 값이에요. 참고로 값이 클수록 우선순위는 낮아요. 상위 우선순위는 VM 라이브 마이그레이션 중에 쓰이고, 최적의 동작을 위해서는 IPv4ElevatedRoutePriority가 IPv4NormalRoutePriority보다 작아야 해요.
스키마 정수: [1,2147483646]
기본값 512
ipv4NormalRoutePriority
속성 값
키 ipv4NormalRoutePriority
설명 일반 우선순위로 프로그래밍되는 Calico IPv4 경로의 라우트 우선순위 값이에요. 참고로 값이 클수록 우선순위는 낮아요.
스키마 정수: [1,2147483646]
기본값 1024
ipv6ElevatedRoutePriority
속성 값
키 ipv6ElevatedRoutePriority
설명 상위 우선순위(elevated priority)로 프로그래밍되는 Calico IPv6 경로의 라우트 우선순위 값이에요. 참고로 값이 클수록 우선순위는 낮아요. 상위 우선순위는 VM 라이브 마이그레이션 중에 쓰이고, 최적의 동작을 위해서는 IPv6ElevatedRoutePriority가 IPv6NormalRoutePriority보다 작아야 해요.
스키마 정수: [1,2147483646]
기본값 512
ipv6NormalRoutePriority
속성 값
키 ipv6NormalRoutePriority
설명 일반 우선순위로 프로그래밍되는 Calico IPv6 경로의 라우트 우선순위 값이에요. 참고로 값이 클수록 우선순위는 낮아요.
스키마 정수: [1,2147483646]
기본값 1024
interfaceExclude
속성 값
키 interfaceExclude
설명 Felix가 호스트 엔드포인트를 찾을 때 제외할 인터페이스 이름 목록이에요(쉼표로 구분). 기본값은 쿠버네티스의 내부 kube-ipvs0 디바이스를 무시하도록 되어 있어요. 하나의 값으로 여러 인터페이스 이름을 제외하고 싶다면 정규식을 쓸 수 있어요. 정규식은 값 앞뒤를 /로 감싸야 해요. 예를 들어 /^kube/,veth1로 설정하면 kube로 시작하는 모든 인터페이스와 veth1 인터페이스가 제외돼요.
스키마 문자열
기본값 kube-ipvs0
interfacePrefix
속성 값
키 interfacePrefix
설명 워크로드 엔드포인트를 식별하고 호스트 엔드포인트 인터페이스와 구별하는 인터페이스 이름 접두사예요. 참고로 베어 메탈이 아닌 환경에서는 오케스트레이터가 이 값을 알맞게 설정해줘요. 예를 들어 쿠버네티스와 Docker 통합은 'cali' 값을 쓰고, OpenStack 통합은 'tap' 값을 써요.
스키마 문자열
기본값 cali
interfaceRefreshInterval
속성 값
키 interfaceRefreshInterval
설명 Felix가 로컬 인터페이스를 다시 스캔해서 상태를 확인하는 주기예요. 간격을 0으로 설정하면 재스캔을 끌 수 있어요.
스키마 duration 문자열, 예를 들면 1m30s123ms 또는 1h5m
기본값 1m30s
ipv6Support
속성 값
키 ipv6Support
설명 Felix가 IPv6 지원을 켤지 제어해요(사용 중인 데이터플레인이 지원하는 경우).
스키마 불리언
기본값 true
istioAmbientMode
속성 값
키 istioAmbientMode
설명 Tigera의 Istio 배포판과 함께 동작하도록 Felix를 구성해요.
스키마 "Disabled", "Enabled" 중 하나
기본값 Disabled
istioDSCPMark
속성 값
키 istioDSCPMark
설명 Istio가 켜져 있을 때 Istio ZTunnel로 트래픽을 보낼 때 쓰는 값을 설정해요. 마크는 마지막 홉의 SYN 패킷에만 설정돼요. 다른 프로토콜과 간섭하지 않기 위해서예요. 이 값은 Calico가 예약한 값이라 다른 Istio 설치와 함께 쓰면 안 돼요.
스키마 문자열
기본값 없음
liveMigrationRouteConvergenceTime
속성 값
키 liveMigrationRouteConvergenceTime
설명 VM 라이브 마이그레이션이 끝난 뒤 상위 우선순위 경로를 유지하는 시간이에요. 이렇게 하면 원래 우선순위로 되돌리기 전에 클러스터 전체에서 경로 수렴이 끝날 수 있어요.
스키마 duration 문자열, 예를 들면 1m30s123ms 또는 1h5m
기본값 30s
localSubnetL2Reachability
속성 값
키 localSubnetL2Reachability
설명 Felix가 호스트 인터페이스와 같은 서브넷에 속한 로컬 파드 IP와 선택된 LoadBalancer VIP에 대해, 호스트 인터페이스에서 ARP(IPv4)와 NDP(IPv6) 요청에 자동으로 응답할지 제어해요. PodsAndLoadBalancers로 설정하면 호스트 서브넷의 파드와 LB VIP는 BGP 없이 로컬 L2 세그먼트에서 도달할 수 있어요.
스키마 "Disabled", "PodsAndLoadBalancers" 중 하나
기본값 Disabled
localSubnetL2ReachabilityRefreshInterval
속성 값
키 localSubnetL2ReachabilityRefreshInterval
설명 LocalSubnetL2Reachability가 켜져 있을 때, Felix가 ARP/NDP를 프록시하는 모든 IP를 얼마나 자주 다시 알림(gratuitous ARP / unsolicited NA)할지 제어해요. 프록시 중인 IP 집합이 바뀌지 않았더라도 이웃 캐시와 스위치 포워딩 테이블을 따뜻하게 유지하죠. 0으로 설정하면 주기적 재알림을 끄고, IP가 추가될 때의 일회성 알림만 남겨요.
스키마 duration 문자열, 예를 들면 1m30s123ms 또는 1h5m
기본값 2m0s
mtuIfacePattern
속성 값
키 mtuIfacePattern
설명 호스트의 MTU를 계산하려고 Felix가 스캔할 인터페이스를 결정하는 정규식이에요. 워크로드 인터페이스(보통 cali...로 이름 붙어요)와는 매치되지 않아야 해요.
스키마 문자열
기본값 ^((en|wl|ww|sl|ib)[Pcopsvx].*|(eth|wlan|wwan).*)
natOutgoingAddress
속성 값
키 natOutgoingAddress
설명 natOutgoing 풀에 속한 트래픽이 네트워크 밖으로 나갈 때 소스 NAT에 사용할 주소를 지정해요. 기본적으로는 트래픽이 나가는 인터페이스에 붙은 주소를 사용해요(즉, iptables MASQUERADE 타겟을 쓰는 거예요).
스키마 문자열
기본값 없음
natOutgoingExclusions
속성 값
키 natOutgoingExclusions
설명 IP 풀 설정에서 natOutgoing이 true일 때, 이 IP 풀의 Calico 네트워킹 컨테이너에서 보내는 패킷은 목적지에 따라 마스커레이드돼요. 어떤 유형의 목적지를 마스커레이드에서 제외할지 설정해요. - IPPoolsOnly: 이 IP 풀 밖의 목적지는 마스커레이드돼요. - IPPoolsAndHostIPs: 이 IP 풀 밖의 목적지와 모든 호스트가 마스커레이드돼요.
스키마 "IPPoolsAndHostIPs", "IPPoolsOnly" 중 하나
기본값 IPPoolsOnly
natPortRange
속성 값
키 natPortRange
설명 아웃바운드 NAT을 할 때 포트 매핑에 사용할 포트 범위를 지정해요. 설정하지 않으면 네트워크 스택의 기본 동작을 따라가요.
스키마 포트 범위: [0,65535] 범위의 정수 또는 n:m 형식의 범위 문자열
기본값 0
nftablesFlowTableDataIfacePattern
속성 값
키 nftablesFlowTableDataIfacePattern
설명 nftables flowtable에 추가할 호스트 인터페이스를 결정하는 정규식이에요. 이 인터페이스들과 로컬 워크로드 사이에서 포워딩되는 트래픽은 flowtable 고속 경로로 오프로드돼요. 비워 두면 워크로드 간 트래픽만 오프로드해요. NFTablesFlowTableOffload가 Disabled가 아닐 때만 효과가 있어요.
스키마 문자열
기본값 없음
nftablesFlowTableOffload
속성 값
키 nftablesFlowTableOffload
설명 포워딩 성능을 높이기 위해 nftables flowtable 오프로드를 어떤 트래픽에 켤지 제어해요. "All"로 설정하면 Calico 정책이 수락한 established 연결이 커널의 flowtable 고속 경로로 오프로드돼요. nftables 모드가 활성일 때만 적용돼요.
스키마 "All", "Disabled" 중 하나
기본값 Disabled
nftablesMode
속성 값
키 nftablesMode
설명 Felix에서 nftables 지원을 구성해요. Auto 모드에서는 kube-proxy가 nftables 모드로 돌고 있다고 감지되면 Felix가 nftables 데이터플레인을 사용해요.
스키마 "Auto", "Disabled", "Enabled" 중 하나
기본값 Auto
netlinkTimeout
속성 값
키 netlinkTimeout
설명 경로, 규칙, 그 밖의 커널 객체를 프로그래밍할 때 netlink 프로토콜로 커널과 통신하는 타임아웃이에요.
스키마 duration 문자열, 예를 들면 1m30s123ms 또는 1h5m
기본값 10s
policySyncPathPrefix
속성 값
키 policySyncPathPrefix
설명 Felix가 애플리케이션 계층 정책 같은 외부 서비스에 정책 변경을 전달할 때 사용하는 경로예요.
스키마 문자열
기본값 없음
programClusterRoutes
속성 값
키 programClusterRoutes
설명 Felix가 어떤 "클러스터 경로"를 프로그래밍할지 제어해요. 클러스터 경로란 다른 노드의 워크로드에 도달하기 위해 노드가 필요로 하는 경로예요. 이 설정은 vxlanMode: Never인 IP 풀에만 적용되고, vxlanMode: Always 또는 CrossSubnet인 IP 풀의 클러스터 경로는 Felix가 항상 프로그래밍해요. 여기서 Felix가 프로그래밍하지 않는 경로는 Calico의 BGP 스택이 대신 프로그래밍할 것으로 기대돼요. 아래에서 IPIP IP 풀은 ipipMode: Always 또는 CrossSubnet인 풀이고, 비캡슐화(unencapsulated) 풀은 ipipMode와 vxlanMode가 둘 다 Never인 풀이에요. - Disabled: Felix는 클러스터 경로를 프로그래밍하지 않아요. - EnabledIPIPOnly: Felix는 IPIP IP 풀을 위해 프로그래밍해요. - EnabledNoEncapOnly: Felix는 비캡슐화 IP 풀을 위해 프로그래밍해요. - Enabled: Felix는 둘 다 프로그래밍해요. 이 필드는 BGPConfiguration.ProgramClusterRoutes와 일관되게 유지해야 해요. 이 필드는 BIRD 쪽에서 같은 선택을 해요. 같은 종류의 IP 풀에 Felix와 BIRD가 둘 다 켜져 있으면 경로를 두고 서로 다투고, 둘 다 꺼져 있으면 클러스터 경로가 아예 없게 돼요. 참고로 Disabled와 EnabledNoEncapOnly 값처럼 IPIP 클러스터 경로를 BGP에 맡기는 방식은 v3.33에서 폐기(deprecated)됐고 v3.35에서 제거될 예정이에요.
스키마 "Disabled", "Enabled", "EnabledIPIPOnly", "EnabledNoEncapOnly" 중 하나
기본값 EnabledIPIPOnly
removeExternalRoutes
속성 값
키 removeExternalRoutes
설명 Felix가 워크로드 인터페이스로 향하는 예상 밖의 경로를 제거할지 제어해요. Felix는 설정된 DeviceRouteProtocol을 사용하는 예상된 경로는 항상 정리해요. 자신만의 경로를 추가하려면 이 필드를 false로 설정하는 것과 별개로, 별개의 프로토콜을 사용해야 해요.
스키마 불리언
기본값 true
requireMTUFile
속성 값
키 requireMTUFile
설명 felix를 시작하려면 mtu 파일이 필요한지 지정해요. 이전 동작과 같게 유지하기 위해 선택 사항으로 남아 있어요.
스키마 불리언
기본값 false
routeRefreshInterval
속성 값
키 routeRefreshInterval
설명 다른 프로세스가 실수로 Calico 규칙을 망가뜨리지 않았는지 확인하려고 Felix가 데이터플레인의 경로를 다시 검사하는 주기예요. 0으로 설정하면 경로 리프레시를 끌 수 있어요.
스키마 duration 문자열, 예를 들면 1m30s123ms 또는 1h5m
기본값 1m30s
routeSource
속성 값
키 routeSource
설명 Felix가 어디서 라우팅 정보를 가져올지 구성해요. - WorkloadIPs: 워크로드 엔드포인트를 사용해서 경로를 만들어요. - CalicoIPAM: 기본값으로, IPAM 데이터를 사용해서 경로를 만들어요.
스키마 CalicoIPAM, WorkloadIPs 중 하나
기본값 CalicoIPAM
routeSyncDisabled
속성 값
키 routeSyncDisabled
설명 라우트 테이블에서 수행되는 모든 작업을 끊어요. 네트워크 정책 전용 모드로 동작시키려면 true로 설정해요.
스키마 불리언
기본값 false
routeTableRange
속성 값
키 routeTableRange
설명 RouteTableRanges로 대체되어 폐기(deprecated)됐어요. Calico는 여러 목적으로 추가 Linux 라우트 테이블을 프로그래밍해요. RouteTableRange는 Calico가 사용해야 할 라우트 테이블의 인덱스를 지정해요.
스키마 라우트 테이블 범위: {min:<n>, max<m>}
기본값 없음
routeTableRanges
속성 값
키 routeTableRanges
설명 Calico는 여러 목적으로 추가 Linux 라우트 테이블을 프로그래밍해요. RouteTableRanges는 Calico가 사용해야 할 테이블 인덱스 범위의 집합을 지정해요. RouteTableRange를 대체하며, RouteTableRange를 덮어써요.
스키마 라우트 테이블 범위 목록: [{min:<n>, max<m>}, ...]
기본값 없음
serviceLoopPrevention
속성 값
키 serviceLoopPrevention
설명 서비스 IP 광고(service IP advertisement)가 켜져 있을 때, kube-proxy가 DNAT하지 않은 패킷을 드롭하거나 거절해서 사용 중이 아닌 서비스 IP로의 라우팅 루프를 막아요. "Disabled"로 설정하면 그런 라우팅 루프는 계속 허용돼요.
스키마 Disabled, Drop, Reject 중 하나
기본값 Drop
sidecarAccelerationEnabled
속성 값
키 sidecarAccelerationEnabled
설명 실험적인 사이드카 가속을 켜요.
스키마 불리언
기본값 false
useInternalDataplaneDriver
속성 값
키 useInternalDataplaneDriver
설명 true이면 Felix가 내부 데이터플레인 프로그래밍 로직을 사용해요. false이면 외부 데이터플레인 드라이버를 띄우고 protobuf로 통신해요.
스키마 불리언
기본값 true
workloadSourceSpoofing
속성 값
키 workloadSourceSpoofing
설명 파드가 allowedSourcePrefixes 어노테이션을 사용해서 자신이 아닌 소스 IP 주소로 트래픽을 보낼 수 있는지 제어해요. 기본적으로는 꺼져 있어요. "Any"로 설정하면 파드가 어떤 접두사든 요청할 수 있어요.
스키마 Any, Disabled 중 하나
기본값 Disabled

데이터플레인: iptables

더 알아보기 (Learn more)

FelixConfiguration은 클러스터 전역 default, 노드별 node.<nodename>, 셀렉터 범위 리소스 세 가지 스코프로 구성을 나눠서 관리해요. 각 키의 기본값과 스키마를 확인한 뒤 꼭 필요한 항목만 바꾸는 게 안전해요. 더 자세한 내용은 Felix 구성하기 문서를 참고하세요.