ArgoCD で Kiali Operatr アプリケーションを削除できない場合の対処
ArgoCD に作成した KIali Operator アプリケーションが削除できなくなってしまった問題に対処しました。
再現
Kiali Operator アプリケーション作成
ArgoCD に Kiali Operator のアプリケーションを作成します。
作成できました。
アプリケーション削除
ArgoCD から先ほど作成した Kiali Operator アプリケーションを削除します。
下図のように Deleting のまま残ってしまいました(環境に依るかもしれません)。
対処
リソースの確認
Kiali Operator で作成されたリソースが残っていないか確認します。
$ kubectl get all -n kiali-operator No resources found in kiali-operator namespace. $ kubectl get all -n istio-system NAME READY STATUS RESTARTS AGE pod/istio-egressgateway-b9d46896-mb6np 1/1 Running 0 6d5h pod/istio-ingressgateway-dc76747bf-vk9g5 1/1 Running 0 6d5h pod/istiod-69c88fcb8-d25rl 1/1 Running 0 6d5h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/istio-egressgateway ClusterIP 10.109.88.14 <none> 80/TCP,443/TCP,15443/TCP 9d service/istio-ingressgateway LoadBalancer 10.105.166.93 192.168.2.245 15021:30988/TCP,80:31835/TCP,443:31962/TCP,31400:31141/TCP,15443:32537/TCP 9d service/istiod ClusterIP 10.108.38.61 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP,853/TCP 9d NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/istio-egressgateway 1/1 1 1 9d deployment.apps/istio-ingressgateway 1/1 1 1 9d deployment.apps/istiod 1/1 1 1 9d NAME DESIRED CURRENT READY AGE replicaset.apps/istio-egressgateway-b9d46896 1 1 1 9d replicaset.apps/istio-ingressgateway-dc76747bf 1 1 1 9d replicaset.apps/istiod-69c88fcb8 1 1 1 9d $ kubectl get crd NAME CREATED AT ...(snip)... kialis.kiali.io 2020-09-17T21:34:39Z ...(snip)...
Pods や Services は無くなっていますが、CRD (Custom Resource Definition) kialis.kiali.io
が残ってしまっています。
$ kubectl describe crd kialis.kiali.io Name: kialis.kiali.io Namespace: Labels: <none> Annotations: <none> API Version: apiextensions.k8s.io/v1 Kind: CustomResourceDefinition Metadata: Creation Timestamp: 2020-09-17T21:34:39Z Generation: 1 Managed Fields: API Version: apiextensions.k8s.io/v1beta1 Fields Type: FieldsV1 fieldsV1: f:metadata: f:annotations: .: f:kubectl.kubernetes.io/last-applied-configuration: f:spec: f:conversion: .: f:strategy: f:group: f:names: f:kind: f:listKind: f:plural: f:singular: f:preserveUnknownFields: f:scope: f:subresources: .: f:status: f:version: f:versions: f:status: f:storedVersions: Manager: argocd-application-controller Operation: Update Time: 2020-09-17T21:34:39Z API Version: apiextensions.k8s.io/v1 Fields Type: FieldsV1 fieldsV1: f:status: f:acceptedNames: f:kind: f:listKind: f:plural: f:singular: f:conditions: Manager: kube-apiserver Operation: Update Time: 2020-09-17T21:34:39Z Resource Version: 4465211 Self Link: /apis/apiextensions.k8s.io/v1/customresourcedefinitions/kialis.kiali.io UID: a36f4355-483b-4a20-92cb-37a2f5a91902 Spec: Conversion: Strategy: None Group: kiali.io Names: Kind: Kiali List Kind: KialiList Plural: kialis Singular: kiali Preserve Unknown Fields: true Scope: Namespaced Versions: Name: v1alpha1 Served: true Storage: true Subresources: Status: Status: Accepted Names: Kind: Kiali List Kind: KialiList Plural: kialis Singular: kiali Conditions: Last Transition Time: 2020-09-17T21:34:39Z Message: no conflicts found Reason: NoConflicts Status: True Type: NamesAccepted Last Transition Time: 2020-09-17T21:34:39Z Message: the initial names have been accepted Reason: InitialNamesAccepted Status: True Type: Established Stored Versions: v1alpha1 Events: <none>
CRD 削除
残ってしまった CRD kialis.kiali.io
を削除します。
$ kubectl delete crd kialis.kiali.io customresourcedefinition.apiextensions.k8s.io "kialis.kiali.io" deleted
返ってきません…。 ArgoCD も依然として Deleting です。
CRD の状態を見てみます。
$ kubectl describe crd kialis.kiali.io Name: kialis.kiali.io Namespace: Labels: <none> Annotations: <none> API Version: apiextensions.k8s.io/v1 Kind: CustomResourceDefinition Metadata: Creation Timestamp: 2020-09-17T21:34:39Z Deletion Timestamp: 2020-09-18T21:28:07Z Finalizers: customresourcecleanup.apiextensions.k8s.io Generation: 1 ...(snip)... Conditions: Last Transition Time: 2020-09-17T21:34:39Z Message: no conflicts found Reason: NoConflicts Status: True Type: NamesAccepted Last Transition Time: 2020-09-17T21:34:39Z Message: the initial names have been accepted Reason: InitialNamesAccepted Status: True Type: Established Last Transition Time: 2020-09-18T21:28:07Z Message: CustomResource deletion is in progress Reason: InstanceDeletionInProgress Status: True Type: Terminating Stored Versions: v1alpha1 Events: <none>
Metadata に Finalizers customresourcecleanup.apiextensions.k8s.io
が追加されています。
また、Conditions を見ると、削除処理は実行中のようです。
この状態で CRD が残り続けてしまったので、強制的に削除します。
$ kubectl patch crd kialis.kiali.io -p '{"metadata":{"finalizers":[]}}' --type=merge customresourcedefinition.apiextensions.k8s.io/kialis.kiali.io patched $ kubectl get crd kialis.kiali.io Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "kialis.kiali.io" not found
CRD を削除できたようです。
このタイミングで、ArgoCD に残り続けていた Kiali Operator アプリケーションも削除完了しました。
おわりに
無事に Kiali Operator アプリケーションを削除することができました。
しかし、なぜ CRD が残り続けてしまったかを把握できていません。
Kubernetes は奥が深いようなのでじっくり勉強していきます。
参考にしたリンク
Extend the Kubernetes API with CustomResourceDefinitions | Kubernetes