diff --git a/CHANGELOG.md b/CHANGELOG.md index 48876346bd..d2cc833291 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,28 @@ -# v0.3.1 +# v0.4.0 + +## A NEW workload controller - CloneSet + +Mainly focuses on managing stateless applications. ([Concept for CloneSet](./docs/concepts/cloneset/README.md)) + +It provides full features for more efficient, deterministic and controlled deployment, such as: + +- **inplace update** +- **specified pod deletion** +- **configurable priority/scatter update** +- **preUpdate/postUpdate hooks** + +## Features + +- UnitedDeployment supports both StatefulSet and AdvancedStatefulSet. +- UnitedDeployment supports toleration config in subset. + +## Bugs + +- Fix statefulset inplace update fields in pod metadata such as labels/annotations. + +--- + +**# v0.3.1** ## Installation diff --git a/README.md b/README.md index 204f674875..d9fad2c034 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ |![notification](docs/img/bell-outline-badge.svg) What is NEW!| |------------------| -|Jan 8th, 2020. Kruise v0.3.1 is **RELEASED**! Please check the [CHANGELOG](CHANGELOG.md) for details.| +|Feb 7th, 2020. Kruise v0.4.0 is **RELEASED**! It provides a new CloneSet controller, please check the [CHANGELOG](CHANGELOG.md) for details.| |Nov 24th, 2019. A blog about new UnitedDeployment controller is posted in Kruise Blog ([link](http://openkruise.io/en-us/blog/blog3.html)).| Kruise is the core of the OpenKruise project. It is a set of controllers which extends and complements [Kubernetes core controllers](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/) on workload management. @@ -43,7 +43,7 @@ sh -c "$(curl -fsSL https://raw.githubusercontent.com/openkruise/kruise/master/s It is recommended that you should install Kruise with helm v3, which is a simple command-line tool and you can get it from [here](https://github.com/helm/helm/releases). ``` -helm install kruise https://github.com/openkruise/kruise/releases/download/v0.3.1/kruise-chart.tgz +helm install kruise https://github.com/openkruise/kruise/releases/download/v0.4.0/kruise-chart.tgz ``` Note that installing this chart directly means it will use the default template values for kruise-manager. diff --git a/charts/kruise/v0.4.0/.helmignore b/charts/kruise/v0.4.0/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/charts/kruise/v0.4.0/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/charts/kruise/v0.4.0/Chart.yaml b/charts/kruise/v0.4.0/Chart.yaml new file mode 100644 index 0000000000..bee46cdac4 --- /dev/null +++ b/charts/kruise/v0.4.0/Chart.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +name: kruise +description: Helm chart for all kruise-manager components +version: 0.4.0 +appVersion: 0.4.0 +icon: http://openkruise.io/img/kruise_white.png +keywords: + - kubernetes + - kruise + - workload + - statefulset + - sidecar + - job + - deployment +home: https://openkruise.io +sources: + - https://github.com/openkruise/kruise diff --git a/charts/kruise/v0.4.0/README.md b/charts/kruise/v0.4.0/README.md new file mode 100644 index 0000000000..1d440686d7 --- /dev/null +++ b/charts/kruise/v0.4.0/README.md @@ -0,0 +1,49 @@ +# Kruise + +## Install + +```bash +helm install kruise https://github.com/openkruise/kruise/releases/download/v0.4.0/kruise-chart.tgz +``` + +you will see follow: + +``` +NAME: kruise +LAST DEPLOYED: Mon Jan 6 14:47:48 2020 +NAMESPACE: default +STATUS: deployed +REVISION: 1 +TEST SUITE: None +``` + +## Uninstall + +```bash +$ helm delete kruise +release "kruise" uninstalled +``` + +## Configuration + +The following table lists the configurable parameters of the kruise chart and their default values. + +| Parameter | Description | Default | +|-------------------------------------------|--------------------------------------------------------------------|-------------------------------------| +| `log.level` | Log level that kruise-manager printed | `4` | +| `revisionHistoryLimit` | Limit of revision history | `3` | +| `manager.resources.limits.cpu` | CPU resource limit of kruise-manager container | | +| `manager.resources.limits.memory` | Memory resource limit of kruise-manager container | | +| `manager.resources.requests.cpu` | CPU resource request of kruise-manager container | | +| `manager.resources.requests.memory` | Memory resource request of kruise-manager container | | +| `manager.metrics.addr` | Addr of metrics served | `localhost` | +| `manager.metrics.port` | Port of metrics served | `8080` | +| `spec.nodeAffinity` | Node affinity policy for kruise-manager pod | `{}` | +| `spec.nodeSelector` | Node labels for kruise-manager pod | `{}` | +| `spec.tolerations` | Tolerations for kruise-manager pod | `[]` + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, + +```bash +# helm install kruise https://github.com/openkruise/kruise/releases/download/v0.4.0/kruise-chart.tgz --set manager.log.level=5 +``` \ No newline at end of file diff --git a/charts/kruise/v0.4.0/templates/_helpers.tpl b/charts/kruise/v0.4.0/templates/_helpers.tpl new file mode 100644 index 0000000000..440ad6fda5 --- /dev/null +++ b/charts/kruise/v0.4.0/templates/_helpers.tpl @@ -0,0 +1,32 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "kruise.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "kruise.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "kruise.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/charts/kruise/v0.4.0/templates/apps_v1alpha1_broadcastjob.yaml b/charts/kruise/v0.4.0/templates/apps_v1alpha1_broadcastjob.yaml new file mode 100644 index 0000000000..28ac8b818c --- /dev/null +++ b/charts/kruise/v0.4.0/templates/apps_v1alpha1_broadcastjob.yaml @@ -0,0 +1,201 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + creationTimestamp: null + labels: + controller-tools.k8s.io: "1.0" + name: broadcastjobs.apps.kruise.io +spec: + additionalPrinterColumns: + - JSONPath: .status.desired + description: The desired number of pods. This is typically equal to the number + of nodes satisfied to run pods. + name: Desired + type: integer + - JSONPath: .status.active + description: The number of actively running pods. + name: Active + type: integer + - JSONPath: .status.succeeded + description: The number of pods which reached phase Succeeded. + name: Succeeded + type: integer + - JSONPath: .status.failed + description: The number of pods which reached phase Failed. + name: Failed + type: integer + - JSONPath: .metadata.creationTimestamp + 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. + name: AGE + type: date + group: apps.kruise.io + names: + kind: BroadcastJob + plural: broadcastjobs + shortNames: + - bj + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + 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/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/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + completionPolicy: + description: CompletionPolicy indicates the completion policy of the + job. Default is Always CompletionPolicyType + properties: + activeDeadlineSeconds: + description: ActiveDeadlineSeconds specifies the duration in seconds + relative to the startTime that the job may be active before the + system tries to terminate it; value must be positive integer. + Only works for Always type. + format: int64 + type: integer + ttlSecondsAfterFinished: + description: ttlSecondsAfterFinished limits the lifetime of a Job + that has finished execution (either Complete or Failed). If this + field is set, ttlSecondsAfterFinished after the Job finishes, + it is eligible to be automatically deleted. When the Job is being + deleted, its lifecycle guarantees (e.g. finalizers) will be honored. + If this field is unset, the Job won't be automatically deleted. + If this field is set to zero, the Job becomes eligible to be deleted + immediately after it finishes. This field is alpha-level and is + only honored by servers that enable the TTLAfterFinished feature. + Only works for Always type + format: int32 + type: integer + type: + description: Type indicates the type of the CompletionPolicy Default + is Always + type: string + type: object + failurePolicy: + description: FailurePolicy indicates the behavior of the job, when failed + pod is found. + properties: + restartLimit: + description: RestartLimit specifies the number of retries before + marking the pod failed. + format: int32 + type: integer + type: + description: Type indicates the type of FailurePolicyType. + type: string + type: object + parallelism: + description: Parallelism specifies the maximum desired number of pods + the job should run at any given time. The actual number of pods running + in steady state will be less than this number when the work left to + do is less than max parallelism. Not setting this value means no limit. + oneOf: + - type: string + - type: integer + paused: + description: Paused will pause the job. + type: boolean + template: + description: Template describes the pod that will be created when executing + a job. + type: object + required: + - template + - completionPolicy + type: object + status: + properties: + active: + description: The number of actively running pods. + format: int32 + type: integer + completionTime: + description: Represents time when the job was completed. It is not guaranteed + to be set in happens-before order across separate operations. It is + represented in RFC3339 form and is in UTC. + format: date-time + type: string + conditions: + description: The latest available observations of an object's current + state. +patchMergeKey=type +patchStrategy=merge + items: + properties: + lastProbeTime: + description: Last time the condition was checked. + format: date-time + type: string + lastTransitionTime: + description: Last time the condition transit from one status to + another. + format: date-time + type: string + message: + description: Human readable message indicating details about last + transition. + type: string + reason: + description: (brief) reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of job condition, Complete or Failed. + type: string + required: + - type + - status + type: object + type: array + desired: + description: The desired number of pods, this is typically equal to + the number of nodes satisfied to run pods. + format: int32 + type: integer + failed: + description: The number of pods which reached phase Failed. + format: int32 + type: integer + phase: + description: The phase of the job. + type: string + startTime: + description: Represents time when the job was acknowledged by the job + controller. It is not guaranteed to be set in happens-before order + across separate operations. It is represented in RFC3339 form and + is in UTC. + format: date-time + type: string + succeeded: + description: The number of pods which reached phase Succeeded. + format: int32 + type: integer + required: + - active + - succeeded + - failed + - desired + - phase + type: object + version: v1alpha1 +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kruise/v0.4.0/templates/apps_v1alpha1_cloneset.yaml b/charts/kruise/v0.4.0/templates/apps_v1alpha1_cloneset.yaml new file mode 100644 index 0000000000..ee322eb1d5 --- /dev/null +++ b/charts/kruise/v0.4.0/templates/apps_v1alpha1_cloneset.yaml @@ -0,0 +1,287 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + creationTimestamp: null + labels: + controller-tools.k8s.io: "1.0" + name: clonesets.apps.kruise.io +spec: + additionalPrinterColumns: + - JSONPath: .spec.replicas + description: The desired number of pods. + name: DESIRED + type: integer + - JSONPath: .status.updatedReplicas + description: The number of pods updated. + name: UPDATED + type: integer + - JSONPath: .status.updatedReadyReplicas + description: The number of pods updated and ready. + name: UPDATED_READY + type: integer + - JSONPath: .status.readyReplicas + description: The number of pods ready. + name: READY + type: integer + - JSONPath: .status.replicas + description: The number of currently all pods. + name: TOTAL + type: integer + - JSONPath: .metadata.creationTimestamp + 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. + name: AGE + type: date + group: apps.kruise.io + names: + kind: CloneSet + plural: clonesets + shortNames: + - clone + scope: Namespaced + subresources: + scale: + labelSelectorPath: .status.labelSelector + specReplicasPath: .spec.replicas + statusReplicasPath: .status.replicas + status: {} + validation: + openAPIV3Schema: + 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/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/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + replicas: + description: Replicas is the desired number of replicas of the given + Template. These are replicas in the sense that they are instantiations + of the same Template. If unspecified, defaults to 1. + format: int32 + type: integer + revisionHistoryLimit: + description: RevisionHistoryLimit is the maximum number of revisions + that will be maintained in the CloneSet's revision history. The revision + history consists of all revisions not represented by a currently applied + CloneSetSpec version. The default value is 10. + format: int32 + type: integer + scaleStrategy: + description: ScaleStrategy indicates the ScaleStrategy that will be + employed to create and delete Pods in the CloneSet. + properties: + podsToDelete: + description: PodsToDelete is the names of Pod should be deleted. + Note that this list will be truncated for non-existing pod names. + items: + type: string + type: array + type: object + selector: + description: 'Selector is a label query over pods that should match + the replica count. It must match the pod template''s labels. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors' + type: object + template: + description: Template describes the pods that will be created. + type: object + updateStrategy: + description: UpdateStrategy indicates the UpdateStrategy that will be + employed to update Pods in the CloneSet when a revision is made to + Template. + properties: + inPlaceUpdateStrategy: + description: InPlaceUpdateStrategy contains strategies for in-place + update. + type: object + maxUnavailable: + description: 'The maximum number of pods that can be unavailable + during the update. Value can be an absolute number (ex: 5) or + a percentage of desired pods (ex: 10%). Absolute number is calculated + from percentage by rounding down. Defaults to 20%.' + oneOf: + - type: string + - type: integer + partition: + description: Partition is the desired number of pods in old revisions. + It means when partition is set during pods updating, (replicas + - partition) number of pods will be updated. Default value is + 0. + format: int32 + type: integer + paused: + description: Paused indicates that the CloneSet is paused. Default + value is false + type: boolean + priorityStrategy: + description: Priorities are the rules for calculating the priority + of updating pods. Each pod to be updated, will pass through these + terms and get a sum of weights. + properties: + orderPriority: + description: 'Order priority terms, pods will be sorted by the + value of orderedKey. For example: ``` orderPriority: - orderedKey: + key1 - orderedKey: key2 ``` First, all pods which have key1 + in labels will be sorted by the value of key1. Then, the left + pods which have no key1 but have key2 in labels will be sorted + by the value of key2 and put behind those pods have key1.' + items: + properties: + orderedKey: + description: Calculate priority by value of this key. + Values of this key, will be sorted by GetInt(val). GetInt + method will find the last int in value, such as getting + 5 in value '5', getting 10 in value 'sts-10'. + type: string + required: + - orderedKey + type: object + type: array + weightPriority: + description: Weight priority terms, pods will be sorted by the + sum of all terms weight. + items: + properties: + matchSelector: + description: MatchSelector is used to select by pod's + labels. + type: object + weight: + description: Weight associated with matching the corresponding + matchExpressions, in the range 1-100. + format: int32 + type: integer + required: + - weight + - matchSelector + type: object + type: array + type: object + scatterStrategy: + description: ScatterStrategy defines the scatter rules to make pods + been scattered when update. This will avoid pods with the same + key-value to be updated in one batch. - Note that pods will be + scattered after priority sort. So, although priority strategy + and scatter strategy can be applied together, we suggest to use + either one of them. - If scatterStrategy is used, we suggest to + just use one term. Otherwise, the update order can be hard to + understand. + items: + properties: + key: + type: string + value: + type: string + required: + - key + - value + type: object + type: array + type: + description: Type indicates the type of the CloneSetUpdateStrategy. + Default is ReCreate. + type: string + type: object + volumeClaimTemplates: + description: VolumeClaimTemplates is a list of claims that pods are + allowed to reference. Note that PVC will be deleted when its pod has + been deleted. + items: + type: object + type: array + required: + - replicas + - selector + - template + type: object + status: + properties: + collisionCount: + description: CollisionCount is the count of hash collisions for the + CloneSet. The CloneSet controller uses this field as a collision avoidance + mechanism when it needs to create the name for the newest ControllerRevision. + format: int32 + type: integer + conditions: + description: Conditions represents the latest available observations + of a CloneSet's current state. + items: + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of CloneSet condition. + type: string + required: + - type + - status + type: object + type: array + observedGeneration: + description: ObservedGeneration is the most recent generation observed + for this CloneSet. It corresponds to the CloneSet's generation, which + is updated on mutation by the API Server. + format: int64 + type: integer + readyReplicas: + description: ReadyReplicas is the number of Pods created by the CloneSet + controller that have a Ready Condition. + format: int32 + type: integer + replicas: + description: Replicas is the number of Pods created by the CloneSet + controller. + format: int32 + type: integer + updateRevision: + description: UpdateRevision, if not empty, indicates the latest revision + of the CloneSet. + type: string + updatedReadyReplicas: + description: UpdatedReadyReplicas is the number of Pods created by the + CloneSet controller from the CloneSet version indicated by updateRevision + and have a Ready Condition. + format: int32 + type: integer + updatedReplicas: + description: UpdatedReplicas is the number of Pods created by the CloneSet + controller from the CloneSet version indicated by updateRevision. + format: int32 + type: integer + required: + - replicas + - readyReplicas + - updatedReplicas + - updatedReadyReplicas + type: object + version: v1alpha1 +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kruise/v0.4.0/templates/apps_v1alpha1_sidecarset.yaml b/charts/kruise/v0.4.0/templates/apps_v1alpha1_sidecarset.yaml new file mode 100644 index 0000000000..1e991cc54e --- /dev/null +++ b/charts/kruise/v0.4.0/templates/apps_v1alpha1_sidecarset.yaml @@ -0,0 +1,118 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + creationTimestamp: null + labels: + controller-tools.k8s.io: "1.0" + name: sidecarsets.apps.kruise.io +spec: + additionalPrinterColumns: + - JSONPath: .status.matchedPods + description: The number of pods matched. + name: MATCHED + type: integer + - JSONPath: .status.updatedPods + description: The number of pods matched and updated. + name: UPDATED + type: integer + - JSONPath: .status.readyPods + description: The number of pods matched and ready. + name: READY + type: integer + - JSONPath: .metadata.creationTimestamp + 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. + name: AGE + type: date + group: apps.kruise.io + names: + kind: SidecarSet + plural: sidecarsets + scope: Cluster + subresources: + status: {} + validation: + openAPIV3Schema: + 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/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/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + containers: + description: Containers is the list of sidecar containers to be injected + into the selected pod + items: + type: object + type: array + paused: + description: Paused indicates that the sidecarset is paused and will + not be processed by the sidecarset controller. + type: boolean + selector: + description: selector is a label query over pods that should be injected + type: object + strategy: + description: The sidecarset strategy to use to replace existing pods + with new ones. + properties: + rollingUpdate: + properties: + maxUnavailable: + oneOf: + - type: string + - type: integer + type: object + type: object + volumes: + description: List of volumes that can be mounted by sidecar containers + items: + type: object + type: array + type: object + status: + properties: + matchedPods: + description: matchedPods is the number of Pods whose labels are matched + with this SidecarSet's selector and are created after sidecarset creates + format: int32 + type: integer + observedGeneration: + description: observedGeneration is the most recent generation observed + for this SidecarSet. It corresponds to the SidecarSet's generation, + which is updated on mutation by the API Server. + format: int64 + type: integer + readyPods: + description: readyPods is the number of matched Pods that have a ready + condition + format: int32 + type: integer + updatedPods: + description: updatedPods is the number of matched Pods that are injected + with the latest SidecarSet's containers + format: int32 + type: integer + required: + - matchedPods + - updatedPods + - readyPods + type: object + version: v1alpha1 +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kruise/v0.4.0/templates/apps_v1alpha1_statefulset.yaml b/charts/kruise/v0.4.0/templates/apps_v1alpha1_statefulset.yaml new file mode 100644 index 0000000000..31a99c645f --- /dev/null +++ b/charts/kruise/v0.4.0/templates/apps_v1alpha1_statefulset.yaml @@ -0,0 +1,279 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + creationTimestamp: null + labels: + controller-tools.k8s.io: "1.0" + name: statefulsets.apps.kruise.io +spec: + additionalPrinterColumns: + - JSONPath: .spec.replicas + description: The desired number of pods. + name: DESIRED + type: integer + - JSONPath: .status.replicas + description: The number of currently all pods. + name: CURRENT + type: integer + - JSONPath: .status.updatedReplicas + description: The number of pods updated. + name: UPDATED + type: integer + - JSONPath: .status.readyReplicas + description: The number of pods ready. + name: READY + type: integer + - JSONPath: .metadata.creationTimestamp + 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. + name: AGE + type: date + group: apps.kruise.io + names: + kind: StatefulSet + plural: statefulsets + shortNames: + - sts + scope: Namespaced + subresources: + scale: + labelSelectorPath: .status.labelSelector + specReplicasPath: .spec.replicas + statusReplicasPath: .status.replicas + status: {} + validation: + openAPIV3Schema: + 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/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/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + podManagementPolicy: + description: podManagementPolicy controls how pods are created during + initial scale up, when replacing pods on nodes, or when scaling down. + The default policy is `OrderedReady`, where pods are created in increasing + order (pod-0, then pod-1, etc) and the controller will wait until + each pod is ready before continuing. When scaling down, the pods are + removed in the opposite order. The alternative policy is `Parallel` + which will create pods in parallel to match the desired scale without + waiting, and on scale down will delete all pods at once. + type: string + replicas: + description: 'replicas is the desired number of replicas of the given + Template. These are replicas in the sense that they are instantiations + of the same Template, but individual replicas also have a consistent + identity. If unspecified, defaults to 1. TODO: Consider a rename of + this field.' + format: int32 + type: integer + revisionHistoryLimit: + description: revisionHistoryLimit is the maximum number of revisions + that will be maintained in the StatefulSet's revision history. The + revision history consists of all revisions not represented by a currently + applied StatefulSetSpec version. The default value is 10. + format: int32 + type: integer + selector: + description: 'selector is a label query over pods that should match + the replica count. It must match the pod template''s labels. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors' + type: object + serviceName: + description: 'serviceName is the name of the service that governs this + StatefulSet. This service must exist before the StatefulSet, and is + responsible for the network identity of the set. Pods get DNS/hostnames + that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local + where "pod-specific-string" is managed by the StatefulSet controller.' + type: string + template: + description: template is the object that describes the pod that will + be created if insufficient replicas are detected. Each pod stamped + out by the StatefulSet will fulfill this Template, but have a unique + identity from the rest of the StatefulSet. + type: object + updateStrategy: + description: updateStrategy indicates the StatefulSetUpdateStrategy + that will be employed to update Pods in the StatefulSet when a revision + is made to Template. + properties: + rollingUpdate: + description: RollingUpdate is used to communicate parameters when + Type is RollingUpdateStatefulSetStrategyType. + properties: + maxUnavailable: + description: 'The maximum number of pods that can be unavailable + during the update. Value can be an absolute number (ex: 5) + or a percentage of desired pods (ex: 10%). Absolute number + is calculated from percentage by rounding down. Also, maxUnavailable + can just be allowed to work with Parallel podManagementPolicy. + Defaults to 1.' + oneOf: + - type: string + - type: integer + partition: + description: 'Partition indicates the ordinal at which the StatefulSet + should be partitioned by default. But if unorderedUpdate has + been set: - Partition indicates the number of pods with + non-updated revisions when rolling update. - It means controller + will update $(replicas - partition) number of pod. Default + value is 0.' + format: int32 + type: integer + paused: + description: Paused indicates that the StatefulSet is paused. + Default value is false + type: boolean + podUpdatePolicy: + description: PodUpdatePolicy indicates how pods should be updated + Default value is "ReCreate" + type: string + unorderedUpdate: + description: UnorderedUpdate contains strategies for non-ordered + update. If it is not nil, pods will be updated with non-ordered + sequence. Noted that UnorderedUpdate can only be allowed to + work with Parallel podManagementPolicy + properties: + priorityStrategy: + description: Priorities are the rules for calculating the + priority of updating pods. Each pod to be updated, will + pass through these terms and get a sum of weights. + properties: + orderPriority: + description: 'Order priority terms, pods will be sorted + by the value of orderedKey. For example: ``` orderPriority: + - orderedKey: key1 - orderedKey: key2 ``` First, all + pods which have key1 in labels will be sorted by the + value of key1. Then, the left pods which have no key1 + but have key2 in labels will be sorted by the value + of key2 and put behind those pods have key1.' + items: + properties: + orderedKey: + description: Calculate priority by value of this + key. Values of this key, will be sorted by GetInt(val). + GetInt method will find the last int in value, + such as getting 5 in value '5', getting 10 in + value 'sts-10'. + type: string + required: + - orderedKey + type: object + type: array + weightPriority: + description: Weight priority terms, pods will be sorted + by the sum of all terms weight. + items: + properties: + matchSelector: + description: MatchSelector is used to select by + pod's labels. + type: object + weight: + description: Weight associated with matching the + corresponding matchExpressions, in the range + 1-100. + format: int32 + type: integer + required: + - weight + - matchSelector + type: object + type: array + type: object + type: object + type: object + type: + description: Type indicates the type of the StatefulSetUpdateStrategy. + Default is RollingUpdate. + type: string + type: object + volumeClaimTemplates: + description: 'volumeClaimTemplates is a list of claims that pods are + allowed to reference. The StatefulSet controller is responsible for + mapping network identities to claims in a way that maintains the identity + of a pod. Every claim in this list must have at least one matching + (by name) volumeMount in one container in the template. A claim in + this list takes precedence over any volumes in the template, with + the same name. TODO: Define the behavior if a claim already exists + with the same name.' + items: + type: object + type: array + required: + - selector + - template + type: object + status: + properties: + collisionCount: + description: collisionCount is the count of hash collisions for the + StatefulSet. The StatefulSet controller uses this field as a collision + avoidance mechanism when it needs to create the name for the newest + ControllerRevision. + format: int32 + type: integer + conditions: + description: Represents the latest available observations of a statefulset's + current state. +patchMergeKey=type +patchStrategy=merge + items: + type: object + type: array + currentReplicas: + description: currentReplicas is the number of Pods created by the StatefulSet + controller from the StatefulSet version indicated by currentRevision. + format: int32 + type: integer + currentRevision: + description: currentRevision, if not empty, indicates the version of + the StatefulSet used to generate Pods in the sequence [0,currentReplicas). + type: string + observedGeneration: + description: observedGeneration is the most recent generation observed + for this StatefulSet. It corresponds to the StatefulSet's generation, + which is updated on mutation by the API Server. + format: int64 + type: integer + readyReplicas: + description: readyReplicas is the number of Pods created by the StatefulSet + controller that have a Ready Condition. + format: int32 + type: integer + replicas: + description: replicas is the number of Pods created by the StatefulSet + controller. + format: int32 + type: integer + updateRevision: + description: updateRevision, if not empty, indicates the version of + the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas) + type: string + updatedReplicas: + description: updatedReplicas is the number of Pods created by the StatefulSet + controller from the StatefulSet version indicated by updateRevision. + format: int32 + type: integer + required: + - replicas + - readyReplicas + - currentReplicas + - updatedReplicas + type: object + version: v1alpha1 +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kruise/v0.4.0/templates/apps_v1alpha1_uniteddeployment.yaml b/charts/kruise/v0.4.0/templates/apps_v1alpha1_uniteddeployment.yaml new file mode 100644 index 0000000000..751d3e20f5 --- /dev/null +++ b/charts/kruise/v0.4.0/templates/apps_v1alpha1_uniteddeployment.yaml @@ -0,0 +1,424 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + creationTimestamp: null + labels: + controller-tools.k8s.io: "1.0" + name: uniteddeployments.apps.kruise.io +spec: + additionalPrinterColumns: + - JSONPath: .spec.replicas + description: The desired number of pods. + name: DESIRED + type: integer + - JSONPath: .status.replicas + description: The number of currently all pods. + name: CURRENT + type: integer + - JSONPath: .status.updatedReplicas + description: The number of pods updated. + name: UPDATED + type: integer + - JSONPath: .status.readyReplicas + description: The number of pods ready. + name: READY + type: integer + - JSONPath: .metadata.creationTimestamp + 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. + name: AGE + type: date + group: apps.kruise.io + names: + kind: UnitedDeployment + plural: uniteddeployments + shortNames: + - ud + scope: Namespaced + subresources: + scale: + labelSelectorPath: .status.selector + specReplicasPath: .spec.replicas + statusReplicasPath: .status.replicas + status: {} + validation: + openAPIV3Schema: + 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/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/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + replicas: + description: Replicas is the total desired replicas of all the subsets. + If unspecified, defaults to 1. + format: int32 + type: integer + revisionHistoryLimit: + description: Indicates the number of histories to be conserved. If unspecified, + defaults to 10. + format: int32 + type: integer + selector: + description: Selector is a label query over pods that should match the + replica count. It must match the pod template's labels. + type: object + template: + description: Template describes the subset that will be created. + properties: + advancedStatefulSetTemplate: + description: AdvancedStatefulSet template + properties: + metadata: + type: object + spec: + properties: + podManagementPolicy: + description: podManagementPolicy controls how pods are created + during initial scale up, when replacing pods on nodes, + or when scaling down. The default policy is `OrderedReady`, + where pods are created in increasing order (pod-0, then + pod-1, etc) and the controller will wait until each pod + is ready before continuing. When scaling down, the pods + are removed in the opposite order. The alternative policy + is `Parallel` which will create pods in parallel to match + the desired scale without waiting, and on scale down will + delete all pods at once. + type: string + replicas: + description: 'replicas is the desired number of replicas + of the given Template. These are replicas in the sense + that they are instantiations of the same Template, but + individual replicas also have a consistent identity. If + unspecified, defaults to 1. TODO: Consider a rename of + this field.' + format: int32 + type: integer + revisionHistoryLimit: + description: revisionHistoryLimit is the maximum number + of revisions that will be maintained in the StatefulSet's + revision history. The revision history consists of all + revisions not represented by a currently applied StatefulSetSpec + version. The default value is 10. + format: int32 + type: integer + selector: + description: 'selector is a label query over pods that should + match the replica count. It must match the pod template''s + labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors' + type: object + serviceName: + description: 'serviceName is the name of the service that + governs this StatefulSet. This service must exist before + the StatefulSet, and is responsible for the network identity + of the set. Pods get DNS/hostnames that follow the pattern: + pod-specific-string.serviceName.default.svc.cluster.local + where "pod-specific-string" is managed by the StatefulSet + controller.' + type: string + template: + description: template is the object that describes the pod + that will be created if insufficient replicas are detected. + Each pod stamped out by the StatefulSet will fulfill this + Template, but have a unique identity from the rest of + the StatefulSet. + type: object + updateStrategy: + description: updateStrategy indicates the StatefulSetUpdateStrategy + that will be employed to update Pods in the StatefulSet + when a revision is made to Template. + properties: + rollingUpdate: + description: RollingUpdate is used to communicate parameters + when Type is RollingUpdateStatefulSetStrategyType. + properties: + maxUnavailable: + description: 'The maximum number of pods that can + be unavailable during the update. Value can be + an absolute number (ex: 5) or a percentage of + desired pods (ex: 10%). Absolute number is calculated + from percentage by rounding down. Also, maxUnavailable + can just be allowed to work with Parallel podManagementPolicy. + Defaults to 1.' + oneOf: + - type: string + - type: integer + partition: + description: 'Partition indicates the ordinal at + which the StatefulSet should be partitioned by + default. But if unorderedUpdate has been set: - + Partition indicates the number of pods with non-updated + revisions when rolling update. - It means controller + will update $(replicas - partition) number of + pod. Default value is 0.' + format: int32 + type: integer + paused: + description: Paused indicates that the StatefulSet + is paused. Default value is false + type: boolean + podUpdatePolicy: + description: PodUpdatePolicy indicates how pods + should be updated Default value is "ReCreate" + type: string + unorderedUpdate: + description: UnorderedUpdate contains strategies + for non-ordered update. If it is not nil, pods + will be updated with non-ordered sequence. Noted + that UnorderedUpdate can only be allowed to work + with Parallel podManagementPolicy + properties: + priorityStrategy: + description: Priorities are the rules for calculating + the priority of updating pods. Each pod to + be updated, will pass through these terms + and get a sum of weights. + properties: + orderPriority: + description: 'Order priority terms, pods + will be sorted by the value of orderedKey. + For example: ``` orderPriority: - orderedKey: + key1 - orderedKey: key2 ``` First, all + pods which have key1 in labels will be + sorted by the value of key1. Then, the + left pods which have no key1 but have + key2 in labels will be sorted by the value + of key2 and put behind those pods have + key1.' + items: + properties: + orderedKey: + description: Calculate priority by + value of this key. Values of this + key, will be sorted by GetInt(val). + GetInt method will find the last + int in value, such as getting 5 + in value '5', getting 10 in value + 'sts-10'. + type: string + required: + - orderedKey + type: object + type: array + weightPriority: + description: Weight priority terms, pods + will be sorted by the sum of all terms + weight. + items: + properties: + matchSelector: + description: MatchSelector is used + to select by pod's labels. + type: object + weight: + description: Weight associated with + matching the corresponding matchExpressions, + in the range 1-100. + format: int32 + type: integer + required: + - weight + - matchSelector + type: object + type: array + type: object + type: object + type: object + type: + description: Type indicates the type of the StatefulSetUpdateStrategy. + Default is RollingUpdate. + type: string + type: object + volumeClaimTemplates: + description: 'volumeClaimTemplates is a list of claims that + pods are allowed to reference. The StatefulSet controller + is responsible for mapping network identities to claims + in a way that maintains the identity of a pod. Every claim + in this list must have at least one matching (by name) + volumeMount in one container in the template. A claim + in this list takes precedence over any volumes in the + template, with the same name. TODO: Define the behavior + if a claim already exists with the same name.' + items: + type: object + type: array + required: + - selector + - template + type: object + required: + - spec + type: object + statefulSetTemplate: + description: StatefulSet template + properties: + metadata: + type: object + spec: + type: object + required: + - spec + type: object + type: object + topology: + description: Topology describes the pods distribution detail between + each of subsets. + properties: + subsets: + description: Contains the details of each subset. Each element in + this array represents one subset which will be provisioned and + managed by UnitedDeployment. + items: + properties: + name: + description: Indicates subset name as a DNS_LABEL, which will + be used to generate subset workload name prefix in the format + '--'. Name should be unique + between all of the subsets under one UnitedDeployment. + type: string + nodeSelectorTerm: + description: Indicates the node selector to form the subset. + Depending on the node selector, pods provisioned could be + distributed across multiple groups of nodes. A subset's + nodeSelectorTerm is not allowed to be updated. + type: object + replicas: + description: Indicates the number of the pod to be created + under this subset. Replicas could also be percentage like + '10%', which means 10% of UnitedDeployment replicas of pods + will be distributed under this subset. If nil, the number + of replicas in this subset is determined by controller. + Controller will try to keep all the subsets with nil replicas + have average pods. + oneOf: + - type: string + - type: integer + tolerations: + description: Indicates the tolerations the pods under this + subset have. A subset's tolerations is not allowed to be + updated. + items: + type: object + type: array + required: + - name + type: object + type: array + type: object + updateStrategy: + description: UpdateStrategy indicates the strategy the UnitedDeployment + use to preform the update, when template is changed. + properties: + manualUpdate: + description: Includes all of the parameters a Manual update strategy + needs. + properties: + partitions: + description: Indicates number of subset partition. + type: object + type: object + type: + description: Type of UnitedDeployment update strategy. Default is + Manual. + type: string + type: object + required: + - selector + type: object + status: + properties: + collisionCount: + description: Count of hash collisions for the UnitedDeployment. The + UnitedDeployment controller uses this field as a collision avoidance + mechanism when it needs to create the name for the newest ControllerRevision. + format: int32 + type: integer + conditions: + description: Represents the latest available observations of a UnitedDeployment's + current state. + items: + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of in place set condition. + type: string + type: object + type: array + currentRevision: + description: CurrentRevision, if not empty, indicates the current version + of the UnitedDeployment. + type: string + observedGeneration: + description: ObservedGeneration is the most recent generation observed + for this UnitedDeployment. It corresponds to the UnitedDeployment's + generation, which is updated on mutation by the API Server. + format: int64 + type: integer + readyReplicas: + description: The number of ready replicas. + format: int32 + type: integer + replicas: + description: Replicas is the most recently observed number of replicas. + format: int32 + type: integer + subsetReplicas: + description: Records the topology detail information of the replicas + of each subset. + type: object + updateStatus: + description: Records the information of update progress. + properties: + currentPartitions: + description: Records the current partition. + type: object + updatedRevision: + description: Records the latest revision. + type: string + type: object + updatedReadyReplicas: + description: The number of ready current revision replicas for this + UnitedDeployment. + format: int32 + type: integer + updatedReplicas: + description: The number of pods in current version. + format: int32 + type: integer + required: + - replicas + - updatedReplicas + - currentRevision + type: object + version: v1alpha1 +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kruise/v0.4.0/templates/manager.yaml b/charts/kruise/v0.4.0/templates/manager.yaml new file mode 100644 index 0000000000..8367942be2 --- /dev/null +++ b/charts/kruise/v0.4.0/templates/manager.yaml @@ -0,0 +1,111 @@ +apiVersion: v1 +kind: Namespace +metadata: + labels: + control-plane: controller-manager + controller-tools.k8s.io: "1.0" + name: kruise-system +--- +apiVersion: v1 +kind: Service +metadata: + labels: + control-plane: controller-manager + controller-tools.k8s.io: "1.0" + name: kruise-controller-manager-service + namespace: kruise-system +spec: + ports: + - port: 443 + selector: + control-plane: controller-manager + controller-tools.k8s.io: "1.0" +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + control-plane: controller-manager + controller-tools.k8s.io: "1.0" + name: kruise-controller-manager + namespace: kruise-system +spec: + replicas: 1 + serviceName: kruise-controller-manager-service + revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + selector: + matchLabels: + control-plane: controller-manager + controller-tools.k8s.io: "1.0" + template: + metadata: + annotations: + prometheus.io/scrape: "true" + labels: + control-plane: controller-manager + controller-tools.k8s.io: "1.0" + spec: + containers: + - command: + - /manager + args: + - "--metrics-addr={{ .Values.manager.metrics.addr }}:{{ .Values.manager.metrics.port }}" + - "--logtostderr=true" + - "--v={{ .Values.manager.log.level }}" + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: SECRET_NAME + value: kruise-webhook-server-secret + image: openkruise/kruise-manager:v0.4.0 + imagePullPolicy: IfNotPresent + name: manager + ports: + - containerPort: {{ .Values.manager.metrics.port }} + name: metrics + protocol: TCP + - containerPort: 9876 + name: webhook-server + protocol: TCP + readinessProbe: + tcpSocket: + port: 9876 + resources: + {{- toYaml .Values.manager.resources | nindent 12 }} + volumeMounts: + - mountPath: /tmp/cert + name: cert + readOnly: true + terminationGracePeriodSeconds: 10 + +{{- if .Values.spec.nodeAffinity }} + affinity: +{{- end }} +{{- with .Values.spec.nodeAffinity }} + nodeAffinity: +{{ toYaml . | indent 10 }} +{{- end }} + +{{- if .Values.spec.nodeSelector }} + nodeSelector: +{{ toYaml .Values.spec.nodeSelector | indent 8 }} +{{- end }} + +{{- if .Values.spec.tolerations }} + tolerations: +{{ toYaml .Values.spec.tolerations | indent 8 }} +{{- end }} + + volumes: + - name: cert + secret: + defaultMode: 420 + secretName: kruise-webhook-server-secret +--- +apiVersion: v1 +kind: Secret +metadata: + name: kruise-webhook-server-secret + namespace: kruise-system \ No newline at end of file diff --git a/charts/kruise/v0.4.0/templates/rbac_role.yaml b/charts/kruise/v0.4.0/templates/rbac_role.yaml new file mode 100644 index 0000000000..bba21a3936 --- /dev/null +++ b/charts/kruise/v0.4.0/templates/rbac_role.yaml @@ -0,0 +1,335 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + name: kruise-manager-role +rules: +- apiGroups: + - "" + resources: + - pods + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - pods/status + verbs: + - get + - update + - patch +- apiGroups: + - apps.kruise.io + resources: + - broadcastjobs + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - apps.kruise.io + resources: + - broadcastjobs/status + verbs: + - get + - update + - patch +- apiGroups: + - "" + resources: + - pods + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - pods/status + verbs: + - get + - update + - patch +- apiGroups: + - "" + resources: + - events + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - apps + resources: + - controllerrevisions + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - apps.kruise.io + resources: + - clonesets + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - apps.kruise.io + resources: + - clonesets/status + verbs: + - get + - update + - patch +- apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - apps.kruise.io + resources: + - sidecarsets + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - apps.kruise.io + resources: + - sidecarsets/status + verbs: + - get + - update + - patch +- apiGroups: + - "" + resources: + - pods + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - pods/status + verbs: + - get + - update + - patch +- apiGroups: + - "" + resources: + - events + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - apps + resources: + - controllerrevisions + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - apps.kruise.io + resources: + - statefulsets + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - apps.kruise.io + resources: + - statefulsets/status + verbs: + - get + - update + - patch +- apiGroups: + - apps.kruise.io + resources: + - uniteddeployments + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - apps.kruise.io + resources: + - uniteddeployments/status + verbs: + - get + - update + - patch +- apiGroups: + - apps + resources: + - statefulsets + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - apps + resources: + - statefulsets/status + verbs: + - get + - update + - patch +- apiGroups: + - apps.kruise.io + resources: + - statefulsets + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - apps.kruise.io + resources: + - statefulsets/status + verbs: + - get + - update + - patch +- apiGroups: + - admissionregistration.k8s.io + resources: + - mutatingwebhookconfigurations + - validatingwebhookconfigurations + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - secrets + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - services + verbs: + - get + - list + - watch + - create + - update + - patch + - delete \ No newline at end of file diff --git a/charts/kruise/v0.4.0/templates/rbac_role_binding.yaml b/charts/kruise/v0.4.0/templates/rbac_role_binding.yaml new file mode 100644 index 0000000000..aa82ac9524 --- /dev/null +++ b/charts/kruise/v0.4.0/templates/rbac_role_binding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + creationTimestamp: null + name: kruise-manager-rolebinding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: kruise-manager-role +subjects: +- kind: ServiceAccount + name: default + namespace: kruise-system \ No newline at end of file diff --git a/charts/kruise/v0.4.0/templates/webhookconfiguration.yaml b/charts/kruise/v0.4.0/templates/webhookconfiguration.yaml new file mode 100644 index 0000000000..85658f4696 --- /dev/null +++ b/charts/kruise/v0.4.0/templates/webhookconfiguration.yaml @@ -0,0 +1,120 @@ +apiVersion: admissionregistration.k8s.io/v1beta1 +kind: MutatingWebhookConfiguration +metadata: + name: kruise-mutating-webhook-configuration +--- +apiVersion: admissionregistration.k8s.io/v1beta1 +kind: ValidatingWebhookConfiguration +metadata: + name: kruise-validating-webhook-configuration +webhooks: + - clientConfig: + caBundle: fake + service: + name: webhook-server-service + namespace: kruise-system + path: /validating-create-update-broadcastjob + failurePolicy: Fail + name: validating-create-update-broadcastjob.kruise.io + namespaceSelector: + matchExpressions: + - key: control-plane + operator: DoesNotExist + rules: + - apiGroups: + - apps.kruise.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - broadcastjobs + - clientConfig: + caBundle: fake + service: + name: webhook-server-service + namespace: kruise-system + path: /validating-create-update-cloneset + failurePolicy: Fail + name: validating-create-update-cloneset.kruise.io + namespaceSelector: + matchExpressions: + - key: control-plane + operator: DoesNotExist + rules: + - apiGroups: + - apps.kruise.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - clonesets + - clientConfig: + caBundle: fake + service: + name: webhook-server-service + namespace: kruise-system + path: /validating-create-update-sidecarset + failurePolicy: Fail + name: validating-create-update-sidecarset.kruise.io + namespaceSelector: + matchExpressions: + - key: control-plane + operator: DoesNotExist + rules: + - apiGroups: + - apps.kruise.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - sidecarsets + - clientConfig: + caBundle: fake + service: + name: webhook-server-service + namespace: kruise-system + path: /validating-create-update-statefulset + failurePolicy: Fail + name: validating-create-update-statefulset.kruise.io + namespaceSelector: + matchExpressions: + - key: control-plane + operator: DoesNotExist + rules: + - apiGroups: + - apps.kruise.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - statefulsets + - clientConfig: + caBundle: fake + service: + name: webhook-server-service + namespace: kruise-system + path: /validating-create-update-uniteddeployment + failurePolicy: Fail + name: validating-create-update-uniteddeployment.kruise.io + namespaceSelector: + matchExpressions: + - key: control-plane + operator: DoesNotExist + rules: + - apiGroups: + - apps.kruise.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - uniteddeployments diff --git a/charts/kruise/v0.4.0/values.yaml b/charts/kruise/v0.4.0/values.yaml new file mode 100644 index 0000000000..6e1da3dacc --- /dev/null +++ b/charts/kruise/v0.4.0/values.yaml @@ -0,0 +1,27 @@ +# Default values for kruise. + +revisionHistoryLimit: 3 + +spec: + nodeAffinity: {} + nodeSelector: {} + tolerations: [] + +manager: + # settings for log print + log: + # log level for kruise-manager + level: "4" + + # resources of kruise-manager container + resources: + limits: + cpu: 100m + memory: 256Mi + requests: + cpu: 100m + memory: 256Mi + + metrics: + addr: localhost + port: 8080