@alauda-fe/common
Version:
Alauda frontend team common codes.
429 lines • 26.9 kB
JavaScript
/**
* Kubernetes 资源的内置 YAML 示例
* 按照 apiVersion.kind 的格式组织
*/
export const BUILT_IN_YAML_EXAMPLES = {
'apps/v1.Deployment': [
{
title: 'Basic Deployment',
description: 'A basic deployment example with nginx container',
yaml: `apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx:1.7.9
name: nginx
ports:
- containerPort: 80
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault`,
},
],
'v1.ConfigMap': [
{
title: 'Basic ConfigMap',
description: 'A basic ConfigMap example with properties and file data',
yaml: `apiVersion: v1
kind: ConfigMap
metadata:
name: example
namespace: default
data:
example.property.1: hello
example.property.2: world
example.property.file: |-
property.1=value-1
property.2=value-2
property.3=value-3`,
},
],
'batch/v1.CronJob': [
{
title: 'Basic CronJob',
description: 'A basic CronJob example that runs daily',
yaml: `apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
jobTemplate:
metadata:
labels:
cronjob.cpaas.io/name: hello
spec:
template:
metadata:
labels:
cronjob.cpaas.io/name: hello
spec:
containers:
- args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
image: busybox
name: hello
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
restartPolicy: Never
schedule: "*/1 * * * *"`,
},
],
'v1.PersistentVolume': [
{
title: 'Basic PersistentVolume',
description: 'A basic PersistentVolume example with NFS storage',
yaml: `apiVersion: v1
kind: PersistentVolume
metadata:
name: example
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: slow
nfs:
path: /tmp
server: 172.17.0.2`,
},
],
'autoscaling/v2.HorizontalPodAutoscaler': [
{
title: 'Basic HorizontalPodAutoscaler',
description: 'A basic HPA example with CPU utilization target',
yaml: `apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: example
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: example
minReplicas: 1
maxReplicas: 3
metrics:
- type: Resource
resource:
name: cpu
target:
averageUtilization: 50
type: Utilization`,
},
],
'apps/v1.DaemonSet': [
{
title: 'Basic DaemonSet',
description: 'A basic DaemonSet example with nginx container',
yaml: `apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
labels:
k8s-app: fluentd-logging
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
tolerations:
- key: node-role.kubernetes.io/control-plane
operator: Exists
effect: NoSchedule
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule
containers:
- name: fluentd-elasticsearch
image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
resources:
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
volumeMounts:
- name: varlog
mountPath: /var/log
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 1000
seccompProfile:
type: RuntimeDefault
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
emptyDir: {}`,
},
],
'v1.PersistentVolumeClaim': [
{
title: 'Basic PersistentVolumeClaim',
description: 'A basic PVC example requesting 1Gi storage',
yaml: `apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 1Gi`,
},
],
'v1.ResourceQuota': [
{
title: 'Compute ResourceQuota',
description: 'A ResourceQuota example for compute resources',
yaml: `apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-quota
namespace:
spec:
hard:
requests.cpu: '1'
requests.memory: 1Gi
limits.cpu: '2'
limits.memory: 2Gi`,
},
{
title: 'Storage Class ResourceQuota',
description: 'A ResourceQuota example for storage class specific quotas',
yaml: `apiVersion: v1
kind: ResourceQuota
metadata:
name: storage-class-quota
namespace:
spec:
hard:
requests.storage: 100Gi
persistentvolumeclaims: '100'
# For quota specific to a storage class, the storage class must have the same name
gold.storage-class.kubernetes.io/requests.storage: 3Gi
gold.storage-class.kubernetes.io/persistentvolumeclaims: '5'
silver.storage-class.kubernetes.io/requests.storage: 2Gi
silver.storage-class.kubernetes.io/persistentvolumeclaims: '3'
bronze.storage-class.kubernetes.io/requests.storage: 1Gi
bronze.storage-class.kubernetes.io/persistentvolumeclaims: '1'`,
},
{
title: 'Object Counts ResourceQuota',
description: 'A ResourceQuota example for object count limits',
yaml: `apiVersion: v1
kind: ResourceQuota
metadata:
name: object-counts
namespace:
spec:
hard:
configmaps: "10"
persistentvolumeclaims: "4"
replicationcontrollers: "20"
secrets: "10"
services: "10"
services.loadbalancers: "2"`,
},
],
'v1.LimitRange': [
{
title: 'Memory LimitRange',
description: 'A LimitRange example for container memory limits',
yaml: `apiVersion: v1
kind: LimitRange
metadata:
name: mem-limit-range
spec:
limits:
- default:
memory: 512Mi
defaultRequest:
memory: 256Mi
type: Container`,
},
],
'apps/v1.StatefulSet': [
{
title: 'Basic StatefulSet',
description: 'A basic StatefulSet example with persistent storage',
yaml: `apiVersion: apps/v1
kind: StatefulSet
metadata:
name: example
namespace: consolesamples-ns1
spec:
replicas: 3
selector:
matchLabels:
app: httpd
serviceName: httpd
template:
metadata:
labels:
app: httpd
spec:
containers:
- image: nginx:1.7.9
name: httpd
ports:
- containerPort: 8080
name: web
volumeMounts:
- mountPath: /var/www/html
name: www
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
terminationGracePeriodSeconds: 10
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi`,
},
],
'storage.k8s.io/v1.StorageClass': [
{
title: 'Fast StorageClass',
description: 'Ceph fast storage class example',
yaml: `apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: example
provisioner: my-provisioner
reclaimPolicy: Delete
`,
},
],
'v1.Secret': [
{
title: 'Basic Secret',
description: 'A basic Secret example with username and password',
yaml: `apiVersion: v1
kind: Secret
metadata:
name: example
type: Opaque
stringData:
username: admin
password: opensec`,
},
],
'app.k8s.io/v1beta1.Application': [
{
title: 'Basic Application',
description: 'A basic Application example with Deployment and Service',
yaml: `apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx:1.7.9
name: nginx
ports:
- containerPort: 80
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: ClusterIP`,
},
],
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC1leGFtcGxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb2RlL3lhbWwtZXhhbXBsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXFDO0lBQ3RFLG9CQUFvQixFQUFFO1FBQ3BCO1lBQ0UsS0FBSyxFQUFFLGtCQUFrQjtZQUN6QixXQUFXLEVBQUUsaURBQWlEO1lBQzlELElBQUksRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrQkErQm1CO1NBQzFCO0tBQ0Y7SUFFRCxjQUFjLEVBQUU7UUFDZDtZQUNFLEtBQUssRUFBRSxpQkFBaUI7WUFDeEIsV0FBVyxFQUFFLHlEQUF5RDtZQUN0RSxJQUFJLEVBQUU7Ozs7Ozs7Ozs7O3VCQVdXO1NBQ2xCO0tBQ0Y7SUFFRCxrQkFBa0IsRUFBRTtRQUNsQjtZQUNFLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFdBQVcsRUFBRSx5Q0FBeUM7WUFDdEQsSUFBSSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFtQ2M7U0FDckI7S0FDRjtJQUVELHFCQUFxQixFQUFFO1FBQ3JCO1lBQ0UsS0FBSyxFQUFFLHdCQUF3QjtZQUMvQixXQUFXLEVBQUUsbURBQW1EO1lBQ2hFLElBQUksRUFBRTs7Ozs7Ozs7Ozs7Ozt1QkFhVztTQUNsQjtLQUNGO0lBRUQsd0NBQXdDLEVBQUU7UUFDeEM7WUFDRSxLQUFLLEVBQUUsK0JBQStCO1lBQ3RDLFdBQVcsRUFBRSxpREFBaUQ7WUFDOUQsSUFBSSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OzswQkFpQmM7U0FDckI7S0FDRjtJQUVELG1CQUFtQixFQUFFO1FBQ25CO1lBQ0UsS0FBSyxFQUFFLGlCQUFpQjtZQUN4QixXQUFXLEVBQUUsZ0RBQWdEO1lBQzdELElBQUksRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCQW1EUztTQUNoQjtLQUNGO0lBRUQsMEJBQTBCLEVBQUU7UUFDMUI7WUFDRSxLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLFdBQVcsRUFBRSw0Q0FBNEM7WUFDekQsSUFBSSxFQUFFOzs7Ozs7Ozs7O21CQVVPO1NBQ2Q7S0FDRjtJQUVELGtCQUFrQixFQUFFO1FBQ2xCO1lBQ0UsS0FBSyxFQUFFLHVCQUF1QjtZQUM5QixXQUFXLEVBQUUsK0NBQStDO1lBQzVELElBQUksRUFBRTs7Ozs7Ozs7Ozt1QkFVVztTQUNsQjtRQUNEO1lBQ0UsS0FBSyxFQUFFLDZCQUE2QjtZQUNwQyxXQUFXLEVBQUUsMkRBQTJEO1lBQ3hFLElBQUksRUFBRTs7Ozs7Ozs7Ozs7Ozs7O21FQWV1RDtTQUM5RDtRQUNEO1lBQ0UsS0FBSyxFQUFFLDZCQUE2QjtZQUNwQyxXQUFXLEVBQUUsaURBQWlEO1lBQzlELElBQUksRUFBRTs7Ozs7Ozs7Ozs7O2dDQVlvQjtTQUMzQjtLQUNGO0lBRUQsZUFBZSxFQUFFO1FBQ2Y7WUFDRSxLQUFLLEVBQUUsbUJBQW1CO1lBQzFCLFdBQVcsRUFBRSxrREFBa0Q7WUFDL0QsSUFBSSxFQUFFOzs7Ozs7Ozs7O29CQVVRO1NBQ2Y7S0FDRjtJQUVELHFCQUFxQixFQUFFO1FBQ3JCO1lBQ0UsS0FBSyxFQUFFLG1CQUFtQjtZQUMxQixXQUFXLEVBQUUscURBQXFEO1lBQ2xFLElBQUksRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QkE4Q2E7U0FDcEI7S0FDRjtJQUVELGdDQUFnQyxFQUFFO1FBQ2hDO1lBQ0UsS0FBSyxFQUFFLG1CQUFtQjtZQUMxQixXQUFXLEVBQUUsaUNBQWlDO1lBQzlDLElBQUksRUFBRTs7Ozs7O0NBTVg7U0FDSTtLQUNGO0lBRUQsV0FBVyxFQUFFO1FBQ1g7WUFDRSxLQUFLLEVBQUUsY0FBYztZQUNyQixXQUFXLEVBQUUsbURBQW1EO1lBQ2hFLElBQUksRUFBRTs7Ozs7OztvQkFPUTtTQUNmO0tBQ0Y7SUFFRCxnQ0FBZ0MsRUFBRTtRQUNoQztZQUNFLEtBQUssRUFBRSxtQkFBbUI7WUFDMUIsV0FBVyxFQUFFLHlEQUF5RDtZQUN0RSxJQUFJLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQStDTTtTQUNiO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWWFtbEV4YW1wbGUgfSBmcm9tICcuL3lhbWwtc2lkZWJhci90eXBlcyc7XG5cbi8qKlxuICogS3ViZXJuZXRlcyDotYTmupDnmoTlhoXnva4gWUFNTCDnpLrkvotcbiAqIOaMieeFpyBhcGlWZXJzaW9uLmtpbmQg55qE5qC85byP57uE57uHXG4gKi9cbmV4cG9ydCBjb25zdCBCVUlMVF9JTl9ZQU1MX0VYQU1QTEVTOiB7IFtrZXk6IHN0cmluZ106IFlhbWxFeGFtcGxlW10gfSA9IHtcbiAgJ2FwcHMvdjEuRGVwbG95bWVudCc6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0Jhc2ljIERlcGxveW1lbnQnLFxuICAgICAgZGVzY3JpcHRpb246ICdBIGJhc2ljIGRlcGxveW1lbnQgZXhhbXBsZSB3aXRoIG5naW54IGNvbnRhaW5lcicsXG4gICAgICB5YW1sOiBgYXBpVmVyc2lvbjogYXBwcy92MVxua2luZDogRGVwbG95bWVudFxubWV0YWRhdGE6XG4gIGxhYmVsczpcbiAgICBhcHA6IG5naW54XG4gIG5hbWU6IG5naW54LWRlcGxveW1lbnRcbnNwZWM6XG4gIHNlbGVjdG9yOlxuICAgIG1hdGNoTGFiZWxzOlxuICAgICAgYXBwOiBuZ2lueFxuICB0ZW1wbGF0ZTpcbiAgICBtZXRhZGF0YTpcbiAgICAgIGxhYmVsczpcbiAgICAgICAgYXBwOiBuZ2lueFxuICAgIHNwZWM6XG4gICAgICBjb250YWluZXJzOlxuICAgICAgICAtIGltYWdlOiBuZ2lueDoxLjcuOVxuICAgICAgICAgIG5hbWU6IG5naW54XG4gICAgICAgICAgcG9ydHM6XG4gICAgICAgICAgICAtIGNvbnRhaW5lclBvcnQ6IDgwXG4gICAgICAgICAgc2VjdXJpdHlDb250ZXh0OlxuICAgICAgICAgICAgYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uOiBmYWxzZVxuICAgICAgICAgICAgY2FwYWJpbGl0aWVzOlxuICAgICAgICAgICAgICBkcm9wOlxuICAgICAgICAgICAgICAgIC0gQUxMXG4gICAgICAgICAgICBydW5Bc05vblJvb3Q6IHRydWVcbiAgICAgICAgICAgIHNlY2NvbXBQcm9maWxlOlxuICAgICAgICAgICAgICB0eXBlOiBSdW50aW1lRGVmYXVsdFxuICAgICAgc2VjdXJpdHlDb250ZXh0OlxuICAgICAgICBydW5Bc05vblJvb3Q6IHRydWVcbiAgICAgICAgc2VjY29tcFByb2ZpbGU6XG4gICAgICAgICAgdHlwZTogUnVudGltZURlZmF1bHRgLFxuICAgIH0sXG4gIF0sXG5cbiAgJ3YxLkNvbmZpZ01hcCc6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0Jhc2ljIENvbmZpZ01hcCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgYmFzaWMgQ29uZmlnTWFwIGV4YW1wbGUgd2l0aCBwcm9wZXJ0aWVzIGFuZCBmaWxlIGRhdGEnLFxuICAgICAgeWFtbDogYGFwaVZlcnNpb246IHYxXG5raW5kOiBDb25maWdNYXBcbm1ldGFkYXRhOlxuICBuYW1lOiBleGFtcGxlXG4gIG5hbWVzcGFjZTogZGVmYXVsdFxuZGF0YTpcbiAgZXhhbXBsZS5wcm9wZXJ0eS4xOiBoZWxsb1xuICBleGFtcGxlLnByb3BlcnR5LjI6IHdvcmxkXG4gIGV4YW1wbGUucHJvcGVydHkuZmlsZTogfC1cbiAgICBwcm9wZXJ0eS4xPXZhbHVlLTFcbiAgICBwcm9wZXJ0eS4yPXZhbHVlLTJcbiAgICBwcm9wZXJ0eS4zPXZhbHVlLTNgLFxuICAgIH0sXG4gIF0sXG5cbiAgJ2JhdGNoL3YxLkNyb25Kb2InOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdCYXNpYyBDcm9uSm9iJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBiYXNpYyBDcm9uSm9iIGV4YW1wbGUgdGhhdCBydW5zIGRhaWx5JyxcbiAgICAgIHlhbWw6IGBhcGlWZXJzaW9uOiBiYXRjaC92MVxua2luZDogQ3JvbkpvYlxubWV0YWRhdGE6XG4gIG5hbWU6IGhlbGxvXG5zcGVjOlxuICBqb2JUZW1wbGF0ZTpcbiAgICBtZXRhZGF0YTpcbiAgICAgIGxhYmVsczpcbiAgICAgICAgY3JvbmpvYi5jcGFhcy5pby9uYW1lOiBoZWxsb1xuICAgIHNwZWM6XG4gICAgICB0ZW1wbGF0ZTpcbiAgICAgICAgbWV0YWRhdGE6XG4gICAgICAgICAgbGFiZWxzOlxuICAgICAgICAgICAgY3JvbmpvYi5jcGFhcy5pby9uYW1lOiBoZWxsb1xuICAgICAgICBzcGVjOlxuICAgICAgICAgIGNvbnRhaW5lcnM6XG4gICAgICAgICAgICAtIGFyZ3M6XG4gICAgICAgICAgICAgICAgLSAvYmluL3NoXG4gICAgICAgICAgICAgICAgLSAtY1xuICAgICAgICAgICAgICAgIC0gZGF0ZTsgZWNobyBIZWxsbyBmcm9tIHRoZSBLdWJlcm5ldGVzIGNsdXN0ZXJcbiAgICAgICAgICAgICAgaW1hZ2U6IGJ1c3lib3hcbiAgICAgICAgICAgICAgbmFtZTogaGVsbG9cbiAgICAgICAgICAgICAgc2VjdXJpdHlDb250ZXh0OlxuICAgICAgICAgICAgICAgIGFsbG93UHJpdmlsZWdlRXNjYWxhdGlvbjogZmFsc2VcbiAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXM6XG4gICAgICAgICAgICAgICAgICBkcm9wOlxuICAgICAgICAgICAgICAgICAgICAtIEFMTFxuICAgICAgICAgICAgICAgIHJ1bkFzTm9uUm9vdDogdHJ1ZVxuICAgICAgICAgICAgICAgIHNlY2NvbXBQcm9maWxlOlxuICAgICAgICAgICAgICAgICAgdHlwZTogUnVudGltZURlZmF1bHRcbiAgICAgICAgICBzZWN1cml0eUNvbnRleHQ6XG4gICAgICAgICAgICBydW5Bc05vblJvb3Q6IHRydWVcbiAgICAgICAgICAgIHNlY2NvbXBQcm9maWxlOlxuICAgICAgICAgICAgICB0eXBlOiBSdW50aW1lRGVmYXVsdFxuICAgICAgICAgIHJlc3RhcnRQb2xpY3k6IE5ldmVyXG4gIHNjaGVkdWxlOiBcIiovMSAqICogKiAqXCJgLFxuICAgIH0sXG4gIF0sXG5cbiAgJ3YxLlBlcnNpc3RlbnRWb2x1bWUnOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdCYXNpYyBQZXJzaXN0ZW50Vm9sdW1lJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBiYXNpYyBQZXJzaXN0ZW50Vm9sdW1lIGV4YW1wbGUgd2l0aCBORlMgc3RvcmFnZScsXG4gICAgICB5YW1sOiBgYXBpVmVyc2lvbjogdjFcbmtpbmQ6IFBlcnNpc3RlbnRWb2x1bWVcbm1ldGFkYXRhOlxuICBuYW1lOiBleGFtcGxlXG5zcGVjOlxuICBjYXBhY2l0eTpcbiAgICBzdG9yYWdlOiA1R2lcbiAgYWNjZXNzTW9kZXM6XG4gICAgLSBSZWFkV3JpdGVPbmNlXG4gIHBlcnNpc3RlbnRWb2x1bWVSZWNsYWltUG9saWN5OiBSZXRhaW5cbiAgc3RvcmFnZUNsYXNzTmFtZTogc2xvd1xuICBuZnM6XG4gICAgcGF0aDogL3RtcFxuICAgIHNlcnZlcjogMTcyLjE3LjAuMmAsXG4gICAgfSxcbiAgXSxcblxuICAnYXV0b3NjYWxpbmcvdjIuSG9yaXpvbnRhbFBvZEF1dG9zY2FsZXInOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdCYXNpYyBIb3Jpem9udGFsUG9kQXV0b3NjYWxlcicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgYmFzaWMgSFBBIGV4YW1wbGUgd2l0aCBDUFUgdXRpbGl6YXRpb24gdGFyZ2V0JyxcbiAgICAgIHlhbWw6IGBhcGlWZXJzaW9uOiBhdXRvc2NhbGluZy92Mlxua2luZDogSG9yaXpvbnRhbFBvZEF1dG9zY2FsZXJcbm1ldGFkYXRhOlxuICBuYW1lOiBleGFtcGxlXG5zcGVjOlxuICBzY2FsZVRhcmdldFJlZjpcbiAgICBhcGlWZXJzaW9uOiBhcHBzL3YxXG4gICAga2luZDogRGVwbG95bWVudFxuICAgIG5hbWU6IGV4YW1wbGVcbiAgbWluUmVwbGljYXM6IDFcbiAgbWF4UmVwbGljYXM6IDNcbiAgbWV0cmljczpcbiAgLSB0eXBlOiBSZXNvdXJjZVxuICAgIHJlc291cmNlOlxuICAgICAgbmFtZTogY3B1XG4gICAgICB0YXJnZXQ6XG4gICAgICAgIGF2ZXJhZ2VVdGlsaXphdGlvbjogNTBcbiAgICAgICAgdHlwZTogVXRpbGl6YXRpb25gLFxuICAgIH0sXG4gIF0sXG5cbiAgJ2FwcHMvdjEuRGFlbW9uU2V0JzogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnQmFzaWMgRGFlbW9uU2V0JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBiYXNpYyBEYWVtb25TZXQgZXhhbXBsZSB3aXRoIG5naW54IGNvbnRhaW5lcicsXG4gICAgICB5YW1sOiBgYXBpVmVyc2lvbjogYXBwcy92MVxua2luZDogRGFlbW9uU2V0XG5tZXRhZGF0YTpcbiAgbmFtZTogZmx1ZW50ZC1lbGFzdGljc2VhcmNoXG4gIGxhYmVsczpcbiAgICBrOHMtYXBwOiBmbHVlbnRkLWxvZ2dpbmdcbnNwZWM6XG4gIHNlbGVjdG9yOlxuICAgIG1hdGNoTGFiZWxzOlxuICAgICAgbmFtZTogZmx1ZW50ZC1lbGFzdGljc2VhcmNoXG4gIHRlbXBsYXRlOlxuICAgIG1ldGFkYXRhOlxuICAgICAgbGFiZWxzOlxuICAgICAgICBuYW1lOiBmbHVlbnRkLWVsYXN0aWNzZWFyY2hcbiAgICBzcGVjOlxuICAgICAgdG9sZXJhdGlvbnM6XG4gICAgICAtIGtleTogbm9kZS1yb2xlLmt1YmVybmV0ZXMuaW8vY29udHJvbC1wbGFuZVxuICAgICAgICBvcGVyYXRvcjogRXhpc3RzXG4gICAgICAgIGVmZmVjdDogTm9TY2hlZHVsZVxuICAgICAgLSBrZXk6IG5vZGUtcm9sZS5rdWJlcm5ldGVzLmlvL21hc3RlclxuICAgICAgICBvcGVyYXRvcjogRXhpc3RzXG4gICAgICAgIGVmZmVjdDogTm9TY2hlZHVsZVxuICAgICAgY29udGFpbmVyczpcbiAgICAgIC0gbmFtZTogZmx1ZW50ZC1lbGFzdGljc2VhcmNoXG4gICAgICAgIGltYWdlOiBxdWF5LmlvL2ZsdWVudGRfZWxhc3RpY3NlYXJjaC9mbHVlbnRkOnYyLjUuMlxuICAgICAgICByZXNvdXJjZXM6XG4gICAgICAgICAgbGltaXRzOlxuICAgICAgICAgICAgbWVtb3J5OiAyMDBNaVxuICAgICAgICAgIHJlcXVlc3RzOlxuICAgICAgICAgICAgY3B1OiAxMDBtXG4gICAgICAgICAgICBtZW1vcnk6IDIwME1pXG4gICAgICAgIHZvbHVtZU1vdW50czpcbiAgICAgICAgLSBuYW1lOiB2YXJsb2dcbiAgICAgICAgICBtb3VudFBhdGg6IC92YXIvbG9nXG4gICAgICAgIHNlY3VyaXR5Q29udGV4dDpcbiAgICAgICAgICBhbGxvd1ByaXZpbGVnZUVzY2FsYXRpb246IGZhbHNlXG4gICAgICAgICAgY2FwYWJpbGl0aWVzOlxuICAgICAgICAgICAgZHJvcDpcbiAgICAgICAgICAgICAgLSBBTExcbiAgICAgICAgICBydW5Bc05vblJvb3Q6IHRydWVcbiAgICAgICAgICBydW5Bc1VzZXI6IDEwMDBcbiAgICAgICAgICBydW5Bc0dyb3VwOiAxMDAwXG4gICAgICAgICAgc2VjY29tcFByb2ZpbGU6XG4gICAgICAgICAgICB0eXBlOiBSdW50aW1lRGVmYXVsdFxuICAgICAgc2VjdXJpdHlDb250ZXh0OlxuICAgICAgICBydW5Bc05vblJvb3Q6IHRydWVcbiAgICAgICAgc2VjY29tcFByb2ZpbGU6XG4gICAgICAgICAgdHlwZTogUnVudGltZURlZmF1bHRcbiAgICAgIHRlcm1pbmF0aW9uR3JhY2VQZXJpb2RTZWNvbmRzOiAzMFxuICAgICAgdm9sdW1lczpcbiAgICAgIC0gbmFtZTogdmFybG9nXG4gICAgICAgIGVtcHR5RGlyOiB7fWAsXG4gICAgfSxcbiAgXSxcblxuICAndjEuUGVyc2lzdGVudFZvbHVtZUNsYWltJzogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnQmFzaWMgUGVyc2lzdGVudFZvbHVtZUNsYWltJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBiYXNpYyBQVkMgZXhhbXBsZSByZXF1ZXN0aW5nIDFHaSBzdG9yYWdlJyxcbiAgICAgIHlhbWw6IGBhcGlWZXJzaW9uOiB2MVxua2luZDogUGVyc2lzdGVudFZvbHVtZUNsYWltXG5tZXRhZGF0YTpcbiAgbmFtZTogZXhhbXBsZVxuc3BlYzpcbiAgYWNjZXNzTW9kZXM6XG4gICAgLSBSZWFkV3JpdGVPbmNlXG4gIHZvbHVtZU1vZGU6IEZpbGVzeXN0ZW1cbiAgcmVzb3VyY2VzOlxuICAgIHJlcXVlc3RzOlxuICAgICAgc3RvcmFnZTogMUdpYCxcbiAgICB9LFxuICBdLFxuXG4gICd2MS5SZXNvdXJjZVF1b3RhJzogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnQ29tcHV0ZSBSZXNvdXJjZVF1b3RhJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBSZXNvdXJjZVF1b3RhIGV4YW1wbGUgZm9yIGNvbXB1dGUgcmVzb3VyY2VzJyxcbiAgICAgIHlhbWw6IGBhcGlWZXJzaW9uOiB2MVxua2luZDogUmVzb3VyY2VRdW90YVxubWV0YWRhdGE6XG4gIG5hbWU6IGNvbXB1dGUtcXVvdGFcbiAgbmFtZXNwYWNlOlxuc3BlYzpcbiAgaGFyZDpcbiAgICByZXF1ZXN0cy5jcHU6ICcxJ1xuICAgIHJlcXVlc3RzLm1lbW9yeTogMUdpXG4gICAgbGltaXRzLmNwdTogJzInXG4gICAgbGltaXRzLm1lbW9yeTogMkdpYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnU3RvcmFnZSBDbGFzcyBSZXNvdXJjZVF1b3RhJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBSZXNvdXJjZVF1b3RhIGV4YW1wbGUgZm9yIHN0b3JhZ2UgY2xhc3Mgc3BlY2lmaWMgcXVvdGFzJyxcbiAgICAgIHlhbWw6IGBhcGlWZXJzaW9uOiB2MVxua2luZDogUmVzb3VyY2VRdW90YVxubWV0YWRhdGE6XG4gIG5hbWU6IHN0b3JhZ2UtY2xhc3MtcXVvdGFcbiAgbmFtZXNwYWNlOlxuc3BlYzpcbiAgaGFyZDpcbiAgICByZXF1ZXN0cy5zdG9yYWdlOiAxMDBHaVxuICAgIHBlcnNpc3RlbnR2b2x1bWVjbGFpbXM6ICcxMDAnXG4gICAgIyBGb3IgcXVvdGEgc3BlY2lmaWMgdG8gYSBzdG9yYWdlIGNsYXNzLCB0aGUgc3RvcmFnZSBjbGFzcyBtdXN0IGhhdmUgdGhlIHNhbWUgbmFtZVxuICAgIGdvbGQuc3RvcmFnZS1jbGFzcy5rdWJlcm5ldGVzLmlvL3JlcXVlc3RzLnN0b3JhZ2U6IDNHaVxuICAgIGdvbGQuc3RvcmFnZS1jbGFzcy5rdWJlcm5ldGVzLmlvL3BlcnNpc3RlbnR2b2x1bWVjbGFpbXM6ICc1J1xuICAgIHNpbHZlci5zdG9yYWdlLWNsYXNzLmt1YmVybmV0ZXMuaW8vcmVxdWVzdHMuc3RvcmFnZTogMkdpXG4gICAgc2lsdmVyLnN0b3JhZ2UtY2xhc3Mua3ViZXJuZXRlcy5pby9wZXJzaXN0ZW50dm9sdW1lY2xhaW1zOiAnMydcbiAgICBicm9uemUuc3RvcmFnZS1jbGFzcy5rdWJlcm5ldGVzLmlvL3JlcXVlc3RzLnN0b3JhZ2U6IDFHaVxuICAgIGJyb256ZS5zdG9yYWdlLWNsYXNzLmt1YmVybmV0ZXMuaW8vcGVyc2lzdGVudHZvbHVtZWNsYWltczogJzEnYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnT2JqZWN0IENvdW50cyBSZXNvdXJjZVF1b3RhJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBSZXNvdXJjZVF1b3RhIGV4YW1wbGUgZm9yIG9iamVjdCBjb3VudCBsaW1pdHMnLFxuICAgICAgeWFtbDogYGFwaVZlcnNpb246IHYxXG5raW5kOiBSZXNvdXJjZVF1b3RhXG5tZXRhZGF0YTpcbiAgbmFtZTogb2JqZWN0LWNvdW50c1xuICBuYW1lc3BhY2U6XG5zcGVjOlxuICBoYXJkOlxuICAgIGNvbmZpZ21hcHM6IFwiMTBcIlxuICAgIHBlcnNpc3RlbnR2b2x1bWVjbGFpbXM6IFwiNFwiXG4gICAgcmVwbGljYXRpb25jb250cm9sbGVyczogXCIyMFwiXG4gICAgc2VjcmV0czogXCIxMFwiXG4gICAgc2VydmljZXM6IFwiMTBcIlxuICAgIHNlcnZpY2VzLmxvYWRiYWxhbmNlcnM6IFwiMlwiYCxcbiAgICB9LFxuICBdLFxuXG4gICd2MS5MaW1pdFJhbmdlJzogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnTWVtb3J5IExpbWl0UmFuZ2UnLFxuICAgICAgZGVzY3JpcHRpb246ICdBIExpbWl0UmFuZ2UgZXhhbXBsZSBmb3IgY29udGFpbmVyIG1lbW9yeSBsaW1pdHMnLFxuICAgICAgeWFtbDogYGFwaVZlcnNpb246IHYxXG5raW5kOiBMaW1pdFJhbmdlXG5tZXRhZGF0YTpcbiAgbmFtZTogbWVtLWxpbWl0LXJhbmdlXG5zcGVjOlxuICBsaW1pdHM6XG4gIC0gZGVmYXVsdDpcbiAgICAgIG1lbW9yeTogNTEyTWlcbiAgICBkZWZhdWx0UmVxdWVzdDpcbiAgICAgIG1lbW9yeTogMjU2TWlcbiAgICB0eXBlOiBDb250YWluZXJgLFxuICAgIH0sXG4gIF0sXG5cbiAgJ2FwcHMvdjEuU3RhdGVmdWxTZXQnOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdCYXNpYyBTdGF0ZWZ1bFNldCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgYmFzaWMgU3RhdGVmdWxTZXQgZXhhbXBsZSB3aXRoIHBlcnNpc3RlbnQgc3RvcmFnZScsXG4gICAgICB5YW1sOiBgYXBpVmVyc2lvbjogYXBwcy92MVxua2luZDogU3RhdGVmdWxTZXRcbm1ldGFkYXRhOlxuICBuYW1lOiBleGFtcGxlXG4gIG5hbWVzcGFjZTogY29uc29sZXNhbXBsZXMtbnMxXG5zcGVjOlxuICByZXBsaWNhczogM1xuICBzZWxlY3RvcjpcbiAgICBtYXRjaExhYmVsczpcbiAgICAgIGFwcDogaHR0cGRcbiAgc2VydmljZU5hbWU6IGh0dHBkXG4gIHRlbXBsYXRlOlxuICAgIG1ldGFkYXRhOlxuICAgICAgbGFiZWxzOlxuICAgICAgICBhcHA6IGh0dHBkXG4gICAgc3BlYzpcbiAgICAgIGNvbnRhaW5lcnM6XG4gICAgICAgIC0gaW1hZ2U6IG5naW54OjEuNy45XG4gICAgICAgICAgbmFtZTogaHR0cGRcbiAgICAgICAgICBwb3J0czpcbiAgICAgICAgICAgIC0gY29udGFpbmVyUG9ydDogODA4MFxuICAgICAgICAgICAgICBuYW1lOiB3ZWJcbiAgICAgICAgICB2b2x1bWVNb3VudHM6XG4gICAgICAgICAgICAtIG1vdW50UGF0aDogL3Zhci93d3cvaHRtbFxuICAgICAgICAgICAgICBuYW1lOiB3d3dcbiAgICAgICAgICBzZWN1cml0eUNvbnRleHQ6XG4gICAgICAgICAgICBhbGxvd1ByaXZpbGVnZUVzY2FsYXRpb246IGZhbHNlXG4gICAgICAgICAgICBjYXBhYmlsaXRpZXM6XG4gICAgICAgICAgICAgIGRyb3A6XG4gICAgICAgICAgICAgICAgLSBBTExcbiAgICAgICAgICAgIHJ1bkFzTm9uUm9vdDogdHJ1ZVxuICAgICAgICAgICAgc2VjY29tcFByb2ZpbGU6XG4gICAgICAgICAgICAgIHR5cGU6IFJ1bnRpbWVEZWZhdWx0XG4gICAgICBzZWN1cml0eUNvbnRleHQ6XG4gICAgICAgIHJ1bkFzTm9uUm9vdDogdHJ1ZVxuICAgICAgICBzZWNjb21wUHJvZmlsZTpcbiAgICAgICAgICB0eXBlOiBSdW50aW1lRGVmYXVsdFxuICAgICAgdGVybWluYXRpb25HcmFjZVBlcmlvZFNlY29uZHM6IDEwXG4gIHZvbHVtZUNsYWltVGVtcGxhdGVzOlxuICAgIC0gbWV0YWRhdGE6XG4gICAgICAgIG5hbWU6IHd3d1xuICAgICAgc3BlYzpcbiAgICAgICAgYWNjZXNzTW9kZXM6XG4gICAgICAgICAgLSBSZWFkV3JpdGVPbmNlXG4gICAgICAgIHJlc291cmNlczpcbiAgICAgICAgICByZXF1ZXN0czpcbiAgICAgICAgICAgIHN0b3JhZ2U6IDFHaWAsXG4gICAgfSxcbiAgXSxcblxuICAnc3RvcmFnZS5rOHMuaW8vdjEuU3RvcmFnZUNsYXNzJzogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnRmFzdCBTdG9yYWdlQ2xhc3MnLFxuICAgICAgZGVzY3JpcHRpb246ICdDZXBoIGZhc3Qgc3RvcmFnZSBjbGFzcyBleGFtcGxlJyxcbiAgICAgIHlhbWw6IGBhcGlWZXJzaW9uOiBzdG9yYWdlLms4cy5pby92MVxua2luZDogU3RvcmFnZUNsYXNzXG5tZXRhZGF0YTpcbiAgbmFtZTogZXhhbXBsZVxucHJvdmlzaW9uZXI6IG15LXByb3Zpc2lvbmVyXG5yZWNsYWltUG9saWN5OiBEZWxldGVcbmAsXG4gICAgfSxcbiAgXSxcblxuICAndjEuU2VjcmV0JzogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnQmFzaWMgU2VjcmV0JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBiYXNpYyBTZWNyZXQgZXhhbXBsZSB3aXRoIHVzZXJuYW1lIGFuZCBwYXNzd29yZCcsXG4gICAgICB5YW1sOiBgYXBpVmVyc2lvbjogdjFcbmtpbmQ6IFNlY3JldFxubWV0YWRhdGE6XG4gIG5hbWU6IGV4YW1wbGVcbnR5cGU6IE9wYXF1ZVxuc3RyaW5nRGF0YTpcbiAgdXNlcm5hbWU6IGFkbWluXG4gIHBhc3N3b3JkOiBvcGVuc2VjYCxcbiAgICB9LFxuICBdLFxuXG4gICdhcHAuazhzLmlvL3YxYmV0YTEuQXBwbGljYXRpb24nOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdCYXNpYyBBcHBsaWNhdGlvbicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgYmFzaWMgQXBwbGljYXRpb24gZXhhbXBsZSB3aXRoIERlcGxveW1lbnQgYW5kIFNlcnZpY2UnLFxuICAgICAgeWFtbDogYGFwaVZlcnNpb246IGFwcHMvdjFcbmtpbmQ6IERlcGxveW1lbnRcbm1ldGFkYXRhOlxuICBsYWJlbHM6XG4gICAgYXBwOiBuZ2lueFxuICBuYW1lOiBuZ2lueC1kZXBsb3ltZW50XG5zcGVjOlxuICByZXBsaWNhczogMVxuICBzZWxlY3RvcjpcbiAgICBtYXRjaExhYmVsczpcbiAgICAgIGFwcDogbmdpbnhcbiAgdGVtcGxhdGU6XG4gICAgbWV0YWRhdGE6XG4gICAgICBsYWJlbHM6XG4gICAgICAgIGFwcDogbmdpbnhcbiAgICBzcGVjOlxuICAgICAgY29udGFpbmVyczpcbiAgICAgICAgLSBpbWFnZTogbmdpbng6MS43LjlcbiAgICAgICAgICBuYW1lOiBuZ2lueFxuICAgICAgICAgIHBvcnRzOlxuICAgICAgICAgICAgLSBjb250YWluZXJQb3J0OiA4MFxuICAgICAgICAgIHNlY3VyaXR5Q29udGV4dDpcbiAgICAgICAgICAgIGFsbG93UHJpdmlsZWdlRXNjYWxhdGlvbjogZmFsc2VcbiAgICAgICAgICAgIGNhcGFiaWxpdGllczpcbiAgICAgICAgICAgICAgZHJvcDpcbiAgICAgICAgICAgICAgICAtIEFMTFxuICAgICAgICAgICAgcnVuQXNOb25Sb290OiB0cnVlXG4gICAgICAgICAgICBzZWNjb21wUHJvZmlsZTpcbiAgICAgICAgICAgICAgdHlwZTogUnVudGltZURlZmF1bHRcbiAgICAgIHNlY3VyaXR5Q29udGV4dDpcbiAgICAgICAgcnVuQXNOb25Sb290OiB0cnVlXG4gICAgICAgIHNlY2NvbXBQcm9maWxlOlxuICAgICAgICAgIHR5cGU6IFJ1bnRpbWVEZWZhdWx0XG4tLS1cbmFwaVZlcnNpb246IHYxXG5raW5kOiBTZXJ2aWNlXG5tZXRhZGF0YTpcbiAgbGFiZWxzOlxuICAgIGFwcDogbmdpbnhcbiAgbmFtZTogbmdpbnhcbnNwZWM6XG4gIHBvcnRzOlxuICAgIC0gcG9ydDogODBcbiAgICAgIHByb3RvY29sOiBUQ1BcbiAgICAgIHRhcmdldFBvcnQ6IDgwXG4gIHNlbGVjdG9yOlxuICAgIGFwcDogbmdpbnhcbiAgdHlwZTogQ2x1c3RlcklQYCxcbiAgICB9LFxuICBdLFxufTtcbiJdfQ==