Microsoft는 새로운 Linux : CBL-Mariner를 추가합니다.

Microsoft와 Linux를 생각하면 WSL (Windows Subsystem for Linux)에 최적화 된 Linux 커널을 구축하는 작업에 대해 생각할 것입니다. Windows 업데이트를 통해 푸시 된 Microsoft는 Ubuntu 및 SUSE를 포함한 모든 WSL2 Linux 배포를 지원합니다.

그러나 WSL2의 커널은 Microsoft의 유일한 Linux 제품이 아닙니다. 과거에 Azure Sphere 용 보안 Linux를 포함하여 여기에서 다른 일부를 살펴 보았습니다. 기타에는 Open Compute Project 하드웨어와 함께 사용하도록 설계되고 많은 공용 클라우드 및 주요 온라인 서비스에서 사용되는 SONiC 네트워킹 배포와 Azure에 대한 새로운 네트워킹 구현의 유효성을 검사하는 데 사용되는 Azure ONE (Open Network Emulator) 용 호스트가 포함됩니다.

Microsoft의 Linux 시스템 그룹

점점 더 많은 Microsoft Linux 커널 및 배포판이 증가함에 따라 이제 회사의 Linux 작업 대부분을 처리하는 공식 Linux 시스템 그룹이 있습니다. 여기에는 많은 일반적인 Linux 배포 용 패치로 사용할 수있는 Azure 조정 커널, Microsoft의 Hyper-V 하이퍼 바이저와 함께 사용하도록 최적화, 시스템 무결성의 정책 기반 적용을 제공하고 배포를보다 안전하게 만들고 관리를 돕는 도구 세트가 포함됩니다. 대규모 Linux 서버 및 가상 머신에 대한 업데이트 및 패치.

팀은 최근 새로운 Linux 배포판 인 CBL-Mariner를 출시했습니다. 릴리스는 공개이지만 Azure 인프라의 일부이며 에지 네트워크 서비스 및 클라우드 인프라의 일부로 사용되기 때문에 대부분은 그렇지 않습니다. 그 결과 오버 헤드가 적고, 그 안에 무엇이 들어 있는지에 대해 덜 집중된 분산이 이루어지고, 무엇이 실행되는지에 대해 훨씬 더 많이 집중됩니다.

CBL-Mariner 소개 : Microsoft의 Linux 컨테이너 호스트

컨테이너 기반 기술에 대한 Microsoft의 투자를 고려할 때 CBL-Mariner와 같은 경량 Linux에 투자하는 것이 합리적입니다. 클라우드 경제학에서는 호스트가 가능한 한 적은 리소스를 사용해야하므로 Azure와 같은 서비스가 높은 활용도를 얻을 수 있습니다. 동시에 Kubernetes 컨테이너는 가능한 한 적은 오버 헤드를 필요로하므로 포드 당 가능한 한 많은 노드를 허용하고 가능한 한 빨리 새 노드를 시작할 수 있습니다.

에지 하드웨어, 특히 5G 네트워크와 함께 사용하도록 설계된 차세대 에지 노드도 마찬가지입니다. 여기에서 퍼블릭 클라우드와 마찬가지로 워크로드는 가장 중요한 요소이며 데이터와 데이터를 사용자에게 더 가깝게 이동시킵니다. Microsoft는 가능한 경우 대기 시간을 줄이기 위해 Azure 웹 앱과 호스팅 된 비디오 및 파일 서버의 콘텐츠를 캐싱하면서 주요 Azure 데이터 센터 외부의 Azure 콘텐츠 전송 네트워크의 일부로 점점 늘어나는 에지 하드웨어를 사용합니다. Azure CDN은 GitHub에서 게시 한 후 페이지 및 JavaScript를 호스팅하는 Jamstack 기반 Azure 정적 웹 사이트 서비스의 핵심 구성 요소입니다.

과거에는 Red Hat의 CoreOS가 Linux 컨테이너의 선호 호스트 였지만 최근 사용 중단됨에 따라 더 이상 지원되지 않습니다. 그것을 사용하는 사람은 누구나 대안을 찾아야했습니다. Microsoft는 개발자 Kinvolk와의 파트너십의 일부로 Azure 사용자를위한 Flatcar Linux CoreOS-fork를 제공하지만 자체 서비스에 대한 자체 배포를 통해 자체 일정에 따라 호스트 및 컨테이너 인스턴스를 업데이트하고 관리 할 수 ​​있습니다. 공개 개발은 자신의 빌드를 만들고 사용하기를 원하거나 새로운 기능 및 최적화에 기여하고자하는 사람 (예 : 새로운 네트워킹 기능에 대한 지원 추가)을 위해 제공됩니다.

CBL-Mariner 및 컨테이너 실행

