diff --git a/cmd/k8s-operator/deploy/crds/tailscale.com_connectors.yaml b/cmd/k8s-operator/deploy/crds/tailscale.com_connectors.yaml index b9a4e6183..7811f22f7 100644 --- a/cmd/k8s-operator/deploy/crds/tailscale.com_connectors.yaml +++ b/cmd/k8s-operator/deploy/crds/tailscale.com_connectors.yaml @@ -31,6 +31,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: + description: 'Connector defines a Tailscale node that will be deployed in the cluster. The node can be configured to act as a Tailscale subnet router and/or a Tailscale exit node. Connector is a cluster-scoped resource. More info: https://tailscale.com/kb/1236/kubernetes-operator#deploying-exit-nodes-and-subnet-routers-on-kubernetes-using-connector-custom-resource' type: object required: - spec @@ -44,7 +45,7 @@ spec: metadata: type: object spec: - description: ConnectorSpec describes the desired Tailscale component. + description: 'ConnectorSpec describes the desired Tailscale component. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' type: object properties: exitNode: diff --git a/cmd/k8s-operator/deploy/crds/tailscale.com_proxyclasses.yaml b/cmd/k8s-operator/deploy/crds/tailscale.com_proxyclasses.yaml index e72c9ccc0..083b9a422 100644 --- a/cmd/k8s-operator/deploy/crds/tailscale.com_proxyclasses.yaml +++ b/cmd/k8s-operator/deploy/crds/tailscale.com_proxyclasses.yaml @@ -21,6 +21,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: + description: 'ProxyClass describes a set of configuration parameters that can be applied to proxy resources created by the Tailscale Kubernetes operator. To apply a given ProxyClass to resources created for a tailscale Ingress or Service, use tailscale.com/proxy-class= label. To apply a given ProxyClass to resources created for a Connector, use connector.spec.proxyClass field. ProxyClass is a cluster scoped resource. More info: https://tailscale.com/kb/1236/kubernetes-operator#cluster-resource-customization-using-proxyclass-custom-resource.' type: object required: - spec @@ -34,12 +35,13 @@ spec: metadata: type: object spec: + description: Specification of the desired state of the ProxyClass resource. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status type: object required: - statefulSet properties: statefulSet: - description: Proxy's StatefulSet spec. + description: Configuration parameters for the proxy's StatefulSet. Tailscale Kubernetes operator deploys a StatefulSet for each of the user configured proxies (Tailscale Ingress, Tailscale Service, Connector). type: object properties: annotations: @@ -483,6 +485,7 @@ spec: description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string status: + description: Status of the ProxyClass. This is set and managed automatically. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status type: object properties: conditions: diff --git a/cmd/k8s-operator/deploy/manifests/operator.yaml b/cmd/k8s-operator/deploy/manifests/operator.yaml index 0ef72b91c..63ff36a5b 100644 --- a/cmd/k8s-operator/deploy/manifests/operator.yaml +++ b/cmd/k8s-operator/deploy/manifests/operator.yaml @@ -60,6 +60,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: + description: 'Connector defines a Tailscale node that will be deployed in the cluster. The node can be configured to act as a Tailscale subnet router and/or a Tailscale exit node. Connector is a cluster-scoped resource. More info: https://tailscale.com/kb/1236/kubernetes-operator#deploying-exit-nodes-and-subnet-routers-on-kubernetes-using-connector-custom-resource' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' @@ -70,7 +71,7 @@ spec: metadata: type: object spec: - description: ConnectorSpec describes the desired Tailscale component. + description: 'ConnectorSpec describes the desired Tailscale component. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' properties: exitNode: description: ExitNode defines whether the Connector node should act as a Tailscale exit node. Defaults to false. https://tailscale.com/kb/1103/exit-nodes @@ -179,6 +180,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: + description: 'ProxyClass describes a set of configuration parameters that can be applied to proxy resources created by the Tailscale Kubernetes operator. To apply a given ProxyClass to resources created for a tailscale Ingress or Service, use tailscale.com/proxy-class= label. To apply a given ProxyClass to resources created for a Connector, use connector.spec.proxyClass field. ProxyClass is a cluster scoped resource. More info: https://tailscale.com/kb/1236/kubernetes-operator#cluster-resource-customization-using-proxyclass-custom-resource.' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' @@ -189,9 +191,10 @@ spec: metadata: type: object spec: + description: Specification of the desired state of the ProxyClass resource. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status properties: statefulSet: - description: Proxy's StatefulSet spec. + description: Configuration parameters for the proxy's StatefulSet. Tailscale Kubernetes operator deploys a StatefulSet for each of the user configured proxies (Tailscale Ingress, Tailscale Service, Connector). properties: annotations: additionalProperties: @@ -638,6 +641,7 @@ spec: - statefulSet type: object status: + description: Status of the ProxyClass. This is set and managed automatically. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status properties: conditions: description: List of status conditions to indicate the status of the ProxyClass. Known condition types are `ProxyClassReady`. diff --git a/k8s-operator/api.md b/k8s-operator/api.md index f0026b3af..97dd3acdc 100644 --- a/k8s-operator/api.md +++ b/k8s-operator/api.md @@ -23,7 +23,7 @@ Resource Types: - +Connector defines a Tailscale node that will be deployed in the cluster. The node can be configured to act as a Tailscale subnet router and/or a Tailscale exit node. Connector is a cluster-scoped resource. More info: https://tailscale.com/kb/1236/kubernetes-operator#deploying-exit-nodes-and-subnet-routers-on-kubernetes-using-connector-custom-resource @@ -55,7 +55,7 @@ Resource Types: @@ -76,7 +76,7 @@ Resource Types: -ConnectorSpec describes the desired Tailscale component. +ConnectorSpec describes the desired Tailscale component. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
spec object - ConnectorSpec describes the desired Tailscale component.
+ ConnectorSpec describes the desired Tailscale component. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

