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

Felix 구성 파트 1

원문 보기 위키 갱신

Felix 구성 레퍼런스의 첫 번째 파트예요. Felix 구성을 어떤 순서로 어디에서 읽는지 설명하고, 데이터스토어 연결과 기능 감지 오버라이드(Feature detection/overrides), Go 런타임 튜닝에 쓰는 키들을 정리해요. 각 항목은 구성 파일 키와 환경 변수 탭으로 각각 확인할 수 있어요.

출처: 문서

본문

SUCCESS: 다음 표들은 구성 파일과 환경 변수 파라미터를 자세히 설명해요. FelixConfiguration 리소스 설정은 Felix Configuration Resource를 참고하세요.

Felix 구성은 다음 순서대로 다섯 가지 위치 중 한 곳에서 읽어요.

  1. 환경 변수.
  2. Felix 구성 파일.
  3. 노드별 FelixConfiguration 리소스 (node.<nodename>).
  4. 셀렉터 범위의 FelixConfiguration 리소스 (Selector-scoped configuration 참고).
  5. 글로벌 FelixConfiguration 리소스 (default).

구성 파라미터의 값은 값을 담고 있는 첫 번째 위치에서 읽은 값이에요. 예를 들어 환경 변수에 값이 있으면 그 값이 최상위 우선순위를 가져요.

어떤 위치에도 설정되어 있지 않으면 대부분의 구성 파라미터는 기본값을 사용하기 때문에, 명시적으로 설정해야 하는 경우는 드물어야 해요.

설정할 수 있는 파라미터 전체 목록은 다음과 같아요.

사양 (Spec)

데이터스토어 연결

DatastoreType

탭: 구성 파일

속성 값
키 DatastoreType
설명 Felix가 사용할 데이터스토어 드라이버를 제어해요. 보통은 환경에서 자동으로 감지되기 때문에 수동으로 설정할 필요가 없어요. (예를 들어 KUBECONFIG가 설정되어 있으면 kubernetes 데이터스토어 드라이버가 기본으로 사용돼요.)
스키마 etcdv3, kubernetes 중 하나
기본값 etcdv3

탭: 환경 변수

속성 값
키 FELIX_DATASTORETYPE
설명 Felix가 사용할 데이터스토어 드라이버를 제어해요. 보통은 환경에서 자동으로 감지되기 때문에 수동으로 설정할 필요가 없어요. (예를 들어 KUBECONFIG가 설정되어 있으면 kubernetes 데이터스토어 드라이버가 기본으로 사용돼요.)
스키마 etcdv3, kubernetes 중 하나
기본값 etcdv3

EtcdAddr

탭: 구성 파일

속성 값
키 EtcdAddr
설명 etcdv3 데이터스토어 드라이버를 사용할 때 연결할 etcd 서버와 포트예요. EtcdEndpoints도 지정되면 그쪽이 우선해요.
스키마 정규식 ^[^:/]+:\d+$과 일치하는 문자열
기본값 127.0.0.1:2379

탭: 환경 변수

속성 값
키 FELIX_ETCDADDR
설명 etcdv3 데이터스토어 드라이버를 사용할 때 연결할 etcd 서버와 포트예요. EtcdEndpoints도 지정되면 그쪽이 우선해요.
스키마 정규식 ^[^:/]+:\d+$과 일치하는 문자열
기본값 127.0.0.1:2379

EtcdCaFile

탭: 구성 파일

속성 값
키 EtcdCaFile
설명 etcdv3 데이터스토어 드라이버를 사용할 때 etcd에 연결하면서 쓰는 TLS CA 파일 경로예요. CA 파일을 지정하면 다른 TLS 파라미터도 반드시 지정해야 해요.
스키마 존재해야 하는 파일 경로
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_ETCDCAFILE
설명 etcdv3 데이터스토어 드라이버를 사용할 때 etcd에 연결하면서 쓰는 TLS CA 파일 경로예요. CA 파일을 지정하면 다른 TLS 파라미터도 반드시 지정해야 해요.
스키마 존재해야 하는 파일 경로
기본값 없음

EtcdCertFile

탭: 구성 파일

