Kubernetes Workloadの読み込み


前言でContainer Registryのクリーンアップに関する記事を書きました.これはリンクですが、以下は実際に使用されていないコンテンツの登録を整理します.
GKEを使用する場合、過去に使用したワークロードも現在使用していないワークロードも増加します.
もちろん毎回直接削除すればいいのですが、人のことはどうしてそうなるのでしょうか.
長い時間が経過すると、削除されたワークロードに関連付けられたDockerイメージがContainer Registryに順次積み上げられます.
次に、各リストを取得することで、未使用の画像の削除を区別できます.
const namespaces = JSON.parse(execSync("kubectl get namespace -o=json").toString()).items.map((namespace) => {
    return namespace.metadata.name;
});
上記のスクリプトを呼び出して、ネームスペースのリストを読み込みます.
(デフォルトでは、kubeは名前空間単位で区切られています.)
const images = [];

namespaces.map((namespace) => {
    JSON.parse(execSync(`kubectl get deployments --namespace=${namespace} -o=json`).toString()).items.map((deployment) => {
        deployment.spec.template.spec.containers.map((container) => {
            images.push(container.image.split(":")[0]);
        });
    });
});

namespaces.map((namespace) => {
    JSON.parse(execSync(`kubectl get cronjobs --namespace=${namespace} -o=json`).toString()).items.map((cronjob) => {
        cronjob.spec.jobTemplate.spec.template.spec.containers.map((container) => {
            images.push(container.image.split(":")[0]);
        });
    });
});
ロードされたネームスペースリストを使用して、デプロイメントとcronjobsをロードします.
ワークロードからコンテナ内の画像リストを読み込み、前に選択したリストより不要な画像を削除します.
Contenter RegistryとArtifact Registryについて説明します.