Я использую диаграммы gitlab и kubernetes для установки входа для моего приложения. это прекрасно работает, так как использует встроенные переменные или шаблоны для получения URL-адреса приложения для хоста, так что разные среды будут иметь разные имена хостов, но использовать одну и ту же диаграмму входа и значений.
шаблон, на который он ссылается, называется"имя хоста", который я не уверен, где он существует. причина, по которой я хочу найти его, заключается в том, чтобы я мог понять, как извлечь только домен из URL. например. "Имя хоста" = app.domain.com. я хочу иметь возможность развернуть второй вход, который пойдет на app.two.domain.com без жесткого кодирования домена. чтобы сделать это, мне нужно как-то извлечь URL-адрес .. я разработал, как извлечь только имя приложения - {{template "appname"}}
values.yaml
---
service:
enabled: true
name: web
type: ClusterIP
url: http://my.host.com/
externalPort: 5000
internalPort: 5000
---
ingress.yaml
---
{{- if .Values.service.enabled -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ template "fullname" . }}
labels:
app: {{ template "appname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version| replace "+" "_" }}"
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
nginx.ingress.kubernetes.io/configuration-snippet: |
if ( $uri !~ ^/(static|.*\..*|$) ) {
rewrite ^ /index.html break;
}
spec:
rules:
- host: {{ template "hostname" .Values.service.url }}
http:
paths:
- path: /
backend:
serviceName: {{ template "fullname" . }}
servicePort: {{ .Values.service.externalPort }}
path: /
{{- end -}}
---
, как вы можете видеть в spec.host, он использует шаблон, который каким-то образом получает имя хоста из вашей среды kubernetes. Я просто хочу знать, как управлять этим, чтобы я мог получить домен в одиночку. пример того, что я планирую сделать
spec:
rules:
- host: {{ template "hostname" .Values.service.url }}
http:
paths:
- path: /
backend:
serviceName: {{ template "fullname" . }}
servicePort: {{ .Values.service.externalPort }}
path: /
- host: {{ template "appname" . }}.{{ domain.url }}
http:
paths:
- path: /
backend:
serviceName: {{ template "fullname" . }}
servicePort: {{ .Values.service.externalPort }}
path: /
Мне в основном нужны два URL-адреса, указывающих на мое приложение, так как каждый из них предоставляет различные скины и т. д. для веб-страницы