Files
homelab/templates/endpointslice.yaml
T
forust 18c633c242
ci / lint-prettier (push) Skipped
ci / lint-ruff (push) Skipped
ci / lint-yaml (push) Skipped
ci / lint-dockerfiles (push) Skipped
ci / validate (push) Skipped
renovate-ci / validate-renovate (push) Skipped
renovate-ci / validate-renovate (pull_request) Skipped
ci / lint-compose (pull_request) Successful in 12s
ci / lint-actionlint (pull_request) Successful in 6s
ci / lint-shellcheck (pull_request) Successful in 13s
ci / lint-prettier (pull_request) Successful in 21s
ci / lint-ruff (pull_request) Successful in 7s
ci / lint-yaml (pull_request) Successful in 12s
ci / lint-dockerfiles (pull_request) Successful in 7s
ci / validate (pull_request) Successful in 7s
ci / build (pull_request) Skipped
feat(monitoring): add VictoriaMetrics trial stack
2026-10-06 17:45:44 +02:00

64 lines
2.7 KiB
YAML

# Exhaustive EndpointSlice reference (discovery.k8s.io/v1).
# EndpointSlices are the address lists behind a Service: each entry says
# "IP X serves port Y, ready or not". Normally the endpoint controller writes
# them automatically from the Service selector. You write one by hand in a
# single case: a selector-less Service pointing OUTSIDE the cluster (a host
# daemon, a LAN appliance, an external database). The pair looks like:
# Service (no selector, same port names) + this EndpointSlice.
apiVersion: discovery.k8s.io/v1
kind: EndpointSlice
metadata:
name: app-external-abc123
namespace: example
labels:
# kubernetes.io/service-name: THE binding label. It must equal the
# selector-less Service name - this is what attaches the slice to it.
# The endpoint controller owns slices it creates; hand-written ones
# just need this label to be picked up.
kubernetes.io/service-name: app-external-service
app: app
annotations:
description: "hand-written slice for an off-cluster backend"
# addressType: IPv4, IPv6, or FQDN. All endpoints in one slice share it -
# mix families with one slice per family.
addressType: IPv4
ports:
- name: http
# name: MUST match the Service port name it serves.
protocol: TCP
# port: the REAL backend port (may differ from the Service port - the
# Service port is the in-cluster alias, this is where packets go).
port: 8080
# appProtocol: payload hint, mirrors the Service field.
appProtocol: http
endpoints:
# One entry per backend address. kube-proxy load-balances across the ones
# whose conditions say ready+serving+terminating=false.
- addresses:
# addresses: one or more IPs (or a single DNS name for FQDN slices).
- 192.168.1.50
conditions:
# ready: backend accepts traffic. False removes it from rotation
# without deleting the entry (flap-friendly).
ready: true
# serving: the process is up. Differs from ready during shutdown:
# serving=false + terminating=true = draining.
serving: true
# terminating: the endpoint is going away. Draining traffic, not dead.
terminating: false
# hostname: DNS name published for this endpoint (headless Services).
# hostname: backend-1
# targetRef: link back to the pod/node object (set automatically on
# controller-managed slices; omit on hand-written ones).
# targetRef:
# kind: Pod
# namespace: example
# name: app-67890abcde-fghij
# uid: 12345678-1234-1234-1234-123456789abc
# nodeName: the node hosting this endpoint (topology-aware routing).
# zone: override the endpoint zone (defaults from nodeName).
# hints: topology hints for zone-aware routing (PreferClose).
# hints:
# forZones:
# - name: zone-a