我正在使用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 -}}
---
我基本上需要两个指向我的应用程序的网址,因为每个网址都会为网页提供不同的外观等