Как назвать версионные изображения в skaffold.yml
У меня есть многомодульный проект Maven (Spring Boot), я генерирую образы докера при использовании плагина JIB Maven, но как мне назвать изображения в скаффолде? Я подталкиваю к локальному репо в Docker, а Skaffold afaik не поддерживает создание шаблонов. Что было рекомендовано для ссылки на эти изображения в Скаффолде?
Имейте в виду, что для отдельных изображений на модуль мне нужно назвать их как:
${image.registry.host}:${image.registry.port}/${project.artifact}
Так что нет другого выбора, кроме как параметризовать их в помпе.
Теперь мне нужно ввести имена хостов и портов в файл skaffold? Каков наилучший способ справиться с этим банкоматом? А как насчет имени в дескрипторе развертывания Kubernetes?
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>${jib-maven-plugin.version}</version>
<configuration>
<!--If you want custom base image and push registry, use below configuration replace above-->
<from>
<image>openjdk:8-jdk-alpine</image>
</from>
<to>
**<image>${image.registry.host}:${image.registry.port}/${project.artifactId}**:${project.version}</image>
</to>
<container>
<jvmFlags>
<jvmFlag>-Djava.security.egd=file:/dev/./urandom</jvmFlag>
<jvmFlag>-Xdebug</jvmFlag>
<jvmFlag>-Duser.timezone=GMT+08</jvmFlag>
</jvmFlags>
<mainClass>com.example.jib.JibApplication</mainClass>
<ports>
<port>8080</port>
</ports>
</container>
<allowInsecureRegistries>true</allowInsecureRegistries>
</configuration>
</plugin>
What goes in the Scaffold.yml for image name?
apiVersion: skaffold/v1beta4
kind: Config
# Enforce SKaffold to use Jib
build:
local:
push: false
# Generated artifact
artifacts:
**- image: lvthillo/my-app. ??????????? HOW SHOULD I NAME THIS?
image: module2/ ???????**
# Use jibMaven
jibMaven: {}
# Execute deployment.yml
deploy:
kubectl:
manifests:
- kubernetes/deployment.yml
Вот дескриптор развертывания Kubernetes.
Какое имя должно быть здесь?
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-deployment
spec:
replicas: 1
selector:
matchLabels:
app: spring-boot-jib
template:
metadata:
labels:
app: spring-boot-jib
spec:
containers:
- name: spring-boot-jib-pod
**image: lvthillo/my-app. ????????? What name here???**
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8080
apiVersion: v1
kind: Service
metadata:
name: spring-boot-jib-service
spec:
type: NodePort
ports:
- protocol: TCP
port: 8080
nodePort: 32321
selector:
app: spring-boot-jib
0 ответов
При использовании Jib со Skaffold, Skaffold является мастером и отменяет ссылки на изображения, используемые Jib. Skaffold решит, какие имена изображений следует использовать, и перед развертыванием перепишет ссылки на изображения в манифестах Kubernetes для соответствия.
Если вы разрабатываете против локального кластера таком как Minikube, то Skaffold заставляет изображения загружаться непосредственно в демон Docker Minikube; они никогда не помещаются в реестр. (Говоря языком джиба, Скаффолд вызоветjib:dockerBuild
скорее, чем jib:build
в реестр.). Таким образом, вы можете сохранить ссылки на производственные изображения в своемskaffold.yaml
.
Если вы нажимаете на реестры, у вас есть три варианта в зависимости от вашей настройки:
Если у вас есть локальные настройки или настройки для отдельных разработчиков, сохраните ссылки на производственные образы и попросите разработчиков использовать Skaffold's
--default-repo
вариант: он трансформирует и заменяет репозиторий часть ссылок на изображение, как указано вskaffold.yaml
чтобы указать на этот новый репозиторий.Если разработчики могут использовать один и тот же реестр и репозиторий, тегеры Skaffold должны гарантировать вами образы ваших разработчиков не будут конфликтовать. Вы можете использовать [
envTemplate
tagger] для создания различных тегов изображений на основе информации об окружающей среде, например$USER
.Вы можете использовать профили и патчи Skaffold для переопределения изображений. Создание правильных патчей JSON может показаться немного удачным или упущенным, но это довольно мощный инструмент.
Я лично использую --default-repo
подходить.