속성 값
키 EtcdCertFile
설명 etcdv3 데이터스토어 드라이버를 사용할 때 etcd에 연결하면서 쓰는 TLS 인증서 파일 경로예요. 인증서 파일을 지정하면 다른 TLS 파라미터도 반드시 지정해야 해요.
스키마 존재해야 하는 파일 경로
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_ETCDCERTFILE
설명 etcdv3 데이터스토어 드라이버를 사용할 때 etcd에 연결하면서 쓰는 TLS 인증서 파일 경로예요. 인증서 파일을 지정하면 다른 TLS 파라미터도 반드시 지정해야 해요.
스키마 존재해야 하는 파일 경로
기본값 없음

EtcdEndpoints

탭: 구성 파일

속성 값
키 EtcdEndpoints
설명 etcdv3 데이터스토어 드라이버를 사용할 때 연결할 etcd 엔드포인트의 쉼표 구분 목록이며, EtcdAddr와 EtcdScheme을 대체해요.
스키마 HTTP 엔드포인트 목록: http(s)://hostname:port의 쉼표 구분 목록
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_ETCDENDPOINTS
설명 etcdv3 데이터스토어 드라이버를 사용할 때 연결할 etcd 엔드포인트의 쉼표 구분 목록이며, EtcdAddr와 EtcdScheme을 대체해요.
스키마 HTTP 엔드포인트 목록: http(s)://hostname:port의 쉼표 구분 목록
기본값 없음

EtcdKeyFile

탭: 구성 파일

속성 값
키 EtcdKeyFile
설명 etcdv3 데이터스토어 드라이버를 사용할 때 etcd에 연결하면서 쓰는 TLS 개인 키 파일 경로예요. 키 파일을 지정하면 다른 TLS 파라미터도 반드시 지정해야 해요.
스키마 존재해야 하는 파일 경로
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_ETCDKEYFILE
설명 etcdv3 데이터스토어 드라이버를 사용할 때 etcd에 연결하면서 쓰는 TLS 개인 키 파일 경로예요. 키 파일을 지정하면 다른 TLS 파라미터도 반드시 지정해야 해요.
스키마 존재해야 하는 파일 경로
기본값 없음

EtcdScheme

탭: 구성 파일

속성 값
키 EtcdScheme
설명 EtcdAddr 관련 설정이에요. etcdv3 데이터스토어 드라이버를 사용할 때 쓸 URL 스킴이에요. EtcdEndpoints도 지정되면 그쪽이 우선해요.
스키마 http, https 중 하나
기본값 http

탭: 환경 변수

속성 값
키 FELIX_ETCDSCHEME
설명 EtcdAddr 관련 설정이에요. etcdv3 데이터스토어 드라이버를 사용할 때 쓸 URL 스킴이에요. EtcdEndpoints도 지정되면 그쪽이 우선해요.
스키마 http, https 중 하나
기본값 http

FelixHostname

탭: 구성 파일

속성 값
키 FelixHostname
설명 이 노드의 이름이에요. 데이터스토어에서 이 노드에 속한 리소스를 식별하는 데 사용돼요. 지정하지 않으면 노드의 호스트명에서 자동으로 감지해요.
스키마 정규식 ^[a-zA-Z0-9_.-]+$과 일치하는 문자열
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_FELIXHOSTNAME
설명 이 노드의 이름이에요. 데이터스토어에서 이 노드에 속한 리소스를 식별하는 데 사용돼요. 지정하지 않으면 노드의 호스트명에서 자동으로 감지해요.
스키마 정규식 ^[a-zA-Z0-9_.-]+$과 일치하는 문자열
기본값 없음

TyphaAddr

탭: 구성 파일

속성 값
키 TyphaAddr
설명 설정하면 Felix가 지정한 주소와 포트로 Typha에 연결해요. TyphaK8sServiceName을 덮어써요.
스키마 정규식 ^[^:/]+:\d+$과 일치하는 문자열
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_TYPHAADDR
설명 설정하면 Felix가 지정한 주소와 포트로 Typha에 연결해요. TyphaK8sServiceName을 덮어써요.
스키마 정규식 ^[^:/]+:\d+$과 일치하는 문자열
기본값 없음

