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