извлечь URL домена из шаблона "имя хоста" при установке входной диаграммы - PullRequest
0 голосов
/ 01 октября 2019

Я использую диаграммы 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-адреса, указывающих на мое приложение, так как каждый из них предоставляет различные скины и т. д. для веб-страницы

...