| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- {{/* default rackpeek configuration template */}}
- {{/* Generate Services based on filtered containers */}}
- {{/* Optional RUNS_ON environment variable used for runsOn*/}}
- {{/* If ports are exposed, the first one is used */}}
- {{/* If ports are exposed, the first one is used */}}
- {{/* Use index function to access map keys with dots in them https://pkg.go.dev/text/template#hdr-Functions */}}
- {{ range $index, $value := . }}
- {{ $addrLen := len $value.Addresses }}
- - kind: Service
- {{/* Name priority rackpeek.name -> homepage.name -> org.opencontainers.image.title -> container_name */}}
- {{ if contains $value.Labels "rackpeek.name" }}
- name: {{ index $value.Labels "rackpeek.name" }}
- {{ else if contains $value.Labels "homepage.name" }}
- name: {{ index $value.Labels "homepage.name" }}
- {{ else if contains $value.Labels "org.opencontainers.image.title" }}
- name: {{ index $value.Labels "org.opencontainers.image.title" }}
- {{ else }}
- name: {{ $value.Name }}
- {{ end }}
- {{/* only include network section if there is a url in labels or published ports with HOST_IP env set */}}
- {{ if or (contains $value.Labels "homepage.href") (contains $value.Labels "rackpeek.href") (contains $value.Labels "caddy") (contains $value.Labels "swag_url") (and ($.Env.HOST_IP) (gt $addrLen 0)) }}
- network:
- {{/* URL priority caddy -> homepage.name -> rackpeek.href */}}
- {{/* cant get url from traefik due to route rule complexity */}}
- {{ if contains $value.Labels "rackpeek.href" }}
- url: {{ index $value.Labels "rackpeek.href" }}
- {{ else if contains $value.Labels "homepage.href" }}
- url: {{ index $value.Labels "homepage.href" }}
- {{ else if contains $value.Labels "caddy" }}
- url: {{ index $value.Labels "caddy" }}
- {{end }}
- {{/* only generate ip:port if HOST_IP env is set */}}
- {{/* -- if rackpeek supports multiple IPs per service in the future this can be modified */}}
- {{ if $.Env.HOST_IP }}
- {{ $hostIps := split $.Env.HOST_IP "," }}
- {{ $httpsIsh := where $value.Addresses "Port" "443"}}
- {{ $httpIsh := where $value.Addresses "Port" "80"}}
- {{/* try to get ports by known web ports first */}}
- {{ if or (gt (len $httpsIsh) 0) (gt (len $httpIsh) 0)}}
- {{ range $i, $address := $value.Addresses }}
- {{/* only use this if container is binding on all addresses or a known host, and using known web port */}}
- {{ if and (or (eq $address.HostIP "0.0.0.0") (contains $hostIps $address.HostIP)) (or (eq $address.Port "443") (eq $address.Port "80")) }}
- ip: {{ index $hostIps 0 }}
- port: {{ $address.Port }}
- protocol: TCP
- {{ break }}
- {{ end }}
- {{ end }}
- {{/* otherwise, use first port */}}
- {{ else }}
- {{ range $i, $address := $value.Addresses }}
- {{/* only use this if container is binding on all addresses or a known host port */}}
- {{ if or (eq $address.HostIP "0.0.0.0") (contains $hostIps $address.HostIP) }}
- ip: {{ index $hostIps 0 }}
- port: {{ $address.Port }}
- protocol: TCP
- {{ break }}
- {{ end }}
- {{ end }}
- {{ end }}
- {{ end }}
- {{/* end network loop */}}
- {{ end }}
- {{ if $.Env.RUNS_ON }}
- runsOn:
- - {{ $.Env.RUNS_ON }}
- {{ end }}
- {{/* end containers loop */}}
- {{ end }}
|