diff --git a/charts/yurt-manager/crds/apiextensions.k8s.io_v1_customresourcedefinition_blockaffinities.apiregistration.k8s.io.yaml b/charts/yurt-manager/crds/apiextensions.k8s.io_v1_customresourcedefinition_blockaffinities.apiregistration.k8s.io.yaml new file mode 100644 index 00000000000..ab1b7eb8077 --- /dev/null +++ b/charts/yurt-manager/crds/apiextensions.k8s.io_v1_customresourcedefinition_blockaffinities.apiregistration.k8s.io.yaml @@ -0,0 +1,62 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + name: blockaffinities.apiregistration.k8s.io +spec: + group: apiregistration.k8s.io + names: + kind: BlockAffinity + listKind: BlockAffinityList + plural: blockaffinities + singular: blockaffinity + scope: Namespaced + versions: + - name: v3 + schema: + openAPIV3Schema: + description: BlockAffinity maintains a block affinity's state + 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' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Specification of the BlockAffinity. + properties: + cidr: + type: string + deleted: + description: Deleted indicates that this block affinity is being deleted. + This field is a string for compatibility with older releases that + mistakenly treat this field as a string. + type: string + node: + type: string + state: + type: string + required: + - cidr + - deleted + - node + - state + type: object + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/yurt-manager/crds/apiextensions.k8s.io_v1_customresourcedefinition_poolservices.net.openyurt.io.yaml b/charts/yurt-manager/crds/apiextensions.k8s.io_v1_customresourcedefinition_poolservices.net.openyurt.io.yaml new file mode 100644 index 00000000000..05e6e5c170e --- /dev/null +++ b/charts/yurt-manager/crds/apiextensions.k8s.io_v1_customresourcedefinition_poolservices.net.openyurt.io.yaml @@ -0,0 +1,196 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + name: poolservices.net.openyurt.io +spec: + group: net.openyurt.io + names: + categories: + - all + kind: PoolService + listKind: PoolServiceList + plural: poolservices + shortNames: + - ps + singular: poolservice + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: CreationTimestamp is a timestamp representing the server time when + this object was created. It is not guaranteed to be set in happens-before + order across separate operations. Clients may not set this value. It is represented + in RFC3339 form and is in UTC. + jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: PoolService is the Schema for the samples API + 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' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PoolServiceSpec defines the desired state of PoolService + properties: + loadBalancerClass: + description: Inherited from service spec.LoadBalancerClass + type: string + type: object + status: + description: PoolServiceStatus defines the observed state of PoolService + properties: + conditions: + description: Current poolService state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + 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 + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + 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 + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + 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 + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + loadBalancer: + description: LoadBalancer contains the current status of the load-balancer + in the current nodepool + properties: + ingress: + description: Ingress is a list containing ingress points for the + load-balancer. Traffic intended for the service should be sent + to these ingress points. + items: + description: 'LoadBalancerIngress represents the status of a + load-balancer ingress point: traffic intended for the service + should be sent to an ingress point.' + properties: + hostname: + description: Hostname is set for load-balancer ingress points + that are DNS based (typically AWS load-balancers) + type: string + ip: + description: IP is set for load-balancer ingress points + that are IP based (typically GCE or OpenStack load-balancers) + type: string + ports: + description: Ports is a list of records of service ports + If used, every port defined in the service should have + an entry in it + items: + properties: + error: + description: 'Error is to record the problem with + the service port The format of the error shall comply + with the following rules: - built-in error values + shall be specified in this file and those shall + use CamelCase names - cloud provider specific + error values must have names that comply with the format + foo.example.com/CamelCase. --- The regex it matches + is (dns1123SubdomainFmt/)?(qualifiedNameFmt)' + 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 + port: + description: Port is the port number of the service + port of which status is recorded here + format: int32 + type: integer + protocol: + default: TCP + description: 'Protocol is the protocol of the service + port of which status is recorded here The supported + values are: "TCP", "UDP", "SCTP"' + type: string + required: + - port + - protocol + type: object + type: array + x-kubernetes-list-type: atomic + type: object + type: array + type: object + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/yurt-manager/crds/net.openyurt.io_poolservices.yaml b/charts/yurt-manager/crds/network.openyurt.io_poolservices.yaml similarity index 97% rename from charts/yurt-manager/crds/net.openyurt.io_poolservices.yaml rename to charts/yurt-manager/crds/network.openyurt.io_poolservices.yaml index dbcc8dfd0a4..b4fd3e44594 100644 --- a/charts/yurt-manager/crds/net.openyurt.io_poolservices.yaml +++ b/charts/yurt-manager/crds/network.openyurt.io_poolservices.yaml @@ -4,9 +4,9 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.7.0 creationTimestamp: null - name: poolservices.net.openyurt.io + name: poolservices.network.openyurt.io spec: - group: net.openyurt.io + group: network.openyurt.io names: categories: - all @@ -48,11 +48,6 @@ spec: properties: loadBalancerClass: type: string - poolName: - type: string - renewTime: - format: date-time - type: string type: object status: description: PoolServiceStatus defines the observed state of PoolService diff --git a/pkg/apis/addtoscheme_net_v1alpha1.go b/pkg/apis/addtoscheme_network_v1alpha1.go similarity index 92% rename from pkg/apis/addtoscheme_net_v1alpha1.go rename to pkg/apis/addtoscheme_network_v1alpha1.go index 9c86d7e2677..442b81d5104 100644 --- a/pkg/apis/addtoscheme_net_v1alpha1.go +++ b/pkg/apis/addtoscheme_network_v1alpha1.go @@ -17,7 +17,7 @@ limitations under the License. package apis import ( - version "github.com/openyurtio/openyurt/pkg/apis/net/v1alpha1" + version "github.com/openyurtio/openyurt/pkg/apis/network/v1alpha1" ) func init() { diff --git a/pkg/apis/net/v1alpha1/default.go b/pkg/apis/network/v1alpha1/default.go similarity index 95% rename from pkg/apis/net/v1alpha1/default.go rename to pkg/apis/network/v1alpha1/default.go index c326c08e9c0..f7b3bd8b6f1 100644 --- a/pkg/apis/net/v1alpha1/default.go +++ b/pkg/apis/network/v1alpha1/default.go @@ -1,5 +1,5 @@ /* -Copyright 2023 The OpenYurt Authors. +Copyright 2024 The OpenYurt Authors. Licensed under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. diff --git a/pkg/apis/net/v1alpha1/doc.go b/pkg/apis/network/v1alpha1/doc.go similarity index 93% rename from pkg/apis/net/v1alpha1/doc.go rename to pkg/apis/network/v1alpha1/doc.go index d14b5ee8b4a..aad8635f181 100644 --- a/pkg/apis/net/v1alpha1/doc.go +++ b/pkg/apis/network/v1alpha1/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2023 The OpenYurt Authors. +Copyright 2024 The OpenYurt Authors. Licensed under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. diff --git a/pkg/apis/net/v1alpha1/groupversion_info.go b/pkg/apis/network/v1alpha1/groupversion_info.go similarity index 91% rename from pkg/apis/net/v1alpha1/groupversion_info.go rename to pkg/apis/network/v1alpha1/groupversion_info.go index 4fb05670cc1..8e9f14f65b8 100644 --- a/pkg/apis/net/v1alpha1/groupversion_info.go +++ b/pkg/apis/network/v1alpha1/groupversion_info.go @@ -1,5 +1,5 @@ /* -Copyright 2023 The OpenYurt Authors. +Copyright 2024 The OpenYurt Authors. Licensed under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ import ( var ( // GroupVersion is group version used to register these objects - GroupVersion = schema.GroupVersion{Group: "net.openyurt.io", Version: "v1alpha1"} + GroupVersion = schema.GroupVersion{Group: "network.openyurt.io", Version: "v1alpha1"} SchemeGroupVersion = GroupVersion diff --git a/pkg/apis/net/v1alpha1/poolservice_types.go b/pkg/apis/network/v1alpha1/poolservice_types.go similarity index 83% rename from pkg/apis/net/v1alpha1/poolservice_types.go rename to pkg/apis/network/v1alpha1/poolservice_types.go index 041a82e2d26..417751d3876 100644 --- a/pkg/apis/net/v1alpha1/poolservice_types.go +++ b/pkg/apis/network/v1alpha1/poolservice_types.go @@ -1,5 +1,5 @@ /* -Copyright 2023 The OpenYurt Authors. +Copyright 2024 The OpenYurt Authors. Licensed under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. @@ -26,14 +26,8 @@ import ( // PoolServiceSpec defines the desired state of PoolService type PoolServiceSpec struct { - // Specify the name of the nodepool to identifies the nodepool to which the PoolService belongs. - PoolName string `json:"poolName,omitempty"` - - // When the service corresponding to poolService is updated, the RenewTime will be refreshed. - RenewTime *metav1.MicroTime `json:"renewTime,omitempty"` - - // Inherited from service annotations service.beta.kubernetes.io/class. - LoadBalancerClass string `json:"loadBalancerClass,omitempty"` + // Inherited from service spec.LoadBalancerClass + LoadBalancerClass *string `json:"loadBalancerClass,omitempty"` } // PoolServiceStatus defines the observed state of PoolService diff --git a/pkg/apis/net/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/network/v1alpha1/zz_generated.deepcopy.go similarity index 95% rename from pkg/apis/net/v1alpha1/zz_generated.deepcopy.go rename to pkg/apis/network/v1alpha1/zz_generated.deepcopy.go index b4b93fe171f..7f4d8450bc2 100644 --- a/pkg/apis/net/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/network/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright 2023 The OpenYurt Authors. +Copyright 2024 The OpenYurt Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -89,9 +89,10 @@ func (in *PoolServiceList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PoolServiceSpec) DeepCopyInto(out *PoolServiceSpec) { *out = *in - if in.RenewTime != nil { - in, out := &in.RenewTime, &out.RenewTime - *out = (*in).DeepCopy() + if in.LoadBalancerClass != nil { + in, out := &in.LoadBalancerClass, &out.LoadBalancerClass + *out = new(string) + **out = **in } } diff --git a/pkg/apis/network/well_known_labels_annotations.go b/pkg/apis/network/well_known_labels_annotations.go new file mode 100644 index 00000000000..f91eb1ff0a9 --- /dev/null +++ b/pkg/apis/network/well_known_labels_annotations.go @@ -0,0 +1,24 @@ +/* +Copyright 2024 The OpenYurt Authors. + +Licensed under the Apache License, Version 2.0 (the License); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an AS IS BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package network + +const ( + LabelServiceName = "openyurt.io/service-name" + LabelNodePoolName = "openyurt.io/pool-name" + AnnotationNodePoolSelector = "service.openyurt.io/nodepool-labelselector" + AggregateAnnotationsKeyPrefix = "service.openyurt.io" +) diff --git a/pkg/yurtmanager/controller/poolservice/config/types.go b/pkg/yurtmanager/controller/poolservice/config/types.go index 0f81907a6a4..e22bc13a5c8 100644 --- a/pkg/yurtmanager/controller/poolservice/config/types.go +++ b/pkg/yurtmanager/controller/poolservice/config/types.go @@ -1,5 +1,5 @@ /* -Copyright 2023 The OpenYurt Authors. +Copyright 2024 The OpenYurt Authors. Licensed under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. diff --git a/pkg/yurtmanager/controller/poolservice/poolservice_controller.go b/pkg/yurtmanager/controller/poolservice/poolservice_controller.go index 45c9be737b0..16e8320f676 100644 --- a/pkg/yurtmanager/controller/poolservice/poolservice_controller.go +++ b/pkg/yurtmanager/controller/poolservice/poolservice_controller.go @@ -1,5 +1,5 @@ /* -Copyright 2023 The OpenYurt Authors. +Copyright 2024 The OpenYurt Authors. Licensed under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. @@ -34,7 +34,7 @@ import ( appconfig "github.com/openyurtio/openyurt/cmd/yurt-manager/app/config" "github.com/openyurtio/openyurt/cmd/yurt-manager/names" - netv1alpha1 "github.com/openyurtio/openyurt/pkg/apis/net/v1alpha1" + netv1alpha1 "github.com/openyurtio/openyurt/pkg/apis/network/v1alpha1" "github.com/openyurtio/openyurt/pkg/yurtmanager/controller/poolservice/config" ) diff --git a/pkg/yurtmanager/webhook/poolservice/v1alpha1/poolservice_default.go b/pkg/yurtmanager/webhook/poolservice/v1alpha1/poolservice_default.go index 8ea61df0b10..94ca8876525 100644 --- a/pkg/yurtmanager/webhook/poolservice/v1alpha1/poolservice_default.go +++ b/pkg/yurtmanager/webhook/poolservice/v1alpha1/poolservice_default.go @@ -1,5 +1,5 @@ /* -Copyright 2023 The OpenYurt Authors. +Copyright 2024 The OpenYurt Authors. Licensed under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/runtime" - "github.com/openyurtio/openyurt/pkg/apis/net/v1alpha1" + "github.com/openyurtio/openyurt/pkg/apis/network/v1alpha1" ) // Default satisfies the defaulting webhook interface. diff --git a/pkg/yurtmanager/webhook/poolservice/v1alpha1/poolservice_handler.go b/pkg/yurtmanager/webhook/poolservice/v1alpha1/poolservice_handler.go index f1005096eb9..eccfba0f105 100644 --- a/pkg/yurtmanager/webhook/poolservice/v1alpha1/poolservice_handler.go +++ b/pkg/yurtmanager/webhook/poolservice/v1alpha1/poolservice_handler.go @@ -1,5 +1,5 @@ /* -Copyright 2023 The OpenYurt Authors. +Copyright 2024 The OpenYurt Authors. Licensed under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client/apiutil" "sigs.k8s.io/controller-runtime/pkg/webhook" - "github.com/openyurtio/openyurt/pkg/apis/net/v1alpha1" + "github.com/openyurtio/openyurt/pkg/apis/network/v1alpha1" "github.com/openyurtio/openyurt/pkg/yurtmanager/webhook/util" ) diff --git a/pkg/yurtmanager/webhook/poolservice/v1alpha1/poolservice_validation.go b/pkg/yurtmanager/webhook/poolservice/v1alpha1/poolservice_validation.go index 6730756665a..7ff5c15aa03 100644 --- a/pkg/yurtmanager/webhook/poolservice/v1alpha1/poolservice_validation.go +++ b/pkg/yurtmanager/webhook/poolservice/v1alpha1/poolservice_validation.go @@ -1,5 +1,5 @@ /* -Copyright 2023 The OpenYurt Authors. +Copyright 2024 The OpenYurt Authors. Licensed under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. @@ -24,7 +24,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/klog/v2" - "github.com/openyurtio/openyurt/pkg/apis/net/v1alpha1" + "github.com/openyurtio/openyurt/pkg/apis/network/v1alpha1" ) // ValidateCreate implements webhook.CustomValidator so a webhook will be registered for the type.