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이 삭제하지 않는 리소스를 수동으로 제거하세요.

  1. Helm 차트는 제거 시 CRD 삭제를 자동화하지만, 때로는 CRD 삭제가 Consul K8s 컨트롤러 실행에 의존하므로 해당 CRD에 연결된 파이널라이저가 완료되지 않을 수 있습니다. 이전에 생성된 Consul on Kubernetes용 CRD가 삭제되었는지 확인하여 동일한 Kubernetes 클러스터에 대한 후속 Consul on Kubernetes 설치가 차단되지 않도록 하세요.
$ kubectl delete crd --selector app=consul
  1. (선택 사항) Consul이 전용 namespace에 설치된 경우 kubeConfig 컨텍스트를 consul namespace로 설정하세요. 그렇지 않으면 이후 명령에 --namespace consul을 포함해야 합니다.
$ kubectl config set-context --current --namespace=consul
  1. helm uninstall <release-name> 명령을 실행하고 Consul을 설치한 릴리스 이름을 지정하세요. 예:
$ helm uninstall consul
release "consul" uninstalled
  1. 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에 저장된 모든 데이터가 삭제되며, 다른 백업을 하지 않은 경우 복구할 수 없습니다.

  1. 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
  1. 삭제하려는 시크릿이 모두 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
  1. 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
  1. (선택 사항) Kubernetes에 Consul을 설치하기 위해 전용으로 사용한 namespace(예: 다음 예의 consul)를 삭제하세요.
$ kubectl delete ns consul

더 알아보기 (Learn more)