add component status to cluster status (#2160)
This commit is contained in:
2
Makefile
2
Makefile
@@ -58,7 +58,7 @@ vet: generate
|
|||||||
|
|
||||||
# Generate manifests e.g. CRD, RBAC etc.
|
# Generate manifests e.g. CRD, RBAC etc.
|
||||||
manifests:
|
manifests:
|
||||||
go run ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go object:headerFile=./hack/boilerplate.go.txt paths=./pkg/apis/... rbac:roleName=controller-perms ${CRD_OPTIONS} output:crd:artifacts:config=config/crd/bases
|
go run ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go object:headerFile=./hack/boilerplate.go.txt paths=./pkg/apis/... rbac:roleName=controller-perms ${CRD_OPTIONS} output:crd:artifacts:config=config/crds
|
||||||
|
|
||||||
deploy: manifests
|
deploy: manifests
|
||||||
kubectl apply -f config/crds
|
kubectl apply -f config/crds
|
||||||
|
|||||||
173
config/crds/cluster.kubesphere.io_clusters.yaml
generated
Normal file
173
config/crds/cluster.kubesphere.io_clusters.yaml
generated
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
|
creationTimestamp: null
|
||||||
|
name: clusters.cluster.kubesphere.io
|
||||||
|
spec:
|
||||||
|
additionalPrinterColumns:
|
||||||
|
- JSONPath: .spec.joinFederation
|
||||||
|
name: Federated
|
||||||
|
type: boolean
|
||||||
|
- JSONPath: .spec.provider
|
||||||
|
name: Provider
|
||||||
|
type: string
|
||||||
|
- JSONPath: .spec.enable
|
||||||
|
name: Active
|
||||||
|
type: boolean
|
||||||
|
- JSONPath: .status.kubernetesVersion
|
||||||
|
name: Version
|
||||||
|
type: string
|
||||||
|
group: cluster.kubesphere.io
|
||||||
|
names:
|
||||||
|
kind: Cluster
|
||||||
|
listKind: ClusterList
|
||||||
|
plural: clusters
|
||||||
|
singular: cluster
|
||||||
|
scope: Cluster
|
||||||
|
subresources: {}
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: Cluster is the schema for the clusters 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:
|
||||||
|
properties:
|
||||||
|
connection:
|
||||||
|
description: Connection holds info to connect to the member cluster
|
||||||
|
properties:
|
||||||
|
kubeconfig:
|
||||||
|
description: KubeConfig content used to connect to cluster api server
|
||||||
|
Should provide this field explicitly if connection type is direct.
|
||||||
|
Will be populated by ks-proxy if connection type is proxy.
|
||||||
|
format: byte
|
||||||
|
type: string
|
||||||
|
kubernetesAPIEndpoint:
|
||||||
|
description: 'Kubernetes API Server endpoint. Example: https://10.10.0.1:6443
|
||||||
|
Should provide this field explicitly if connection type is direct.
|
||||||
|
Will be populated by ks-apiserver if connection type is proxy.'
|
||||||
|
type: string
|
||||||
|
kubernetesAPIServerPort:
|
||||||
|
description: KubeAPIServerPort is the port which listens for forwarding
|
||||||
|
kube-apiserver traffic Only applicable when connection type is
|
||||||
|
proxy.
|
||||||
|
type: integer
|
||||||
|
kubesphereAPIEndpoint:
|
||||||
|
description: 'KubeSphere API Server endpoint. Example: http://10.10.0.11:8080
|
||||||
|
Should provide this field explicitly if connection type is direct.
|
||||||
|
Will be populated by ks-apiserver if connection type is proxy.'
|
||||||
|
type: string
|
||||||
|
kubesphereAPIServerPort:
|
||||||
|
description: KubeSphereAPIServerPort is the port which listens for
|
||||||
|
forwarding kubesphere apigateway traffic Only applicable when
|
||||||
|
connection type is proxy.
|
||||||
|
type: integer
|
||||||
|
token:
|
||||||
|
description: Token used by agents of member cluster to connect to
|
||||||
|
host cluster proxy. This field is populated by apiserver only
|
||||||
|
if connection type is proxy.
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type defines how host cluster will connect to host
|
||||||
|
cluster ConnectionTypeDirect means direct connection, this requires kubeconfig
|
||||||
|
and kubesphere apiserver endpoint provided ConnectionTypeProxy
|
||||||
|
means using kubesphere proxy, no kubeconfig or kubesphere apiserver
|
||||||
|
endpoint required
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
enable:
|
||||||
|
description: Desired state of the cluster
|
||||||
|
type: boolean
|
||||||
|
joinFederation:
|
||||||
|
description: Join cluster as a kubefed cluster
|
||||||
|
type: boolean
|
||||||
|
provider:
|
||||||
|
description: Provider of the cluster, this field is just for description
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Represents the latest available observations of a cluster's
|
||||||
|
current state.
|
||||||
|
items:
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: Last time the condition transitioned from one status
|
||||||
|
to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
lastUpdateTime:
|
||||||
|
description: The last time this condition was updated.
|
||||||
|
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 the condition
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
configz:
|
||||||
|
additionalProperties:
|
||||||
|
type: boolean
|
||||||
|
description: Configz is status of components enabled in the member cluster.
|
||||||
|
This is synchronized with member cluster every amount of time, like
|
||||||
|
5 minutes.
|
||||||
|
type: object
|
||||||
|
kubernetesVersion:
|
||||||
|
description: GitVersion of the kubernetes cluster, this field is populated
|
||||||
|
by cluster controller
|
||||||
|
type: string
|
||||||
|
nodeCount:
|
||||||
|
description: Count of the kubernetes cluster nodes This field may not
|
||||||
|
reflect the instant status of the cluster.
|
||||||
|
type: integer
|
||||||
|
region:
|
||||||
|
description: Region is the name of the region in which all of the nodes
|
||||||
|
in the cluster exist. e.g. 'us-east1'.
|
||||||
|
type: string
|
||||||
|
zones:
|
||||||
|
description: Zones are the names of availability zones in which the
|
||||||
|
nodes of the cluster exist, e.g. 'us-east1-a'.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
version: v1alpha1
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
||||||
@@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1beta1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: (unknown)
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: devopsprojects.devops.kubesphere.io
|
name: devopsprojects.devops.kubesphere.io
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
2
config/crds/devops.kubesphere.io_pipelines.yaml
generated
2
config/crds/devops.kubesphere.io_pipelines.yaml
generated
@@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1beta1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: (unknown)
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: pipelines.devops.kubesphere.io
|
name: pipelines.devops.kubesphere.io
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1beta1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: (unknown)
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: s2ibinaries.devops.kubesphere.io
|
name: s2ibinaries.devops.kubesphere.io
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1beta1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: (unknown)
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: s2ibuilders.devops.kubesphere.io
|
name: s2ibuilders.devops.kubesphere.io
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1beta1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: (unknown)
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: s2ibuildertemplates.devops.kubesphere.io
|
name: s2ibuildertemplates.devops.kubesphere.io
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
2
config/crds/devops.kubesphere.io_s2iruns.yaml
generated
2
config/crds/devops.kubesphere.io_s2iruns.yaml
generated
@@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1beta1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: (unknown)
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: s2iruns.devops.kubesphere.io
|
name: s2iruns.devops.kubesphere.io
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
125
config/crds/iam.kubesphere.io_federatedclusterrolebindings.yaml
generated
Normal file
125
config/crds/iam.kubesphere.io_federatedclusterrolebindings.yaml
generated
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
|
creationTimestamp: null
|
||||||
|
name: federatedclusterrolebindings.iam.kubesphere.io
|
||||||
|
spec:
|
||||||
|
group: iam.kubesphere.io
|
||||||
|
names:
|
||||||
|
kind: FederatedClusterRoleBinding
|
||||||
|
listKind: FederatedClusterRoleBindingList
|
||||||
|
plural: federatedclusterrolebindings
|
||||||
|
singular: federatedclusterrolebinding
|
||||||
|
scope: Namespaced
|
||||||
|
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/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:
|
||||||
|
properties:
|
||||||
|
placement:
|
||||||
|
properties:
|
||||||
|
clusterSelector:
|
||||||
|
properties:
|
||||||
|
matchLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
clusters:
|
||||||
|
items:
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
template:
|
||||||
|
properties:
|
||||||
|
roleRef:
|
||||||
|
description: RoleRef contains information that points to the role
|
||||||
|
being used
|
||||||
|
properties:
|
||||||
|
apiGroup:
|
||||||
|
description: APIGroup is the group for the resource being referenced
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: Kind is the type of resource being referenced
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name is the name of resource being referenced
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- apiGroup
|
||||||
|
- kind
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
subjects:
|
||||||
|
items:
|
||||||
|
description: Subject contains a reference to the object or user
|
||||||
|
identities a role binding applies to. This can either hold
|
||||||
|
a direct API object reference, or a value for non-objects such
|
||||||
|
as user and group names.
|
||||||
|
properties:
|
||||||
|
apiGroup:
|
||||||
|
description: APIGroup holds the API group of the referenced
|
||||||
|
subject. Defaults to "" for ServiceAccount subjects. Defaults
|
||||||
|
to "rbac.authorization.k8s.io" for User and Group subjects.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: Kind of object being referenced. Values defined
|
||||||
|
by this API group are "User", "Group", and "ServiceAccount".
|
||||||
|
If the Authorizer does not recognized the kind value, the
|
||||||
|
Authorizer should report an error.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the object being referenced.
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: Namespace of the referenced object. If the object
|
||||||
|
kind is non-namespace, such as "User" or "Group", and this
|
||||||
|
value is not empty the Authorizer should report an error.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- kind
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- roleRef
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- placement
|
||||||
|
- template
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
version: v1alpha2
|
||||||
|
versions:
|
||||||
|
- name: v1alpha2
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
@@ -10,12 +11,12 @@ spec:
|
|||||||
group: network.kubesphere.io
|
group: network.kubesphere.io
|
||||||
names:
|
names:
|
||||||
categories:
|
categories:
|
||||||
- networking
|
- networking
|
||||||
kind: NamespaceNetworkPolicy
|
kind: NamespaceNetworkPolicy
|
||||||
listKind: NamespaceNetworkPolicyList
|
listKind: NamespaceNetworkPolicyList
|
||||||
plural: namespacenetworkpolicies
|
plural: namespacenetworkpolicies
|
||||||
shortNames:
|
shortNames:
|
||||||
- nsnp
|
- nsnp
|
||||||
singular: namespacenetworkpolicy
|
singular: namespacenetworkpolicy
|
||||||
scope: Namespaced
|
scope: Namespaced
|
||||||
validation:
|
validation:
|
||||||
@@ -36,7 +37,8 @@ spec:
|
|||||||
metadata:
|
metadata:
|
||||||
type: object
|
type: object
|
||||||
spec:
|
spec:
|
||||||
description: NetworkPolicySpec provides the specification of a NetworkPolicy
|
description: NamespaceNetworkPolicySpec provides the specification of a
|
||||||
|
NamespaceNetworkPolicy
|
||||||
properties:
|
properties:
|
||||||
egress:
|
egress:
|
||||||
description: List of egress rules to be applied to the selected pods.
|
description: List of egress rules to be applied to the selected pods.
|
||||||
@@ -66,8 +68,8 @@ spec:
|
|||||||
properties:
|
properties:
|
||||||
port:
|
port:
|
||||||
anyOf:
|
anyOf:
|
||||||
- type: integer
|
- type: integer
|
||||||
- type: string
|
- type: string
|
||||||
description: The port on the given protocol. This can either
|
description: The port on the given protocol. This can either
|
||||||
be a numerical or named port on a pod. If this field is
|
be a numerical or named port on a pod. If this field is
|
||||||
not provided, this matches all port names and numbers.
|
not provided, this matches all port names and numbers.
|
||||||
@@ -108,21 +110,14 @@ spec:
|
|||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
required:
|
required:
|
||||||
- cidr
|
- cidr
|
||||||
type: object
|
type: object
|
||||||
namespace:
|
namespace:
|
||||||
description: "Selects Namespaces using cluster-scoped labels.
|
|
||||||
This field follows standard label selector semantics;
|
|
||||||
if present but empty, it selects all namespaces. \n If
|
|
||||||
PodSelector is also set, then the NetworkPolicyPeer as
|
|
||||||
a whole selects the Pods matching PodSelector in the Namespaces
|
|
||||||
selected by NamespaceSelector. Otherwise it selects all
|
|
||||||
Pods in the Namespaces selected by NamespaceSelector."
|
|
||||||
properties:
|
properties:
|
||||||
name:
|
name:
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
type: object
|
type: object
|
||||||
service:
|
service:
|
||||||
properties:
|
properties:
|
||||||
@@ -131,8 +126,8 @@ spec:
|
|||||||
namespace:
|
namespace:
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
- namespace
|
- namespace
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
@@ -182,21 +177,14 @@ spec:
|
|||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
required:
|
required:
|
||||||
- cidr
|
- cidr
|
||||||
type: object
|
type: object
|
||||||
namespace:
|
namespace:
|
||||||
description: "Selects Namespaces using cluster-scoped labels.
|
|
||||||
This field follows standard label selector semantics;
|
|
||||||
if present but empty, it selects all namespaces. \n If
|
|
||||||
PodSelector is also set, then the NetworkPolicyPeer as
|
|
||||||
a whole selects the Pods matching PodSelector in the Namespaces
|
|
||||||
selected by NamespaceSelector. Otherwise it selects all
|
|
||||||
Pods in the Namespaces selected by NamespaceSelector."
|
|
||||||
properties:
|
properties:
|
||||||
name:
|
name:
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
type: object
|
type: object
|
||||||
service:
|
service:
|
||||||
properties:
|
properties:
|
||||||
@@ -205,8 +193,8 @@ spec:
|
|||||||
namespace:
|
namespace:
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
- namespace
|
- namespace
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
@@ -224,8 +212,8 @@ spec:
|
|||||||
properties:
|
properties:
|
||||||
port:
|
port:
|
||||||
anyOf:
|
anyOf:
|
||||||
- type: integer
|
- type: integer
|
||||||
- type: string
|
- type: string
|
||||||
description: The port on the given protocol. This can either
|
description: The port on the given protocol. This can either
|
||||||
be a numerical or named port on a pod. If this field is
|
be a numerical or named port on a pod. If this field is
|
||||||
not provided, this matches all port names and numbers.
|
not provided, this matches all port names and numbers.
|
||||||
@@ -260,9 +248,9 @@ spec:
|
|||||||
type: object
|
type: object
|
||||||
version: v1alpha1
|
version: v1alpha1
|
||||||
versions:
|
versions:
|
||||||
- name: v1alpha1
|
- name: v1alpha1
|
||||||
served: true
|
served: true
|
||||||
storage: true
|
storage: true
|
||||||
status:
|
status:
|
||||||
acceptedNames:
|
acceptedNames:
|
||||||
kind: ""
|
kind: ""
|
||||||
|
|||||||
1605
config/crds/servicemesh.kubesphere.io_servicepolicies.yaml
generated
Normal file
1605
config/crds/servicemesh.kubesphere.io_servicepolicies.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
1166
config/crds/servicemesh.kubesphere.io_strategies.yaml
generated
Normal file
1166
config/crds/servicemesh.kubesphere.io_strategies.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
863
config/crds/servicemesh_v1alpha2_servicepolicy.yaml
generated
863
config/crds/servicemesh_v1alpha2_servicepolicy.yaml
generated
@@ -1,863 +0,0 @@
|
|||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
labels:
|
|
||||||
controller-tools.k8s.io: "1.0"
|
|
||||||
name: servicepolicies.servicemesh.kubesphere.io
|
|
||||||
spec:
|
|
||||||
group: servicemesh.kubesphere.io
|
|
||||||
names:
|
|
||||||
kind: ServicePolicy
|
|
||||||
plural: servicepolicies
|
|
||||||
scope: Namespaced
|
|
||||||
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:
|
|
||||||
selector:
|
|
||||||
description: Label selector for destination rules.
|
|
||||||
type: object
|
|
||||||
template:
|
|
||||||
description: Template used to create a destination rule
|
|
||||||
properties:
|
|
||||||
spec:
|
|
||||||
description: Spec indicates the behavior of a destination rule.
|
|
||||||
properties:
|
|
||||||
host:
|
|
||||||
description: 'REQUIRED. The name of a service from the service
|
|
||||||
registry. Service names are looked up from the platform''s
|
|
||||||
service registry (e.g., Kubernetes services, Consul services,
|
|
||||||
etc.) and from the hosts declared by [ServiceEntries](#ServiceEntry).
|
|
||||||
Rules defined for services that do not exist in the service
|
|
||||||
registry will be ignored. *Note for Kubernetes users*: When
|
|
||||||
short names are used (e.g. "reviews" instead of "reviews.default.svc.cluster.local"),
|
|
||||||
Istio will interpret the short name based on the namespace
|
|
||||||
of the rule, not the service. A rule in the "default" namespace
|
|
||||||
containing a host "reviews will be interpreted as "reviews.default.svc.cluster.local",
|
|
||||||
irrespective of the actual namespace associated with the reviews
|
|
||||||
service. _To avoid potential misconfigurations, it is recommended
|
|
||||||
to always use fully qualified domain names over short names._ Note
|
|
||||||
that the host field applies to both HTTP and TCP services.'
|
|
||||||
type: string
|
|
||||||
subsets:
|
|
||||||
description: One or more named sets that represent individual
|
|
||||||
versions of a service. Traffic policies can be overridden
|
|
||||||
at subset level.
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
labels:
|
|
||||||
description: REQUIRED. Labels apply a filter over the
|
|
||||||
endpoints of a service in the service registry. See
|
|
||||||
route rules for examples of usage.
|
|
||||||
type: object
|
|
||||||
name:
|
|
||||||
description: REQUIRED. Name of the subset. The service
|
|
||||||
name and the subset name can be used for traffic splitting
|
|
||||||
in a route rule.
|
|
||||||
type: string
|
|
||||||
trafficPolicy:
|
|
||||||
description: Traffic policies that apply to this subset.
|
|
||||||
Subsets inherit the traffic policies specified at the
|
|
||||||
DestinationRule level. Settings specified at the subset
|
|
||||||
level will override the corresponding settings specified
|
|
||||||
at the DestinationRule level.
|
|
||||||
properties:
|
|
||||||
connectionPool:
|
|
||||||
description: Settings controlling the volume of connections
|
|
||||||
to an upstream service
|
|
||||||
properties:
|
|
||||||
http:
|
|
||||||
description: HTTP connection pool settings.
|
|
||||||
properties:
|
|
||||||
http1MaxPendingRequests:
|
|
||||||
description: Maximum number of pending HTTP
|
|
||||||
requests to a destination. Default 1024.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
http2MaxRequests:
|
|
||||||
description: Maximum number of requests to
|
|
||||||
a backend. Default 1024.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
maxRequestsPerConnection:
|
|
||||||
description: Maximum number of requests per
|
|
||||||
connection to a backend. Setting this parameter
|
|
||||||
to 1 disables keep alive.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
maxRetries:
|
|
||||||
description: Maximum number of retries that
|
|
||||||
can be outstanding to all hosts in a cluster
|
|
||||||
at a given time. Defaults to 3.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
tcp:
|
|
||||||
description: Settings common to both HTTP and
|
|
||||||
TCP upstream connections.
|
|
||||||
properties:
|
|
||||||
connectTimeout:
|
|
||||||
description: TCP connection timeout.
|
|
||||||
type: string
|
|
||||||
maxConnections:
|
|
||||||
description: Maximum number of HTTP1 /TCP
|
|
||||||
connections to a destination host.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
loadBalancer:
|
|
||||||
description: Settings controlling the load balancer
|
|
||||||
algorithms.
|
|
||||||
properties:
|
|
||||||
consistentHash:
|
|
||||||
properties:
|
|
||||||
httpCookie:
|
|
||||||
description: Hash based on HTTP cookie.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: REQUIRED. Name of the cookie.
|
|
||||||
type: string
|
|
||||||
path:
|
|
||||||
description: Path to set for the cookie.
|
|
||||||
type: string
|
|
||||||
ttl:
|
|
||||||
description: REQUIRED. Lifetime of the
|
|
||||||
cookie.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
- ttl
|
|
||||||
type: object
|
|
||||||
httpHeaderName:
|
|
||||||
description: 'It is required to specify exactly
|
|
||||||
one of the fields as hash key: HttpHeaderName,
|
|
||||||
HttpCookie, or UseSourceIP. Hash based on
|
|
||||||
a specific HTTP header.'
|
|
||||||
type: string
|
|
||||||
minimumRingSize:
|
|
||||||
description: The minimum number of virtual
|
|
||||||
nodes to use for the hash ring. Defaults
|
|
||||||
to 1024. Larger ring sizes result in more
|
|
||||||
granular load distributions. If the number
|
|
||||||
of hosts in the load balancing pool is larger
|
|
||||||
than the ring size, each host will be assigned
|
|
||||||
a single virtual node.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
useSourceIp:
|
|
||||||
description: Hash based on the source IP address.
|
|
||||||
type: boolean
|
|
||||||
type: object
|
|
||||||
simple:
|
|
||||||
description: 'It is required to specify exactly
|
|
||||||
one of the fields: Simple or ConsistentHash'
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
outlierDetection:
|
|
||||||
description: Settings controlling eviction of unhealthy
|
|
||||||
hosts from the load balancing pool
|
|
||||||
properties:
|
|
||||||
baseEjectionTime:
|
|
||||||
description: 'Minimum ejection duration. A host
|
|
||||||
will remain ejected for a period equal to the
|
|
||||||
product of minimum ejection duration and the
|
|
||||||
number of times the host has been ejected. This
|
|
||||||
technique allows the system to automatically
|
|
||||||
increase the ejection period for unhealthy upstream
|
|
||||||
servers. format: 1h/1m/1s/1ms. MUST BE >=1ms.
|
|
||||||
Default is 30s.'
|
|
||||||
type: string
|
|
||||||
consecutiveErrors:
|
|
||||||
description: Number of errors before a host is
|
|
||||||
ejected from the connection pool. Defaults to
|
|
||||||
5. When the upstream host is accessed over HTTP,
|
|
||||||
a 5xx return code qualifies as an error. When
|
|
||||||
the upstream host is accessed over an opaque
|
|
||||||
TCP connection, connect timeouts and connection
|
|
||||||
error/failure events qualify as an error.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
interval:
|
|
||||||
description: 'Time interval between ejection sweep
|
|
||||||
analysis. format: 1h/1m/1s/1ms. MUST BE >=1ms.
|
|
||||||
Default is 10s.'
|
|
||||||
type: string
|
|
||||||
maxEjectionPercent:
|
|
||||||
description: Maximum % of hosts in the load balancing
|
|
||||||
pool for the upstream service that can be ejected.
|
|
||||||
Defaults to 10%.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
portLevelSettings:
|
|
||||||
description: Traffic policies specific to individual
|
|
||||||
ports. Note that port level settings will override
|
|
||||||
the destination-level settings. Traffic settings
|
|
||||||
specified at the destination-level will not be inherited
|
|
||||||
when overridden by port-level settings, i.e. default
|
|
||||||
values will be applied to fields omitted in port-level
|
|
||||||
traffic policies.
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
connectionPool:
|
|
||||||
description: Settings controlling the volume
|
|
||||||
of connections to an upstream service
|
|
||||||
properties:
|
|
||||||
http:
|
|
||||||
description: HTTP connection pool settings.
|
|
||||||
properties:
|
|
||||||
http1MaxPendingRequests:
|
|
||||||
description: Maximum number of pending
|
|
||||||
HTTP requests to a destination. Default
|
|
||||||
1024.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
http2MaxRequests:
|
|
||||||
description: Maximum number of requests
|
|
||||||
to a backend. Default 1024.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
maxRequestsPerConnection:
|
|
||||||
description: Maximum number of requests
|
|
||||||
per connection to a backend. Setting
|
|
||||||
this parameter to 1 disables keep
|
|
||||||
alive.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
maxRetries:
|
|
||||||
description: Maximum number of retries
|
|
||||||
that can be outstanding to all hosts
|
|
||||||
in a cluster at a given time. Defaults
|
|
||||||
to 3.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
tcp:
|
|
||||||
description: Settings common to both HTTP
|
|
||||||
and TCP upstream connections.
|
|
||||||
properties:
|
|
||||||
connectTimeout:
|
|
||||||
description: TCP connection timeout.
|
|
||||||
type: string
|
|
||||||
maxConnections:
|
|
||||||
description: Maximum number of HTTP1
|
|
||||||
/TCP connections to a destination
|
|
||||||
host.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
loadBalancer:
|
|
||||||
description: Settings controlling the load balancer
|
|
||||||
algorithms.
|
|
||||||
properties:
|
|
||||||
consistentHash:
|
|
||||||
properties:
|
|
||||||
httpCookie:
|
|
||||||
description: Hash based on HTTP cookie.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: REQUIRED. Name of the
|
|
||||||
cookie.
|
|
||||||
type: string
|
|
||||||
path:
|
|
||||||
description: Path to set for the
|
|
||||||
cookie.
|
|
||||||
type: string
|
|
||||||
ttl:
|
|
||||||
description: REQUIRED. Lifetime
|
|
||||||
of the cookie.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
- ttl
|
|
||||||
type: object
|
|
||||||
httpHeaderName:
|
|
||||||
description: 'It is required to specify
|
|
||||||
exactly one of the fields as hash
|
|
||||||
key: HttpHeaderName, HttpCookie, or
|
|
||||||
UseSourceIP. Hash based on a specific
|
|
||||||
HTTP header.'
|
|
||||||
type: string
|
|
||||||
minimumRingSize:
|
|
||||||
description: The minimum number of virtual
|
|
||||||
nodes to use for the hash ring. Defaults
|
|
||||||
to 1024. Larger ring sizes result
|
|
||||||
in more granular load distributions.
|
|
||||||
If the number of hosts in the load
|
|
||||||
balancing pool is larger than the
|
|
||||||
ring size, each host will be assigned
|
|
||||||
a single virtual node.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
useSourceIp:
|
|
||||||
description: Hash based on the source
|
|
||||||
IP address.
|
|
||||||
type: boolean
|
|
||||||
type: object
|
|
||||||
simple:
|
|
||||||
description: 'It is required to specify
|
|
||||||
exactly one of the fields: Simple or ConsistentHash'
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
outlierDetection:
|
|
||||||
description: Settings controlling eviction of
|
|
||||||
unhealthy hosts from the load balancing pool
|
|
||||||
properties:
|
|
||||||
baseEjectionTime:
|
|
||||||
description: 'Minimum ejection duration.
|
|
||||||
A host will remain ejected for a period
|
|
||||||
equal to the product of minimum ejection
|
|
||||||
duration and the number of times the host
|
|
||||||
has been ejected. This technique allows
|
|
||||||
the system to automatically increase the
|
|
||||||
ejection period for unhealthy upstream
|
|
||||||
servers. format: 1h/1m/1s/1ms. MUST BE
|
|
||||||
>=1ms. Default is 30s.'
|
|
||||||
type: string
|
|
||||||
consecutiveErrors:
|
|
||||||
description: Number of errors before a host
|
|
||||||
is ejected from the connection pool. Defaults
|
|
||||||
to 5. When the upstream host is accessed
|
|
||||||
over HTTP, a 5xx return code qualifies
|
|
||||||
as an error. When the upstream host is
|
|
||||||
accessed over an opaque TCP connection,
|
|
||||||
connect timeouts and connection error/failure
|
|
||||||
events qualify as an error.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
interval:
|
|
||||||
description: 'Time interval between ejection
|
|
||||||
sweep analysis. format: 1h/1m/1s/1ms.
|
|
||||||
MUST BE >=1ms. Default is 10s.'
|
|
||||||
type: string
|
|
||||||
maxEjectionPercent:
|
|
||||||
description: Maximum % of hosts in the load
|
|
||||||
balancing pool for the upstream service
|
|
||||||
that can be ejected. Defaults to 10%.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
port:
|
|
||||||
description: Specifies the port name or number
|
|
||||||
of a port on the destination service on which
|
|
||||||
this policy is being applied. Names must
|
|
||||||
comply with DNS label syntax (rfc1035) and
|
|
||||||
therefore cannot collide with numbers. If
|
|
||||||
there are multiple ports on a service with
|
|
||||||
the same protocol the names should be of the
|
|
||||||
form <protocol-name>-<DNS label>.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: Valid port name
|
|
||||||
type: string
|
|
||||||
number:
|
|
||||||
description: Valid port number
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
tls:
|
|
||||||
description: TLS related settings for connections
|
|
||||||
to the upstream service.
|
|
||||||
properties:
|
|
||||||
caCertificates:
|
|
||||||
description: 'OPTIONAL: The path to the
|
|
||||||
file containing certificate authority
|
|
||||||
certificates to use in verifying a presented
|
|
||||||
server certificate. If omitted, the proxy
|
|
||||||
will not verify the server''s certificate.
|
|
||||||
Should be empty if mode is `ISTIO_MUTUAL`.'
|
|
||||||
type: string
|
|
||||||
clientCertificate:
|
|
||||||
description: REQUIRED if mode is `MUTUAL`.
|
|
||||||
The path to the file holding the client-side
|
|
||||||
TLS certificate to use. Should be empty
|
|
||||||
if mode is `ISTIO_MUTUAL`.
|
|
||||||
type: string
|
|
||||||
mode:
|
|
||||||
description: 'REQUIRED: Indicates whether
|
|
||||||
connections to this port should be secured
|
|
||||||
using TLS. The value of this field determines
|
|
||||||
how TLS is enforced.'
|
|
||||||
type: string
|
|
||||||
privateKey:
|
|
||||||
description: REQUIRED if mode is `MUTUAL`.
|
|
||||||
The path to the file holding the client's
|
|
||||||
private key. Should be empty if mode is
|
|
||||||
`ISTIO_MUTUAL`.
|
|
||||||
type: string
|
|
||||||
sni:
|
|
||||||
description: SNI string to present to the
|
|
||||||
server during TLS handshake. Should be
|
|
||||||
empty if mode is `ISTIO_MUTUAL`.
|
|
||||||
type: string
|
|
||||||
subjectAltNames:
|
|
||||||
description: A list of alternate names to
|
|
||||||
verify the subject identity in the certificate.
|
|
||||||
If specified, the proxy will verify that
|
|
||||||
the server certificate's subject alt name
|
|
||||||
matches one of the specified values. Should
|
|
||||||
be empty if mode is `ISTIO_MUTUAL`.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
required:
|
|
||||||
- mode
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- port
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
tls:
|
|
||||||
description: TLS related settings for connections
|
|
||||||
to the upstream service.
|
|
||||||
properties:
|
|
||||||
caCertificates:
|
|
||||||
description: 'OPTIONAL: The path to the file containing
|
|
||||||
certificate authority certificates to use in
|
|
||||||
verifying a presented server certificate. If
|
|
||||||
omitted, the proxy will not verify the server''s
|
|
||||||
certificate. Should be empty if mode is `ISTIO_MUTUAL`.'
|
|
||||||
type: string
|
|
||||||
clientCertificate:
|
|
||||||
description: REQUIRED if mode is `MUTUAL`. The
|
|
||||||
path to the file holding the client-side TLS
|
|
||||||
certificate to use. Should be empty if mode
|
|
||||||
is `ISTIO_MUTUAL`.
|
|
||||||
type: string
|
|
||||||
mode:
|
|
||||||
description: 'REQUIRED: Indicates whether connections
|
|
||||||
to this port should be secured using TLS. The
|
|
||||||
value of this field determines how TLS is enforced.'
|
|
||||||
type: string
|
|
||||||
privateKey:
|
|
||||||
description: REQUIRED if mode is `MUTUAL`. The
|
|
||||||
path to the file holding the client's private
|
|
||||||
key. Should be empty if mode is `ISTIO_MUTUAL`.
|
|
||||||
type: string
|
|
||||||
sni:
|
|
||||||
description: SNI string to present to the server
|
|
||||||
during TLS handshake. Should be empty if mode
|
|
||||||
is `ISTIO_MUTUAL`.
|
|
||||||
type: string
|
|
||||||
subjectAltNames:
|
|
||||||
description: A list of alternate names to verify
|
|
||||||
the subject identity in the certificate. If
|
|
||||||
specified, the proxy will verify that the server
|
|
||||||
certificate's subject alt name matches one of
|
|
||||||
the specified values. Should be empty if mode
|
|
||||||
is `ISTIO_MUTUAL`.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
required:
|
|
||||||
- mode
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
- labels
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
trafficPolicy:
|
|
||||||
description: Traffic policies to apply (load balancing policy,
|
|
||||||
connection pool sizes, outlier detection).
|
|
||||||
properties:
|
|
||||||
connectionPool:
|
|
||||||
description: Settings controlling the volume of connections
|
|
||||||
to an upstream service
|
|
||||||
properties:
|
|
||||||
http:
|
|
||||||
description: HTTP connection pool settings.
|
|
||||||
properties:
|
|
||||||
http1MaxPendingRequests:
|
|
||||||
description: Maximum number of pending HTTP requests
|
|
||||||
to a destination. Default 1024.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
http2MaxRequests:
|
|
||||||
description: Maximum number of requests to a backend.
|
|
||||||
Default 1024.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
maxRequestsPerConnection:
|
|
||||||
description: Maximum number of requests per connection
|
|
||||||
to a backend. Setting this parameter to 1 disables
|
|
||||||
keep alive.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
maxRetries:
|
|
||||||
description: Maximum number of retries that can
|
|
||||||
be outstanding to all hosts in a cluster at a
|
|
||||||
given time. Defaults to 3.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
tcp:
|
|
||||||
description: Settings common to both HTTP and TCP upstream
|
|
||||||
connections.
|
|
||||||
properties:
|
|
||||||
connectTimeout:
|
|
||||||
description: TCP connection timeout.
|
|
||||||
type: string
|
|
||||||
maxConnections:
|
|
||||||
description: Maximum number of HTTP1 /TCP connections
|
|
||||||
to a destination host.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
loadBalancer:
|
|
||||||
description: Settings controlling the load balancer algorithms.
|
|
||||||
properties:
|
|
||||||
consistentHash:
|
|
||||||
properties:
|
|
||||||
httpCookie:
|
|
||||||
description: Hash based on HTTP cookie.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: REQUIRED. Name of the cookie.
|
|
||||||
type: string
|
|
||||||
path:
|
|
||||||
description: Path to set for the cookie.
|
|
||||||
type: string
|
|
||||||
ttl:
|
|
||||||
description: REQUIRED. Lifetime of the cookie.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
- ttl
|
|
||||||
type: object
|
|
||||||
httpHeaderName:
|
|
||||||
description: 'It is required to specify exactly
|
|
||||||
one of the fields as hash key: HttpHeaderName,
|
|
||||||
HttpCookie, or UseSourceIP. Hash based on a specific
|
|
||||||
HTTP header.'
|
|
||||||
type: string
|
|
||||||
minimumRingSize:
|
|
||||||
description: The minimum number of virtual nodes
|
|
||||||
to use for the hash ring. Defaults to 1024. Larger
|
|
||||||
ring sizes result in more granular load distributions.
|
|
||||||
If the number of hosts in the load balancing pool
|
|
||||||
is larger than the ring size, each host will be
|
|
||||||
assigned a single virtual node.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
useSourceIp:
|
|
||||||
description: Hash based on the source IP address.
|
|
||||||
type: boolean
|
|
||||||
type: object
|
|
||||||
simple:
|
|
||||||
description: 'It is required to specify exactly one
|
|
||||||
of the fields: Simple or ConsistentHash'
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
outlierDetection:
|
|
||||||
description: Settings controlling eviction of unhealthy
|
|
||||||
hosts from the load balancing pool
|
|
||||||
properties:
|
|
||||||
baseEjectionTime:
|
|
||||||
description: 'Minimum ejection duration. A host will
|
|
||||||
remain ejected for a period equal to the product of
|
|
||||||
minimum ejection duration and the number of times
|
|
||||||
the host has been ejected. This technique allows the
|
|
||||||
system to automatically increase the ejection period
|
|
||||||
for unhealthy upstream servers. format: 1h/1m/1s/1ms.
|
|
||||||
MUST BE >=1ms. Default is 30s.'
|
|
||||||
type: string
|
|
||||||
consecutiveErrors:
|
|
||||||
description: Number of errors before a host is ejected
|
|
||||||
from the connection pool. Defaults to 5. When the
|
|
||||||
upstream host is accessed over HTTP, a 5xx return
|
|
||||||
code qualifies as an error. When the upstream host
|
|
||||||
is accessed over an opaque TCP connection, connect
|
|
||||||
timeouts and connection error/failure events qualify
|
|
||||||
as an error.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
interval:
|
|
||||||
description: 'Time interval between ejection sweep analysis.
|
|
||||||
format: 1h/1m/1s/1ms. MUST BE >=1ms. Default is 10s.'
|
|
||||||
type: string
|
|
||||||
maxEjectionPercent:
|
|
||||||
description: Maximum % of hosts in the load balancing
|
|
||||||
pool for the upstream service that can be ejected.
|
|
||||||
Defaults to 10%.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
portLevelSettings:
|
|
||||||
description: Traffic policies specific to individual ports.
|
|
||||||
Note that port level settings will override the destination-level
|
|
||||||
settings. Traffic settings specified at the destination-level
|
|
||||||
will not be inherited when overridden by port-level settings,
|
|
||||||
i.e. default values will be applied to fields omitted
|
|
||||||
in port-level traffic policies.
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
connectionPool:
|
|
||||||
description: Settings controlling the volume of connections
|
|
||||||
to an upstream service
|
|
||||||
properties:
|
|
||||||
http:
|
|
||||||
description: HTTP connection pool settings.
|
|
||||||
properties:
|
|
||||||
http1MaxPendingRequests:
|
|
||||||
description: Maximum number of pending HTTP
|
|
||||||
requests to a destination. Default 1024.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
http2MaxRequests:
|
|
||||||
description: Maximum number of requests to
|
|
||||||
a backend. Default 1024.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
maxRequestsPerConnection:
|
|
||||||
description: Maximum number of requests per
|
|
||||||
connection to a backend. Setting this parameter
|
|
||||||
to 1 disables keep alive.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
maxRetries:
|
|
||||||
description: Maximum number of retries that
|
|
||||||
can be outstanding to all hosts in a cluster
|
|
||||||
at a given time. Defaults to 3.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
tcp:
|
|
||||||
description: Settings common to both HTTP and
|
|
||||||
TCP upstream connections.
|
|
||||||
properties:
|
|
||||||
connectTimeout:
|
|
||||||
description: TCP connection timeout.
|
|
||||||
type: string
|
|
||||||
maxConnections:
|
|
||||||
description: Maximum number of HTTP1 /TCP
|
|
||||||
connections to a destination host.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
loadBalancer:
|
|
||||||
description: Settings controlling the load balancer
|
|
||||||
algorithms.
|
|
||||||
properties:
|
|
||||||
consistentHash:
|
|
||||||
properties:
|
|
||||||
httpCookie:
|
|
||||||
description: Hash based on HTTP cookie.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: REQUIRED. Name of the cookie.
|
|
||||||
type: string
|
|
||||||
path:
|
|
||||||
description: Path to set for the cookie.
|
|
||||||
type: string
|
|
||||||
ttl:
|
|
||||||
description: REQUIRED. Lifetime of the
|
|
||||||
cookie.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
- ttl
|
|
||||||
type: object
|
|
||||||
httpHeaderName:
|
|
||||||
description: 'It is required to specify exactly
|
|
||||||
one of the fields as hash key: HttpHeaderName,
|
|
||||||
HttpCookie, or UseSourceIP. Hash based on
|
|
||||||
a specific HTTP header.'
|
|
||||||
type: string
|
|
||||||
minimumRingSize:
|
|
||||||
description: The minimum number of virtual
|
|
||||||
nodes to use for the hash ring. Defaults
|
|
||||||
to 1024. Larger ring sizes result in more
|
|
||||||
granular load distributions. If the number
|
|
||||||
of hosts in the load balancing pool is larger
|
|
||||||
than the ring size, each host will be assigned
|
|
||||||
a single virtual node.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
useSourceIp:
|
|
||||||
description: Hash based on the source IP address.
|
|
||||||
type: boolean
|
|
||||||
type: object
|
|
||||||
simple:
|
|
||||||
description: 'It is required to specify exactly
|
|
||||||
one of the fields: Simple or ConsistentHash'
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
outlierDetection:
|
|
||||||
description: Settings controlling eviction of unhealthy
|
|
||||||
hosts from the load balancing pool
|
|
||||||
properties:
|
|
||||||
baseEjectionTime:
|
|
||||||
description: 'Minimum ejection duration. A host
|
|
||||||
will remain ejected for a period equal to the
|
|
||||||
product of minimum ejection duration and the
|
|
||||||
number of times the host has been ejected. This
|
|
||||||
technique allows the system to automatically
|
|
||||||
increase the ejection period for unhealthy upstream
|
|
||||||
servers. format: 1h/1m/1s/1ms. MUST BE >=1ms.
|
|
||||||
Default is 30s.'
|
|
||||||
type: string
|
|
||||||
consecutiveErrors:
|
|
||||||
description: Number of errors before a host is
|
|
||||||
ejected from the connection pool. Defaults to
|
|
||||||
5. When the upstream host is accessed over HTTP,
|
|
||||||
a 5xx return code qualifies as an error. When
|
|
||||||
the upstream host is accessed over an opaque
|
|
||||||
TCP connection, connect timeouts and connection
|
|
||||||
error/failure events qualify as an error.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
interval:
|
|
||||||
description: 'Time interval between ejection sweep
|
|
||||||
analysis. format: 1h/1m/1s/1ms. MUST BE >=1ms.
|
|
||||||
Default is 10s.'
|
|
||||||
type: string
|
|
||||||
maxEjectionPercent:
|
|
||||||
description: Maximum % of hosts in the load balancing
|
|
||||||
pool for the upstream service that can be ejected.
|
|
||||||
Defaults to 10%.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
port:
|
|
||||||
description: Specifies the port name or number of
|
|
||||||
a port on the destination service on which this
|
|
||||||
policy is being applied. Names must comply with
|
|
||||||
DNS label syntax (rfc1035) and therefore cannot
|
|
||||||
collide with numbers. If there are multiple ports
|
|
||||||
on a service with the same protocol the names should
|
|
||||||
be of the form <protocol-name>-<DNS label>.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: Valid port name
|
|
||||||
type: string
|
|
||||||
number:
|
|
||||||
description: Valid port number
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
tls:
|
|
||||||
description: TLS related settings for connections
|
|
||||||
to the upstream service.
|
|
||||||
properties:
|
|
||||||
caCertificates:
|
|
||||||
description: 'OPTIONAL: The path to the file containing
|
|
||||||
certificate authority certificates to use in
|
|
||||||
verifying a presented server certificate. If
|
|
||||||
omitted, the proxy will not verify the server''s
|
|
||||||
certificate. Should be empty if mode is `ISTIO_MUTUAL`.'
|
|
||||||
type: string
|
|
||||||
clientCertificate:
|
|
||||||
description: REQUIRED if mode is `MUTUAL`. The
|
|
||||||
path to the file holding the client-side TLS
|
|
||||||
certificate to use. Should be empty if mode
|
|
||||||
is `ISTIO_MUTUAL`.
|
|
||||||
type: string
|
|
||||||
mode:
|
|
||||||
description: 'REQUIRED: Indicates whether connections
|
|
||||||
to this port should be secured using TLS. The
|
|
||||||
value of this field determines how TLS is enforced.'
|
|
||||||
type: string
|
|
||||||
privateKey:
|
|
||||||
description: REQUIRED if mode is `MUTUAL`. The
|
|
||||||
path to the file holding the client's private
|
|
||||||
key. Should be empty if mode is `ISTIO_MUTUAL`.
|
|
||||||
type: string
|
|
||||||
sni:
|
|
||||||
description: SNI string to present to the server
|
|
||||||
during TLS handshake. Should be empty if mode
|
|
||||||
is `ISTIO_MUTUAL`.
|
|
||||||
type: string
|
|
||||||
subjectAltNames:
|
|
||||||
description: A list of alternate names to verify
|
|
||||||
the subject identity in the certificate. If
|
|
||||||
specified, the proxy will verify that the server
|
|
||||||
certificate's subject alt name matches one of
|
|
||||||
the specified values. Should be empty if mode
|
|
||||||
is `ISTIO_MUTUAL`.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
required:
|
|
||||||
- mode
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- port
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
tls:
|
|
||||||
description: TLS related settings for connections to the
|
|
||||||
upstream service.
|
|
||||||
properties:
|
|
||||||
caCertificates:
|
|
||||||
description: 'OPTIONAL: The path to the file containing
|
|
||||||
certificate authority certificates to use in verifying
|
|
||||||
a presented server certificate. If omitted, the proxy
|
|
||||||
will not verify the server''s certificate. Should
|
|
||||||
be empty if mode is `ISTIO_MUTUAL`.'
|
|
||||||
type: string
|
|
||||||
clientCertificate:
|
|
||||||
description: REQUIRED if mode is `MUTUAL`. The path
|
|
||||||
to the file holding the client-side TLS certificate
|
|
||||||
to use. Should be empty if mode is `ISTIO_MUTUAL`.
|
|
||||||
type: string
|
|
||||||
mode:
|
|
||||||
description: 'REQUIRED: Indicates whether connections
|
|
||||||
to this port should be secured using TLS. The value
|
|
||||||
of this field determines how TLS is enforced.'
|
|
||||||
type: string
|
|
||||||
privateKey:
|
|
||||||
description: REQUIRED if mode is `MUTUAL`. The path
|
|
||||||
to the file holding the client's private key. Should
|
|
||||||
be empty if mode is `ISTIO_MUTUAL`.
|
|
||||||
type: string
|
|
||||||
sni:
|
|
||||||
description: SNI string to present to the server during
|
|
||||||
TLS handshake. Should be empty if mode is `ISTIO_MUTUAL`.
|
|
||||||
type: string
|
|
||||||
subjectAltNames:
|
|
||||||
description: A list of alternate names to verify the
|
|
||||||
subject identity in the certificate. If specified,
|
|
||||||
the proxy will verify that the server certificate's
|
|
||||||
subject alt name matches one of the specified values.
|
|
||||||
Should be empty if mode is `ISTIO_MUTUAL`.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
required:
|
|
||||||
- mode
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- host
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
status:
|
|
||||||
type: object
|
|
||||||
version: v1alpha2
|
|
||||||
status:
|
|
||||||
acceptedNames:
|
|
||||||
kind: ""
|
|
||||||
plural: ""
|
|
||||||
conditions: []
|
|
||||||
storedVersions: []
|
|
||||||
787
config/crds/servicemesh_v1alpha2_strategy.yaml
generated
787
config/crds/servicemesh_v1alpha2_strategy.yaml
generated
@@ -1,787 +0,0 @@
|
|||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
labels:
|
|
||||||
controller-tools.k8s.io: "1.0"
|
|
||||||
name: strategies.servicemesh.kubesphere.io
|
|
||||||
spec:
|
|
||||||
additionalPrinterColumns:
|
|
||||||
- JSONPath: .spec.type
|
|
||||||
description: type of strategy
|
|
||||||
name: Type
|
|
||||||
type: string
|
|
||||||
- JSONPath: .spec.template.spec.hosts
|
|
||||||
description: destination hosts
|
|
||||||
name: Hosts
|
|
||||||
type: string
|
|
||||||
- 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. Populated by the system. Read-only. Null for
|
|
||||||
lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'
|
|
||||||
name: Age
|
|
||||||
type: date
|
|
||||||
group: servicemesh.kubesphere.io
|
|
||||||
names:
|
|
||||||
kind: Strategy
|
|
||||||
plural: strategies
|
|
||||||
scope: Namespaced
|
|
||||||
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:
|
|
||||||
governor:
|
|
||||||
description: Governor version, the version takes control of all incoming
|
|
||||||
traffic label version value
|
|
||||||
type: string
|
|
||||||
principal:
|
|
||||||
description: Principal version, the one as reference version label version
|
|
||||||
value
|
|
||||||
type: string
|
|
||||||
selector:
|
|
||||||
description: Label selector for virtual services.
|
|
||||||
type: object
|
|
||||||
strategyPolicy:
|
|
||||||
description: strategy policy, how the strategy will be applied by the
|
|
||||||
strategy controller
|
|
||||||
type: string
|
|
||||||
template:
|
|
||||||
description: Template describes the virtual service that will be created.
|
|
||||||
properties:
|
|
||||||
metadata:
|
|
||||||
description: Metadata of the virtual services created from this
|
|
||||||
template
|
|
||||||
type: object
|
|
||||||
spec:
|
|
||||||
description: Spec indicates the behavior of a virtual service.
|
|
||||||
properties:
|
|
||||||
gateways:
|
|
||||||
description: The names of gateways and sidecars that should
|
|
||||||
apply these routes. A single VirtualService is used for sidecars
|
|
||||||
inside the mesh as well as for one or more gateways. The selection
|
|
||||||
condition imposed by this field can be overridden using the
|
|
||||||
source field in the match conditions of HTTP/TCP routes. The
|
|
||||||
reserved word "mesh" is used to imply all the sidecars in
|
|
||||||
the mesh. When this field is omitted, the default gateway
|
|
||||||
("mesh") will be used, which would apply the rule to all sidecars
|
|
||||||
in the mesh. If a list of gateway names is provided, the rules
|
|
||||||
will apply only to the gateways. To apply the rules to both
|
|
||||||
gateways and sidecars, specify "mesh" as one of the gateway
|
|
||||||
names.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
hosts:
|
|
||||||
description: REQUIRED. The destination address for traffic captured
|
|
||||||
by this virtual service. Could be a DNS name with wildcard
|
|
||||||
prefix or a CIDR prefix. Depending on the platform, short-names
|
|
||||||
can also be used instead of a FQDN (i.e. has no dots in the
|
|
||||||
name). In such a scenario, the FQDN of the host would be derived
|
|
||||||
based on the underlying platform. For example on Kubernetes,
|
|
||||||
when hosts contains a short name, Istio will interpret the
|
|
||||||
short name based on the namespace of the rule. Thus, when
|
|
||||||
a client namespace applies a rule in the "default" namespace
|
|
||||||
containing a name "reviews, Istio will setup routes to the
|
|
||||||
"reviews.default.svc.cluster.local" service. However, if a
|
|
||||||
different name such as "reviews.sales.svc.cluster.local" is
|
|
||||||
used, it would be treated as a FQDN during virtual host matching.
|
|
||||||
In Consul, a plain service name would be resolved to the FQDN
|
|
||||||
"reviews.service.consul". Note that the hosts field applies
|
|
||||||
to both HTTP and TCP services. Service inside the mesh, i.e.,
|
|
||||||
those found in the service registry, must always be referred
|
|
||||||
to using their alphanumeric names. IP addresses or CIDR prefixes
|
|
||||||
are allowed only for services defined via the Gateway.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
http:
|
|
||||||
description: An ordered list of route rules for HTTP traffic.
|
|
||||||
The first rule matching an incoming request is used.
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
appendHeaders:
|
|
||||||
description: Additional HTTP headers to add before forwarding
|
|
||||||
a request to the destination service.
|
|
||||||
type: object
|
|
||||||
corsPolicy:
|
|
||||||
description: Cross-Origin Resource Sharing policy
|
|
||||||
properties:
|
|
||||||
allowCredentials:
|
|
||||||
description: Indicates whether the caller is allowed
|
|
||||||
to send the actual request (not the preflight) using
|
|
||||||
credentials. Translates to Access-Control-Allow-Credentials
|
|
||||||
header.
|
|
||||||
type: boolean
|
|
||||||
allowHeaders:
|
|
||||||
description: List of HTTP headers that can be used
|
|
||||||
when requesting the resource. Serialized to Access-Control-Allow-Methods
|
|
||||||
header.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
allowMethods:
|
|
||||||
description: List of HTTP methods allowed to access
|
|
||||||
the resource. The content will be serialized into
|
|
||||||
the Access-Control-Allow-Methods header.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
allowOrigin:
|
|
||||||
description: The list of origins that are allowed
|
|
||||||
to perform CORS requests. The content will be serialized
|
|
||||||
into the Access-Control-Allow-Origin header. Wildcard
|
|
||||||
* will allow all origins.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
exposeHeaders:
|
|
||||||
description: A white list of HTTP headers that the
|
|
||||||
browsers are allowed to access. Serialized into
|
|
||||||
Access-Control-Expose-Headers header.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
maxAge:
|
|
||||||
description: Specifies how long the the results of
|
|
||||||
a preflight request can be cached. Translates to
|
|
||||||
the Access-Control-Max-Age header.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
fault:
|
|
||||||
description: Fault injection policy to apply on HTTP traffic.
|
|
||||||
properties:
|
|
||||||
abort:
|
|
||||||
description: Abort Http request attempts and return
|
|
||||||
error codes back to downstream service, giving the
|
|
||||||
impression that the upstream service is faulty.
|
|
||||||
properties:
|
|
||||||
httpStatus:
|
|
||||||
description: REQUIRED. HTTP status code to use
|
|
||||||
to abort the Http request.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
percent:
|
|
||||||
description: Percentage of requests to be aborted
|
|
||||||
with the error code provided (0-100).
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
required:
|
|
||||||
- httpStatus
|
|
||||||
type: object
|
|
||||||
delay:
|
|
||||||
description: Delay requests before forwarding, emulating
|
|
||||||
various failures such as network issues, overloaded
|
|
||||||
upstream service, etc.
|
|
||||||
properties:
|
|
||||||
exponentialDelay:
|
|
||||||
description: (-- Add a delay (based on an exponential
|
|
||||||
function) before forwarding the request. mean
|
|
||||||
delay needed to derive the exponential delay
|
|
||||||
values --)
|
|
||||||
type: string
|
|
||||||
fixedDelay:
|
|
||||||
description: 'REQUIRED. Add a fixed delay before
|
|
||||||
forwarding the request. Format: 1h/1m/1s/1ms.
|
|
||||||
MUST be >=1ms.'
|
|
||||||
type: string
|
|
||||||
percent:
|
|
||||||
description: Percentage of requests on which the
|
|
||||||
delay will be injected (0-100).
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
required:
|
|
||||||
- fixedDelay
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
match:
|
|
||||||
description: Match conditions to be satisfied for the
|
|
||||||
rule to be activated. All conditions inside a single
|
|
||||||
match block have AND semantics, while the list of match
|
|
||||||
blocks have OR semantics. The rule is matched if any
|
|
||||||
one of the match blocks succeed.
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
authority:
|
|
||||||
description: 'HTTP Authority values are case-sensitive
|
|
||||||
and formatted as follows: - `exact: "value"`
|
|
||||||
for exact string match - `prefix: "value"` for
|
|
||||||
prefix-based match - `regex: "value"` for ECMAscript
|
|
||||||
style regex-based match'
|
|
||||||
properties:
|
|
||||||
exact:
|
|
||||||
description: exact string match
|
|
||||||
type: string
|
|
||||||
prefix:
|
|
||||||
description: prefix-based match
|
|
||||||
type: string
|
|
||||||
regex:
|
|
||||||
description: ECMAscript style regex-based match
|
|
||||||
type: string
|
|
||||||
suffix:
|
|
||||||
description: suffix-based match.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
gateways:
|
|
||||||
description: Names of gateways where the rule should
|
|
||||||
be applied to. Gateway names at the top of the
|
|
||||||
VirtualService (if any) are overridden. The gateway
|
|
||||||
match is independent of sourceLabels.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
headers:
|
|
||||||
description: 'The header keys must be lowercase
|
|
||||||
and use hyphen as the separator, e.g. _x-request-id_. Header
|
|
||||||
values are case-sensitive and formatted as follows: -
|
|
||||||
`exact: "value"` for exact string match - `prefix:
|
|
||||||
"value"` for prefix-based match - `regex: "value"`
|
|
||||||
for ECMAscript style regex-based match **Note:**
|
|
||||||
The keys `uri`, `scheme`, `method`, and `authority`
|
|
||||||
will be ignored.'
|
|
||||||
type: object
|
|
||||||
method:
|
|
||||||
description: 'HTTP Method values are case-sensitive
|
|
||||||
and formatted as follows: - `exact: "value"`
|
|
||||||
for exact string match - `prefix: "value"` for
|
|
||||||
prefix-based match - `regex: "value"` for ECMAscript
|
|
||||||
style regex-based match'
|
|
||||||
properties:
|
|
||||||
exact:
|
|
||||||
description: exact string match
|
|
||||||
type: string
|
|
||||||
prefix:
|
|
||||||
description: prefix-based match
|
|
||||||
type: string
|
|
||||||
regex:
|
|
||||||
description: ECMAscript style regex-based match
|
|
||||||
type: string
|
|
||||||
suffix:
|
|
||||||
description: suffix-based match.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
port:
|
|
||||||
description: Specifies the ports on the host that
|
|
||||||
is being addressed. Many services only expose
|
|
||||||
a single port or label ports with the protocols
|
|
||||||
they support, in these cases it is not required
|
|
||||||
to explicitly select the port.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
scheme:
|
|
||||||
description: 'URI Scheme values are case-sensitive
|
|
||||||
and formatted as follows: - `exact: "value"`
|
|
||||||
for exact string match - `prefix: "value"` for
|
|
||||||
prefix-based match - `regex: "value"` for ECMAscript
|
|
||||||
style regex-based match'
|
|
||||||
properties:
|
|
||||||
exact:
|
|
||||||
description: exact string match
|
|
||||||
type: string
|
|
||||||
prefix:
|
|
||||||
description: prefix-based match
|
|
||||||
type: string
|
|
||||||
regex:
|
|
||||||
description: ECMAscript style regex-based match
|
|
||||||
type: string
|
|
||||||
suffix:
|
|
||||||
description: suffix-based match.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
sourceLabels:
|
|
||||||
description: One or more labels that constrain the
|
|
||||||
applicability of a rule to workloads with the
|
|
||||||
given labels. If the VirtualService has a list
|
|
||||||
of gateways specified at the top, it should include
|
|
||||||
the reserved gateway `mesh` in order for this
|
|
||||||
field to be applicable.
|
|
||||||
type: object
|
|
||||||
uri:
|
|
||||||
description: 'URI to match values are case-sensitive
|
|
||||||
and formatted as follows: - `exact: "value"`
|
|
||||||
for exact string match - `prefix: "value"` for
|
|
||||||
prefix-based match - `regex: "value"` for ECMAscript
|
|
||||||
style regex-based match'
|
|
||||||
properties:
|
|
||||||
exact:
|
|
||||||
description: exact string match
|
|
||||||
type: string
|
|
||||||
prefix:
|
|
||||||
description: prefix-based match
|
|
||||||
type: string
|
|
||||||
regex:
|
|
||||||
description: ECMAscript style regex-based match
|
|
||||||
type: string
|
|
||||||
suffix:
|
|
||||||
description: suffix-based match.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
mirror:
|
|
||||||
description: Mirror HTTP traffic to a another destination
|
|
||||||
in addition to forwarding the requests to the intended
|
|
||||||
destination. Mirrored traffic is on a best effort basis
|
|
||||||
where the sidecar/gateway will not wait for the mirrored
|
|
||||||
cluster to respond before returning the response from
|
|
||||||
the original destination. Statistics will be generated
|
|
||||||
for the mirrored destination.
|
|
||||||
properties:
|
|
||||||
host:
|
|
||||||
description: 'REQUIRED. The name of a service from
|
|
||||||
the service registry. Service names are looked up
|
|
||||||
from the platform''s service registry (e.g., Kubernetes
|
|
||||||
services, Consul services, etc.) and from the hosts
|
|
||||||
declared by [ServiceEntry](#ServiceEntry). Traffic
|
|
||||||
forwarded to destinations that are not found in
|
|
||||||
either of the two, will be dropped. *Note for Kubernetes
|
|
||||||
users*: When short names are used (e.g. "reviews"
|
|
||||||
instead of "reviews.default.svc.cluster.local"),
|
|
||||||
Istio will interpret the short name based on the
|
|
||||||
namespace of the rule, not the service. A rule in
|
|
||||||
the "default" namespace containing a host "reviews
|
|
||||||
will be interpreted as "reviews.default.svc.cluster.local",
|
|
||||||
irrespective of the actual namespace associated
|
|
||||||
with the reviews service. _To avoid potential misconfigurations,
|
|
||||||
it is recommended to always use fully qualified
|
|
||||||
domain names over short names._'
|
|
||||||
type: string
|
|
||||||
port:
|
|
||||||
description: Specifies the port on the host that is
|
|
||||||
being addressed. If a service exposes only a single
|
|
||||||
port it is not required to explicitly select the
|
|
||||||
port.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: Valid port name
|
|
||||||
type: string
|
|
||||||
number:
|
|
||||||
description: Valid port number
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
subset:
|
|
||||||
description: The name of a subset within the service.
|
|
||||||
Applicable only to services within the mesh. The
|
|
||||||
subset must be defined in a corresponding DestinationRule.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- host
|
|
||||||
type: object
|
|
||||||
redirect:
|
|
||||||
description: A http rule can either redirect or forward
|
|
||||||
(default) traffic. If traffic passthrough option is
|
|
||||||
specified in the rule, route/redirect will be ignored.
|
|
||||||
The redirect primitive can be used to send a HTTP 302
|
|
||||||
redirect to a different URI or Authority.
|
|
||||||
properties:
|
|
||||||
authority:
|
|
||||||
description: On a redirect, overwrite the Authority/Host
|
|
||||||
portion of the URL with this value.
|
|
||||||
type: string
|
|
||||||
uri:
|
|
||||||
description: On a redirect, overwrite the Path portion
|
|
||||||
of the URL with this value. Note that the entire
|
|
||||||
path will be replaced, irrespective of the request
|
|
||||||
URI being matched as an exact path or prefix.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
removeResponseHeaders:
|
|
||||||
description: Http headers to remove before returning the
|
|
||||||
response to the caller
|
|
||||||
type: object
|
|
||||||
retries:
|
|
||||||
description: Retry policy for HTTP requests.
|
|
||||||
properties:
|
|
||||||
attempts:
|
|
||||||
description: REQUIRED. Number of retries for a given
|
|
||||||
request. The interval between retries will be determined
|
|
||||||
automatically (25ms+). Actual number of retries
|
|
||||||
attempted depends on the httpReqTimeout.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
perTryTimeout:
|
|
||||||
description: 'Timeout per retry attempt for a given
|
|
||||||
request. format: 1h/1m/1s/1ms. MUST BE >=1ms.'
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- attempts
|
|
||||||
- perTryTimeout
|
|
||||||
type: object
|
|
||||||
rewrite:
|
|
||||||
description: Rewrite HTTP URIs and Authority headers.
|
|
||||||
Rewrite cannot be used with Redirect primitive. Rewrite
|
|
||||||
will be performed before forwarding.
|
|
||||||
properties:
|
|
||||||
authority:
|
|
||||||
description: rewrite the Authority/Host header with
|
|
||||||
this value.
|
|
||||||
type: string
|
|
||||||
uri:
|
|
||||||
description: rewrite the path (or the prefix) portion
|
|
||||||
of the URI with this value. If the original URI
|
|
||||||
was matched based on prefix, the value provided
|
|
||||||
in this field will replace the corresponding matched
|
|
||||||
prefix.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
route:
|
|
||||||
description: A http rule can either redirect or forward
|
|
||||||
(default) traffic. The forwarding target can be one
|
|
||||||
of several versions of a service (see glossary in beginning
|
|
||||||
of document). Weights associated with the service version
|
|
||||||
determine the proportion of traffic it receives.
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
destination:
|
|
||||||
description: REQUIRED. Destination uniquely identifies
|
|
||||||
the instances of a service to which the request/connection
|
|
||||||
should be forwarded to.
|
|
||||||
properties:
|
|
||||||
host:
|
|
||||||
description: 'REQUIRED. The name of a service
|
|
||||||
from the service registry. Service names are
|
|
||||||
looked up from the platform''s service registry
|
|
||||||
(e.g., Kubernetes services, Consul services,
|
|
||||||
etc.) and from the hosts declared by [ServiceEntry](#ServiceEntry).
|
|
||||||
Traffic forwarded to destinations that are
|
|
||||||
not found in either of the two, will be dropped. *Note
|
|
||||||
for Kubernetes users*: When short names are
|
|
||||||
used (e.g. "reviews" instead of "reviews.default.svc.cluster.local"),
|
|
||||||
Istio will interpret the short name based
|
|
||||||
on the namespace of the rule, not the service.
|
|
||||||
A rule in the "default" namespace containing
|
|
||||||
a host "reviews will be interpreted as "reviews.default.svc.cluster.local",
|
|
||||||
irrespective of the actual namespace associated
|
|
||||||
with the reviews service. _To avoid potential
|
|
||||||
misconfigurations, it is recommended to always
|
|
||||||
use fully qualified domain names over short
|
|
||||||
names._'
|
|
||||||
type: string
|
|
||||||
port:
|
|
||||||
description: Specifies the port on the host
|
|
||||||
that is being addressed. If a service exposes
|
|
||||||
only a single port it is not required to explicitly
|
|
||||||
select the port.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: Valid port name
|
|
||||||
type: string
|
|
||||||
number:
|
|
||||||
description: Valid port number
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
subset:
|
|
||||||
description: The name of a subset within the
|
|
||||||
service. Applicable only to services within
|
|
||||||
the mesh. The subset must be defined in a
|
|
||||||
corresponding DestinationRule.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- host
|
|
||||||
type: object
|
|
||||||
weight:
|
|
||||||
description: REQUIRED. The proportion of traffic
|
|
||||||
to be forwarded to the service version. (0-100).
|
|
||||||
Sum of weights across destinations SHOULD BE ==
|
|
||||||
100. If there is only destination in a rule, the
|
|
||||||
weight value is assumed to be 100.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
required:
|
|
||||||
- destination
|
|
||||||
- weight
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
timeout:
|
|
||||||
description: Timeout for HTTP requests.
|
|
||||||
type: string
|
|
||||||
websocketUpgrade:
|
|
||||||
description: Indicates that a HTTP/1.1 client connection
|
|
||||||
to this particular route should be allowed (and expected)
|
|
||||||
to upgrade to a WebSocket connection. The default is
|
|
||||||
false. Istio's reference sidecar implementation (Envoy)
|
|
||||||
expects the first request to this route to contain the
|
|
||||||
WebSocket upgrade headers. Otherwise, the request will
|
|
||||||
be rejected. Note that Websocket allows secondary protocol
|
|
||||||
negotiation which may then be subject to further routing
|
|
||||||
rules based on the protocol selected.
|
|
||||||
type: boolean
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
tcp:
|
|
||||||
description: An ordered list of route rules for TCP traffic.
|
|
||||||
The first rule matching an incoming request is used.
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
match:
|
|
||||||
description: Match conditions to be satisfied for the
|
|
||||||
rule to be activated. All conditions inside a single
|
|
||||||
match block have AND semantics, while the list of match
|
|
||||||
blocks have OR semantics. The rule is matched if any
|
|
||||||
one of the match blocks succeed.
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
destinationSubnets:
|
|
||||||
description: IPv4 or IPv6 ip address of destination
|
|
||||||
with optional subnet. E.g., a.b.c.d/xx form or
|
|
||||||
just a.b.c.d.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
gateways:
|
|
||||||
description: Names of gateways where the rule should
|
|
||||||
be applied to. Gateway names at the top of the
|
|
||||||
VirtualService (if any) are overridden. The gateway
|
|
||||||
match is independent of sourceLabels.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
port:
|
|
||||||
description: Specifies the port on the host that
|
|
||||||
is being addressed. Many services only expose
|
|
||||||
a single port or label ports with the protocols
|
|
||||||
they support, in these cases it is not required
|
|
||||||
to explicitly select the port.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
sourceLabels:
|
|
||||||
description: One or more labels that constrain the
|
|
||||||
applicability of a rule to workloads with the
|
|
||||||
given labels. If the VirtualService has a list
|
|
||||||
of gateways specified at the top, it should include
|
|
||||||
the reserved gateway `mesh` in order for this
|
|
||||||
field to be applicable.
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
route:
|
|
||||||
description: The destinations to which the connection
|
|
||||||
should be forwarded to. Weights must add to 100%.
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
destination:
|
|
||||||
description: REQUIRED. Destination uniquely identifies
|
|
||||||
the instances of a service to which the request/connection
|
|
||||||
should be forwarded to.
|
|
||||||
properties:
|
|
||||||
host:
|
|
||||||
description: 'REQUIRED. The name of a service
|
|
||||||
from the service registry. Service names are
|
|
||||||
looked up from the platform''s service registry
|
|
||||||
(e.g., Kubernetes services, Consul services,
|
|
||||||
etc.) and from the hosts declared by [ServiceEntry](#ServiceEntry).
|
|
||||||
Traffic forwarded to destinations that are
|
|
||||||
not found in either of the two, will be dropped. *Note
|
|
||||||
for Kubernetes users*: When short names are
|
|
||||||
used (e.g. "reviews" instead of "reviews.default.svc.cluster.local"),
|
|
||||||
Istio will interpret the short name based
|
|
||||||
on the namespace of the rule, not the service.
|
|
||||||
A rule in the "default" namespace containing
|
|
||||||
a host "reviews will be interpreted as "reviews.default.svc.cluster.local",
|
|
||||||
irrespective of the actual namespace associated
|
|
||||||
with the reviews service. _To avoid potential
|
|
||||||
misconfigurations, it is recommended to always
|
|
||||||
use fully qualified domain names over short
|
|
||||||
names._'
|
|
||||||
type: string
|
|
||||||
port:
|
|
||||||
description: Specifies the port on the host
|
|
||||||
that is being addressed. If a service exposes
|
|
||||||
only a single port it is not required to explicitly
|
|
||||||
select the port.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: Valid port name
|
|
||||||
type: string
|
|
||||||
number:
|
|
||||||
description: Valid port number
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
subset:
|
|
||||||
description: The name of a subset within the
|
|
||||||
service. Applicable only to services within
|
|
||||||
the mesh. The subset must be defined in a
|
|
||||||
corresponding DestinationRule.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- host
|
|
||||||
type: object
|
|
||||||
weight:
|
|
||||||
description: REQUIRED. The proportion of traffic
|
|
||||||
to be forwarded to the service version. (0-100).
|
|
||||||
Sum of weights across destinations SHOULD BE ==
|
|
||||||
100. If there is only destination in a rule, the
|
|
||||||
weight value is assumed to be 100.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
required:
|
|
||||||
- destination
|
|
||||||
- weight
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
required:
|
|
||||||
- match
|
|
||||||
- route
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
tls:
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
match:
|
|
||||||
description: REQUIRED. Match conditions to be satisfied
|
|
||||||
for the rule to be activated. All conditions inside
|
|
||||||
a single match block have AND semantics, while the list
|
|
||||||
of match blocks have OR semantics. The rule is matched
|
|
||||||
if any one of the match blocks succeed.
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
destinationSubnets:
|
|
||||||
description: IPv4 or IPv6 ip addresses of destination
|
|
||||||
with optional subnet. E.g., a.b.c.d/xx form or
|
|
||||||
just a.b.c.d.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
gateways:
|
|
||||||
description: Names of gateways where the rule should
|
|
||||||
be applied to. Gateway names at the top of the
|
|
||||||
VirtualService (if any) are overridden. The gateway
|
|
||||||
match is independent of sourceLabels.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
port:
|
|
||||||
description: Specifies the port on the host that
|
|
||||||
is being addressed. Many services only expose
|
|
||||||
a single port or label ports with the protocols
|
|
||||||
they support, in these cases it is not required
|
|
||||||
to explicitly select the port.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
sniHosts:
|
|
||||||
description: REQUIRED. SNI (server name indicator)
|
|
||||||
to match on. Wildcard prefixes can be used in
|
|
||||||
the SNI value, e.g., *.com will match foo.example.com
|
|
||||||
as well as example.com. An SNI value must be a
|
|
||||||
subset (i.e., fall within the domain) of the corresponding
|
|
||||||
virtual service's hosts
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
sourceLabels:
|
|
||||||
description: One or more labels that constrain the
|
|
||||||
applicability of a rule to workloads with the
|
|
||||||
given labels. If the VirtualService has a list
|
|
||||||
of gateways specified at the top, it should include
|
|
||||||
the reserved gateway `mesh` in order for this
|
|
||||||
field to be applicable.
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- sniHosts
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
route:
|
|
||||||
description: The destination to which the connection should
|
|
||||||
be forwarded to.
|
|
||||||
items:
|
|
||||||
properties:
|
|
||||||
destination:
|
|
||||||
description: REQUIRED. Destination uniquely identifies
|
|
||||||
the instances of a service to which the request/connection
|
|
||||||
should be forwarded to.
|
|
||||||
properties:
|
|
||||||
host:
|
|
||||||
description: 'REQUIRED. The name of a service
|
|
||||||
from the service registry. Service names are
|
|
||||||
looked up from the platform''s service registry
|
|
||||||
(e.g., Kubernetes services, Consul services,
|
|
||||||
etc.) and from the hosts declared by [ServiceEntry](#ServiceEntry).
|
|
||||||
Traffic forwarded to destinations that are
|
|
||||||
not found in either of the two, will be dropped. *Note
|
|
||||||
for Kubernetes users*: When short names are
|
|
||||||
used (e.g. "reviews" instead of "reviews.default.svc.cluster.local"),
|
|
||||||
Istio will interpret the short name based
|
|
||||||
on the namespace of the rule, not the service.
|
|
||||||
A rule in the "default" namespace containing
|
|
||||||
a host "reviews will be interpreted as "reviews.default.svc.cluster.local",
|
|
||||||
irrespective of the actual namespace associated
|
|
||||||
with the reviews service. _To avoid potential
|
|
||||||
misconfigurations, it is recommended to always
|
|
||||||
use fully qualified domain names over short
|
|
||||||
names._'
|
|
||||||
type: string
|
|
||||||
port:
|
|
||||||
description: Specifies the port on the host
|
|
||||||
that is being addressed. If a service exposes
|
|
||||||
only a single port it is not required to explicitly
|
|
||||||
select the port.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: Valid port name
|
|
||||||
type: string
|
|
||||||
number:
|
|
||||||
description: Valid port number
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
subset:
|
|
||||||
description: The name of a subset within the
|
|
||||||
service. Applicable only to services within
|
|
||||||
the mesh. The subset must be defined in a
|
|
||||||
corresponding DestinationRule.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- host
|
|
||||||
type: object
|
|
||||||
weight:
|
|
||||||
description: REQUIRED. The proportion of traffic
|
|
||||||
to be forwarded to the service version. (0-100).
|
|
||||||
Sum of weights across destinations SHOULD BE ==
|
|
||||||
100. If there is only destination in a rule, the
|
|
||||||
weight value is assumed to be 100.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
required:
|
|
||||||
- destination
|
|
||||||
- weight
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
required:
|
|
||||||
- match
|
|
||||||
- route
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
required:
|
|
||||||
- hosts
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
type:
|
|
||||||
description: Strategy type
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
status:
|
|
||||||
type: object
|
|
||||||
version: v1alpha2
|
|
||||||
status:
|
|
||||||
acceptedNames:
|
|
||||||
kind: ""
|
|
||||||
plural: ""
|
|
||||||
conditions: []
|
|
||||||
storedVersions: []
|
|
||||||
@@ -128,6 +128,11 @@ type ClusterStatus struct {
|
|||||||
// Region is the name of the region in which all of the nodes in the cluster exist. e.g. 'us-east1'.
|
// Region is the name of the region in which all of the nodes in the cluster exist. e.g. 'us-east1'.
|
||||||
// +optional
|
// +optional
|
||||||
Region *string `json:"region,omitempty"`
|
Region *string `json:"region,omitempty"`
|
||||||
|
|
||||||
|
// Configz is status of components enabled in the member cluster. This is synchronized with member cluster
|
||||||
|
// every amount of time, like 5 minutes.
|
||||||
|
// +optional
|
||||||
|
Configz map[string]bool `json:"configz,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// +genclient
|
// +genclient
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// +build !ignore_autogenerated
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -136,6 +136,13 @@ func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus) {
|
|||||||
*out = new(string)
|
*out = new(string)
|
||||||
**out = **in
|
**out = **in
|
||||||
}
|
}
|
||||||
|
if in.Configz != nil {
|
||||||
|
in, out := &in.Configz, &out.Configz
|
||||||
|
*out = make(map[string]bool, len(*in))
|
||||||
|
for key, val := range *in {
|
||||||
|
(*out)[key] = val
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterStatus.
|
||||||
|
|||||||
14
pkg/apis/network/v1alpha1/zz_generated.deepcopy.go
generated
14
pkg/apis/network/v1alpha1/zz_generated.deepcopy.go
generated
@@ -1,7 +1,7 @@
|
|||||||
// +build !ignore_autogenerated
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -16,12 +16,12 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
// Code generated by controller-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
v1 "k8s.io/api/networking/v1"
|
"k8s.io/api/networking/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -31,7 +31,6 @@ func (in *NamespaceNetworkPolicy) DeepCopyInto(out *NamespaceNetworkPolicy) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceNetworkPolicy.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceNetworkPolicy.
|
||||||
@@ -64,7 +63,6 @@ func (in *NamespaceNetworkPolicyList) DeepCopyInto(out *NamespaceNetworkPolicyLi
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceNetworkPolicyList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceNetworkPolicyList.
|
||||||
@@ -107,7 +105,6 @@ func (in *NamespaceNetworkPolicySpec) DeepCopyInto(out *NamespaceNetworkPolicySp
|
|||||||
*out = make([]v1.PolicyType, len(*in))
|
*out = make([]v1.PolicyType, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceNetworkPolicySpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceNetworkPolicySpec.
|
||||||
@@ -123,7 +120,6 @@ func (in *NamespaceNetworkPolicySpec) DeepCopy() *NamespaceNetworkPolicySpec {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *NamespaceSelector) DeepCopyInto(out *NamespaceSelector) {
|
func (in *NamespaceSelector) DeepCopyInto(out *NamespaceSelector) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceSelector.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceSelector.
|
||||||
@@ -153,7 +149,6 @@ func (in *NetworkPolicyEgressRule) DeepCopyInto(out *NetworkPolicyEgressRule) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyEgressRule.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyEgressRule.
|
||||||
@@ -183,7 +178,6 @@ func (in *NetworkPolicyIngressRule) DeepCopyInto(out *NetworkPolicyIngressRule)
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyIngressRule.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyIngressRule.
|
||||||
@@ -214,7 +208,6 @@ func (in *NetworkPolicyPeer) DeepCopyInto(out *NetworkPolicyPeer) {
|
|||||||
*out = new(ServiceSelector)
|
*out = new(ServiceSelector)
|
||||||
**out = **in
|
**out = **in
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyPeer.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyPeer.
|
||||||
@@ -230,7 +223,6 @@ func (in *NetworkPolicyPeer) DeepCopy() *NetworkPolicyPeer {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *ServiceSelector) DeepCopyInto(out *ServiceSelector) {
|
func (in *ServiceSelector) DeepCopyInto(out *ServiceSelector) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceSelector.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceSelector.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// +build !ignore_autogenerated
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// +build !ignore_autogenerated
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// +build !ignore_autogenerated
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -94,10 +94,8 @@ type Config struct {
|
|||||||
MultiClusterOptions *multicluster.Options `json:"multicluster,omitempty" yaml:"multicluster,omitempty" mapstructure:"multicluster"`
|
MultiClusterOptions *multicluster.Options `json:"multicluster,omitempty" yaml:"multicluster,omitempty" mapstructure:"multicluster"`
|
||||||
EventsOptions *eventsclient.Options `json:"events,omitempty" yaml:"events,omitempty" mapstructure:"events"`
|
EventsOptions *eventsclient.Options `json:"events,omitempty" yaml:"events,omitempty" mapstructure:"events"`
|
||||||
AuditingOptions *auditingclient.Options `json:"auditing,omitempty" yaml:"auditing,omitempty" mapstructure:"auditing"`
|
AuditingOptions *auditingclient.Options `json:"auditing,omitempty" yaml:"auditing,omitempty" mapstructure:"auditing"`
|
||||||
// Options used for enabling components, not actually used now. Once we switch Alerting/Notification API to kubesphere,
|
AlertingOptions *alerting.Options `json:"alerting,omitempty" yaml:"alerting,omitempty" mapstructure:"alerting"`
|
||||||
// we can add these options to kubesphere command lines
|
NotificationOptions *notification.Options `json:"notification,omitempty" yaml:"notification,omitempty" mapstructure:"notification"`
|
||||||
AlertingOptions *alerting.Options `json:"alerting,omitempty" yaml:"alerting,omitempty" mapstructure:"alerting"`
|
|
||||||
NotificationOptions *notification.Options `json:"notification,omitempty" yaml:"notification,omitempty" mapstructure:"notification"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// newConfig creates a default non-empty Config
|
// newConfig creates a default non-empty Config
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/apimachinery/pkg/util/net"
|
||||||
"k8s.io/apimachinery/pkg/util/proxy"
|
"k8s.io/apimachinery/pkg/util/proxy"
|
||||||
"k8s.io/apiserver/pkg/endpoints/handlers/responsewriters"
|
"k8s.io/apiserver/pkg/endpoints/handlers/responsewriters"
|
||||||
"k8s.io/client-go/rest"
|
"k8s.io/client-go/rest"
|
||||||
@@ -174,6 +175,21 @@ func (c *clusterDispatch) getInnerCluster(name string) *innerCluster {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// copy from https://github.com/kubernetes/apimachinery/blob/master/pkg/util/proxy/dial.go
|
||||||
|
func supportsHTTP11(nextProtos []string) bool {
|
||||||
|
if len(nextProtos) == 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, proto := range nextProtos {
|
||||||
|
if proto == "http/1.1" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func (c *clusterDispatch) updateInnerClusters(obj interface{}) {
|
func (c *clusterDispatch) updateInnerClusters(obj interface{}) {
|
||||||
cluster := obj.(*clusterv1alpha1.Cluster)
|
cluster := obj.(*clusterv1alpha1.Cluster)
|
||||||
|
|
||||||
@@ -205,6 +221,15 @@ func (c *clusterDispatch) updateInnerClusters(obj interface{}) {
|
|||||||
transport, err := rest.TransportFor(clusterConfig)
|
transport, err := rest.TransportFor(clusterConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Create transport failed, %v", err)
|
klog.Errorf("Create transport failed, %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
tlsConfig, err := net.TLSClientConfig(transport)
|
||||||
|
if err == nil {
|
||||||
|
// since http2 doesn't support websocket, we need to disable http2 when using websocket
|
||||||
|
if supportsHTTP11(tlsConfig.NextProtos) {
|
||||||
|
tlsConfig.NextProtos = []string{"http/1.1"}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
c.mutex.Lock()
|
c.mutex.Lock()
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2019 The KubeSphere Authors.
|
Copyright 2020 The KubeSphere Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user