Update deploy scripts
Signed-off-by: RainbowMango <renhongcai@huawei.com>
This commit is contained in:
parent
c8078cbaf7
commit
82d78bdfd4
|
@ -1,228 +0,0 @@
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
controller-gen.kubebuilder.io/version: v0.4.1
|
|
||||||
creationTimestamp: null
|
|
||||||
name: resourcebindings.policy.karmada.io
|
|
||||||
spec:
|
|
||||||
group: policy.karmada.io
|
|
||||||
names:
|
|
||||||
kind: ResourceBinding
|
|
||||||
listKind: ResourceBindingList
|
|
||||||
plural: resourcebindings
|
|
||||||
singular: resourcebinding
|
|
||||||
scope: Namespaced
|
|
||||||
versions:
|
|
||||||
- name: v1alpha1
|
|
||||||
schema:
|
|
||||||
openAPIV3Schema:
|
|
||||||
description: ResourceBinding represents a binding of a kubernetes resource
|
|
||||||
with a propagation policy.
|
|
||||||
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: Spec represents the desired behavior.
|
|
||||||
properties:
|
|
||||||
clusters:
|
|
||||||
description: Clusters represents target member clusters where the
|
|
||||||
resource to be deployed.
|
|
||||||
items:
|
|
||||||
description: TargetCluster represents the identifier of a member
|
|
||||||
cluster.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: Name of target cluster.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
resource:
|
|
||||||
description: Resource represents the Kubernetes resource to be propagated.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
description: APIVersion represents the API version of the referent.
|
|
||||||
type: string
|
|
||||||
kind:
|
|
||||||
description: Kind represents the Kind of the referent.
|
|
||||||
type: string
|
|
||||||
name:
|
|
||||||
description: Name represents the name of the referent.
|
|
||||||
type: string
|
|
||||||
namespace:
|
|
||||||
description: Namespace represents the namespace for the referent.
|
|
||||||
For non-namespace scoped resources(e.g. 'ClusterRole'),do not
|
|
||||||
need specify Namespace, and for namespace scoped resources,
|
|
||||||
Namespace is required. If Namespace is not specified, means
|
|
||||||
the resource is non-namespace scoped.
|
|
||||||
type: string
|
|
||||||
resourceVersion:
|
|
||||||
description: ResourceVersion represents the internal version of
|
|
||||||
the referenced object, that can be used by clients to determine
|
|
||||||
when object has changed.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- apiVersion
|
|
||||||
- kind
|
|
||||||
- name
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- resource
|
|
||||||
type: object
|
|
||||||
status:
|
|
||||||
description: Status represents the most recently observed status of the
|
|
||||||
ResourceBinding.
|
|
||||||
properties:
|
|
||||||
aggregatedStatus:
|
|
||||||
description: AggregatedStatus represents status list of the resource
|
|
||||||
running in each member cluster.
|
|
||||||
items:
|
|
||||||
description: AggregatedStatusItem represents status of the resource
|
|
||||||
running in a member cluster.
|
|
||||||
properties:
|
|
||||||
clusterName:
|
|
||||||
description: ClusterName represents the member cluster name
|
|
||||||
which the resource deployed on.
|
|
||||||
type: string
|
|
||||||
resourceStatus:
|
|
||||||
description: ResourceStatus represents the status of the resource.
|
|
||||||
properties:
|
|
||||||
deploymentStatus:
|
|
||||||
description: Deployment represents the deployment status
|
|
||||||
in the member cluster, only available when the resource
|
|
||||||
kind is Deployment.
|
|
||||||
properties:
|
|
||||||
availableReplicas:
|
|
||||||
description: Total number of available pods (ready for
|
|
||||||
at least minReadySeconds) targeted by this deployment.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
readyReplicas:
|
|
||||||
description: Total number of ready pods targeted by
|
|
||||||
this deployment.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
replicas:
|
|
||||||
description: Total number of non-terminated pods targeted
|
|
||||||
by this deployment (their labels match the selector).
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
unavailableReplicas:
|
|
||||||
description: Total number of unavailable pods targeted
|
|
||||||
by this deployment. This is the total number of pods
|
|
||||||
that are still required for the deployment to have
|
|
||||||
100% available capacity. They may either be pods that
|
|
||||||
are running but not yet available or pods that still
|
|
||||||
have not been created.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
updatedReplicas:
|
|
||||||
description: Total number of non-terminated pods targeted
|
|
||||||
by this deployment that have the desired template
|
|
||||||
spec.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- clusterName
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
conditions:
|
|
||||||
description: Conditions contain the different condition statuses.
|
|
||||||
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
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- spec
|
|
||||||
type: object
|
|
||||||
served: true
|
|
||||||
storage: true
|
|
||||||
subresources:
|
|
||||||
status: {}
|
|
||||||
status:
|
|
||||||
acceptedNames:
|
|
||||||
kind: ""
|
|
||||||
plural: ""
|
|
||||||
conditions: []
|
|
||||||
storedVersions: []
|
|
|
@ -68,9 +68,9 @@ function installCRDs() {
|
||||||
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/namespace.yaml"
|
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/namespace.yaml"
|
||||||
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/cluster.karmada.io_clusters.yaml"
|
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/cluster.karmada.io_clusters.yaml"
|
||||||
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/policy.karmada.io_propagationpolicies.yaml"
|
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/policy.karmada.io_propagationpolicies.yaml"
|
||||||
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/policy.karmada.io_resourcebindings.yaml"
|
|
||||||
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/policy.karmada.io_overridepolicies.yaml"
|
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/policy.karmada.io_overridepolicies.yaml"
|
||||||
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/work.karmada.io_works.yaml"
|
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/work.karmada.io_works.yaml"
|
||||||
|
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/work.karmada.io_resourcebindings.yaml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#generate cert
|
#generate cert
|
||||||
|
|
|
@ -75,9 +75,9 @@ function installCRDs() {
|
||||||
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/namespace.yaml"
|
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/namespace.yaml"
|
||||||
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/cluster.karmada.io_clusters.yaml"
|
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/cluster.karmada.io_clusters.yaml"
|
||||||
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/policy.karmada.io_propagationpolicies.yaml"
|
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/policy.karmada.io_propagationpolicies.yaml"
|
||||||
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/policy.karmada.io_resourcebindings.yaml"
|
|
||||||
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/policy.karmada.io_overridepolicies.yaml"
|
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/policy.karmada.io_overridepolicies.yaml"
|
||||||
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/work.karmada.io_works.yaml"
|
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/work.karmada.io_works.yaml"
|
||||||
|
kubectl apply -f "${REPO_ROOT}/artifacts/deploy/work.karmada.io_resourcebindings.yaml"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,8 @@ import (
|
||||||
workv1alpha1 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha1"
|
workv1alpha1 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha1"
|
||||||
karmadaclientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
|
karmadaclientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
|
||||||
informerfactory "github.com/karmada-io/karmada/pkg/generated/informers/externalversions"
|
informerfactory "github.com/karmada-io/karmada/pkg/generated/informers/externalversions"
|
||||||
lister "github.com/karmada-io/karmada/pkg/generated/listers/policy/v1alpha1"
|
policylister "github.com/karmada-io/karmada/pkg/generated/listers/policy/v1alpha1"
|
||||||
|
worklister "github.com/karmada-io/karmada/pkg/generated/listers/work/v1alpha1"
|
||||||
schedulercache "github.com/karmada-io/karmada/pkg/scheduler/cache"
|
schedulercache "github.com/karmada-io/karmada/pkg/scheduler/cache"
|
||||||
"github.com/karmada-io/karmada/pkg/scheduler/core"
|
"github.com/karmada-io/karmada/pkg/scheduler/core"
|
||||||
"github.com/karmada-io/karmada/pkg/scheduler/framework/plugins/clusteraffinity"
|
"github.com/karmada-io/karmada/pkg/scheduler/framework/plugins/clusteraffinity"
|
||||||
|
@ -45,9 +46,9 @@ type Scheduler struct {
|
||||||
KarmadaClient karmadaclientset.Interface
|
KarmadaClient karmadaclientset.Interface
|
||||||
KubeClient kubernetes.Interface
|
KubeClient kubernetes.Interface
|
||||||
bindingInformer cache.SharedIndexInformer
|
bindingInformer cache.SharedIndexInformer
|
||||||
bindingLister lister.ResourceBindingLister
|
bindingLister worklister.ResourceBindingLister
|
||||||
policyInformer cache.SharedIndexInformer
|
policyInformer cache.SharedIndexInformer
|
||||||
policyLister lister.PropagationPolicyLister
|
policyLister policylister.PropagationPolicyLister
|
||||||
informerFactory informerfactory.SharedInformerFactory
|
informerFactory informerfactory.SharedInformerFactory
|
||||||
|
|
||||||
// TODO: implement a priority scheduling queue
|
// TODO: implement a priority scheduling queue
|
||||||
|
@ -60,8 +61,8 @@ type Scheduler struct {
|
||||||
// NewScheduler instantiates a scheduler
|
// NewScheduler instantiates a scheduler
|
||||||
func NewScheduler(dynamicClient dynamic.Interface, karmadaClient karmadaclientset.Interface, kubeClient kubernetes.Interface) *Scheduler {
|
func NewScheduler(dynamicClient dynamic.Interface, karmadaClient karmadaclientset.Interface, kubeClient kubernetes.Interface) *Scheduler {
|
||||||
factory := informerfactory.NewSharedInformerFactory(karmadaClient, 0)
|
factory := informerfactory.NewSharedInformerFactory(karmadaClient, 0)
|
||||||
bindingInformer := factory.Policy().V1alpha1().ResourceBindings().Informer()
|
bindingInformer := factory.Work().V1alpha1().ResourceBindings().Informer()
|
||||||
bindingLister := factory.Policy().V1alpha1().ResourceBindings().Lister()
|
bindingLister := factory.Work().V1alpha1().ResourceBindings().Lister()
|
||||||
policyInformer := factory.Policy().V1alpha1().PropagationPolicies().Informer()
|
policyInformer := factory.Policy().V1alpha1().PropagationPolicies().Informer()
|
||||||
policyLister := factory.Policy().V1alpha1().PropagationPolicies().Lister()
|
policyLister := factory.Policy().V1alpha1().PropagationPolicies().Lister()
|
||||||
queue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
|
queue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
|
||||||
|
@ -229,7 +230,7 @@ func (s *Scheduler) scheduleOne(key string) (err error) {
|
||||||
}
|
}
|
||||||
binding.Annotations[util.PolicyPlacementAnnotation] = string(placement)
|
binding.Annotations[util.PolicyPlacementAnnotation] = string(placement)
|
||||||
|
|
||||||
_, err = s.KarmadaClient.PolicyV1alpha1().ResourceBindings(ns).Update(context.TODO(), binding, metav1.UpdateOptions{})
|
_, err = s.KarmadaClient.WorkV1alpha1().ResourceBindings(ns).Update(context.TODO(), binding, metav1.UpdateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue