Crossplane 제거하기
Crossplane 제거하기 (Uninstall)
경고: Crossplane이 올바른 순서로 제거되지 않으면 Crossplane이 만든 리소스가 삭제되지 않을 수 있어요. 이 경우 클라우드 리소스가 계속 실행 중일 수 있으므로 수동으로 삭제해야 해요.
Crossplane 리소스의 대부분은 다른 Crossplane 리소스에 대한 의존성을 갖고 있어요. 예를 들어 관리 리소스(Managed Resource)는 프로바이더에 의존해요.
Crossplane 리소스를 순서대로 삭제하지 않으면 Crossplane이 프로비저닝한 외부 리소스를 삭제하지 못할 수 있어요.
출처: 문서
본문
순서에 따른 Crossplane 제거
Crossplane 리소스 제거는 다음 순서로 이루어져야 해요:
- 모든 복합 리소스 정의(Composite Resource Definitions) 제거
- 남은 모든 관리 리소스 제거
- 모든 프로바이더 제거
Crossplane 파드를 삭제하면 남은 Crossplane 구성 요소가 제거돼요.
팁:
kubectl get managed로 모든 외부 리소스의 인벤토리를 수집하세요. Kubernetes API 서버의 크기와 리소스 수에 따라 이 명령이 결과를 반환하는 데 몇 분이 걸릴 수 있어요.
kubectl get managed 예시:
NAME READY SYNCED EXTERNAL-NAME AGE
securitygroup.ec2.aws.m.upbound.io/my-db-7mc7h-j84h8 True True sg-0da6e9c29113596b6 3m1s
securitygroup.ec2.aws.m.upbound.io/my-db-8bhr2-9wsx9 True True sg-02695166f010ec05b 2m26s
NAME READY SYNCED EXTERNAL-NAME AGE
route.ec2.aws.m.upbound.io/my-db-7mc7h-vw985 True True r-rtb-05822b8df433e4e2b1080289494 3m1s
route.ec2.aws.m.upbound.io/my-db-8bhr2-7m2wq False True 2m26s
...
복합 리소스 정의 제거
설치된 복합 리소스 정의(Composite Resource Definitions)를 제거하면 해당 정의가 만든 복합 리소스와 그 복합 리소스가 만든 관리 리소스도 함께 제거돼요.
kubectl get xrd로 설치된 복합 리소스 정의를 확인하세요.
kubectl get xrd
NAME ESTABLISHED OFFERED AGE
compositepostgresqlinstances.database.example.org True True 40s
kubectl delete xrd로 복합 리소스 정의를 삭제하세요.
kubectl delete xrd compositepostgresqlinstances.database.example.org
관리 리소스 제거
수동으로 생성한 관리 리소스를 수동으로 삭제하세요.
kubectl get managed로 남은 관리 리소스를 확인하세요.
kubectl get managed
NAME READY SYNCED EXTERNAL-NAME AGE
bucket.s3.aws.m.upbound.io/crossplane-bucket-867737b10 True True crossplane-bucket-867737b10 8h
kubectl delete로 리소스를 제거하세요.
kubectl delete bucket.s3.aws.m.upbound.io/crossplane-bucket-867737b10
Crossplane 프로바이더 제거
kubectl get providers로 설치된 프로바이더를 확인하세요.
kubectl get providers
NAME INSTALLED HEALTHY PACKAGE AGE
crossplane-contrib-provider-aws-s3 True True xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0 8h
kubectl delete provider로 설치된 프로바이더를 제거하세요.
kubectl delete provider crossplane-contrib-provider-aws
Crossplane 배포 제거
helm uninstall로 Helm을 사용해 Crossplane을 제거하세요.
helm uninstall crossplane --namespace crossplane-system
kubectl get pods로 Helm이 Crossplane 파드를 제거했는지 확인하세요.
kubectl get pods -n crossplane-system
No resources found in crossplane-system namespace.
Crossplane 네임스페이스 삭제
Helm이 Crossplane을 설치할 때 crossplane-system 네임스페이스를 생성해요. Helm은 helm uninstall로 이 네임스페이스를 제거하지 않아요.
kubectl delete namespace로 Crossplane 네임스페이스를 수동으로 삭제하세요.
kubectl delete namespace crossplane-system
kubectl get namespaces로 Kubernetes가 네임스페이스를 제거했는지 확인하세요.
kubectl get namespace
NAME STATUS AGE
default Active 2m45s
kube-flannel Active 2m42s
kube-node-lease Active 2m47s
kube-public Active 2m47s
kube-system Active 2m47s
경고: 커스텀 리소스 정의(CRDs)는
helm uninstall로 자동 제거되지 않아요.이름이
*.crossplane.io로 끝나는 CRD는 Crossplane을 제거한 후에도 클러스터에 남아 있어요. 원한다면 이 CRD들을 수동으로 삭제하세요:
# View remaining Crossplane CRDs
kubectl get crd | grep crossplane.io
# Example: Delete a specific CRD
kubectl delete crd providers.pkg.crossplane.io
중요: CRD를 삭제하면 해당 유형의 모든 커스텀 리소스가 제거돼요. 삭제 전에 중요한 데이터가 없는지 확인하세요.