Validations:
  • has(self.subnetRouter) || self.exitNode == true: A Connector needs to be either an exit node or a subnet router, or both.
  • @@ -267,7 +267,7 @@ ConnectorCondition contains condition information for a Connector. - +ProxyClass describes a set of configuration parameters that can be applied to proxy resources created by the Tailscale Kubernetes operator. To apply a given ProxyClass to resources created for a tailscale Ingress or Service, use tailscale.com/proxy-class= label. To apply a given ProxyClass to resources created for a Connector, use connector.spec.proxyClass field. ProxyClass is a cluster scoped resource. More info: https://tailscale.com/kb/1236/kubernetes-operator#cluster-resource-customization-using-proxyclass-custom-resource.
    @@ -299,14 +299,14 @@ ConnectorCondition contains condition information for a Connector. @@ -318,7 +318,7 @@ ConnectorCondition contains condition information for a Connector. - +Specification of the desired state of the ProxyClass resource. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    spec object -
    + Specification of the desired state of the ProxyClass resource. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    true
    status object -
    + Status of the ProxyClass. This is set and managed automatically. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    false
    @@ -333,7 +333,7 @@ ConnectorCondition contains condition information for a Connector. @@ -345,7 +345,7 @@ ConnectorCondition contains condition information for a Connector. -Proxy's StatefulSet spec. +Configuration parameters for the proxy's StatefulSet. Tailscale Kubernetes operator deploys a StatefulSet for each of the user configured proxies (Tailscale Ingress, Tailscale Service, Connector).
    statefulSet object - Proxy's StatefulSet spec.
    + Configuration parameters for the proxy's StatefulSet. Tailscale Kubernetes operator deploys a StatefulSet for each of the user configured proxies (Tailscale Ingress, Tailscale Service, Connector).
    true
    @@ -1638,7 +1638,7 @@ The pod this Toleration is attached to tolerates any taint that matches the trip - +Status of the ProxyClass. This is set and managed automatically. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    diff --git a/k8s-operator/apis/v1alpha1/types_connector.go b/k8s-operator/apis/v1alpha1/types_connector.go index c5333f5a1..26c8d6473 100644 --- a/k8s-operator/apis/v1alpha1/types_connector.go +++ b/k8s-operator/apis/v1alpha1/types_connector.go @@ -24,11 +24,19 @@ var ConnectorKind = "Connector" // +kubebuilder:printcolumn:name="IsExitNode",type="string",JSONPath=`.status.isExitNode`,description="Whether this Connector instance defines an exit node." // +kubebuilder:printcolumn:name="Status",type="string",JSONPath=`.status.conditions[?(@.type == "ConnectorReady")].reason`,description="Status of the deployed Connector resources." +// Connector defines a Tailscale node that will be deployed in the cluster. The +// node can be configured to act as a Tailscale subnet router and/or a Tailscale +// exit node. +// Connector is a cluster-scoped resource. +// More info: +// https://tailscale.com/kb/1236/kubernetes-operator#deploying-exit-nodes-and-subnet-routers-on-kubernetes-using-connector-custom-resource type Connector struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` // ConnectorSpec describes the desired Tailscale component. + // More info: + // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec ConnectorSpec `json:"spec"` // ConnectorStatus describes the status of the Connector. This is set diff --git a/k8s-operator/apis/v1alpha1/types_proxyclass.go b/k8s-operator/apis/v1alpha1/types_proxyclass.go index 077e792a7..ae93555e4 100644 --- a/k8s-operator/apis/v1alpha1/types_proxyclass.go +++ b/k8s-operator/apis/v1alpha1/types_proxyclass.go @@ -17,13 +17,26 @@ var ProxyClassKind = "ProxyClass" // +kubebuilder:resource:scope=Cluster // +kubebuilder:printcolumn:name="Status",type="string",JSONPath=`.status.conditions[?(@.type == "ProxyClassReady")].reason`,description="Status of the ProxyClass." +// ProxyClass describes a set of configuration parameters that can be applied to +// proxy resources created by the Tailscale Kubernetes operator. +// To apply a given ProxyClass to resources created for a tailscale Ingress or +// Service, use tailscale.com/proxy-class= label. To apply a +// given ProxyClass to resources created for a Connector, use +// connector.spec.proxyClass field. +// ProxyClass is a cluster scoped resource. +// More info: +// https://tailscale.com/kb/1236/kubernetes-operator#cluster-resource-customization-using-proxyclass-custom-resource. type ProxyClass struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` + // Specification of the desired state of the ProxyClass resource. + // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec ProxyClassSpec `json:"spec"` // +optional + // Status of the ProxyClass. This is set and managed automatically. + // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Status ProxyClassStatus `json:"status"` } @@ -36,7 +49,9 @@ type ProxyClassList struct { } type ProxyClassSpec struct { - // Proxy's StatefulSet spec. + // Configuration parameters for the proxy's StatefulSet. Tailscale + // Kubernetes operator deploys a StatefulSet for each of the user + // configured proxies (Tailscale Ingress, Tailscale Service, Connector). StatefulSet *StatefulSet `json:"statefulSet"` }