diff --git a/api/v1alpha1/ironic_types.go b/api/v1alpha1/ironic_types.go index bcb634f4..72a31bf0 100644 --- a/api/v1alpha1/ironic_types.go +++ b/api/v1alpha1/ironic_types.go @@ -169,6 +169,32 @@ type Networking struct { RPCPort int32 `json:"rpcPort,omitempty"` } +// CPUArchitecture represents a CPU architecture supported by IPA. +// +kubebuilder:validation:Enum=x86_64;aarch64 +type CPUArchitecture string + +const ( + // ArchX86_64 represents the x86_64 (amd64) architecture. + ArchX86_64 CPUArchitecture = "x86_64" + // ArchAarch64 represents the aarch64 (arm64) architecture. + ArchAarch64 CPUArchitecture = "aarch64" +) + +// AgentImages defines a single IPA (Ironic Python Agent) image configuration. +type AgentImages struct { + // Kernel is the URL of the IPA kernel image. + // Example: "file:///shared/html/images/ironic-python-agent.kernel" + Kernel string `json:"kernel"` + + // Initramfs is the URL of the IPA initramfs/ramdisk image. + // Example: "file:///shared/html/images/ironic-python-agent.initramfs" + Initramfs string `json:"initramfs"` + + // Architecture is the target CPU architecture for this image. + // Each image must have a unique architecture. + Architecture CPUArchitecture `json:"architecture"` +} + // DeployRamdisk defines IPA ramdisk settings. type DeployRamdisk struct { // DisableDownloader tells the operator not to start the IPA downloader as the init container. @@ -250,7 +276,6 @@ type Images struct { // Warning: modifying arbitrary options may cause your Ironic installation to // fail or misbehave. Do not modify anything you don't understand well. type ExtraConfig struct { - // The group that config belongs to. // +optional Group string `json:"group,omitempty"` @@ -292,11 +317,28 @@ type Overrides struct { // +optional Containers []corev1.Container `json:"containers,omitempty"` + // HttpdLivenessProbe configures the httpd container liveness probe. + // If not set and AgentImages is not specified, defaults to checking /images/ironic-python-agent.kernel exists. + // When AgentImages is specified, no default probe is configured. + // +optional + HttpdLivenessProbe *corev1.Probe `json:"httpdLivenessProbe,omitempty"` + + // HttpdReadinessProbe configures the httpd container readiness probe. + // If not set and AgentImages is not specified, defaults to checking /images/ironic-python-agent.kernel exists. + // When AgentImages is specified, no default probe is configured. + // +optional + HttpdReadinessProbe *corev1.Probe `json:"httpdReadinessProbe,omitempty"` + // InitContainers to append to the main Ironic pod. // If a container name matches an existing init container, the existing init container is replaced. // +optional InitContainers []corev1.Container `json:"initContainers,omitempty"` + // AgentImages overrides the default IPA (Ironic Python Agent) images provided by the downloader. + // Each image must have a unique architecture (rendered as DEPLOY_KERNEL_BY_ARCH/DEPLOY_RAMDISK_BY_ARCH). + // +optional + AgentImages []AgentImages `json:"agentImages,omitempty"` + // Extra labels to add to each pod (including upgrade jobs). // +optional Labels map[string]string `json:"labels,omitempty"` diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index d23ec762..23641a16 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -26,6 +26,21 @@ import ( "k8s.io/apimachinery/pkg/runtime" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AgentImages) DeepCopyInto(out *AgentImages) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentImages. +func (in *AgentImages) DeepCopy() *AgentImages { + if in == nil { + return nil + } + out := new(AgentImages) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DHCP) DeepCopyInto(out *DHCP) { *out = *in @@ -306,6 +321,16 @@ func (in *Overrides) DeepCopyInto(out *Overrides) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.HttpdLivenessProbe != nil { + in, out := &in.HttpdLivenessProbe, &out.HttpdLivenessProbe + *out = new(v1.Probe) + (*in).DeepCopyInto(*out) + } + if in.HttpdReadinessProbe != nil { + in, out := &in.HttpdReadinessProbe, &out.HttpdReadinessProbe + *out = new(v1.Probe) + (*in).DeepCopyInto(*out) + } if in.InitContainers != nil { in, out := &in.InitContainers, &out.InitContainers *out = make([]v1.Container, len(*in)) @@ -313,6 +338,11 @@ func (in *Overrides) DeepCopyInto(out *Overrides) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.AgentImages != nil { + in, out := &in.AgentImages, &out.AgentImages + *out = make([]AgentImages, len(*in)) + copy(*out, *in) + } if in.Labels != nil { in, out := &in.Labels, &out.Labels *out = make(map[string]string, len(*in)) diff --git a/config/crd/bases/ironic.metal3.io_ironics.yaml b/config/crd/bases/ironic.metal3.io_ironics.yaml index b057dd88..a7cec183 100644 --- a/config/crd/bases/ironic.metal3.io_ironics.yaml +++ b/config/crd/bases/ironic.metal3.io_ironics.yaml @@ -313,6 +313,38 @@ spec: Overrides for the generated Deployment or Daemon Set. EXPERIMENTAL: requires feature gate Overrides. properties: + agentImages: + description: |- + AgentImages overrides the default IPA (Ironic Python Agent) images provided by the downloader. + Each image must have a unique architecture (rendered as DEPLOY_KERNEL_BY_ARCH/DEPLOY_RAMDISK_BY_ARCH). + items: + description: AgentImages defines a single IPA (Ironic Python + Agent) image configuration. + properties: + architecture: + description: |- + Architecture is the target CPU architecture for this image. + Each image must have a unique architecture. + enum: + - x86_64 + - aarch64 + type: string + initramfs: + description: |- + Initramfs is the URL of the IPA initramfs/ramdisk image. + Example: "file:///shared/html/images/ironic-python-agent.initramfs" + type: string + kernel: + description: |- + Kernel is the URL of the IPA kernel image. + Example: "file:///shared/html/images/ironic-python-agent.kernel" + type: string + required: + - architecture + - initramfs + - kernel + type: object + type: array annotations: additionalProperties: type: string @@ -1851,6 +1883,314 @@ spec: - name type: object type: array + httpdLivenessProbe: + description: |- + HttpdLivenessProbe configures the httpd container liveness probe. + If not set and AgentImages is not specified, defaults to checking /images/ironic-python-agent.kernel exists. + When AgentImages is specified, no default probe is configured. + properties: + exec: + description: Exec specifies a command to execute in the container. + properties: + command: + description: |- + Command is the command line to execute inside the container, the working directory for the + command is root ('/') in the container's filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + a shell, you need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + description: |- + Minimum consecutive failures for the probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies a GRPC HealthCheckRequest. + properties: + port: + description: Port number of the gRPC service. Number must + be in the range 1 to 65535. + format: int32 + type: integer + service: + default: "" + description: |- + Service is the name of the service to place in the gRPC HealthCheckRequest + (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + + If this is not specified, the default behavior is defined by gRPC. + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies an HTTP GET request to perform. + properties: + host: + description: |- + Host name to connect to, defaults to the pod IP. You probably want to set + "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header to + be used in HTTP probes + properties: + name: + description: |- + The header field name. + This will be canonicalized upon output, so case-variant names will be understood as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: |- + Name or number of the port to access on the container. + Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: |- + Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: |- + Number of seconds after the container has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + format: int32 + type: integer + periodSeconds: + description: |- + How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: |- + Minimum consecutive successes for the probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies a connection to a TCP port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: |- + Number or name of the port to access on the container. + Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: |- + Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + The grace period is the duration in seconds after the processes running in the pod are sent + a termination signal and the time when the processes are forcibly halted with a kill signal. + Set this value longer than the expected cleanup time for your process. + If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates stop immediately via + the kill signal (no opportunity to shut down). + This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: |- + Number of seconds after which the probe times out. + Defaults to 1 second. Minimum value is 1. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + format: int32 + type: integer + type: object + httpdReadinessProbe: + description: |- + HttpdReadinessProbe configures the httpd container readiness probe. + If not set and AgentImages is not specified, defaults to checking /images/ironic-python-agent.kernel exists. + When AgentImages is specified, no default probe is configured. + properties: + exec: + description: Exec specifies a command to execute in the container. + properties: + command: + description: |- + Command is the command line to execute inside the container, the working directory for the + command is root ('/') in the container's filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + a shell, you need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + description: |- + Minimum consecutive failures for the probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies a GRPC HealthCheckRequest. + properties: + port: + description: Port number of the gRPC service. Number must + be in the range 1 to 65535. + format: int32 + type: integer + service: + default: "" + description: |- + Service is the name of the service to place in the gRPC HealthCheckRequest + (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + + If this is not specified, the default behavior is defined by gRPC. + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies an HTTP GET request to perform. + properties: + host: + description: |- + Host name to connect to, defaults to the pod IP. You probably want to set + "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header to + be used in HTTP probes + properties: + name: + description: |- + The header field name. + This will be canonicalized upon output, so case-variant names will be understood as the same header. + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: |- + Name or number of the port to access on the container. + Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: |- + Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: |- + Number of seconds after the container has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + format: int32 + type: integer + periodSeconds: + description: |- + How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: |- + Minimum consecutive successes for the probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies a connection to a TCP port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: |- + Number or name of the port to access on the container. + Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: |- + Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + The grace period is the duration in seconds after the processes running in the pod are sent + a termination signal and the time when the processes are forcibly halted with a kill signal. + Set this value longer than the expected cleanup time for your process. + If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates stop immediately via + the kill signal (no opportunity to shut down). + This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: |- + Number of seconds after which the probe times out. + Defaults to 1 second. Minimum value is 1. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + format: int32 + type: integer + type: object initContainers: description: |- InitContainers to append to the main Ironic pod. diff --git a/docs/api.md b/docs/api.md index bbbf6216..4b44c31c 100644 --- a/docs/api.md +++ b/docs/api.md @@ -659,6 +659,14 @@ EXPERIMENTAL: requires feature gate Overrides.
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| architecture | +enum | +
+ Architecture is the target CPU architecture for this image.
+Each image must have a unique architecture. + + Enum: x86_64, aarch64 + |
+ true | +
| initramfs | +string | +
+ Initramfs is the URL of the IPA initramfs/ramdisk image.
+Example: "file:///shared/html/images/ironic-python-agent.initramfs" + |
+ true | +
| kernel | +string | +
+ Kernel is the URL of the IPA kernel image.
+Example: "file:///shared/html/images/ironic-python-agent.kernel" + |
+ true | +
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| exec | +object | +
+ Exec specifies a command to execute in the container. + |
+ false | +
| failureThreshold | +integer | +
+ Minimum consecutive failures for the probe to be considered failed after having succeeded.
+Defaults to 3. Minimum value is 1. + + Format: int32 + |
+ false | +
| grpc | +object | +
+ GRPC specifies a GRPC HealthCheckRequest. + |
+ false | +
| httpGet | +object | +
+ HTTPGet specifies an HTTP GET request to perform. + |
+ false | +
| initialDelaySeconds | +integer | +
+ Number of seconds after the container has started before liveness probes are initiated.
+More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + + Format: int32 + |
+ false | +
| periodSeconds | +integer | +
+ How often (in seconds) to perform the probe.
+Default to 10 seconds. Minimum value is 1. + + Format: int32 + |
+ false | +
| successThreshold | +integer | +
+ Minimum consecutive successes for the probe to be considered successful after having failed.
+Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + + Format: int32 + |
+ false | +
| tcpSocket | +object | +
+ TCPSocket specifies a connection to a TCP port. + |
+ false | +
| terminationGracePeriodSeconds | +integer | +
+ Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
+The grace period is the duration in seconds after the processes running in the pod are sent
+a termination signal and the time when the processes are forcibly halted with a kill signal.
+Set this value longer than the expected cleanup time for your process.
+If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
+value overrides the value provided by the pod spec.
+Value must be non-negative integer. The value zero indicates stop immediately via
+the kill signal (no opportunity to shut down).
+This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
+Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + + Format: int64 + |
+ false | +
| timeoutSeconds | +integer | +
+ Number of seconds after which the probe times out.
+Defaults to 1 second. Minimum value is 1.
+More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + + Format: int32 + |
+ false | +
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| command | +[]string | +
+ Command is the command line to execute inside the container, the working directory for the
+command is root ('/') in the container's filesystem. The command is simply exec'd, it is
+not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
+a shell, you need to explicitly call out to that shell.
+Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + |
+ false | +
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| port | +integer | +
+ Port number of the gRPC service. Number must be in the range 1 to 65535. + + Format: int32 + |
+ true | +
| service | +string | +
+ Service is the name of the service to place in the gRPC HealthCheckRequest
+(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+
+If this is not specified, the default behavior is defined by gRPC. + + Default: + |
+ false | +
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| port | +int or string | +
+ Name or number of the port to access on the container.
+Number must be in the range 1 to 65535.
+Name must be an IANA_SVC_NAME. + |
+ true | +
| host | +string | +
+ Host name to connect to, defaults to the pod IP. You probably want to set
+"Host" in httpHeaders instead. + |
+ false | +
| httpHeaders | +[]object | +
+ Custom headers to set in the request. HTTP allows repeated headers. + |
+ false | +
| path | +string | +
+ Path to access on the HTTP server. + |
+ false | +
| scheme | +string | +
+ Scheme to use for connecting to the host.
+Defaults to HTTP. + |
+ false | +
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| name | +string | +
+ The header field name.
+This will be canonicalized upon output, so case-variant names will be understood as the same header. + |
+ true | +
| value | +string | +
+ The header field value + |
+ true | +
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| port | +int or string | +
+ Number or name of the port to access on the container.
+Number must be in the range 1 to 65535.
+Name must be an IANA_SVC_NAME. + |
+ true | +
| host | +string | +
+ Optional: Host name to connect to, defaults to the pod IP. + |
+ false | +
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| exec | +object | +
+ Exec specifies a command to execute in the container. + |
+ false | +
| failureThreshold | +integer | +
+ Minimum consecutive failures for the probe to be considered failed after having succeeded.
+Defaults to 3. Minimum value is 1. + + Format: int32 + |
+ false | +
| grpc | +object | +
+ GRPC specifies a GRPC HealthCheckRequest. + |
+ false | +
| httpGet | +object | +
+ HTTPGet specifies an HTTP GET request to perform. + |
+ false | +
| initialDelaySeconds | +integer | +
+ Number of seconds after the container has started before liveness probes are initiated.
+More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + + Format: int32 + |
+ false | +
| periodSeconds | +integer | +
+ How often (in seconds) to perform the probe.
+Default to 10 seconds. Minimum value is 1. + + Format: int32 + |
+ false | +
| successThreshold | +integer | +
+ Minimum consecutive successes for the probe to be considered successful after having failed.
+Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + + Format: int32 + |
+ false | +
| tcpSocket | +object | +
+ TCPSocket specifies a connection to a TCP port. + |
+ false | +
| terminationGracePeriodSeconds | +integer | +
+ Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
+The grace period is the duration in seconds after the processes running in the pod are sent
+a termination signal and the time when the processes are forcibly halted with a kill signal.
+Set this value longer than the expected cleanup time for your process.
+If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
+value overrides the value provided by the pod spec.
+Value must be non-negative integer. The value zero indicates stop immediately via
+the kill signal (no opportunity to shut down).
+This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
+Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + + Format: int64 + |
+ false | +
| timeoutSeconds | +integer | +
+ Number of seconds after which the probe times out.
+Defaults to 1 second. Minimum value is 1.
+More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + + Format: int32 + |
+ false | +
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| command | +[]string | +
+ Command is the command line to execute inside the container, the working directory for the
+command is root ('/') in the container's filesystem. The command is simply exec'd, it is
+not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
+a shell, you need to explicitly call out to that shell.
+Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + |
+ false | +
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| port | +integer | +
+ Port number of the gRPC service. Number must be in the range 1 to 65535. + + Format: int32 + |
+ true | +
| service | +string | +
+ Service is the name of the service to place in the gRPC HealthCheckRequest
+(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+
+If this is not specified, the default behavior is defined by gRPC. + + Default: + |
+ false | +
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| port | +int or string | +
+ Name or number of the port to access on the container.
+Number must be in the range 1 to 65535.
+Name must be an IANA_SVC_NAME. + |
+ true | +
| host | +string | +
+ Host name to connect to, defaults to the pod IP. You probably want to set
+"Host" in httpHeaders instead. + |
+ false | +
| httpHeaders | +[]object | +
+ Custom headers to set in the request. HTTP allows repeated headers. + |
+ false | +
| path | +string | +
+ Path to access on the HTTP server. + |
+ false | +
| scheme | +string | +
+ Scheme to use for connecting to the host.
+Defaults to HTTP. + |
+ false | +
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| name | +string | +
+ The header field name.
+This will be canonicalized upon output, so case-variant names will be understood as the same header. + |
+ true | +
| value | +string | +
+ The header field value + |
+ true | +
| Name | +Type | +Description | +Required | +
|---|---|---|---|
| port | +int or string | +
+ Number or name of the port to access on the container.
+Number must be in the range 1 to 65535.
+Name must be an IANA_SVC_NAME. + |
+ true | +
| host | +string | +
+ Optional: Host name to connect to, defaults to the pod IP. + |
+ false | +