Kubernetes에서 Consul 제거
Kubernetes에서 Consul 제거 (Uninstall Consul on Kubernetes)
Helm 명령 또는 Consul K8s CLI를 사용하여 Consul을 제거할 수 있어요.
출처: 문서
본문
Helm 명령 또는 Consul K8s CLI를 사용하여 Consul을 제거할 수 있습니다.
Consul K8s CLI
consul-k8s uninstall 명령을 실행하여 Kubernetes에서 Consul을 제거하세요. 해당 옵션을 사용하여 설치 이름, namespace, 데이터 보존 동작을 지정할 수 있습니다. 기본적으로 제거는 Consul on Kubernetes가 프로비저닝한 시크릿과 PVC를 보존합니다.
$ consul-k8s uninstall <OPTIONS>
다음 예제에서 Consul은 작업 확인을 요청하지 않고 제거되며 데이터가 삭제됩니다:
$ consul-k8s uninstall -auto-approve=true -wipe-data=true
자세한 내용은 Consul K8s CLI reference 토픽을 참조하세요.
Helm 명령 (Helm commands)
helm uninstall을 실행하고 Helm이 삭제하지 않는 리소스를 수동으로 제거하세요.
- Helm 차트는 제거 시 CRD 삭제를 자동화하지만, 때로는 CRD 삭제가 Consul K8s 컨트롤러 실행에 의존하므로 해당 CRD에 연결된 파이널라이저가 완료되지 않을 수 있습니다. 이전에 생성된 Consul on Kubernetes용 CRD가 삭제되었는지 확인하여 동일한 Kubernetes 클러스터에 대한 후속 Consul on Kubernetes 설치가 차단되지 않도록 하세요.
$ kubectl delete crd --selector app=consul
- (선택 사항) Consul이 전용 namespace에 설치된 경우 kubeConfig 컨텍스트를
consulnamespace로 설정하세요. 그렇지 않으면 이후 명령에--namespace consul을 포함해야 합니다.
$ kubectl config set-context --current --namespace=consul
helm uninstall <release-name>명령을 실행하고 Consul을 설치한 릴리스 이름을 지정하세요. 예:
$ helm uninstall consul
release "consul" uninstalled
- Helm 릴리스를 삭제한 후 Consul의 데이터를 저장하는 영구 볼륨에 대한
PersistentVolumeClaim을 삭제해야 합니다. Helm의 버그로 인해 PVC가 삭제되지 않습니다. 다음 명령을 실행하세요:
$ kubectl get pvc --selector="chart=consul-helm"
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
data-default-hashicorp-consul-server-0 Bound pvc-32cb296b-1213-11ea-b6f0-42010a8001db 10Gi RWO standard 17m
data-default-hashicorp-consul-server-1 Bound pvc-32d79919-1213-11ea-b6f0-42010a8001db 10Gi RWO standard 17m
data-default-hashicorp-consul-server-2 Bound pvc-331581ea-1213-11ea-b6f0-42010a8001db 10Gi RWO standard 17m
$ kubectl delete pvc --selector="chart=consul-helm"
persistentvolumeclaim "data-default-hashicorp-consul-server-0" deleted
persistentvolumeclaim "data-default-hashicorp-consul-server-1" deleted
persistentvolumeclaim "data-default-hashicorp-consul-server-2" deleted
참고 (NOTE): 이렇게 하면 Consul에 저장된 모든 데이터가 삭제되며, 다른 백업을 하지 않은 경우 복구할 수 없습니다.
- ACL을 활성화하여 설치한 경우 ACL 시크릿을 삭제해야 합니다:
$ kubectl get secrets --field-selector="type=Opaque" | grep consul
consul-acl-replication-acl-token Opaque 1 41m
consul-bootstrap-acl-token Opaque 1 41m
consul-client-acl-token Opaque 1 41m
consul-connect-inject-acl-token Opaque 1 37m
consul-controller-acl-token Opaque 1 37m
consul-federation Opaque 4 41m
consul-mesh-gateway-acl-token Opaque 1 41m
- 삭제하려는 시크릿이 모두 Consul이 만든 것이며
consul이라는 단어가 있는 다른 사용자가 만든 것이 아닌지 확인하세요.
$ kubectl get secrets --field-selector="type=Opaque" | grep consul | awk '{print $1}' | xargs kubectl delete secret
secret "consul-acl-replication-acl-token" deleted
secret "consul-bootstrap-acl-token" deleted
secret "consul-client-acl-token" deleted
secret "consul-connect-inject-acl-token" deleted
secret "consul-controller-acl-token" deleted
secret "consul-federation" deleted
secret "consul-mesh-gateway-acl-token" deleted
secret "consul-gossip-encryption-key" deleted
tls.enabled로 설치한 경우 다음 명령을 실행하여 남겨진ServiceAccount를 삭제하세요:
$ kubectl get serviceaccount consul-tls-init
NAME SECRETS AGE
consul-tls-init 1 47m
$ kubectl delete serviceaccount consul-tls-init
serviceaccount "consul-tls-init" deleted
- (선택 사항) Kubernetes에 Consul을 설치하기 위해 전용으로 사용한 namespace(예: 다음 예의
consul)를 삭제하세요.
$ kubectl delete ns consul