Данное приложение предназначено для удаления образов из докер реджистри. Предварительно программа получает список образов из кластера Kubernetes, для того чтобы не удалять из реджистри образы, используемые в Kubernetes.
Программа работает следующим образом:
Читает конфигурационный файл с именем "config.yaml" с помощью функции config.ReadConfig()
. Если происходит ошибка при чтении файла, программа вызывает панику. Получает образы из кластера Kubernetes с помощью функции kube.GetImages()
и из докер реджистри с помощью функции registry.GetImages()
на основе конфигурации. Вычисляет различия между этими списками с помощью функции diffMap()
. C помощью функции registry.DeleteImages()
удаляет все образы из реестра, расположенные в указанной папке, кроме образов, используемых в Kubernetes.
Приложение имеет конфиг вида:
KubeCluster:
# Массив из одного и более элементов с настроками Kubernetes.
- ServerUrl: https://localhost:52395 # URL-адрес сервера Kubernetes.
Namespace: afdev # Пространство имен, в котором хранятся образы в Kubernetes.
Token: token # Токен для аутентификации в Kubernetes в формате JSON Web Token (JWT).
DockerRegistry:
# Массив из одного и более элементов с настроками Docker реестра.
- ServerUrl: http://localhost:6000 # URL-адрес сервера Docker реестра
Nexus:
Url: http://localhost:8081 # URL-адрес сервера Nexus
RepositoryName: docker-registry # Имя репозитория в Nexus
Folder: folderName # Папка в Docker реестре, в которой хранятся образы.
User: "" # Имя пользователя для аутентификации в Docker реестре. Пустое значение указывает на отсутствие аутентификации.
Password: "" # Пароль пользователя для аутентификации в Docker реестре. Пустое значение указывает на отсутствие аутентификации.
DeleteImages: true # Флаг, указывающий, нужно ли удалять образы из Docker реестра.
Output:
WriteToTXT: true # Флаг, указывающий, нужно ли записывать результаты в текстовые файлы.
RegistryFileName: registry.txt # Имя файла, в который записываются найденные в Docker реестре образы.
KubeFileName: kube.txt # Имя файла, в который записываются найденные обрызы в деплойментах Kubernetes.
DiffFileName: diff.txt # Имя файла, в который записывается различия, то есть подлежащие удалению образы.
Эти параметры конфигурации позволяют программе настраивать соединение с Kubernetes и Docker реестром, указывать папки, пользователей и пароли, а также определять, нужно ли сохранять результаты в файлы.