TyphaCAFile

탭: 구성 파일

속성 값
키 TyphaCAFile
설명 Typha와 통신할 때 쓰는 TLS CA 파일 경로예요. 이 파라미터를 지정하면 다른 TLS 파라미터도 반드시 지정해야 해요.
스키마 존재해야 하는 파일 경로
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_TYPHACAFILE
설명 Typha와 통신할 때 쓰는 TLS CA 파일 경로예요. 이 파라미터를 지정하면 다른 TLS 파라미터도 반드시 지정해야 해요.
스키마 존재해야 하는 파일 경로
기본값 없음

TyphaCN

탭: 구성 파일

속성 값
키 TyphaCN
설명 TLS로 Typha에 인증할 때 사용할 Common Name이에요. TLS 파라미터를 하나라도 지정했다면 TyphaCN과 TyphaURISAN 중 하나는 반드시 설정해야 해요.
스키마 문자열
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_TYPHACN
설명 TLS로 Typha에 인증할 때 사용할 Common Name이에요. TLS 파라미터를 하나라도 지정했다면 TyphaCN과 TyphaURISAN 중 하나는 반드시 설정해야 해요.
스키마 문자열
기본값 없음

TyphaCertFile

탭: 구성 파일

속성 값
키 TyphaCertFile
설명 Typha와 통신할 때 쓰는 TLS 인증서 경로예요. 이 파라미터를 지정하면 다른 TLS 파라미터도 반드시 지정해야 해요.
스키마 존재해야 하는 파일 경로
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_TYPHACERTFILE
설명 Typha와 통신할 때 쓰는 TLS 인증서 경로예요. 이 파라미터를 지정하면 다른 TLS 파라미터도 반드시 지정해야 해요.
스키마 존재해야 하는 파일 경로
기본값 없음

TyphaK8sNamespace

탭: 구성 파일

속성 값
키 TyphaK8sNamespace
설명 Typha 서비스를 찾을 때 탐색할 네임스페이스예요 (TyphaK8sServiceName 참고).
스키마 문자열
기본값 kube-system

탭: 환경 변수

속성 값
키 FELIX_TYPHAK8SNAMESPACE
설명 Typha 서비스를 찾을 때 탐색할 네임스페이스예요 (TyphaK8sServiceName 참고).
스키마 문자열
기본값 kube-system

TyphaK8sServiceName

탭: 구성 파일

속성 값
키 TyphaK8sServiceName
설명 설정하면 TyphaK8sNamespace로 지정한 네임스페이스에서 해당 Kubernetes Service의 Endpoints를 조회해 Typha에 연결해요.
스키마 문자열
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_TYPHAK8SSERVICENAME
설명 설정하면 TyphaK8sNamespace로 지정한 네임스페이스에서 해당 Kubernetes Service의 Endpoints를 조회해 Typha에 연결해요.
스키마 문자열
기본값 없음

TyphaKeyFile

탭: 구성 파일

속성 값
키 TyphaKeyFile
설명 Typha와 통신할 때 쓰는 TLS 개인 키 경로예요. 이 파라미터를 지정하면 다른 TLS 파라미터도 반드시 지정해야 해요.
스키마 존재해야 하는 파일 경로
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_TYPHAKEYFILE
설명 Typha와 통신할 때 쓰는 TLS 개인 키 경로예요. 이 파라미터를 지정하면 다른 TLS 파라미터도 반드시 지정해야 해요.
스키마 존재해야 하는 파일 경로
기본값 없음

TyphaReadTimeout

탭: 구성 파일

속성 값
키 TyphaReadTimeout
설명 Typha 연결에서 데이터를 읽을 때의 읽기 타임아웃이에요. typha가 이 시간 동안 아무 데이터도 보내지 않으면 Felix는 종료 후 재시작해요. (Typha가 주기적으로 ping을 보내기 때문에 트래픽은 항상 기대되는 상태라는 점에 유의하세요.)
스키마 초 (부동 소수점)
기본값 30

탭: 환경 변수