기본적으로 CBL-Mariner는 컨테이너를 지원하고 실행하는 데 필요한 기본 패키지 만 가지고 있으며 CoreOS와 유사한 접근 방식을 취합니다. 본질적으로 Linux 컨테이너는 격리 된 사용자 공간입니다. 공유 리소스를 최소한으로 유지하면 애플리케이션 컨테이너가 이에 대한 종속성을 가질 수 없도록하여 호스트 OS의 보안 노출을 줄입니다. 자체 컨테이너에서 CBL-Mariner를 사용하는 경우 적절한 패키지가 포함되어 있지 않을 수 있으므로 배포하기 전에 공개 Docker 이미지를 테스트했는지 확인하십시오. 애플리케이션 도커 파일의 일부로 자체 기본 이미지가 필요할 수 있습니다.

CBL-Mariner는 익숙한 Linux 도구를 사용하여 패키지를 추가하고 보안 업데이트를 관리하여 RPM 패키지 또는 필요에 따라 배포 할 수있는 완전한 이미지로 업데이트를 제공합니다. RPM을 사용하면 기본 CBL-Mariner 이미지에 자체 패키지를 추가하여 필요에 따라 추가 기능과 서비스를 지원할 수 있습니다.

CBL-Mariner를 시작하는 것은 Azure 서비스를 시작하는 것처럼 간단 할 수 있습니다. 그러나 실습 경험을 원하거나 프로젝트에 기여하고 싶다면 모든 소스 코드가 현재 GitHub에 있으며 자체 설치 빌드 지침이 있습니다. Ubuntu 18.04에서 빌드하기위한 전제 조건에는 Go 언어, QEMU (Quick EMUlator) 유틸리티 및 rpm이 포함됩니다.

GitHub 저장소를 사용하여 자체 설치 빌드

소스에서 빌드하기위한 여러 가지 옵션이 있습니다. GitHub에서 소스를 확인하여 프로젝트 저장소의 로컬 복제본을 만듭니다. 다양한 브랜치를 사용할 수 있지만 첫 번째 빌드에서는 현재 안정적인 브랜치를 선택해야합니다. 여기에서 소스를 다운로드하기 전에 프로젝트 용 Go 도구를 빌드 할 수 있습니다.

빠른 빌드의 경우 두 가지 옵션이 있습니다. 둘 다 미리 빌드 된 패키지를 사용하고 그로부터 배포판을 조합합니다. 첫 번째는 베어 메탈 설치의 경우 설치할 준비가 된 ISO 파일을 생성합니다. 두 번째는 CBL-Mariner를 컨테이너 호스트로 사용하기 위해 Hyper-V와 함께 사용할 수있는 가상 머신으로 즉시 사용 가능한 VHDX 파일을 빌드합니다. 대안 옵션은 Mariner 기반 도커 파일의 소스로 사용할 수있는 컨테이너 이미지를 빌드하여 애플리케이션과 호환되는 컨테이너를 빌드하고 실행하는 데 필요한 모든 것을 제공합니다.

소스에서 빌드하는 것을 선호하는 경우 옵션을 사용할 수 있지만 빌드는 사전 컴파일 된 패키지를 사용하는 것보다 상당히 느립니다. 그러나이를 통해 대체 CPU를 대상으로 지정할 수 있습니다. 예를 들어 AWS의 Graviton 인스턴스에 사용되는 것과 유사한 차세대 ARM 기반 에지 하드웨어에서 작동하는 버전을 빌드 할 수 있습니다. 전체 빌드 도구 체인을 부트 스트랩하여 전체 빌드 프로세스를 제어 할 수 있습니다. 전체 빌드 프로세스는 JSON 구성 파일에 나열된 코어 파일과 함께 지원되는 패키지를 빌드하는 데 사용할 수도 있습니다.

일단 구축되면 CBL-Mariner의 기능을 구성 할 수 있습니다. 기본적으로 여기에는 iptables 기반 방화벽, 서명 된 업데이트 지원 및 강화 된 커널이 포함됩니다. 로컬 데이터를 보호해야하는 다중 테넌트 환경의 컨테이너 호스트를위한 중요한 기능인 프로세스 격리를 개선하고 로컬 스토리지를 암호화하는 도구를 사용하여 옵션 기능을 동시에 설정할 수 있습니다.

그 결과 CoreOS를 효과적으로 대체 할 수 있으며, Azure 사용자와 Microsoft 자체 팀이 사용할 수 있기를 바랍니다. CBL-Mariner는 다른 컨테이너 중심 Linux보다 성숙하지 않을 수 있지만, 자체 에지 서버에서 코드를 실행하는 하이브리드 클라우드 및 에지 네트워크 아키텍처에서 사용할 수있는 신뢰할 수있는 도구가 될만큼 충분한 지원을 받고 있습니다. 그리고 마이크로 소프트의 클라우드에서. Microsoft가 옵션으로 만들지 않으면 적어도 직접 만들 수 있습니다.