설명
Tiller는 Helm v2의 서버 측 구성요소로, 자신에게 부여된 Kubernetes 권한으로 리소스를 관리합니다. 넓은 권한을 가진 Tiller가 침해되거나 무단으로 사용되면 여러 워크로드에 영향을 줄 수 있습니다.
Helm v2는 지원이 종료되었습니다. Tiller를 사용하지 않는 지원 버전의 Helm으로 이전하고 실제로 남아 있는 서버와 권한을 정리하세요.
잠재적 영향
- Tiller의 권한 범위에서 워크로드와 클러스터 리소스가 변경될 수 있습니다.
- 지원이 종료된 구성요소에 대한 보안 수정과 운영 지원을 받을 수 없습니다.
해결 방법
- 릴리스 정보와 복구 계획을 준비하고 지원되는 Helm 버전으로 배포 관리를 이전하세요.
- 전환을 확인한 뒤 Tiller Deployment, Service와 전용 계정·RBAC 권한을 제거하세요.
- 이름이나 라벨만 바꾸지 말고 실제 Tiller 프로세스와 접근 경로가 없어졌는지 확인하세요.
예시
Tiller 배포를 나타내는 기존 예시와 일반 애플리케이션 배포를 비교합니다. tiller-image는 설명용 이미지 이름이며 nginx 버전도 과거 값입니다. 실제 이전 절차나 현재 배포용 이미지 추천은 아닙니다.
변경 전
hcl
resource "kubernetes_deployment" "helm_server" {
metadata {
name = "tiller-deploy"
labels = {
app = "helm"
}
}
spec {
replicas = 1
selector {
match_labels = {
app = "helm"
}
}
template {
metadata {
labels = {
app = "helm"
}
}
spec {
container {
name = "helm-server"
image = "tiller-image"
}
}
}
}
}
Tiller 서버를 나타내는 구성입니다. 실제 접근 범위는 이미지의 동작과 계정·RBAC 설정 등에 달려 있습니다.
변경 후
hcl
resource "kubernetes_deployment" "app" {
metadata {
name = "service-deploy"
labels = {
app = "web"
}
}
spec {
replicas = 1
selector {
match_labels = {
app = "web"
}
}
template {
metadata {
labels = {
app = "web"
}
}
spec {
container {
name = "web"
image = "nginx:1.7.8"
}
}
}
}
}
일반 애플리케이션 예시입니다. 이 리소스를 추가하거나 이름을 바꾸는 것만으로 기존 Tiller가 제거되지는 않으므로 기존 서버와 관련 권한을 별도로 정리하세요.