Explanationrke2spray
구조와 실행 모델
Kubespray 공개 경로와 변수가 RKE2 server·agent 실행 모델로 변환되는 구조
핵심 요약
- 공통 Playbook·Role·Inventory 이름은 운영 의도의 호환성을 제공함
- 실제 bootstrap은 kubeadm 대신 RKE2 server·agent와 bundled containerd를 사용함
- 공개 Role은 native 동작, RKE2 adapter 또는 사전 검증 실패 중 하나를 수행함
- embedded etcd가 기본이며 분리된
etcdgroup은 external datastore 경계를 뜻함 - 같은 이름이 Kubespray task 본문과 결과 상태의 동일성을 보장하지 않음
유지되는 API와 교체되는 실행을 구분함
| 구분 | Kubespray와 같은 형태 | RKE2로 교체되는 의미 |
|---|---|---|
| 진입점 | root Playbook 이름 | Playbook 내부 lifecycle |
| 역할 | 공개 Role 경로와 tag | kubeadm·kubelet task 구현 |
| 대상 | Inventory group 이름 | server·agent 역할 판정 |
| 설정 | kube_version, CNI 변수 | RKE2 config와 release lock |
| AddOn | kubernetes-apps 경계 | RKE2 HelmChart 또는 manifest |
저장소 경로가 책임을 나눔
| 경로 | 책임 |
|---|---|
cluster.yml, scale.yml, upgrade-cluster.yml | Kubespray 형태의 root API 제공 |
playbooks/ | RKE2 lifecycle 조정 |
roles/ | 공개 Role과 RKE2 adapter 구현 |
inventory/sample/ | 비밀정보 없는 재사용 예제 제공 |
extra_playbooks/ | health, snapshot, certificate와 AddOn 운영 제공 |
docs/kubespray-api-compatibility.yml | mapping과 예외의 canonical contract 제공 |
KUBESPRAY_BASELINE | 추적 중인 upstream commit 고정 |
실행은 검증 후 수렴함
- root Playbook이 대응하는
playbooks/lifecycle을 호출함 kubespray_defaults가 Kubespray 변수와 RKE2 확장 변수를 정규화함validate_inventory가 topology, version, runtime과 raw config 충돌을 검사함- 공개 Role이 native task, adapter 또는 명시적 실패를 실행함
- lifecycle이 service, API와 Node Ready 상태를 확인함
공개 이름을 실행 의미로 해석함
kubernetes/kubeadm은 kubeadm 실행기가 아니라 RKE2 bootstrap adapter임kubernetes/control-plane은rke2-server와 API readiness를 관리함kubernetes/node는 RKE2 config와 agent lifecycle을 관리함container-engine은 standalone runtime 설치가 아니라 bundled containerd 경계를 관리함etcd는 topology에 따라 embedded 또는 external datastore를 선택함
결론
rke2spray를 Kubespray의 복제본이 아니라 공개 운영 형태를 RKE2로 번역하는 adapter로 봐야 함- 지원 여부는 Role 경로의 존재가 아니라 호환성 참조의 분류와 preflight 결과로 판단해야 함