Отладка 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