Как назвать версионные изображения в 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.

Если вы нажимаете на реестры, у вас есть три варианта в зависимости от вашей настройки:

  1. Если у вас есть локальные настройки или настройки для отдельных разработчиков, сохраните ссылки на производственные образы и попросите разработчиков использовать Skaffold's --default-repoвариант: он трансформирует и заменяет репозиторий часть ссылок на изображение, как указано вskaffold.yaml чтобы указать на этот новый репозиторий.

  2. Если разработчики могут использовать один и тот же реестр и репозиторий, тегеры Skaffold должны гарантировать вами образы ваших разработчиков не будут конфликтовать. Вы можете использовать [envTemplate tagger] для создания различных тегов изображений на основе информации об окружающей среде, например $USER.

  3. Вы можете использовать профили и патчи Skaffold для переопределения изображений. Создание правильных патчей JSON может показаться немного удачным или упущенным, но это довольно мощный инструмент.

Я лично использую --default-repo подходить.

Другие вопросы по тегам