How can I change the port that Thundernetes uses for the Allocation API service?

By default, Thundernetes’s Allocation API service listens on port 5000. Locally, it opens with the kind config set-up here. This port can already be in use by another service thus causing Thundernetes to fail.

Kind Changes

To use an alternate port, the first step is changing the kind-config.yaml to use the desired port. For example:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
  extraPortMappings:
  - containerPort: 5000
    hostPort: 5000
    listenAddress: "0.0.0.0"
    protocol: tcp
  - containerPort: 10000
    hostPort: 10000
    listenAddress: "0.0.0.0"
    protocol: tcp
  - containerPort: 10001
    hostPort: 10001
    listenAddress: "0.0.0.0"
    protocol: tcp

YAML Changes

The necessary YAML changes are found within the manager.yaml file. A find and replace of 5000 with {DESIRED_PORT} will change where the Allocation API listens.

Once this file is modified, you can generate new installfiles with make create-install-files and verify your changes in operator.yaml

Development - End to end tests

End to end tests also run and listen on port 5000. Once you complete the above yaml change, you also need to modify e2e/kind-config.yaml to listen on your desired port. The other needed change is modifying allocationApiSvcPort in pkg/operator/controllers/suite_test.go

Verify changes

Once these changes are made and Thundernetes is running, you can verify the port within the logs using the following: kubectl -n thundernetes-system logs {thundernetes-controller-manager} | grep addr

Resulting in the following output:

2022-10-07T17:01:07Z INFO allocation-api serving allocation API service {"addr": ":5005", "port": 5005}