安装入口图表时从“主机名”模板中提取域网址

时间:2019-10-01 05:19:51

标签: nginx charts kubernetes kubernetes-helm

我正在使用gitlab和kubernetes图表为我的应用程序安装入口。这很有效,因为它使用内置变量或模板来获取主机的应用程序URL,以便不同的环境将具有不同的主机名,但使用相同的入口和值图表。

它所引用的模板称为“主机名”,我不确定它在哪里。我想找到它的原因是这样,我可以算出如何仅从URL中提取域。例如。 “主机名” = app.domain.com。我希望能够部署第二个将进入app.two.domain.com的入口,而无需对域进行硬编码。为此,我需要以某种方式提取网址。.我确定了如何仅提取应用程序名称-{{模板“ appname”。 }}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    var allEntities = modelBuilder.Model.GetEntityTypes();

    foreach (var entity in allEntities)
    {
        entity.AddProperty("CreatedDate",typeof(DateTime));
        entity.AddProperty("UpdatedDate",typeof(DateTime));
    }
}
正如您在spec.host下看到的

,它使用了一个模板,该模板以某种方式从您的kubernetes环境获取主机名。我只想知道如何操纵它,这样我就可以独自获得域名。我打算做什么的例子


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 -}}
---

路径:/

我基本上需要两个指向我的应用程序的网址,因为每个网址都会为网页提供不同的外观等

0 个答案:

没有答案