UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

429 lines 26.9 kB
/** * 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==