실륨은 EBPF 기반 데이터 플랜을 갖춘 네트워킹, 관찰 가능성 및 보안 솔루션입니다. 기본 라우팅 또는 오버레이 모드에서 여러 클러스터를 스팬할 수있는 간단한 플랫 레이어 3 네트워크를 제공합니다. L7 프로토콜 인식이며 네트워크 주소 지정에서 분리 된 ID 기반 보안 모델을 사용하여 L3-L7의 네트워크 정책을 시행 할 수 있습니다.
실륨은 포드와 외부 서비스 간의 트래픽에 대한 분산로드 밸런싱을 구현하며 EBPF의 효율적인 해시 테이블을 사용하여 거의 무제한 규모를 허용하는 Kube-Proxy를 완전히 교체 할 수 있습니다. 또한 Integrated Ingress 및 Egress Gateway, 대역폭 관리 및 서비스 메시와 같은 고급 기능을 지원하며 깊은 네트워크 및 보안 가시성 및 모니터링을 제공합니다.
EBPF라는 새로운 Linux 커널 기술은 실륨의 기초에 있습니다. 네트워크 IO, 애플리케이션 소켓 및 TracePoints와 같은 다양한 통합 지점에서 Linux 커널에 EBPF 바이트 코드의 동적 삽입을 지원하여 보안, 네트워킹 및 가시성 로직을 구현합니다. EBPF는 매우 효율적이고 유연합니다. EBPF에 대한 자세한 내용은 EBPF.io를 방문하십시오.
실륨 커뮤니티는 마지막 3 개의 작은 실륨 버전에 대해 약간의 안정적인 릴리스를 유지합니다. 이전의 사소한 릴리스의 구형 실륨 안정 버전은 EOL로 간주됩니다.
새로운 마이너 릴리스로의 업그레이드는 실륨 업그레이드 안내서를 참조하십시오.
아래에는 적극적으로 유지 관리 된 릴리스 브랜치와 최신 패치 릴리스, 해당 이미지 풀 태그 및 릴리스 노트가 있습니다.
v1.16 | 2024-11-14 | quay.io/cilium/cilium:v1.16.4 | 릴리스 노트 |
v1.15 | 2024-11-14 | quay.io/cilium/cilium:v1.15.11 | 릴리스 노트 |
v1.14 | 2024-11-14 | quay.io/cilium/cilium:v1.14.17 | 릴리스 노트 |
실륨 이미지는 AMD64 및 AARCH64 아키텍처 용으로 분포됩니다.
실륨 버전 1.13.0으로 시작하여 모든 이미지에는 소프트웨어 재료 청구서 (SBOM)가 포함됩니다. SBOM은 SPDX 형식으로 생성됩니다. 이에 대한 자세한 내용은 Cilium SBOM에서 확인할 수 있습니다.
개발 및 테스트 목적을 위해 Cilium Community는 스냅 샷, 초기 릴리스 후보 (RC) 및 CI 컨테이너 이미지가 메인 브랜치에서 제작됩니다. 이 이미지는 생산에 사용되지 않습니다.
새로운 개발 릴리스 업그레이드를 테스트하려면 섬모 업그레이드 안내서의 최신 개발 구축을 참조하십시오.
아래에는 스냅 샷 또는 RC 릴리스, 해당 이미지 풀 태그 및 해당되는 경우 릴리스 노트와 함께 테스트를위한 분기가 나와 있습니다.
기본 | 일일 | quay.io/cilium/cilium-ci:latest | N/A |
v1.17.0-pre.2 | 2024-11-01 | quay.io/cilium/cilium:v1.17.0-pre.2 | 사전 릴리스 후보 노트 |
REST/HTTP, GRPC 및 KAFKA와 같은 최신 애플리케이션 프로토콜을 보호하는 기능. 전통적인 방화벽은 계층 3과 4에서 작동합니다. 특정 포트에서 실행되는 프로토콜은 완전히 신뢰하거나 완전히 차단됩니다. 실륨은 다음과 같은 개별 애플리케이션 프로토콜 요청을 필터링하는 기능을 제공합니다.
메소드 GET
및 path /public/.*
를 사용하여 모든 HTTP 요청을 허용하십시오. 다른 모든 요청을 거부합니다.
service1
Kafka topic1
및 service2
에서 생산하도록 허용 topic1
에서 소비 할 수 있습니다. 다른 모든 Kafka 메시지를 거부하십시오.
HTTP 헤더 X-Token: [0-9]+
모든 휴식 전화에 존재하도록 요구합니다.
지원되는 프로토콜의 최신 목록과 사용 방법에 대한 예제에 대한 문서의 섹션 7 정책을 참조하십시오.
최신 분산 애플리케이션은 애플리케이션 컨테이너와 같은 기술에 의존하여 배포의 민첩성을 촉진하고 주문형으로 확장합니다. 이로 인해 많은 수의 애플리케이션 컨테이너가 단기간에 시작됩니다. 일반적인 컨테이너 방화벽 소스 IP 주소 및 대상 포트에서 필터링하여 워크로드를 안전하게 보안합니다. 이 개념은 컨테이너가 클러스터의 어느 곳에서나 시작될 때마다 모든 서버의 방화벽을 조작해야합니다.
척도를 제한하는 이러한 상황을 피하기 위해 실륨은 동일한 보안 정책을 공유하는 응용 프로그램 컨테이너 그룹에 보안 신원을 할당합니다. 그런 다음 ID는 응용 프로그램 컨테이너에 의해 방출되는 모든 네트워크 패킷과 연관되어 수신 노드에서 ID를 검증 할 수 있습니다. 보안 신분 관리는 키 가치 저장소를 사용하여 수행됩니다.
레이블 기반 보안은 클러스터 내부 액세스 제어를위한 선택 도구입니다. 외부 서비스에 대한 액세스를 보장하기 위해 Ingress와 Egress에 대한 전통적인 CIDR 기반 보안 정책이 지원됩니다. 이를 통해 응용 프로그램 컨테이너에서 특정 IP 범위로의 액세스를 제한 할 수 있습니다.
다중 클러스터를 스팬하는 기능을 갖춘 간단한 플랫 레이어 3 네트워크는 모든 애플리케이션 컨테이너를 연결합니다. 호스트 스코프 할당자를 사용하여 IP 할당은 간단하게 유지됩니다. 이는 각 호스트가 호스트 간의 조정없이 IP를 할당 할 수 있음을 의미합니다.
다음의 멀티 노드 네트워킹 모델이 지원됩니다.
오버레이 : 모든 호스트에 걸친 캡슐화 기반 가상 네트워크. 현재 VXLAN과 GENEVE가 구워졌지만 Linux에서 지원하는 모든 캡슐화 형식은 활성화 될 수 있습니다.
이 모드를 사용하는 시점 :이 모드에는 최소 인프라 및 통합 요구 사항이 있습니다. 유일한 요구 사항은 일반적으로 이미 제공되는 호스트 간의 IP 연결이므로 거의 모든 네트워크 인프라에서 작동합니다.
기본 라우팅 : Linux 호스트의 일반 라우팅 테이블 사용. 네트워크는 응용 프로그램 컨테이너의 IP 주소를 라우팅 할 수 있어야합니다.
이 모드를 사용하는 시점 :이 모드는 고급 사용자를위한 것이며 기본 네트워킹 인프라에 대한 인식이 필요합니다. 이 모드는 다음과 잘 작동합니다.
기본 IPv6 네트워크
클라우드 네트워크 라우터와 함께
이미 라우팅 데몬을 실행하고 있다면
실륨은 애플리케이션 컨테이너와 외부 서비스 간의 트래픽을위한 분산로드 밸런싱을 구현하며 Kube-Proxy와 같은 구성 요소를 완전히 교체 할 수 있습니다. 로드 밸런싱은 효율적인 해시블을 사용하여 EBPF에서 구현하여 거의 무제한 스케일을 허용합니다.
남북 유형로드 밸런싱의 경우 Cilium의 EBPF 구현은 최대 성능을 위해 최적화되어 있으며 XDP (Express Data Path)에 연결할 수 있으며로드 밸런싱 작업이 수행되지 않으면 DSR (Direct Server Return) 및 MAGLEV 일관성 해싱을 지원합니다. 소스 호스트에서.
동서 유형로드 밸런싱의 경우 실륨은 Linux 커널의 소켓 레이어 (예 : TCP Connect Time에서)에서 효율적인 서비스 간 지원 변환을 수행하여 포장 당 NAT 작업 오버 헤드를 하위 계층에서 피할 수 있습니다.
실륨은 노드를 방출하는 컨테이너 트래픽에 대해 효율적인 EDT 기반 (최초의 출발 시간) 속도 제한을 통해 대역폭 관리를 구현합니다. 이를 통해 응용 분야의 전송 꼬리 대기 시간을 크게 줄이고 대역폭 CNI 플러그인에 사용 된 HTB (계층 토큰 버킷) 또는 TBF (토큰 버킷 필터)와 같은 전통적인 접근 방식과 비교하여 다중 큐 NIC의 잠금을 피할 수 있습니다.
가시성 및 문제 해결 문제는 모든 분산 시스템의 운영에 기본적입니다. 우리는 tcpdump
및 ping
과 같은 도구를 좋아하는 법을 배웠지 만 항상 마음 속에 특별한 장소를 찾을 수는 있지만 문제 해결을위한 더 나은 툴링을 제공하기 위해 노력합니다. 여기에는 제공 할 툴링이 포함됩니다.
메타 데이터를 사용한 이벤트 모니터링 : 패킷이 삭제되면 도구는 패킷의 소스 및 대상 IP 만보 고하지 않고 도구는 다른 많은 정보 중에서 발신자와 수신기의 전체 레이블 정보를 제공합니다.
Prometheus를 통한 메트릭 수출 : 주요 메트릭은 Prometheus를 통해 기존 대시 보드와의 통합을 통해 내보내집니다.
허블 : 실륨을 위해 특별히 작성된 관찰 가능성 플랫폼. 서비스 종속성 맵, 운영 모니터링 및 경고, 흐름 로그를 기반으로 응용 프로그램 및 보안 가시성을 제공합니다.
왜 섬모인가?
시작하기
건축 및 개념
실륨 설치
자주 묻는 질문
기여
BERKELEY PACKET FILTER (BPF)는 원래 TCPDUMP 및 소켓 필터 용 필터 네트워크 패킷에 소개 된 Linux 커널 바이트 코드 인터프리터입니다. BPF 명령 세트 및 주변 아키텍처는 최근 해시 테이블 및 상태를 유지하기위한 해시 테이블 및 배열과 같은 추가 데이터 구조와 패킷 망글링, 전달, 캡슐화 등을 지원하기위한 추가 작업으로 상당히 재 작업되었습니다. 프로그램이 C로 작성되고 BPF 지침으로 편집되도록합니다. 내부 검증기는 BPF 프로그램이 안전하고 JIT 컴파일러가 BPF 바이트 코드를 기본 실행 효율성을위한 CPU 아키텍처 별 지침으로 변환하도록합니다. BPF 프로그램은 들어오는 패킷, 나가는 패킷, 시스템 호출, kprobes, urrobes, tracepoints 등과 같은 커널의 다양한 훅킹 지점에서 실행할 수 있습니다.
BPF는 새로운 Linux 릴리스마다 계속 발전하고 추가 기능을 얻습니다. 실륨은 BPF를 활용하여 핵심 데이터 경로 필터링, 망글링, 모니터링 및 리디렉션을 수행하며 Linux 커널 버전 4.8.0 또는 최신 BPF 기능이 필요합니다 (최신 현재 안정적인 Linux 커널은 4.14.x).
Coreos, Debian, Docker 's Linuxkit, Fedora, OpenSuse 및 Ubuntu를 포함한 많은 Linux 배포판은 이미 커널 버전을 배송> = 4.8.x입니다. uname -a
실행하여 Linux 커널 버전을 확인할 수 있습니다. 최근에 충분한 커널을 실행하지 않은 경우 Linux 커널 4.9.x 이상을 실행하는 방법에 대한 Linux 배포 문서를 확인하십시오.
BPF 런타임을 실행하기 위해 필요한 커널 버전을 읽으려면 Section Pererejites를 참조하십시오.
XDP는 Evolution의 추가 단계이며 Packet의 DMA 버퍼에 직접 액세스하여 네트워크 드라이버에서 BPF 프로그램의 특정 향료를 실행할 수 있습니다. 이것은 정의상 Linux 커널 네트워킹 데이터 경로에서 프로그래밍 가능한 고성능 패킷 프로세서를 허용하기 위해 프로그램을 첨부 할 수있는 소프트웨어 스택에서 가능한 초기에 가능한 포인트입니다.
개발자를 대상으로하는 BPF 및 XDP에 대한 추가 정보는 BPF 및 XDP 참조 안내서를 참조하십시오.
실륨, 실감 및 BPF 주변의 확장 및 사용 사례에 대한 자세한 내용은 추가 판독 값 섹션을 살펴 봅니다.
실륨 슬랙 채널에 가입하여 실륨 개발자 및 기타 실륨 사용자와 채팅하십시오. 이곳은 섬모에 대해 배우고 질문을하며 경험을 공유하기에 좋은 곳입니다.
모든 SIG 목록 및 회의 시간 목록은 특별 관심 그룹을 참조하십시오.
실륨 개발자 커뮤니티는 Zoom에서 채팅을 시작합니다. 모두를 환영합니다.
주간, 수요일, 오후 5시 유럽/취리히 시간 (CET/CEST), 일반적으로 오전 8시 또는 오전 11시 ET와 같습니다. 회의 메모 및 줌 정보
매월 셋째 주 수요일 오전 9시 일본 시간 (JST). APAC 회의 메모 및 줌 정보
우리는 ECO라는 Echo라는 주간 커뮤니티 YouTube 라이브 스트림을 주최합니다. Live Live, 과거 에피소드를 따라 잡거나 Echo Repo로 가서 우리가 다루어야 할 주제에 대한 아이디어를 알려주십시오.
실륨 프로젝트는 유지 관리자와 커밋터 그룹이 적용됩니다. 그들이 선택하고 거버넌스 문서에 요약되어 있습니다.
제작 및 사용 사례에 실릭 프로젝트의 채택 자 목록은 File Users.md에서 찾을 수 있습니다.
실륨은 공공 로드맵을 유지합니다. 프로젝트의 주요 우선 순위, 다양한 기능 및 프로젝트의 성숙, 프로젝트 방향에 영향을 미치는 방법에 대한 높은 수준의 관점을 제공합니다.
실륨 사용자 공간 구성 요소는 Apache 라이센스 버전 2.0에 따라 라이센스가 부여됩니다. BPF 코드 템플릿은 일반 공개 라이센스, 버전 2.0 (전용) 및 2- 클라스 BSD 라이센스 (옵션에서 라이센스의 약관을 사용할 수 있음)에 따라 이중 라이센스가 있습니다.