Skip to content

publicAddress don't set EXTERNAL-IP with cloudProvider None #3666

@toschneck

Description

@toschneck

What happened?

I setup a kubeone cluster with static machines, but the configured field publicAddress don't get configured for the Node EXTERNAL-IP.

apiVersion: kubeone.k8c.io/v1beta2
kind: KubeOneCluster
name: kubeone-dc-gcp
versions:
  kubernetes: 'v1.32.4'
cloudProvider:
  none: {}
apiEndpoint:
  host: 'kubeone-dc-gcp.demo.kubermatic.io'
  port: 6443
  alternativeNames: []

machineController:
  deploy: false

controlPlane:
  hosts:
  - publicAddress: '100.105.19.70'
    privateAddress: '10.156.15.195'
    bastion: '100.105.19.70'
    bastionPort: 22  # can be left out if using the default (22)
    bastionUser: 'root'  # can be left out if using the default ('root')
    sshPort: 22 # can be left out if using the default (22)
    sshUsername: 'root'
    labels:
      env: gcp

  - publicAddress: '100.105.224.144'
    privateAddress: '10.156.15.196'
    bastion: '100.105.224.144'
    bastionPort: 22  # can be left out if using the default (22)
    bastionUser: 'root'  # can be left out if using the default ('root')
    sshPort: 22 # can be left out if using the default (22)
    sshUsername: 'root'
    labels:
      env: gcp

  - publicAddress: '100.105.47.140'
    privateAddress: '10.156.15.197'
    bastion: '100.105.47.140'
    bastionPort: 22  # can be left out if using the default (22)
    bastionUser: 'root'  # can be left out if using the default ('root')
    sshPort: 22 # can be left out if using the default (22)
    sshUsername: 'root'
    labels:
      env: gcp

### NOTE: disable for init as there are some dependencies from helm charts
addons:
  enable: true
  path: "./addons"

clusterNetwork:
  cni:
    canal: {}
  podSubnet: 10.250.0.0/16 #overwrite to ensure it doesn't conflict with default KKP user cluster pod network
  serviceSubnet: 172.50.0.0/16

containerRuntime:
  containerd:
    # fixes CDI kubevirt image permission denied error: https://github.com/kubermatic/kubermatic/issues/14352
    deviceOwnershipFromSecurityContext: true

helmReleases:
  - releaseName: piraeus
    chart: ./charts/piraeus
    namespace: piraeus
    version: 2.8.1
    values:
      - inline:
          installCRDs: true
  - releaseName: kubelb-ccm
    chart: ./charts/kubelb-ccm-ee
    namespace: kubelb
    version: v1.1.4
    values:
      - inline:
          imagePullSecrets:
            - name: regcred
          kubelb:
              clusterSecretName: kubelb-cluster
              tenantName: tenant-kubeone-dc-gcp
              # -- Address type to use for routing traffic to node ports. Values are ExternalIP, InternalIP.
              nodeAddressType: ExternalIP
              #disableIngressController: true
              #useIngressClass: true
  # https://github.com/deliveryhero/helm-charts/tree/master/stable/node-problem-detector
  # https://github.com/kubernetes/node-problem-detector
  - releaseName: node-problem-detector
    chart: node-problem-detector
    repoURL: https://charts.deliveryhero.io/
    namespace: kube-system
  # https://github.com/deliveryhero/helm-charts/tree/master/stable/k8s-event-logger
  # https://github.com/max-rocket-internet/k8s-event-logger
  - releaseName: k8s-event-logger
    chart: k8s-event-logger
    repoURL: https://charts.deliveryhero.io/
    namespace: kube-system

The nodes:

NAME                                   STATUS   ROLES           AGE     VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION    CONTAINER-RUNTIME
demo-cp-328f.c.kkp-dev-2025.internal   Ready    control-plane   8h      v1.32.4   10.156.15.195   <none>        Ubuntu 24.04.2 LTS   6.11.0-1015-gcp   containerd://1.7.27
demo-cp-s8k8.c.kkp-dev-2025.internal   Ready    control-plane   7h59m   v1.32.4   10.156.15.196   <none>        Ubuntu 24.04.2 LTS   6.11.0-1015-gcp   containerd://1.7.27
demo-cp-x8vh.c.kkp-dev-2025.internal   Ready    control-plane   7h58m   v1.32.4   10.156.15.197   <none>        Ubuntu 24.04.2 LTS   6.11.0-1015-gcp   containerd://1.7.27

Expected behavior

the external IP field get set, e.g. for the load balancers ccm of KubeLB

How to reproduce the issue?

create a static cluster as above

What KubeOne version are you using?

$ kubeone version
{
  "kubeone": {
    "major": "1",
    "minor": "10",
    "gitVersion": "v1.10.0-1-gd97b10f5",
    "gitCommit": "d97b10f55f59afc05f3a655ca15e3cbbf272b245",
    "gitTreeState": "",
    "buildDate": "2025-04-20T21:32:13+02:00",
    "goVersion": "go1.24.2",
    "compiler": "gc",
    "platform": "darwin/arm64"
  },
  "machine_controller": {
    "major": "1",
    "minor": "61",
    "gitVersion": "v1.61.1",
    "gitCommit": "",
    "gitTreeState": "",
    "buildDate": "",
    "goVersion": "",
    "compiler": "",
    "platform": "linux/amd64"
  }
}

Provide your KubeOneCluster manifest here (if applicable)

see above

What cloud provider are you running on?

What operating system are you running in your cluster?

Ubuntu 24.04.2 LTS 6.11.0-1015-gcp containerd://1.7.27

Additional information

Metadata

Metadata

Assignees

No one assigned

    Labels

    invalidThis doesn't seem rightkind/bugCategorizes issue or PR as related to a bug.sig/cluster-managementDenotes a PR or issue as being assigned to SIG Cluster Management.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions