Skip to content

Support discovering node name from RKM and connecting to AD domain via certificates for PXE Boot #427

@hach-que

Description

@hach-que

Rough outline for this is:

  • Need a web service that runs on Linux nodes inside RKM
    • This service always runs on the Kubernetes primary node.
    • Discovered via UDP broadcast, using the same mechanism that RKM nodes use to discover the controller on first run.
    • This service reads a custom resource like "PxeBootNode" or something like that.
      • This resource contains the desired computer name and generation number (the latter can be increased to force a reprovision even if Windows is already installed).
    • This service reads a custom resource like "PxeBootConfiguration" or something like that.
      • This resource contains configuration as to whether AD join should be enabled (including a reference to the certificate in Kubernetes that should be trusted for AD certificate provisioning).
      • This service automatically creates X509 certificates signed with the main CA secret in response to PXE Boot node requests, based on the MAC address or computer serial number.
      • Maybe we try to have PXE Boot nodes store a certificate or sign data using the TPM, that way we can prove that the node is who it says it is when making the request to the service?
      • This configuration needs to also specify what AD group machines should be joined to by default.
    • We might need a "PxeBootNodeRequest" resource, which can contain the public fingerprint of a new node that is yet to be approved. That way, we don't have to type MAC address / serial number / TPM public key from the computer showing it in WinPE.
  • Need a service that can run on an AD controller that exposes a HTTP endpoint. That endpoint accepts requests signed by client certificates, and uses djoin to generate an offline join file. This file is then sent to the PXE Boot node in WinPE which uses it to apply the join to the VHDX before first boot. In this case we don't set up a local Administrator password on the machine.

Metadata

Metadata

Assignees

No one assigned

    Labels

    rkmRedpoint Kubernetes Manager

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions