⛵
kubectl で owner reference をセットする
Kubernetes には関連リソースをGCするときに使える metadata.ownerReferences というフィールドがあります。
client-go や controller-runtime を使用していると難なくセットできるこのフィールドですが、
kubectl にはサブコマンドが用意されていません。
ですので kubectl プラグインを使用しない場合は kubectl patch や kubectl edit を使うことになります。
kubectl patch
kubectl patchを使う方法を紹介します。
今回は、Deployment a を ConfigMap b の親とすることにします。
まず親となるリソースのUIDを取得します。
$ kubectl get deploy a -o json | jq -r .metadata.uid
xxx-yyy-zzz-000
このUIDを使って以下のような patch.json を用意してください。
{
"metadata": {
"ownerReferences": [{
"apiVersion": "v1",
"kind": "Deployment",
"name": "a",
"uid": "xxx-yyy-zzz-000"
}]
}
}
これを使ってkubectl patchを実行します。
$ kubectl patch cm b --patch "$(cat patch.json)"
手順は終わりです。Deployment a を消すと ConfigMap b も消えることが確認できます。
Discussion