Felix 구성 파트 1
Felix 구성 레퍼런스의 첫 번째 파트예요. Felix 구성을 어떤 순서로 어디에서 읽는지 설명하고, 데이터스토어 연결과 기능 감지 오버라이드(Feature detection/overrides), Go 런타임 튜닝에 쓰는 키들을 정리해요. 각 항목은 구성 파일 키와 환경 변수 탭으로 각각 확인할 수 있어요.
출처: 문서
본문
SUCCESS: 다음 표들은 구성 파일과 환경 변수 파라미터를 자세히 설명해요.
FelixConfiguration리소스 설정은 Felix Configuration Resource를 참고하세요.
Felix 구성은 다음 순서대로 다섯 가지 위치 중 한 곳에서 읽어요.
- 환경 변수.
- Felix 구성 파일.
- 노드별
FelixConfiguration리소스 (node.<nodename>). - 셀렉터 범위의
FelixConfiguration리소스 (Selector-scoped configuration 참고). - 글로벌
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 구성 옵션은 이 레퍼런스의 다음 파트에서 계속 이어져요. 헬스 포트와 타임아웃 관련 키부터 다음 파트에서 확인해 보세요.