Отладка Skaffold и отсутствие JAVA_TOOL_OPTIONS

Если я правильно понимаю документацию здесь ...

Отладка Скаффолда

Если я попытаюсь запустить проект K8s с помощью «отладки skaffold» или IntelliJ «Разработка на Kubernetes» и отладки, skaffold должен вставить в мои файлы развертывания / службы k8s дополнительный порт для jdwp и переменной среды с JAVA_TOOL_OPTIONS. Что не происходит со мной.

Я использую Helm Chart для развертывания своих артефактов k8s, и я нигде не вижу, чтобы эти вещи были настроены (как это также упоминалось здесь GitHub Issue).

Если я настрою свои развертывания \ сервисные yamls вручную, чтобы вставить порт 5005 для jdwp и переменную среды JAVA_TOOL_OPTIONS для jdwp и переадресацию порта 5005, тогда я могу удаленно подключиться к процессу и отладке, но skaffold не сможет управлять им сам даже пытаясь, я не вижу JAVA_TOOL_OPTIONS в моих журналах).

Может быть, он не понимает, что я запускаю проект JVM или может быть, в то время как я создал свой проект Helm с помощью 'helm create' и есть несколько файлов yaml (configmap.yaml, deployment.yaml, hpa.yaml, ingress.yaml, service.yaml, serviceaccount.yaml) невозможно найти нужный файл для управления.

Если я также правильно понимаю, развертывание / модуль, который будет отлажен, должен иметь следующие аннотации:

Аннотации

debug.cloud.google.com/config

которые полностью отсутствуют, единственное, что я вижу при развертывании, это следующее:

      ide: idea
ideVersion: 2021.1.1.0.0
ijPluginVersion: unknown
skaffold.dev/run-id: d2420cca-f212-4349-b078-41f36ed51bd5

Есть идеи, что здесь не так?

На самом деле, развертывание работает правильно, и мой модуль сообщает, что для проверки готовности нет отладки, начиная с skaffold / intellij.

1 ответ

Были некоторые несоответствия между диаграммой Helm @posthumecaver и диаграммой, которая не позволяла Скаффолду настроить изображение. Я обобщу результаты здесь для тех, кто наткнется на этот пост.

@posthumecaver использует поддержку Skaffold Helm. Для этого необходимо, чтобы диаграмма и диаграмма Helm использовали общий ключ для ссылки на изображение. В Helm используются три подхода к ссылкам на изображения:

Полное имя (по умолчанию)

Skaffold настроит Helm, установив ключ для ссылки на полностью помеченное изображение.

Настройка:

      build:
  artifacts:
    - image: gcr.io/my-project/my-image
deploy:
  helm:
    releases:
      - name: my-chart
        chartPath: helm
        artifactOverrides:
          img: gcr.io/my-project/my-image

Шаблон диаграммы:

      image: "{{.Values.img}}"

(Обратите внимание, что Skaffold переопределяет это значение):

      img: gcr.io/other-project/other-image:latest

Скаффолд вызовет

      helm install <chart> <chart-path> --set-string img=gcr.io/my-project/my-image:generatedTag@sha256:digest

Разделить репозиторий и тег

Skaffold можно настроить для предоставления Helm отдельного репозитория и тега. Ключ, используемый в, используется как базовая часть, производя две клавиши и.

Настройка:

      build:
  artifacts:
    - image: gcr.io/my-project/my-image
deploy:
  helm:
    releases:
      - name: my-chart
        chartPath: helm
        artifactOverrides:
          img: gcr.io/my-project/my-image
        imageStrategy:
          helm: {}

Шаблон диаграммы:

      image: "{{.Values.img.repository}}:{{.Values.img.tag}}"

(Обратите внимание, что Skaffold переопределяет эти значения):

      img:
  repository: gcr.io/other-project/other-image
  tag: latest

Скаффолд вызовет

      helm install <chart> <chart-path> --set-string img.repository=gcr.io/my-project/my-image,img.tag=generatedTag@sha256:digest

Разделить реестр, репозиторий и тег

Skaffold также можно настроить для предоставления Helm отдельного репозитория и тега. Ключ, используемый в artifactOverrides используется как базовая часть, производящая три ключа: {key}.registry, {key}.repository, а также {key}.tag.

В skaffold.yaml настраивать:

      build:
  artifacts:
    - image: gcr.io/my-project/my-image
deploy:
  helm:
    releases:
      - name: my-chart
        chartPath: helm
        artifactOverrides:
          img: gcr.io/my-project/my-image
        imageStrategy:
          helm:
            explicitRegistry: true

Шаблон диаграммы:

      image: "{{.Values.img.registry}}/{{.Values.img.repository}}:{{.Values.img.tag}}"

В values.yaml (обратите внимание, что Skaffold переопределяет это значение):

      img:
  registry: gcr.io
  repository: other-project/other-image
  tag: latest

Скаффолд вызовет

      helm install <chart> <chart-path> --set-string img.registry=gcr.io,img.repository=my-project/my-image,img.tag=generatedTag@sha256:digest
Другие вопросы по тегам