--- apiVersion: v1 kind: Service metadata: name: piko labels: app: piko spec: ports: - port: 8000 name: proxy - port: 8001 name: upstream - port: 8002 name: admin - port: 8003 name: gossip clusterIP: None selector: app: piko --- apiVersion: v1 kind: ConfigMap metadata: name: server-config data: server.yaml: | cluster: node_id_prefix: ${POD_NAME}- join: - piko --- apiVersion: apps/v1 kind: StatefulSet metadata: name: piko spec: selector: matchLabels: app: piko serviceName: "piko" replicas: 3 template: metadata: labels: app: piko spec: terminationGracePeriodSeconds: 60 containers: - name: piko image: my-repo/piko:latest ports: - containerPort: 8000 name: proxy - containerPort: 8001 name: upstream - containerPort: 8002 name: admin - containerPort: 8003 name: gossip args: - server - --config.path - /config/server.yaml - --config.expand-env resources: limits: cpu: 250m ephemeral-storage: 1Gi memory: 1Gi requests: cpu: 250m ephemeral-storage: 1Gi memory: 1Gi env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name volumeMounts: - name: config mountPath: "/config" readOnly: true volumes: - name: config configMap: name: server-config items: - key: "server.yaml" path: "server.yaml"