Недопустимое значение env для свойства Quarkus RestClient при создании развертывания Kubernetes
Следуя руководству по Quarkus Rest Client, мне нужно добавить что-то подобное в файл application.properties:
country-api/mp-rest/url=https://restcountries.eu/rest
С Docker это работает, и я могу передать значение свойства по параметру:
docker run -it --privileged --rm --env country-api/mp-rest/url="https://restcountries.eu/rest" mydockerhost/my-project:SNAPSHOT
YAML-файл для Kubernetes выглядит так:
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
labels:
app.kubernetes.io/name: "my-project"
app.kubernetes.io/version: "SNAPSHOT"
name: "my-project-deployment"
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: "my-project"
app.kubernetes.io/version: "SNAPSHOT"
template:
metadata:
labels:
app.kubernetes.io/name: "my-project"
app.kubernetes.io/version: "SNAPSHOT"
spec:
containers:
- env:
- name: "country-api/mp-rest/url"
value: "https://restcountries.eu/rest"
Однако при выполнении команды возникает следующая ошибка kubectl apply -f my-projetc.yaml
The Deployment "my-project-deployment" is invalid:
* spec.template.spec.containers[0].env[1].name: Invalid value: "country-api/mp-rest/url": a valid environment variable name must consist of alphabetic characters, digits, '_', '-', or '.', and must not start with a digit (e.g. 'my.env-name', or 'MY_ENV.NAME', or 'MyEnvName1', regex used for
validation is '[-._a-zA-Z][-._a-zA-Z0-9]*')
Версия Quarkus: 1.3.1.Final
1 ответ
Вы можете использовать переменные среды в application.properties
чтобы вы могли сделать что-то вроде:
country-api/mp-rest/url=${MY_SERVICE_URL}
и определить MY_SERVICE_URL
в вашем Yaml файле.
Кроме того, у MicroProfile Config есть способ обойти вашу проблему. С помощьюCOUNTRY_API_MP_REST_URL
поскольку переменная среды должна работать (все в верхнем регистре, замените все, что не является буквенно-цифровым, на _
).