Sure thing!
The thing is, even though they are in the same cluster, I do plan on having multiple routers eventually, so I would prefer to use the public IP address instead of the .svc.cluster.local
internal DNS name.
As far as the linkListeners.transport
, I currently have it enabled (default from the values.yaml
).
At the moment, I have a bit of confusion, as metallb seems to only be unhappy to give the edge router an external-ip address:
kubectl -n ziti get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ziti-controller-ctrl ClusterIP 10.43.115.112 <none> 443/TCP 36d
ziti-controller-client LoadBalancer 10.43.249.23 192.168.1.206 8441:31808/TCP 36d
ziti-router-edge LoadBalancer 10.43.173.20 <pending> 8443:30645/TCP 91s
ziti-router-transport ClusterIP 10.43.240.174 <none> 443/TCP 91s
Looking at the metallb controller logs shows this:
{"caller":"service.go:135","error":"no available IPs","level":"error","msg":"IP allocation failed","op":"allocateIPs","ts":"2023-10-20T20:41:15Z"}
{"caller":"service_controller.go:100","controller":"ServiceReconciler","endpoints":"{\"Type\":0,\"EpVal\":null,\"SlicesVal\":null}","event":"failed to handle service","level":"error","name":"ziti/ziti-router-edge","service":"{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"ziti-router-edge\",\"namespace\":\"ziti\",\"uid\":\"f073f6bf-b707-4a74-a09b-fb3c0f21a593\",\"resourceVersion\":\"13100815\",\"creationTimestamp\":\"2023-10-20T20:41:15Z\",\"labels\":{\"app.kubernetes.io/instance\":\"ziti-router\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"ziti-router\",\"app.kubernetes.io/version\":\"0.29.0\",\"helm.sh/chart\":\"ziti-router-0.6.0\"},\"annotations\":{\"meta.helm.sh/release-name\":\"ziti-router\",\"meta.helm.sh/release-namespace\":\"ziti\"},\"managedFields\":[{\"manager\":\"helm\",\"operation\":\"Update\",\"apiVersion\":\"v1\",\"time\":\"2023-10-20T20:41:15Z\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:metadata\":{\"f:annotations\":{\".\":{},\"f:meta.helm.sh/release-name\":{},\"f:meta.helm.sh/release-namespace\":{}},\"f:labels\":{\".\":{},\"f:app.kubernetes.io/instance\":{},\"f:app.kubernetes.io/managed-by\":{},\"f:app.kubernetes.io/name\":{},\"f:app.kubernetes.io/version\":{},\"f:helm.sh/chart\":{}}},\"f:spec\":{\"f:allocateLoadBalancerNodePorts\":{},\"f:externalTrafficPolicy\":{},\"f:internalTrafficPolicy\":{},\"f:ports\":{\".\":{},\"k:{\\\"port\\\":8443,\\\"protocol\\\":\\\"TCP\\\"}\":{\".\":{},\"f:name\":{},\"f:port\":{},\"f:protocol\":{},\"f:targetPort\":{}}},\"f:selector\":{},\"f:sessionAffinity\":{},\"f:type\":{}}}}]},\"spec\":{\"ports\":[{\"name\":\"edge\",\"protocol\":\"TCP\",\"port\":8443,\"targetPort\":3022,\"nodePort\":30463}],\"selector\":{\"app.kubernetes.io/component\":\"ziti-router\",\"app.kubernetes.io/instance\":\"ziti-router\",\"app.kubernetes.io/name\":\"ziti-router\"},\"clusterIP\":\"10.43.204.145\",\"clusterIPs\":[\"10.43.204.145\"],\"type\":\"LoadBalancer\",\"sessionAffinity\":\"None\",\"externalTrafficPolicy\":\"Cluster\",\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"allocateLoadBalancerNodePorts\":true,\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}","ts":"2023-10-20T20:41:15Z"}
I have tried setting the IPAddressPool
for the router to a few different ones, and it is not assigning it, but only for the router.
As you can see from the get svc
above, the controller picks up the external-ip address just fine.
Also, just to debug, I set the edge section to be ClusterIP
, and the same invalid header
message shows in the router pod logs.
Here are the relevant bits of the values.yaml
for the router:
ctrl:
endpoint: ziti-controller.domain.com:8441
advertisedHost: ziti-router.domain.com
linkListeners:
transport: # https://docs.openziti.io/docs/reference/configuration/router/#transport
containerPort: 10080
advertisedHost: #router11-transport.router-namespace.svc:443
advertisedPort: 443
service:
enabled: true
type: ClusterIP
labels:
annotations:
ingress:
enabled: false
annotations:
edge:
enabled: true
containerPort: 3022
advertisedHost: ziti-router.kincke.com #router11-edge.ziti.example.com
# advertisedPort: 443
advertisedPort: 8443
service:
# -- create a cluster service for the edge listener
enabled: true
type: LoadBalancer
annotations:
metallb.universe.tf/address-pool: ziti-router
labels:
annotations:
ingress:
enabled: false
annotations:
Maybe you will spot something that I missed