mirror of https://github.com/linkerd/linkerd2.git
Introduce ExternalWorkload CRD (#11805)
To support mesh expansion, the control plane needs to read configuration associated with an external instance (i.e. a VM) for the purpose of service and inbound authorization policy discovery. This change introduces a new CRD that supports the required configuration options. The resource supports: * a list of workload IPs (with a generic format to support ipv4 now and ipv6 in the future) * a set of mesh TLS settings (SNI and identity) * a set of ports exposed by the workload * a set of status conditions --------- Signed-off-by: Matei David <matei@buoyant.io> Co-authored-by: Oliver Gould <ver@buoyant.io>
This commit is contained in:
parent
cf2999df42
commit
31e1334f9e
|
|
@ -0,0 +1,157 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: externalworkloads.workload.linkerd.io
|
||||||
|
annotations:
|
||||||
|
{{ include "partials.annotations.created-by" . }}
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
|
||||||
|
linkerd.io/control-plane-ns: {{.Release.Namespace}}
|
||||||
|
spec:
|
||||||
|
group: workload.linkerd.io
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- external
|
||||||
|
kind: ExternalWorkload
|
||||||
|
listKind: ExternalWorkloadList
|
||||||
|
plural: externalworkloads
|
||||||
|
singular: externalworkload
|
||||||
|
shortNames: []
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .spec.meshTls.identity
|
||||||
|
name: Identity
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: >-
|
||||||
|
An ExternalWorkload describes a single workload (i.e. a deployable unit) external
|
||||||
|
to the cluster that should be enrolled in the mesh.
|
||||||
|
type: object
|
||||||
|
required: [spec]
|
||||||
|
properties:
|
||||||
|
apiVerson:
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
properties:
|
||||||
|
meshTls:
|
||||||
|
description: meshTls describes TLS settings associated with an
|
||||||
|
external workload.
|
||||||
|
properties:
|
||||||
|
identity:
|
||||||
|
type: string
|
||||||
|
description: identity of the workload. Corresponds to the
|
||||||
|
identity used in the workload's certificate. It is used
|
||||||
|
by peers to perform verification in the mTLS handshake.
|
||||||
|
minLength: 1
|
||||||
|
maxLength: 253
|
||||||
|
serverName:
|
||||||
|
type: string
|
||||||
|
description: serverName is the name of the workload in DNS
|
||||||
|
format. It is used by the workload to terminate TLS using
|
||||||
|
SNI.
|
||||||
|
minLength: 1
|
||||||
|
maxLength: 253
|
||||||
|
type: object
|
||||||
|
ports:
|
||||||
|
type: array
|
||||||
|
description: ports describes a list of ports exposed by the
|
||||||
|
workload
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
description: name must be an IANA_SVC_NAME and unique
|
||||||
|
within the ports set. Each named port can be referred
|
||||||
|
to by services.
|
||||||
|
port:
|
||||||
|
format: int32
|
||||||
|
maximum: 65535
|
||||||
|
minimum: 1
|
||||||
|
type: integer
|
||||||
|
protocol:
|
||||||
|
description: protocol exposed by the port. Must be UDP or
|
||||||
|
TCP. Defaults to TCP.
|
||||||
|
type: string
|
||||||
|
default: "TCP"
|
||||||
|
workloadIPs:
|
||||||
|
type: array
|
||||||
|
description: workloadIPs contains a list of IP addresses that
|
||||||
|
can be used to send traffic to the workload.
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
ip:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- ports
|
||||||
|
- workloadIPs
|
||||||
|
status:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
lastProbeTime:
|
||||||
|
description: lastProbeTime is the last time the
|
||||||
|
healthcheck endpoint was probed.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
lastTransitionTime:
|
||||||
|
description: lastTransitionTime is the last time the
|
||||||
|
condition transitioned from one status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: status of the condition (one of True, False, Unknown)
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type of the condition in CamelCase or in
|
||||||
|
foo.example.com/CamelCase.
|
||||||
|
maxLength: 316
|
||||||
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
||||||
|
type: string
|
||||||
|
reason:
|
||||||
|
description: reason contains a programmatic identifier
|
||||||
|
indicating the reason for the condition's last
|
||||||
|
transition. Producers of specific condition types may
|
||||||
|
define expected values and meanings for this field, and
|
||||||
|
whether the values are considered a guaranteed API. The
|
||||||
|
value should be a CamelCase string. This field may not
|
||||||
|
be empty.
|
||||||
|
maxLength: 1024
|
||||||
|
minLength: 1
|
||||||
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: message is a human readable message
|
||||||
|
indicating details about the transition. This may be an
|
||||||
|
empty string.
|
||||||
|
maxLength: 32768
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
- reason
|
||||||
|
- message
|
||||||
|
|
@ -55,6 +55,7 @@ var (
|
||||||
"templates/policy/server.yaml",
|
"templates/policy/server.yaml",
|
||||||
"templates/serviceprofile.yaml",
|
"templates/serviceprofile.yaml",
|
||||||
"templates/gateway.networking.k8s.io_httproutes.yaml",
|
"templates/gateway.networking.k8s.io_httproutes.yaml",
|
||||||
|
"templates/workload/external-workload.yaml",
|
||||||
}
|
}
|
||||||
|
|
||||||
templatesControlPlane = []string{
|
templatesControlPlane = []string{
|
||||||
|
|
|
||||||
|
|
@ -10137,3 +10137,160 @@ status:
|
||||||
plural: ""
|
plural: ""
|
||||||
conditions: null
|
conditions: null
|
||||||
storedVersions: null
|
storedVersions: null
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: externalworkloads.workload.linkerd.io
|
||||||
|
annotations:
|
||||||
|
linkerd.io/created-by: linkerd/cli dev-undefined
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: linkerd-crds-1.9.1-edge
|
||||||
|
linkerd.io/control-plane-ns: linkerd
|
||||||
|
spec:
|
||||||
|
group: workload.linkerd.io
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- external
|
||||||
|
kind: ExternalWorkload
|
||||||
|
listKind: ExternalWorkloadList
|
||||||
|
plural: externalworkloads
|
||||||
|
singular: externalworkload
|
||||||
|
shortNames: []
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .spec.meshTls.identity
|
||||||
|
name: Identity
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: >-
|
||||||
|
An ExternalWorkload describes a single workload (i.e. a deployable unit) external
|
||||||
|
to the cluster that should be enrolled in the mesh.
|
||||||
|
type: object
|
||||||
|
required: [spec]
|
||||||
|
properties:
|
||||||
|
apiVerson:
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
properties:
|
||||||
|
meshTls:
|
||||||
|
description: meshTls describes TLS settings associated with an
|
||||||
|
external workload.
|
||||||
|
properties:
|
||||||
|
identity:
|
||||||
|
type: string
|
||||||
|
description: identity of the workload. Corresponds to the
|
||||||
|
identity used in the workload's certificate. It is used
|
||||||
|
by peers to perform verification in the mTLS handshake.
|
||||||
|
minLength: 1
|
||||||
|
maxLength: 253
|
||||||
|
serverName:
|
||||||
|
type: string
|
||||||
|
description: serverName is the name of the workload in DNS
|
||||||
|
format. It is used by the workload to terminate TLS using
|
||||||
|
SNI.
|
||||||
|
minLength: 1
|
||||||
|
maxLength: 253
|
||||||
|
type: object
|
||||||
|
ports:
|
||||||
|
type: array
|
||||||
|
description: ports describes a list of ports exposed by the
|
||||||
|
workload
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
description: name must be an IANA_SVC_NAME and unique
|
||||||
|
within the ports set. Each named port can be referred
|
||||||
|
to by services.
|
||||||
|
port:
|
||||||
|
format: int32
|
||||||
|
maximum: 65535
|
||||||
|
minimum: 1
|
||||||
|
type: integer
|
||||||
|
protocol:
|
||||||
|
description: protocol exposed by the port. Must be UDP or
|
||||||
|
TCP. Defaults to TCP.
|
||||||
|
type: string
|
||||||
|
default: "TCP"
|
||||||
|
workloadIPs:
|
||||||
|
type: array
|
||||||
|
description: workloadIPs contains a list of IP addresses that
|
||||||
|
can be used to send traffic to the workload.
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
ip:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- ports
|
||||||
|
- workloadIPs
|
||||||
|
status:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
lastProbeTime:
|
||||||
|
description: lastProbeTime is the last time the
|
||||||
|
healthcheck endpoint was probed.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
lastTransitionTime:
|
||||||
|
description: lastTransitionTime is the last time the
|
||||||
|
condition transitioned from one status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: status of the condition (one of True, False, Unknown)
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type of the condition in CamelCase or in
|
||||||
|
foo.example.com/CamelCase.
|
||||||
|
maxLength: 316
|
||||||
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
||||||
|
type: string
|
||||||
|
reason:
|
||||||
|
description: reason contains a programmatic identifier
|
||||||
|
indicating the reason for the condition's last
|
||||||
|
transition. Producers of specific condition types may
|
||||||
|
define expected values and meanings for this field, and
|
||||||
|
whether the values are considered a guaranteed API. The
|
||||||
|
value should be a CamelCase string. This field may not
|
||||||
|
be empty.
|
||||||
|
maxLength: 1024
|
||||||
|
minLength: 1
|
||||||
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: message is a human readable message
|
||||||
|
indicating details about the transition. This may be an
|
||||||
|
empty string.
|
||||||
|
maxLength: 32768
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
- reason
|
||||||
|
- message
|
||||||
|
|
|
||||||
|
|
@ -10153,3 +10153,162 @@ status:
|
||||||
plural: ""
|
plural: ""
|
||||||
conditions: null
|
conditions: null
|
||||||
storedVersions: null
|
storedVersions: null
|
||||||
|
---
|
||||||
|
# Source: linkerd-crds/templates/workload/external-workload.yaml
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: externalworkloads.workload.linkerd.io
|
||||||
|
annotations:
|
||||||
|
linkerd.io/created-by: linkerd/helm linkerd-version
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: linkerd-crds-
|
||||||
|
linkerd.io/control-plane-ns: linkerd-dev
|
||||||
|
spec:
|
||||||
|
group: workload.linkerd.io
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- external
|
||||||
|
kind: ExternalWorkload
|
||||||
|
listKind: ExternalWorkloadList
|
||||||
|
plural: externalworkloads
|
||||||
|
singular: externalworkload
|
||||||
|
shortNames: []
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .spec.meshTls.identity
|
||||||
|
name: Identity
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: >-
|
||||||
|
An ExternalWorkload describes a single workload (i.e. a deployable unit) external
|
||||||
|
to the cluster that should be enrolled in the mesh.
|
||||||
|
type: object
|
||||||
|
required: [spec]
|
||||||
|
properties:
|
||||||
|
apiVerson:
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
properties:
|
||||||
|
meshTls:
|
||||||
|
description: meshTls describes TLS settings associated with an
|
||||||
|
external workload.
|
||||||
|
properties:
|
||||||
|
identity:
|
||||||
|
type: string
|
||||||
|
description: identity of the workload. Corresponds to the
|
||||||
|
identity used in the workload's certificate. It is used
|
||||||
|
by peers to perform verification in the mTLS handshake.
|
||||||
|
minLength: 1
|
||||||
|
maxLength: 253
|
||||||
|
serverName:
|
||||||
|
type: string
|
||||||
|
description: serverName is the name of the workload in DNS
|
||||||
|
format. It is used by the workload to terminate TLS using
|
||||||
|
SNI.
|
||||||
|
minLength: 1
|
||||||
|
maxLength: 253
|
||||||
|
type: object
|
||||||
|
ports:
|
||||||
|
type: array
|
||||||
|
description: ports describes a list of ports exposed by the
|
||||||
|
workload
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
description: name must be an IANA_SVC_NAME and unique
|
||||||
|
within the ports set. Each named port can be referred
|
||||||
|
to by services.
|
||||||
|
port:
|
||||||
|
format: int32
|
||||||
|
maximum: 65535
|
||||||
|
minimum: 1
|
||||||
|
type: integer
|
||||||
|
protocol:
|
||||||
|
description: protocol exposed by the port. Must be UDP or
|
||||||
|
TCP. Defaults to TCP.
|
||||||
|
type: string
|
||||||
|
default: "TCP"
|
||||||
|
workloadIPs:
|
||||||
|
type: array
|
||||||
|
description: workloadIPs contains a list of IP addresses that
|
||||||
|
can be used to send traffic to the workload.
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
ip:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- ports
|
||||||
|
- workloadIPs
|
||||||
|
status:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
lastProbeTime:
|
||||||
|
description: lastProbeTime is the last time the
|
||||||
|
healthcheck endpoint was probed.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
lastTransitionTime:
|
||||||
|
description: lastTransitionTime is the last time the
|
||||||
|
condition transitioned from one status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: status of the condition (one of True, False, Unknown)
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type of the condition in CamelCase or in
|
||||||
|
foo.example.com/CamelCase.
|
||||||
|
maxLength: 316
|
||||||
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
||||||
|
type: string
|
||||||
|
reason:
|
||||||
|
description: reason contains a programmatic identifier
|
||||||
|
indicating the reason for the condition's last
|
||||||
|
transition. Producers of specific condition types may
|
||||||
|
define expected values and meanings for this field, and
|
||||||
|
whether the values are considered a guaranteed API. The
|
||||||
|
value should be a CamelCase string. This field may not
|
||||||
|
be empty.
|
||||||
|
maxLength: 1024
|
||||||
|
minLength: 1
|
||||||
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: message is a human readable message
|
||||||
|
indicating details about the transition. This may be an
|
||||||
|
empty string.
|
||||||
|
maxLength: 32768
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
- reason
|
||||||
|
- message
|
||||||
|
|
|
||||||
|
|
@ -10153,3 +10153,162 @@ status:
|
||||||
plural: ""
|
plural: ""
|
||||||
conditions: null
|
conditions: null
|
||||||
storedVersions: null
|
storedVersions: null
|
||||||
|
---
|
||||||
|
# Source: linkerd-crds/templates/workload/external-workload.yaml
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: externalworkloads.workload.linkerd.io
|
||||||
|
annotations:
|
||||||
|
linkerd.io/created-by: linkerd/helm linkerd-version
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: linkerd-crds-
|
||||||
|
linkerd.io/control-plane-ns: linkerd-dev
|
||||||
|
spec:
|
||||||
|
group: workload.linkerd.io
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- external
|
||||||
|
kind: ExternalWorkload
|
||||||
|
listKind: ExternalWorkloadList
|
||||||
|
plural: externalworkloads
|
||||||
|
singular: externalworkload
|
||||||
|
shortNames: []
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .spec.meshTls.identity
|
||||||
|
name: Identity
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: >-
|
||||||
|
An ExternalWorkload describes a single workload (i.e. a deployable unit) external
|
||||||
|
to the cluster that should be enrolled in the mesh.
|
||||||
|
type: object
|
||||||
|
required: [spec]
|
||||||
|
properties:
|
||||||
|
apiVerson:
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
properties:
|
||||||
|
meshTls:
|
||||||
|
description: meshTls describes TLS settings associated with an
|
||||||
|
external workload.
|
||||||
|
properties:
|
||||||
|
identity:
|
||||||
|
type: string
|
||||||
|
description: identity of the workload. Corresponds to the
|
||||||
|
identity used in the workload's certificate. It is used
|
||||||
|
by peers to perform verification in the mTLS handshake.
|
||||||
|
minLength: 1
|
||||||
|
maxLength: 253
|
||||||
|
serverName:
|
||||||
|
type: string
|
||||||
|
description: serverName is the name of the workload in DNS
|
||||||
|
format. It is used by the workload to terminate TLS using
|
||||||
|
SNI.
|
||||||
|
minLength: 1
|
||||||
|
maxLength: 253
|
||||||
|
type: object
|
||||||
|
ports:
|
||||||
|
type: array
|
||||||
|
description: ports describes a list of ports exposed by the
|
||||||
|
workload
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
description: name must be an IANA_SVC_NAME and unique
|
||||||
|
within the ports set. Each named port can be referred
|
||||||
|
to by services.
|
||||||
|
port:
|
||||||
|
format: int32
|
||||||
|
maximum: 65535
|
||||||
|
minimum: 1
|
||||||
|
type: integer
|
||||||
|
protocol:
|
||||||
|
description: protocol exposed by the port. Must be UDP or
|
||||||
|
TCP. Defaults to TCP.
|
||||||
|
type: string
|
||||||
|
default: "TCP"
|
||||||
|
workloadIPs:
|
||||||
|
type: array
|
||||||
|
description: workloadIPs contains a list of IP addresses that
|
||||||
|
can be used to send traffic to the workload.
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
ip:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- ports
|
||||||
|
- workloadIPs
|
||||||
|
status:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
lastProbeTime:
|
||||||
|
description: lastProbeTime is the last time the
|
||||||
|
healthcheck endpoint was probed.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
lastTransitionTime:
|
||||||
|
description: lastTransitionTime is the last time the
|
||||||
|
condition transitioned from one status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: status of the condition (one of True, False, Unknown)
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type of the condition in CamelCase or in
|
||||||
|
foo.example.com/CamelCase.
|
||||||
|
maxLength: 316
|
||||||
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
||||||
|
type: string
|
||||||
|
reason:
|
||||||
|
description: reason contains a programmatic identifier
|
||||||
|
indicating the reason for the condition's last
|
||||||
|
transition. Producers of specific condition types may
|
||||||
|
define expected values and meanings for this field, and
|
||||||
|
whether the values are considered a guaranteed API. The
|
||||||
|
value should be a CamelCase string. This field may not
|
||||||
|
be empty.
|
||||||
|
maxLength: 1024
|
||||||
|
minLength: 1
|
||||||
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: message is a human readable message
|
||||||
|
indicating details about the transition. This may be an
|
||||||
|
empty string.
|
||||||
|
maxLength: 32768
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
- reason
|
||||||
|
- message
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue