IpamHost¶
This section describes the IpamHost
resource used in Mirantis
Container Cloud API. The kaas-ipam
controller monitors
the current state of the bare metal Machine
, verifies if BareMetalHost
is successfully created and inspection is completed.
Then the kaas-ipam
controller fetches the information about the network
card, creates the IpamHost
object, and requests the IP address.
The IpamHost
object is created for each Machine
and contains
all configuration of the host network interfaces and IP address.
It also contains the information about associated BareMetalHost
,
Machine
, and MAC addresses.
For demonstration purposes, the Container Cloud IpamHost
custom resource (CR) is split into the following major sections:
IpamHost metadata¶
The Container Cloud IpamHost
CR contains the following fields:
apiVersion
API version of the object that is
ipam.mirantis.com/v1alpha1
kind
Object type that is
IpamHost
metadata
The
metadata
field contains the following subfields:name
Name of the
IpamHost
object
namespace
Project in which the
IpamHost
object has been created
labels
Key-value pairs that are attached to the object:
cluster.sigs.k8s.io/cluster-name
References the
Cluster
object name thatIpamHost
is assigned to
ipam/BMHostID
Unique ID of the associated
BareMetalHost
object
ipam/MAC-XX-XX-XX-XX-XX-XX: "1"
Number of NICs of the host that the corresponding MAC address is assigned to
ipam/MachineID
Unique ID of the associated
Machine
object
ipam/UID
Unique ID of the
IpamHost
object
Warning
Labels and annotations that are not documented in this API Reference are generated automatically by Container Cloud. Do not modify them using the Container Cloud API.
Configuration example:
apiVersion: ipam.mirantis.com/v1alpha1
kind: IpamHost
metadata:
name: master-0
namespace: default
labels:
cluster.sigs.k8s.io/cluster-name: kaas-mgmt
ipam/BMHostID: 57250885-f803-11ea-88c8-0242c0a85b02
ipam/MAC-0C-C4-7A-1E-A9-5C: "1"
ipam/MAC-0C-C4-7A-1E-A9-5D: "1"
ipam/MachineID: 573386ab-f803-11ea-88c8-0242c0a85b02
ipam/UID: 834a2fc0-f804-11ea-88c8-0242c0a85b02
IpamHost configuration¶
The spec
field of the IpamHost
resource describes the desired
state of the object. It contains the following fields:
nicMACmap
Represents an unordered list of all NICs of the host obtained during the bare metal host inspection. Each NIC entry contains such fields as
name
,mac
,ip
, and so on. Theprimary
field defines which NIC was used for PXE booting. Only one NIC can be primary. The IP address is not configurable and is provided only for debug purposes.
l2TemplateSelector
If specified, contains the
name
(first priority) orlabel
of the L2 template that will be applied during a machine creation. Thel2TemplateSelector
field is copied from theMachine
providerSpec
object to theIpamHost
object only once, during a machine creation. To modifyl2TemplateSelector
after creation of aMachine
CR, edit theIpamHost
object.
netconfigUpdateMode
TechPreviewUpdate mode of network configuration. Possible values:
MANUAL
Default, recommended. An operator manually applies new network configuration.
AUTO-UNSAFE
Unsafe, not recommended. If new network configuration is rendered by
kaas-ipam
successfully, it is applied automatically with no manual approval.
MANUAL-GRACEPERIOD
Initial value set during the
IpamHost
object creation. If new network configuration is rendered bykaas-ipam
successfully, it is applied automatically with no manual approval. This value is implemented for automatic changes in theIpamHost
object during the host provisioning and deployment. The value is changed automatically toMANUAL
in three hours after theIpamHost
object creation.
Caution
For MKE clusters that are part of MOSK infrastructure, the feature support will become available in one of the following Container Cloud releases.
netconfigUpdateAllow
TechPreviewManual approval of network changes. Possible values:
true
orfalse
. Set totrue
to approve the Netplan configuration file candidate (stored innetconfigCandidate
) and copy its contents to the effective Netplan configuration file list (stored innetconfigFiles
). After that, its value is automatically switched back tofalse
.Note
This value has effect only if
netconfigUpdateMode
is set toMANUAL
.Set to
true
only ifstatus.netconfigCandidateState
of network configuration candidate isOK
.Caution
The following fields of the
ipamHost
status are renamed since Container Cloud 2.22.0 in the scope of theL2Template
andIpamHost
objects refactoring:netconfigV2
tonetconfigCandidate
netconfigV2state
tonetconfigCandidateState
netconfigFilesState
tonetconfigFilesStates
(per file)
No user actions are required after renaming.
The format of
netconfigFilesState
changed after renaming. ThenetconfigFilesStates
field contains a dictionary of statuses of network configuration files stored innetconfigFiles
. The dictionary contains the keys that are file paths and values that have the same meaning for each file thatnetconfigFilesState
had:For a successfully rendered configuration file:
OK: <timestamp> <sha256-hash-of-rendered-file>
, where a timestamp is in the RFC 3339 format.For a failed rendering:
ERR: <error-message>
.
Caution
For MKE clusters that are part of MOSK infrastructure, the feature support will become available in one of the following Container Cloud releases.
Configuration example:
spec:
nicMACmap:
- mac: 0c:c4:7a:1e:a9:5c
name: ens11f0
- ip: 172.16.48.157
mac: 0c:c4:7a:1e:a9:5d
name: ens11f1
primary: true
l2TemplateSelector:
label:xxx
netconfigUpdateMode: manual
netconfigUpdateAllow: false
IpamHost status¶
Caution
The following fields of the ipamHost
status are renamed since
Container Cloud 2.22.0 in the scope of the L2Template
and IpamHost
objects refactoring:
netconfigV2
tonetconfigCandidate
netconfigV2state
tonetconfigCandidateState
netconfigFilesState
tonetconfigFilesStates
(per file)
No user actions are required after renaming.
The format of netconfigFilesState
changed after renaming. The
netconfigFilesStates
field contains a dictionary of statuses of network
configuration files stored in netconfigFiles
. The dictionary contains
the keys that are file paths and values that have the same meaning for each
file that netconfigFilesState
had:
For a successfully rendered configuration file:
OK: <timestamp> <sha256-hash-of-rendered-file>
, where a timestamp is in the RFC 3339 format.For a failed rendering:
ERR: <error-message>
.
The status
field of the IpamHost
resource describes the observed
state of the object. It contains the following fields:
netconfigCandidate
Candidate of the Netplan configuration file in human readable format that is rendered using the corresponding
L2Template
. This field contains valid data ifl2RenderResult
andnetconfigCandidateState
retain theOK
result.
l2RenderResult
DeprecatedStatus of a rendered Netplan configuration candidate stored in
netconfigCandidate
. Possible values:For a successful L2 template rendering:
OK: timestamp sha256-hash-of-rendered-netplan
, where timestamp is in the RFC 3339 formatFor a failed rendering:
ERR: <error-message>
This field is deprecated and will be removed in one of the following releases. Use
netconfigCandidateState
instead.
netconfigCandidateState
TechPreviewStatus of a rendered Netplan configuration candidate stored in
netconfigCandidate
. Possible values:For a successful L2 template rendering:
OK: timestamp sha256-hash-of-rendered-netplan
, where timestamp is in the RFC 3339 formatFor a failed rendering:
ERR: <error-message>
Caution
For MKE clusters that are part of MOSK infrastructure, the feature support will become available in one of the following Container Cloud releases.
netconfigFiles
List of Netplan configuration files rendered using the corresponding
L2Template
. It is used to configure host networking during bare metal host provisioning (BaremetalHost
retains a copy of this configuration) and during Kubernetes node deployment (refer to Workflow of the netplan configuration using an L2 template for details).Its contents are changed only if rendering of Netplan configuration was successful. So, it always retains the last successfully rendered Netplan configuration. To apply changes in contents, the Infrastructure Operator approval is required. For details, see Modify network configuration on an existing machine.
Every item in this list contains:
content
The
base64
-encoded Netplan configuration file that was rendered using the correspondingL2Template
.
path
The file path for the Netplan configuration file on the target host.
netconfigFilesStates
Status of Netplan configuration files stored in
netconfigFiles
. Possible values are:For a successful L2 template rendering:
OK: timestamp sha256-hash-of-rendered-netplan
, where timestamp is in the RFC 3339 formatFor a failed rendering:
ERR: <error-message>
serviceMap
Dictionary of services and their endpoints (IP address and optional interface name) that have the
ipam/SVC-<serviceName>
label. These addresses are added to theServiceMap
dictionary during rendering of an L2 template for a givenIpamHost
. For details, see Service labels and their life cycle.
state
Since 2.23.0Message that reflects the current status of the resource. The list of possible values includes the following:
OK
- object is operational.ERR
- object is non-operational. This status has a detailed description in themessages
list.TERM
- object was deleted and is terminating.
messages
Since 2.23.0List of error or warning messages if the object state is
ERR
.
objCreated
Date, time, and IPAM version of the resource creation.
objStatusUpdated
Date, time, and IPAM version of the last update of the
status
field in the resource.
objUpdated
Date, time, and IPAM version of the last resource update.
Configuration example:
status:
l2RenderResult: OK
l2TemplateRef: namespace_name/l2-template-name/1/2589/88865f94-04f0-4226-886b-2640af95a8ab
netconfigFiles:
- content: ...<base64-encoded Netplan configuration file>...
path: /etc/netplan/60-kaas-lcm-netplan.yaml
netconfigFilesStates: /etc/netplan/60-kaas-lcm-netplan.yaml: 'OK: 2023-01-23T09:27:22.71802Z ece7b73808999b540e32ca1720c6b7a6e54c544cc82fa40d7f6b2beadeca0f53'
netconfigCandidate:
...
<Netplan configuration file in plain text, rendered from L2Template>
...
netconfigCandidateState: OK: 2022-06-08T03:18:08.49590Z a4a128bc6069638a37e604f05a5f8345cf6b40e62bce8a96350b5a29bc8bccde\
serviceMap:
ipam/SVC-ceph-cluster:
- ifName: ceph-br2
ipAddress: 10.0.10.11
- ifName: ceph-br1
ipAddress: 10.0.12.22
ipam/SVC-ceph-public:
- ifName: ceph-public
ipAddress: 10.1.1.15
ipam/SVC-k8s-lcm:
- ifName: k8s-lcm
ipAddress: 10.0.1.52
phase: Active
state: OK
objCreated: 2021-10-21T19:09:32Z by v5.1.0-20210930-121522-f5b2af8
objStatusUpdated: 2021-10-21T19:14:18.748114886Z by v5.1.0-20210930-121522-f5b2af8
objUpdated: 2021-10-21T19:09:32.606968024Z by v5.1.0-20210930-121522-f5b2af8