속성 값
키 FELIX_TYPHAREADTIMEOUT
설명 Typha 연결에서 데이터를 읽을 때의 읽기 타임아웃이에요. typha가 이 시간 동안 아무 데이터도 보내지 않으면 Felix는 종료 후 재시작해요. (Typha가 주기적으로 ping을 보내기 때문에 트래픽은 항상 기대되는 상태라는 점에 유의하세요.)
스키마 초 (부동 소수점)
기본값 30

TyphaURISAN

탭: 구성 파일

속성 값
키 TyphaURISAN
설명 TLS로 Typha에 인증할 때 사용할 URI SAN이에요. TLS 파라미터를 하나라도 지정했다면 TyphaCN과 TyphaURISAN 중 하나는 반드시 설정해야 해요.
스키마 문자열
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_TYPHAURISAN
설명 TLS로 Typha에 인증할 때 사용할 URI SAN이에요. TLS 파라미터를 하나라도 지정했다면 TyphaCN과 TyphaURISAN 중 하나는 반드시 설정해야 해요.
스키마 문자열
기본값 없음

TyphaWriteTimeout

탭: 구성 파일

속성 값
키 TyphaWriteTimeout
설명 Typha에 데이터를 쓸 때의 쓰기 타임아웃이에요.
스키마 초 (부동 소수점)
기본값 10

탭: 환경 변수

속성 값
키 FELIX_TYPHAWRITETIMEOUT
설명 Typha에 데이터를 쓸 때의 쓰기 타임아웃이에요.
스키마 초 (부동 소수점)
기본값 10

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

FeatureDetectOverride

탭: 구성 파일

속성 값
키 FeatureDetectOverride
설명 자동으로 감지한 플랫폼 능력에 기반한 기능 감지를 재정의할 때 사용해요. 값은 공백 없이 쉼표로 구분한 목록으로 지정해요. 예: "SNATFullyRandom=true,MASQFullyRandom=false,RestoreSupportsLock=". "true" 또는 "false" 값은 기능을 강제로 켜거나 끄고, 비어 있거나 생략된 값은 자동 감지로 폴백해요.
스키마 쉼표로 구분된 key=value 쌍 목록
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_FEATUREDETECTOVERRIDE
설명 자동으로 감지한 플랫폼 능력에 기반한 기능 감지를 재정의할 때 사용해요. 값은 공백 없이 쉼표로 구분한 목록으로 지정해요. 예: "SNATFullyRandom=true,MASQFullyRandom=false,RestoreSupportsLock=". "true" 또는 "false" 값은 기능을 강제로 켜거나 끄고, 비어 있거나 생략된 값은 자동 감지로 폴백해요.
스키마 쉼표로 구분된 key=value 쌍 목록
기본값 없음

FeatureGates

탭: 구성 파일

속성 값
키 FeatureGates
설명 기술 프리뷰(tech-preview) Calico 기능을 켜거나 끌 때 사용해요. 값은 공백 없이 쉼표로 구분한 목록으로 지정해요. 예: "BPFConnectTimeLoadBalancingWorkaround=enabled,XyZ=false". 아직 프로덕션 준비가 완전히 끝나지 않은 기능을 활성화할 때 쓰여요.
스키마 쉼표로 구분된 key=value 쌍 목록
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_FEATUREGATES
설명 기술 프리뷰(tech-preview) Calico 기능을 켜거나 끌 때 사용해요. 값은 공백 없이 쉼표로 구분한 목록으로 지정해요. 예: "BPFConnectTimeLoadBalancingWorkaround=enabled,XyZ=false". 아직 프로덕션 준비가 완전히 끝나지 않은 기능을 활성화할 때 쓰여요.
스키마 쉼표로 구분된 key=value 쌍 목록
기본값 없음

프로세스: Go 런타임

GoGCThreshold

탭: 구성 파일

속성 값
키 GoGCThreshold
설명 Go 런타임의 가비지 컬렉션 임계값을 설정해요. 즉, 가비지 컬렉션이 트리거되기 전까지 힙이 늘어날 수 있는 백분율이에요. 일반적으로 값을 두 배로 늘리면 GC에 쓰는 CPU 시간이 절반으로 줄지만, GC 피크 메모리 오버헤드도 두 배가 돼요. 특수 값 -1을 쓰면 GC를 완전히 끌 수 있는데, 이는 GoMemoryLimitMB 설정과 함께 쓸 때만 사용해야 해요. 이 설정은 GOGC 환경 변수로 재정의돼요.
스키마 정수: [-1,263-1]
기본값 40

탭: 환경 변수

속성 값
키 FELIX_GOGCTHRESHOLD
설명 Go 런타임의 가비지 컬렉션 임계값을 설정해요. 즉, 가비지 컬렉션이 트리거되기 전까지 힙이 늘어날 수 있는 백분율이에요. 일반적으로 값을 두 배로 늘리면 GC에 쓰는 CPU 시간이 절반으로 줄지만, GC 피크 메모리 오버헤드도 두 배가 돼요. 특수 값 -1을 쓰면 GC를 완전히 끌 수 있는데, 이는 GoMemoryLimitMB 설정과 함께 쓸 때만 사용해야 해요. 이 설정은 GOGC 환경 변수로 재정의돼요.
스키마 정수: [-1,263-1]
기본값 40

GoMaxProcs

탭: 구성 파일

속성 값
키 GoMaxProcs
설명 Go 런타임이 동시에 사용할 최대 CPU 수를 설정해요. -1은 "시스템 기본값 사용"을 의미하며, 보통 시스템의 실제 CPU 수예요. 이 설정은 GOMAXPROCS 환경 변수로 재정의돼요.
스키마 정수: [-1,263-1]
기본값 -1

탭: 환경 변수

속성 값
키 FELIX_GOMAXPROCS
설명 Go 런타임이 동시에 사용할 최대 CPU 수를 설정해요. -1은 "시스템 기본값 사용"을 의미하며, 보통 시스템의 실제 CPU 수예요. 이 설정은 GOMAXPROCS 환경 변수로 재정의돼요.
스키마 정수: [-1,263-1]
기본값 -1

GoMemoryLimitMB

탭: 구성 파일

속성 값
키 GoMemoryLimitMB
설명 Go 런타임의 (소프트) 메모리 제한을 MB 단위로 설정해요. Go 런타임은 필요할 때 GC를 트리거해 메모리 사용량을 제한 이하로 유지하려 해요. 스래싱을 피하기 위해 GC가 프로세스 CPU 시간의 50%를 넘게 차지하기 시작하면 제한을 넘을 수 있어요. -1은 메모리 제한을 끄는 값이에요. 메모리 제한을 사용한다면 컨테이너나 pod 수준에서 설정한 하드 리소스 제한보다 충분히 작아야 한다는 점에 유의하세요. felix가 컨테이너나 pod에서 실행돼야 하는 유일한 프로세스는 아니기 때문이에요. 이 설정은 GOMEMLIMIT 환경 변수로 재정의돼요.
스키마 정수: [-1,263-1]
기본값 -1

탭: 환경 변수

속성 값
키 FELIX_GOMEMORYLIMITMB
설명 Go 런타임의 (소프트) 메모리 제한을 MB 단위로 설정해요. Go 런타임은 필요할 때 GC를 트리거해 메모리 사용량을 제한 이하로 유지하려 해요. 스래싱을 피하기 위해 GC가 프로세스 CPU 시간의 50%를 넘게 차지하기 시작하면 제한을 넘을 수 있어요. -1은 메모리 제한을 끄는 값이에요. 메모리 제한을 사용한다면 컨테이너나 pod 수준에서 설정한 하드 리소스 제한보다 충분히 작아야 한다는 점에 유의하세요. felix가 컨테이너나 pod에서 실행돼야 하는 유일한 프로세스는 아니기 때문이에요. 이 설정은 GOMEMLIMIT 환경 변수로 재정의돼요.
스키마 정수: [-1,263-1]
기본값 -1

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

더 알아보기 (Learn more)

Felix 구성 옵션은 이 레퍼런스의 다음 파트에서 계속 이어져요. 헬스 포트와 타임아웃 관련 키부터 다음 파트에서 확인해 보세요.