diff --git a/.github/workflows/integration.yaml b/.github/workflows/integration.yaml index 064f0c869bc..936dd2e5ca2 100644 --- a/.github/workflows/integration.yaml +++ b/.github/workflows/integration.yaml @@ -59,6 +59,24 @@ jobs: with: name: k3s-amd64 path: ./dist/artifacts + - name: Remove Unnecessary Tools + run: | + sudo rm -rf \ + /home/linuxbrew \ + /home/packer \ + /opt/az \ + /opt/microsoft \ + /usr/lib/firefox \ + /usr/lib/google-cloud-sdk \ + /usr/local/julia* \ + /usr/local/share/boost \ + /usr/local/share/chromium \ + /usr/local/share/powershell \ + /usr/share/az* \ + /usr/share/dotnet \ + /usr/share/miniconda \ + /usr/share/swift + df -khl - name: Run Integration Tests run: | chmod +x ./dist/artifacts/k3s diff --git a/tests/integration/cacertrotation/cacertrotation_int_test.go b/tests/integration/cacertrotation/cacertrotation_int_test.go index 97daba33b0e..ad6bc7ba6a9 100644 --- a/tests/integration/cacertrotation/cacertrotation_int_test.go +++ b/tests/integration/cacertrotation/cacertrotation_int_test.go @@ -93,6 +93,8 @@ var _ = DescribeTableSubtree("ca certificate rotation", Ordered, func(serverArgs if !testutil.IsExistingServer() { if failed { testutil.K3sSaveLog(server, false) + testutil.K3sCopyPodLogs(server) + testutil.K3sDumpResources(server, "node", "pod", "pvc", "pv") } Expect(testutil.K3sKillServer(server)).To(Succeed()) Expect(testutil.K3sCleanup(-1, "")).To(Succeed()) diff --git a/tests/integration/certrotation/certrotation_int_test.go b/tests/integration/certrotation/certrotation_int_test.go index 33349a9a4be..3dc17b03989 100644 --- a/tests/integration/certrotation/certrotation_int_test.go +++ b/tests/integration/certrotation/certrotation_int_test.go @@ -98,6 +98,8 @@ var _ = AfterSuite(func() { if !testutil.IsExistingServer() { if failed { testutil.K3sSaveLog(server, false) + testutil.K3sCopyPodLogs(server) + testutil.K3sDumpResources(server, "node", "pod", "pvc", "pv") } Expect(testutil.K3sKillServer(server)).To(Succeed()) Expect(testutil.K3sCleanup(-1, "")).To(Succeed()) diff --git a/tests/integration/custometcdargs/custometcdargs_int_test.go b/tests/integration/custometcdargs/custometcdargs_int_test.go index f61c46cffab..3a852591ba8 100644 --- a/tests/integration/custometcdargs/custometcdargs_int_test.go +++ b/tests/integration/custometcdargs/custometcdargs_int_test.go @@ -62,6 +62,8 @@ var _ = AfterSuite(func() { if !testutil.IsExistingServer() { if failed { testutil.K3sSaveLog(customEtcdArgsServer, false) + testutil.K3sCopyPodLogs(customEtcdArgsServer) + testutil.K3sDumpResources(customEtcdArgsServer, "node", "pod", "pvc", "pv") } Expect(testutil.K3sKillServer(customEtcdArgsServer)).To(Succeed()) Expect(testutil.K3sCleanup(testLock, "")).To(Succeed()) diff --git a/tests/integration/dualstack/dualstack_int_test.go b/tests/integration/dualstack/dualstack_int_test.go index 9b19e045d00..e1cce3ec321 100644 --- a/tests/integration/dualstack/dualstack_int_test.go +++ b/tests/integration/dualstack/dualstack_int_test.go @@ -61,6 +61,8 @@ var _ = AfterSuite(func() { if !testutil.IsExistingServer() && os.Getenv("CI") != "true" { if failed { testutil.K3sSaveLog(dualStackServer, false) + testutil.K3sCopyPodLogs(dualStackServer) + testutil.K3sDumpResources(dualStackServer, "node", "pod", "pvc", "pv") } Expect(testutil.K3sKillServer(dualStackServer)).To(Succeed()) Expect(testutil.K3sCleanup(testLock, "")).To(Succeed()) diff --git a/tests/integration/etcdrestore/etcd_restore_int_test.go b/tests/integration/etcdrestore/etcd_restore_int_test.go index 1a4f200f60b..dcafee23964 100644 --- a/tests/integration/etcdrestore/etcd_restore_int_test.go +++ b/tests/integration/etcdrestore/etcd_restore_int_test.go @@ -121,6 +121,8 @@ var _ = AfterSuite(func() { if !testutil.IsExistingServer() { if failed { testutil.K3sSaveLog(server1, false) + testutil.K3sCopyPodLogs(server1) + testutil.K3sDumpResources(server1, "node", "pod", "pvc", "pv") } Expect(testutil.K3sKillServer(server1)).To(Succeed()) Expect(testutil.K3sKillServer(server2)).To(Succeed()) diff --git a/tests/integration/etcdsnapshot/etcdsnapshot_int_test.go b/tests/integration/etcdsnapshot/etcdsnapshot_int_test.go index dc11b9e438d..090ecaa430a 100644 --- a/tests/integration/etcdsnapshot/etcdsnapshot_int_test.go +++ b/tests/integration/etcdsnapshot/etcdsnapshot_int_test.go @@ -183,6 +183,8 @@ var _ = AfterSuite(func() { if !testutil.IsExistingServer() { if failed { testutil.K3sSaveLog(server, false) + testutil.K3sCopyPodLogs(server) + testutil.K3sDumpResources(server, "node", "pod", "pvc", "pv") } Expect(testutil.K3sKillServer(server)).To(Succeed()) Expect(testutil.K3sCleanup(testLock, "")).To(Succeed()) diff --git a/tests/integration/flannelipv6masq/flannelipv6masq_int_test.go b/tests/integration/flannelipv6masq/flannelipv6masq_int_test.go index 7f776584016..bca941b0a0e 100644 --- a/tests/integration/flannelipv6masq/flannelipv6masq_int_test.go +++ b/tests/integration/flannelipv6masq/flannelipv6masq_int_test.go @@ -67,6 +67,8 @@ var _ = AfterSuite(func() { if !testutil.IsExistingServer() && os.Getenv("CI") != "true" { if failed { testutil.K3sSaveLog(server, false) + testutil.K3sCopyPodLogs(server) + testutil.K3sDumpResources(server, "node", "pod", "pvc", "pv") } Expect(testutil.K3sKillServer(server)).To(Succeed()) Expect(testutil.K3sCleanup(testLock, "")).To(Succeed()) diff --git a/tests/integration/flannelnone/flannelnone_int_test.go b/tests/integration/flannelnone/flannelnone_int_test.go index 7697305bc03..2ab85cbf4ec 100644 --- a/tests/integration/flannelnone/flannelnone_int_test.go +++ b/tests/integration/flannelnone/flannelnone_int_test.go @@ -71,6 +71,8 @@ var _ = AfterSuite(func() { if !testutil.IsExistingServer() && os.Getenv("CI") != "true" { if failed { testutil.K3sSaveLog(server, false) + testutil.K3sCopyPodLogs(server) + testutil.K3sDumpResources(server, "node", "pod", "pvc", "pv") } Expect(testutil.K3sKillServer(server)).To(Succeed()) Expect(testutil.K3sCleanup(testLock, "")).To(Succeed()) diff --git a/tests/integration/integration.go b/tests/integration/integration.go index 571cb668e66..c3be0d2d12e 100644 --- a/tests/integration/integration.go +++ b/tests/integration/integration.go @@ -313,6 +313,30 @@ func K3sSaveLog(server *K3sServer, dump bool) error { return nil } +func K3sCopyPodLogs(server *K3sServer) error { + f, err := os.Create("var-log-pods-log.txt") + if err != nil { + return err + } + defer f.Close() + + results, _ := RunCommand("find /var/log/pods -type f | xargs tail -n 10000") + _, err = fmt.Fprint(f, results) + return err +} + +func K3sDumpResources(server *K3sServer, resources ...string) error { + f, err := os.Create("resources-dump-log.txt") + if err != nil { + return err + } + defer f.Close() + + results, _ := K3sCmd("kubectl", "get", "-A", "-o", "yaml", strings.Join(resources, ",")) + _, err = fmt.Fprint(f, results) + return err +} + func GetEndpointsAddresses() (string, error) { client, err := tests.K8sClient(DefaultConfig) if err != nil { diff --git a/tests/integration/kubeflags/kubeflags_test.go b/tests/integration/kubeflags/kubeflags_test.go index 4c9f662447d..b6874dc7a2b 100644 --- a/tests/integration/kubeflags/kubeflags_test.go +++ b/tests/integration/kubeflags/kubeflags_test.go @@ -208,6 +208,8 @@ var _ = AfterSuite(func() { if !testutil.IsExistingServer() { if failed { testutil.K3sSaveLog(server, false) + testutil.K3sCopyPodLogs(server) + testutil.K3sDumpResources(server, "node", "pod", "pvc", "pv") } Expect(testutil.K3sKillServer(server)).To(Succeed()) Expect(testutil.K3sCleanup(testLock, "")).To(Succeed()) diff --git a/tests/integration/localstorage/localstorage_int_test.go b/tests/integration/localstorage/localstorage_int_test.go index d7a898c8ebd..098784a5f8b 100644 --- a/tests/integration/localstorage/localstorage_int_test.go +++ b/tests/integration/localstorage/localstorage_int_test.go @@ -105,6 +105,8 @@ var _ = AfterSuite(func() { if !testutil.IsExistingServer() { if failed { testutil.K3sSaveLog(localStorageServer, false) + testutil.K3sCopyPodLogs(localStorageServer) + testutil.K3sDumpResources(localStorageServer, "node", "pod", "pvc", "pv") } Expect(testutil.K3sKillServer(localStorageServer)).To(Succeed()) Expect(testutil.K3sCleanup(testLock, "")).To(Succeed()) diff --git a/tests/integration/longhorn/longhorn_int_test.go b/tests/integration/longhorn/longhorn_int_test.go index 35a280fea47..ec8e88c67db 100644 --- a/tests/integration/longhorn/longhorn_int_test.go +++ b/tests/integration/longhorn/longhorn_int_test.go @@ -50,10 +50,7 @@ var _ = Describe("longhorn", Ordered, func() { Expect(result).To(ContainSubstring("namespace/longhorn-system created")) Expect(result).To(ContainSubstring("daemonset.apps/longhorn-manager created")) Expect(result).To(ContainSubstring("deployment.apps/longhorn-driver-deployer created")) - Expect(result).To(ContainSubstring("deployment.apps/longhorn-recovery-backend created")) Expect(result).To(ContainSubstring("deployment.apps/longhorn-ui created")) - Expect(result).To(ContainSubstring("deployment.apps/longhorn-conversion-webhook created")) - Expect(result).To(ContainSubstring("deployment.apps/longhorn-admission-webhook created")) }) It("starts the longhorn pods with no problems", func() { Eventually(func() error { @@ -142,6 +139,9 @@ var _ = AfterSuite(func() { if !testutil.IsExistingServer() && server != nil { if failed { testutil.K3sSaveLog(server, false) + testutil.K3sCopyPodLogs(server) + testutil.K3sDumpResources(server, "node", "pod", "pvc", "pv") + testutil.RunCommand("find /var/lib/longhorn/logs -type f | xargs tail -n 10000 &> longhorn-log.txt") } Expect(testutil.K3sKillServer(server)).To(Succeed()) Expect(testutil.K3sCleanup(testLock, "")).To(Succeed()) diff --git a/tests/integration/longhorn/testdata/longhorn.yaml b/tests/integration/longhorn/testdata/longhorn.yaml index f1e1cdb9c3d..528b462eee5 100644 --- a/tests/integration/longhorn/testdata/longhorn.yaml +++ b/tests/integration/longhorn/testdata/longhorn.yaml @@ -5,6 +5,20 @@ kind: Namespace metadata: name: longhorn-system --- +# Source: longhorn/templates/priorityclass.yaml +apiVersion: scheduling.k8s.io/v1 +kind: PriorityClass +metadata: + name: "longhorn-critical" + labels: + app.kubernetes.io/name: longhorn + app.kubernetes.io/instance: longhorn + app.kubernetes.io/version: v1.10.1 +description: "Ensure Longhorn pods have the highest priority to prevent any unexpected eviction by the Kubernetes scheduler under node pressure" +globalDefault: false +preemptionPolicy: PreemptLowerPriority +value: 1000000000 +--- # Source: longhorn/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount @@ -14,7 +28,18 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 +--- +# Source: longhorn/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: longhorn-ui-service-account + namespace: longhorn-system + labels: + app.kubernetes.io/name: longhorn + app.kubernetes.io/instance: longhorn + app.kubernetes.io/version: v1.10.1 --- # Source: longhorn/templates/serviceaccount.yaml apiVersion: v1 @@ -25,7 +50,20 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 +--- +# Source: longhorn/templates/default-resource.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: longhorn-default-resource + namespace: longhorn-system + labels: + app.kubernetes.io/name: longhorn + app.kubernetes.io/instance: longhorn + app.kubernetes.io/version: v1.10.1 +data: + default-resource.yaml: |- --- # Source: longhorn/templates/default-setting.yaml apiVersion: v1 @@ -36,10 +74,15 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 data: default-setting.yaml: |- - storage-minimal-available-percentage: "10" + default-replica-count: 1 + disable-revision-counter: "{\"v1\":\"true\"}" + guaranteed-instance-manager-cpu: "{\"v1\":\"4\",\"v2\":\"4\"}" + priority-class: "longhorn-critical" + storage-minimal-available-percentage: 5 + storage-reserved-percentage-for-default-disk: 5 --- # Source: longhorn/templates/storageclass.yaml apiVersion: v1 @@ -50,7 +93,7 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 data: storageclass.yaml: | kind: StorageClass @@ -64,23 +107,27 @@ data: reclaimPolicy: "Delete" volumeBindingMode: Immediate parameters: - numberOfReplicas: "3" + numberOfReplicas: "1" staleReplicaTimeout: "30" fromBackup: "" fsType: "ext4" dataLocality: "disabled" + unmapMarkSnapChainRemoved: "ignored" + disableRevisionCounter: "true" + dataEngine: "v1" + backupTargetName: "default" --- # Source: longhorn/templates/crds.yaml +# Generated crds.yaml from github.com/longhorn/longhorn-manager/k8s/pkg/apis and the crds.yaml will be copied to longhorn/longhorn chart/templates and cannot be directly used by kubectl apply. apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: backingimagedatasources.longhorn.io spec: @@ -94,54 +141,13 @@ spec: singular: backingimagedatasource scope: Namespaced versions: - - additionalPrinterColumns: - - description: The current state of the pod used to provision the backing image file from source - jsonPath: .status.currentState - name: State - type: string - - description: The data source type - jsonPath: .spec.sourceType - name: SourceType - type: string - - description: The node the backing image file will be prepared on - jsonPath: .spec.nodeID - name: Node - type: string - - description: The disk the backing image file will be prepared on - jsonPath: .spec.diskUUID - name: DiskUUID - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: BackingImageDataSource is where Longhorn stores backing image data source object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: The system generated UUID of the provisioned backing image file jsonPath: .spec.uuid name: UUID type: string - - description: The current state of the pod used to provision the backing image file from source + - description: The current state of the pod used to provision the backing image + file from source jsonPath: .status.currentState name: State type: string @@ -167,18 +173,29 @@ spec: name: v1beta2 schema: openAPIV3Schema: - description: BackingImageDataSource is where Longhorn stores backing image data source object. + description: BackingImageDataSource is where Longhorn stores backing image + data source object. 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: BackingImageDataSourceSpec defines the desired state of the Longhorn backing image data source + description: BackingImageDataSourceSpec defines the desired state of the + Longhorn backing image data source properties: checksum: type: string @@ -199,12 +216,15 @@ spec: - download - upload - export-from-volume + - restore + - clone type: string uuid: type: string type: object status: - description: BackingImageDataSourceStatus defines the observed state of the Longhorn backing image data source + description: BackingImageDataSourceStatus defines the observed state of + the Longhorn backing image data source properties: checksum: type: string @@ -234,24 +254,17 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: backingimagemanagers.longhorn.io spec: @@ -265,52 +278,6 @@ spec: singular: backingimagemanager scope: Namespaced versions: - - additionalPrinterColumns: - - description: The current state of the manager - jsonPath: .status.currentState - name: State - type: string - - description: The image the manager pod will use - jsonPath: .spec.image - name: Image - type: string - - description: The node the manager is on - jsonPath: .spec.nodeID - name: Node - type: string - - description: The disk the manager is responsible for - jsonPath: .spec.diskUUID - name: DiskUUID - type: string - - description: The disk path the manager is using - jsonPath: .spec.diskPath - name: DiskPath - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: BackingImageManager is where Longhorn stores backing image manager object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: The current state of the manager jsonPath: .status.currentState @@ -338,18 +305,29 @@ spec: name: v1beta2 schema: openAPIV3Schema: - description: BackingImageManager is where Longhorn stores backing image manager object. + description: BackingImageManager is where Longhorn stores backing image manager + object. 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: BackingImageManagerSpec defines the desired state of the Longhorn backing image manager + description: BackingImageManagerSpec defines the desired state of the + Longhorn backing image manager properties: backingImages: additionalProperties: @@ -365,7 +343,8 @@ spec: type: string type: object status: - description: BackingImageManagerStatus defines the observed state of the Longhorn backing image manager + description: BackingImageManagerStatus defines the observed state of the + Longhorn backing image manager properties: apiMinVersion: type: integer @@ -376,18 +355,15 @@ spec: properties: currentChecksum: type: string - directory: - description: 'Deprecated: This field is useless.' - type: string - downloadProgress: - description: 'Deprecated: This field is renamed to `Progress`.' - type: integer message: type: string name: type: string progress: type: integer + realSize: + format: int64 + type: integer senderManagerAddress: type: string sendingReference: @@ -397,11 +373,11 @@ spec: type: integer state: type: string - url: - description: 'Deprecated: This field is useless now. The manager of backing image files doesn''t care if a file is downloaded and how.' - type: string uuid: type: string + virtualSize: + format: int64 + type: integer type: object nullable: true type: object @@ -419,39 +395,20 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: backingimages.longhorn.io spec: - conversion: - strategy: Webhook - webhook: - clientConfig: - service: - name: longhorn-conversion-webhook - namespace: longhorn-system - path: /v1/webhook/conversion - port: 9443 - conversionReviewVersions: - - v1beta2 - - v1beta1 group: longhorn.io names: kind: BackingImage @@ -462,36 +419,6 @@ spec: singular: backingimage scope: Namespaced versions: - - additionalPrinterColumns: - - description: The backing image name - jsonPath: .spec.image - name: Image - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: BackingImage is where Longhorn stores backing image object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: The system generated UUID jsonPath: .status.uuid @@ -505,6 +432,10 @@ spec: jsonPath: .status.size name: Size type: string + - description: The virtual size of the image (may be larger than file size) + jsonPath: .status.virtualSize + name: VirtualSize + type: string - jsonPath: .metadata.creationTimestamp name: Age type: date @@ -514,24 +445,65 @@ spec: description: BackingImage is where Longhorn stores backing image object. 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: BackingImageSpec defines the desired state of the Longhorn backing image + description: BackingImageSpec defines the desired state of the Longhorn + backing image properties: checksum: type: string + dataEngine: + default: v1 + enum: + - v1 + - v2 + type: string + diskFileSpecMap: + additionalProperties: + properties: + dataEngine: + enum: + - v1 + - v2 + type: string + evictionRequested: + type: boolean + type: object + type: object + diskSelector: + items: + type: string + type: array disks: additionalProperties: type: string + description: Deprecated. We are now using DiskFileSpecMap to assign + different spec to the file on different disks. type: object - imageURL: - description: 'Deprecated: This kind of info will be included in the related BackingImageDataSource.' + minNumberOfCopies: + type: integer + nodeSelector: + items: + type: string + type: array + secret: + type: string + secretNamespace: type: string sourceParameters: additionalProperties: @@ -542,29 +514,24 @@ spec: - download - upload - export-from-volume + - restore + - clone type: string type: object status: - description: BackingImageStatus defines the observed state of the Longhorn backing image status + description: BackingImageStatus defines the observed state of the Longhorn + backing image status properties: checksum: type: string - diskDownloadProgressMap: - additionalProperties: - type: integer - description: 'Deprecated: Replaced by field `Progress` in `DiskFileStatusMap`.' - nullable: true - type: object - diskDownloadStateMap: - additionalProperties: - description: BackingImageDownloadState is replaced by BackingImageState. - type: string - description: 'Deprecated: Replaced by field `State` in `DiskFileStatusMap`.' - nullable: true - type: object diskFileStatusMap: additionalProperties: properties: + dataEngine: + enum: + - v1 + - v2 + type: string lastStateTransitionTime: type: string message: @@ -583,35 +550,216 @@ spec: type: object ownerID: type: string + realSize: + description: Real size of image in bytes, which may be smaller than + the size when the file is a sparse file. Will be zero until known + (e.g. while a backing image is uploading) + format: int64 + type: integer size: format: int64 type: integer uuid: type: string + v2FirstCopyDisk: + type: string + v2FirstCopyStatus: + description: It is pending -> in-progress -> ready/failed + type: string + virtualSize: + description: Virtual size of image in bytes, which may be larger than + physical size. Will be zero until known (e.g. while a backing image + is uploading) + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +# Source: longhorn/templates/crds.yaml +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.17.1 + labels: + app.kubernetes.io/name: longhorn + app.kubernetes.io/instance: longhorn + app.kubernetes.io/version: v1.10.1 + longhorn-manager: "" + name: backupbackingimages.longhorn.io +spec: + group: longhorn.io + names: + kind: BackupBackingImage + listKind: BackupBackingImageList + plural: backupbackingimages + shortNames: + - lhbbi + singular: backupbackingimage + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: The backing image name + jsonPath: .status.backingImage + name: BackingImage + type: string + - description: The backing image size + jsonPath: .status.size + name: Size + type: string + - description: The backing image backup upload finished time + jsonPath: .status.backupCreatedAt + name: BackupCreatedAt + type: string + - description: The backing image backup state + jsonPath: .status.state + name: State + type: string + - description: The last synced time + jsonPath: .status.lastSyncedAt + name: LastSyncedAt + type: string + name: v1beta2 + schema: + openAPIV3Schema: + description: BackupBackingImage is where Longhorn stores backing image backup + object. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: BackupBackingImageSpec defines the desired state of the Longhorn + backing image backup + properties: + backingImage: + description: The backing image name. + type: string + backupTargetName: + description: The backup target name. + nullable: true + type: string + labels: + additionalProperties: + type: string + description: The labels of backing image backup. + type: object + syncRequestedAt: + description: The time to request run sync the remote backing image + backup. + format: date-time + nullable: true + type: string + userCreated: + description: Is this CR created by user through API or UI. + type: boolean + required: + - backingImage + - userCreated + type: object + status: + description: BackupBackingImageStatus defines the observed state of the + Longhorn backing image backup + properties: + backingImage: + description: The backing image name. + type: string + backupCreatedAt: + description: The backing image backup upload finished time. + type: string + checksum: + description: The checksum of the backing image. + type: string + compressionMethod: + description: Compression method + type: string + error: + description: The error message when taking the backing image backup. + type: string + labels: + additionalProperties: + type: string + description: The labels of backing image backup. + nullable: true + type: object + lastSyncedAt: + description: The last time that the backing image backup was synced + with the remote backup target. + format: date-time + nullable: true + type: string + managerAddress: + description: The address of the backing image manager that runs backing + image backup. + type: string + messages: + additionalProperties: + type: string + description: The error messages when listing or inspecting backing + image backup. + nullable: true + type: object + ownerID: + description: The node ID on which the controller is responsible to + reconcile this CR. + type: string + progress: + description: The backing image backup progress. + type: integer + secret: + description: Record the secret if this backup backing image is encrypted + type: string + secretNamespace: + description: Record the secret namespace if this backup backing image + is encrypted + type: string + size: + description: The backing image size. + format: int64 + type: integer + state: + description: |- + The backing image backup creation state. + Can be "", "InProgress", "Completed", "Error", "Unknown". + type: string + url: + description: The backing image backup URL. + type: string type: object type: object served: true storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: backups.longhorn.io spec: @@ -638,48 +786,9 @@ spec: jsonPath: .status.snapshotCreatedAt name: SnapshotCreatedAt type: string - - description: The backup state - jsonPath: .status.state - name: State - type: string - - description: The backup last synced time - jsonPath: .status.lastSyncedAt - name: LastSyncedAt - type: string - name: v1beta1 - schema: - openAPIV3Schema: - description: Backup is where Longhorn stores backup object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - description: The snapshot name - jsonPath: .status.snapshotName - name: SnapshotName - type: string - - description: The snapshot size - jsonPath: .status.size - name: SnapshotSize - type: string - - description: The snapshot creation time - jsonPath: .status.snapshotCreatedAt - name: SnapshotCreatedAt + - description: The backup target name + jsonPath: .status.backupTargetName + name: BackupTarget type: string - description: The backup state jsonPath: .status.state @@ -695,16 +804,43 @@ spec: description: Backup is where Longhorn stores backup object. 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: BackupSpec defines the desired state of the Longhorn backup properties: + backupBlockSize: + description: The backup block size. 0 means the legacy default size + 2MiB, and -1 indicate the block size is invalid. + enum: + - "-1" + - "2097152" + - "16777216" + format: int64 + type: string + backupMode: + description: |- + The backup mode of this backup. + Can be "full" or "incremental" + enum: + - full + - incremental + - "" + type: string labels: additionalProperties: type: string @@ -725,6 +861,12 @@ spec: backupCreatedAt: description: The snapshot backup upload finished time. type: string + backupTargetName: + description: The backup target name. + type: string + compressionMethod: + description: Compression method + type: string error: description: The error message when taking the snapshot backup. type: string @@ -735,22 +877,31 @@ spec: nullable: true type: object lastSyncedAt: - description: The last time that the backup was synced with the remote backup target. + description: The last time that the backup was synced with the remote + backup target. format: date-time nullable: true type: string messages: additionalProperties: type: string - description: The error messages when calling longhorn engine on listing or inspecting backups. + description: The error messages when calling longhorn engine on listing + or inspecting backups. nullable: true type: object + newlyUploadDataSize: + description: Size in bytes of newly uploaded data + type: string ownerID: - description: The node ID on which the controller is responsible to reconcile this backup CR. + description: The node ID on which the controller is responsible to + reconcile this backup CR. type: string progress: description: The snapshot backup progress. type: integer + reUploadedDataSize: + description: Size in bytes of reuploaded data + type: string replicaAddress: description: The address of the replica that runs snapshot backup. type: string @@ -764,7 +915,9 @@ spec: description: The snapshot name. type: string state: - description: The backup creation state. Can be "", "InProgress", "Completed", "Error", "Unknown". + description: |- + The backup creation state. + Can be "", "InProgress", "Completed", "Error", "Unknown". type: string url: description: The snapshot backup URL. @@ -787,39 +940,20 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: backuptargets.longhorn.io spec: - conversion: - strategy: Webhook - webhook: - clientConfig: - service: - name: longhorn-conversion-webhook - namespace: longhorn-system - path: /v1/webhook/conversion - port: 9443 - conversionReviewVersions: - - v1beta2 - - v1beta1 group: longhorn.io names: kind: BackupTarget @@ -830,49 +964,6 @@ spec: singular: backuptarget scope: Namespaced versions: - - additionalPrinterColumns: - - description: The backup target URL - jsonPath: .spec.backupTargetURL - name: URL - type: string - - description: The backup target credential secret - jsonPath: .spec.credentialSecret - name: Credential - type: string - - description: The backup target poll interval - jsonPath: .spec.pollInterval - name: LastBackupAt - type: string - - description: Indicate whether the backup target is available or not - jsonPath: .status.available - name: Available - type: boolean - - description: The backup target last synced time - jsonPath: .status.lastSyncedAt - name: LastSyncedAt - type: string - name: v1beta1 - schema: - openAPIV3Schema: - description: BackupTarget is where Longhorn stores backup target object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: The backup target URL jsonPath: .spec.backupTargetURL @@ -900,15 +991,25 @@ spec: description: BackupTarget is where Longhorn stores backup target object. 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: BackupTargetSpec defines the desired state of the Longhorn backup target + description: BackupTargetSpec defines the desired state of the Longhorn + backup target properties: backupTargetURL: description: The backup target URL. @@ -917,7 +1018,8 @@ spec: description: The backup target credential secret. type: string pollInterval: - description: The interval that the cluster needs to run sync with the backup target. + description: The interval that the cluster needs to run sync with + the backup target. type: string syncRequestedAt: description: The time to request run sync the remote backup target. @@ -926,10 +1028,12 @@ spec: type: string type: object status: - description: BackupTargetStatus defines the observed state of the Longhorn backup target + description: BackupTargetStatus defines the observed state of the Longhorn + backup target properties: available: - description: Available indicates if the remote backup target is available or not. + description: Available indicates if the remote backup target is available + or not. type: boolean conditions: description: Records the reason on why the backup target is unavailable. @@ -939,16 +1043,21 @@ spec: description: Last time we probed the condition. type: string lastTransitionTime: - description: Last time the condition transitioned from one status to another. + description: Last time the condition transitioned from one status + to another. type: string message: - description: Human-readable message indicating details about last transition. + description: Human-readable message indicating details about + last transition. type: string reason: - description: Unique, one-word, CamelCase reason for the condition's last transition. + description: Unique, one-word, CamelCase reason for the condition's + last transition. type: string status: - description: Status is the status of the condition. Can be True, False, Unknown. + description: |- + Status is the status of the condition. + Can be True, False, Unknown. type: string type: description: Type is the type of the condition. @@ -957,12 +1066,14 @@ spec: nullable: true type: array lastSyncedAt: - description: The last time that the controller synced with the remote backup target. + description: The last time that the controller synced with the remote + backup target. format: date-time nullable: true type: string ownerID: - description: The node ID on which the controller is responsible to reconcile this backup target CR. + description: The node ID on which the controller is responsible to + reconcile this backup target CR. type: string type: object type: object @@ -970,24 +1081,17 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: backupvolumes.longhorn.io spec: @@ -1002,45 +1106,10 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: - - description: The backup volume creation time - jsonPath: .status.createdAt - name: CreatedAt + - description: The backup target name + jsonPath: .spec.backupTargetName + name: BackupTarget type: string - - description: The backup volume last backup name - jsonPath: .status.lastBackupName - name: LastBackupName - type: string - - description: The backup volume last backup time - jsonPath: .status.lastBackupAt - name: LastBackupAt - type: string - - description: The backup volume last synced time - jsonPath: .status.lastSyncedAt - name: LastSyncedAt - type: string - name: v1beta1 - schema: - openAPIV3Schema: - description: BackupVolume is where Longhorn stores backup volume object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - description: The backup volume creation time jsonPath: .status.createdAt name: CreatedAt @@ -1063,24 +1132,42 @@ spec: description: BackupVolume is where Longhorn stores backup volume object. 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: BackupVolumeSpec defines the desired state of the Longhorn backup volume + description: BackupVolumeSpec defines the desired state of the Longhorn + backup volume properties: + backupTargetName: + description: The backup target name that the backup volume was synced. + nullable: true + type: string syncRequestedAt: description: The time to request run sync the remote backup volume. format: date-time nullable: true type: string + volumeName: + description: The volume name that the backup volume was used to backup. + type: string type: object status: - description: BackupVolumeStatus defines the observed state of the Longhorn backup volume + description: BackupVolumeStatus defines the observed state of the Longhorn + backup volume properties: backingImageChecksum: description: the backing image checksum. @@ -1112,62 +1199,48 @@ spec: nullable: true type: string lastSyncedAt: - description: The last time that the backup volume was synced into the cluster. + description: The last time that the backup volume was synced into + the cluster. format: date-time nullable: true type: string messages: additionalProperties: type: string - description: The error messages when call longhorn engine on list or inspect backup volumes. + description: The error messages when call longhorn engine on list + or inspect backup volumes. nullable: true type: object ownerID: - description: The node ID on which the controller is responsible to reconcile this backup volume CR. + description: The node ID on which the controller is responsible to + reconcile this backup volume CR. type: string size: description: The backup volume size. type: string + storageClassName: + description: the storage class name of pv/pvc binding with the volume. + type: string type: object type: object served: true storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: engineimages.longhorn.io spec: - preserveUnknownFields: false - conversion: - strategy: Webhook - webhook: - clientConfig: - service: - name: longhorn-conversion-webhook - namespace: longhorn-system - path: /v1/webhook/conversion - port: 9443 - conversionReviewVersions: - - v1beta2 - - v1beta1 group: longhorn.io names: kind: EngineImage @@ -1179,48 +1252,10 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: - - description: State of the engine image - jsonPath: .status.state - name: State - type: string - - description: The Longhorn engine image - jsonPath: .spec.image - name: Image - type: string - - description: Number of resources using the engine image - jsonPath: .status.refCount - name: RefCount - type: integer - - description: The build date of the engine image - jsonPath: .status.buildDate - name: BuildDate - type: date - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: EngineImage is where Longhorn stores engine image object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: + - description: Compatibility of the engine image + jsonPath: .status.incompatible + name: Incompatible + type: boolean - description: State of the engine image jsonPath: .status.state name: State @@ -1246,15 +1281,25 @@ spec: description: EngineImage is where Longhorn stores engine image object. 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: EngineImageSpec defines the desired state of the Longhorn engine image + description: EngineImageSpec defines the desired state of the Longhorn + engine image properties: image: minLength: 1 @@ -1263,7 +1308,8 @@ spec: - image type: object status: - description: EngineImageStatus defines the observed state of the Longhorn engine image + description: EngineImageStatus defines the observed state of the Longhorn + engine image properties: buildDate: type: string @@ -1278,16 +1324,21 @@ spec: description: Last time we probed the condition. type: string lastTransitionTime: - description: Last time the condition transitioned from one status to another. + description: Last time the condition transitioned from one status + to another. type: string message: - description: Human-readable message indicating details about last transition. + description: Human-readable message indicating details about + last transition. type: string reason: - description: Unique, one-word, CamelCase reason for the condition's last transition. + description: Unique, one-word, CamelCase reason for the condition's + last transition. type: string status: - description: Status is the status of the condition. Can be True, False, Unknown. + description: |- + Status is the status of the condition. + Can be True, False, Unknown. type: string type: description: Type is the type of the condition. @@ -1305,6 +1356,8 @@ spec: type: integer gitCommit: type: string + incompatible: + type: boolean noRefSince: type: string nodeDeploymentMap: @@ -1326,24 +1379,17 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: engines.longhorn.io spec: @@ -1358,48 +1404,10 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: - - description: The current state of the engine - jsonPath: .status.currentState - name: State + - description: The data engine of the engine + jsonPath: .spec.dataEngine + name: Data Engine type: string - - description: The node that the engine is on - jsonPath: .spec.nodeID - name: Node - type: string - - description: The instance manager of the engine - jsonPath: .status.instanceManagerName - name: InstanceManager - type: string - - description: The current image of the engine - jsonPath: .status.currentImage - name: Image - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Engine is where Longhorn stores engine object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - description: The current state of the engine jsonPath: .status.currentState name: State @@ -1425,10 +1433,19 @@ spec: description: Engine is where Longhorn stores engine object. 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' + 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' + 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 @@ -1439,18 +1456,25 @@ spec: type: boolean backupVolume: type: string + dataEngine: + enum: + - v1 + - v2 + type: string desireState: type: string disableFrontend: type: boolean - engineImage: - type: string frontend: enum: - blockdev - iscsi + - nvmf + - ublk - "" type: string + image: + type: string logRequested: type: boolean nodeID: @@ -1467,6 +1491,11 @@ spec: type: boolean salvageRequested: type: boolean + snapshotMaxCount: + type: integer + snapshotMaxSize: + format: int64 + type: string unmapMarkSnapChainRemovedEnabled: type: boolean upgradedReplicaAddressMap: @@ -1525,16 +1554,21 @@ spec: description: Last time we probed the condition. type: string lastTransitionTime: - description: Last time the condition transitioned from one status to another. + description: Last time the condition transitioned from one status + to another. type: string message: - description: Human-readable message indicating details about last transition. + description: Human-readable message indicating details about + last transition. type: string reason: - description: Unique, one-word, CamelCase reason for the condition's last transition. + description: Unique, one-word, CamelCase reason for the condition's + last transition. type: string status: - description: Status is the status of the condition. Can be True, False, Unknown. + description: |- + Status is the status of the condition. + Can be True, False, Unknown. type: string type: description: Type is the type of the condition. @@ -1591,6 +1625,9 @@ spec: rebuildStatus: additionalProperties: properties: + appliedRebuildingMBps: + format: int64 + type: integer error: type: string fromReplicaAddress: @@ -1609,6 +1646,14 @@ spec: type: string nullable: true type: object + replicaTransitionTimeMap: + additionalProperties: + type: string + description: |- + ReplicaTransitionTimeMap records the time a replica in ReplicaModeMap transitions from one mode to another (or + from not being in the ReplicaModeMap to being in it). This information is sometimes required by other controllers + (e.g. the volume controller uses it to determine the correct value for replica.Spec.lastHealthyAt). + type: object restoreStatus: additionalProperties: properties: @@ -1633,6 +1678,11 @@ spec: type: object salvageExecuted: type: boolean + snapshotMaxCount: + type: integer + snapshotMaxSize: + format: int64 + type: string snapshots: additionalProperties: properties: @@ -1665,34 +1715,34 @@ spec: type: string started: type: boolean + starting: + type: boolean storageIP: type: string + ublkID: + format: int32 + type: integer unmapMarkSnapChainRemovedEnabled: type: boolean + uuid: + type: string type: object type: object served: true storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: instancemanagers.longhorn.io spec: @@ -1707,44 +1757,10 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: - - description: The state of the instance manager - jsonPath: .status.currentState - name: State + - description: The data engine of the instance manager + jsonPath: .spec.dataEngine + name: Data Engine type: string - - description: The type of the instance manager (engine or replica) - jsonPath: .spec.type - name: Type - type: string - - description: The node that the instance manager is running on - jsonPath: .spec.nodeID - name: Node - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: InstanceManager is where Longhorn stores instance manager object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - description: The state of the instance manager jsonPath: .status.currentState name: State @@ -1766,52 +1782,115 @@ spec: description: InstanceManager is where Longhorn stores instance manager object. 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: InstanceManagerSpec defines the desired state of the Longhorn instancer manager + description: InstanceManagerSpec defines the desired state of the Longhorn + instance manager properties: - engineImage: - description: 'TODO: deprecate this field' + dataEngine: type: string + dataEngineSpec: + properties: + v2: + properties: + cpuMask: + type: string + type: object + type: object image: type: string nodeID: type: string type: enum: + - aio - engine - replica type: string type: object status: - description: InstanceManagerStatus defines the observed state of the Longhorn instance manager + description: InstanceManagerStatus defines the observed state of the Longhorn + instance manager properties: apiMinVersion: type: integer apiVersion: type: integer - proxyApiMinVersion: - type: integer - proxyApiVersion: - type: integer + backingImages: + additionalProperties: + properties: + currentChecksum: + type: string + diskUUID: + type: string + message: + type: string + name: + type: string + progress: + type: integer + size: + format: int64 + type: integer + state: + type: string + uuid: + type: string + type: object + nullable: true + type: object currentState: type: string - instances: + dataEngineStatus: + properties: + v2: + properties: + cpuMask: + type: string + interruptModeEnabled: + description: |- + InterruptModeEnabled indicates whether the V2 data engine is running in + interrupt mode (true) or polling mode (false). Set by Longhorn manager; + read-only to users. + enum: + - "" + - "true" + - "false" + type: string + type: object + type: object + instanceEngines: additionalProperties: properties: spec: properties: + dataEngine: + type: string name: type: string type: object status: properties: + conditions: + additionalProperties: + type: boolean + nullable: true + type: object endpoint: type: string errorMsg: @@ -1829,56 +1908,154 @@ spec: type: integer state: type: string + targetPortEnd: + format: int32 + type: integer + targetPortStart: + format: int32 + type: integer type: type: string + ublkID: + format: int32 + type: integer + uuid: + type: string type: object type: object nullable: true type: object + instanceReplicas: + additionalProperties: + properties: + spec: + properties: + dataEngine: + type: string + name: + type: string + type: object + status: + properties: + conditions: + additionalProperties: + type: boolean + nullable: true + type: object + endpoint: + type: string + errorMsg: + type: string + listen: + type: string + portEnd: + format: int32 + type: integer + portStart: + format: int32 + type: integer + resourceVersion: + format: int64 + type: integer + state: + type: string + targetPortEnd: + format: int32 + type: integer + targetPortStart: + format: int32 + type: integer + type: + type: string + ublkID: + format: int32 + type: integer + uuid: + type: string + type: object + type: object + nullable: true + type: object + instances: + additionalProperties: + properties: + spec: + properties: + dataEngine: + type: string + name: + type: string + type: object + status: + properties: + conditions: + additionalProperties: + type: boolean + nullable: true + type: object + endpoint: + type: string + errorMsg: + type: string + listen: + type: string + portEnd: + format: int32 + type: integer + portStart: + format: int32 + type: integer + resourceVersion: + format: int64 + type: integer + state: + type: string + targetPortEnd: + format: int32 + type: integer + targetPortStart: + format: int32 + type: integer + type: + type: string + ublkID: + format: int32 + type: integer + uuid: + type: string + type: object + type: object + description: 'Deprecated: Replaced by InstanceEngines and InstanceReplicas' + nullable: true + type: object ip: type: string ownerID: type: string + proxyApiMinVersion: + type: integer + proxyApiVersion: + type: integer type: object type: object served: true storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: nodes.longhorn.io spec: - preserveUnknownFields: false - conversion: - strategy: Webhook - webhook: - clientConfig: - service: - name: longhorn-conversion-webhook - namespace: longhorn-system - path: /v1/webhook/conversion - port: 9443 - conversionReviewVersions: - - v1beta2 - - v1beta1 group: longhorn.io names: kind: Node @@ -1889,50 +2066,13 @@ spec: singular: node scope: Namespaced versions: - - additionalPrinterColumns: - - description: Indicate whether the node is ready - jsonPath: .status.conditions['Ready']['status'] - name: Ready - type: string - - description: Indicate whether the user disabled/enabled replica scheduling for the node - jsonPath: .spec.allowScheduling - name: AllowScheduling - type: boolean - - description: Indicate whether Longhorn can schedule replicas on the node - jsonPath: .status.conditions['Schedulable']['status'] - name: Schedulable - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Node is where Longhorn stores Longhorn node object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: Indicate whether the node is ready jsonPath: .status.conditions[?(@.type=='Ready')].status name: Ready type: string - - description: Indicate whether the user disabled/enabled replica scheduling for the node + - description: Indicate whether the user disabled/enabled replica scheduling for + the node jsonPath: .spec.allowScheduling name: AllowScheduling type: boolean @@ -1949,10 +2089,19 @@ spec: description: Node is where Longhorn stores Longhorn node object. 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' + 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' + 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 @@ -1966,6 +2115,18 @@ spec: properties: allowScheduling: type: boolean + diskDriver: + enum: + - "" + - auto + - aio + - nvme + type: string + diskType: + enum: + - filesystem + - block + type: string evictionRequested: type: boolean path: @@ -1979,14 +2140,12 @@ spec: type: array type: object type: object - engineManagerCPURequest: - type: integer evictionRequested: type: boolean + instanceManagerCPURequest: + type: integer name: type: string - replicaManagerCPURequest: - type: integer tags: items: type: string @@ -1995,6 +2154,8 @@ spec: status: description: NodeStatus defines the observed state of the Longhorn node properties: + autoEvicting: + type: boolean conditions: items: properties: @@ -2002,16 +2163,21 @@ spec: description: Last time we probed the condition. type: string lastTransitionTime: - description: Last time the condition transitioned from one status to another. + description: Last time the condition transitioned from one status + to another. type: string message: - description: Human-readable message indicating details about last transition. + description: Human-readable message indicating details about + last transition. type: string reason: - description: Unique, one-word, CamelCase reason for the condition's last transition. + description: Unique, one-word, CamelCase reason for the condition's + last transition. type: string status: - description: Status is the status of the condition. Can be True, False, Unknown. + description: |- + Status is the status of the condition. + Can be True, False, Unknown. type: string type: description: Type is the type of the condition. @@ -2029,16 +2195,21 @@ spec: description: Last time we probed the condition. type: string lastTransitionTime: - description: Last time the condition transitioned from one status to another. + description: Last time the condition transitioned from + one status to another. type: string message: - description: Human-readable message indicating details about last transition. + description: Human-readable message indicating details + about last transition. type: string reason: - description: Unique, one-word, CamelCase reason for the condition's last transition. + description: Unique, one-word, CamelCase reason for the + condition's last transition. type: string status: - description: Status is the status of the condition. Can be True, False, Unknown. + description: |- + Status is the status of the condition. + Can be True, False, Unknown. type: string type: description: Type is the type of the condition. @@ -2046,8 +2217,26 @@ spec: type: object nullable: true type: array + diskDriver: + type: string + diskName: + type: string + diskPath: + type: string + diskType: + type: string diskUUID: type: string + filesystemType: + type: string + instanceManagerName: + type: string + scheduledBackingImage: + additionalProperties: + format: int64 + type: integer + nullable: true + type: object scheduledReplica: additionalProperties: format: int64 @@ -2073,8 +2262,6 @@ spec: lastPeriodicCheckedAt: format: date-time type: string - snapshotCheckState: - type: string type: object zone: type: string @@ -2084,24 +2271,17 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: orphans.longhorn.io spec: @@ -2130,21 +2310,42 @@ spec: description: Orphan is where Longhorn stores orphan object. 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: OrphanSpec defines the desired state of the Longhorn orphaned data + description: OrphanSpec defines the desired state of the Longhorn orphaned + data properties: + dataEngine: + description: |- + The type of data engine for instance orphan. + Can be "v1", "v2". + enum: + - v1 + - v2 + type: string nodeID: - description: The node ID on which the controller is responsible to reconcile this orphan CR. + description: The node ID on which the controller is responsible to + reconcile this orphan CR. type: string orphanType: - description: The type of the orphaned data. Can be "replica". + description: |- + The type of the orphaned data. + Can be "replica". type: string parameters: additionalProperties: @@ -2153,7 +2354,8 @@ spec: type: object type: object status: - description: OrphanStatus defines the observed state of the Longhorn orphaned data + description: OrphanStatus defines the observed state of the Longhorn orphaned + data properties: conditions: items: @@ -2162,16 +2364,21 @@ spec: description: Last time we probed the condition. type: string lastTransitionTime: - description: Last time the condition transitioned from one status to another. + description: Last time the condition transitioned from one status + to another. type: string message: - description: Human-readable message indicating details about last transition. + description: Human-readable message indicating details about + last transition. type: string reason: - description: Unique, one-word, CamelCase reason for the condition's last transition. + description: Unique, one-word, CamelCase reason for the condition's + last transition. type: string status: - description: Status is the status of the condition. Can be True, False, Unknown. + description: |- + Status is the status of the condition. + Can be True, False, Unknown. type: string type: description: Type is the type of the condition. @@ -2187,21 +2394,17 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: + app.kubernetes.io/name: longhorn + app.kubernetes.io/instance: longhorn + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: recurringjobs.longhorn.io spec: @@ -2216,61 +2419,13 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: - - description: Sets groupings to the jobs. When set to "default" group will be added to the volume label when no other job label exist in volume + - description: Sets groupings to the jobs. When set to "default" group will be + added to the volume label when no other job label exist in volume jsonPath: .spec.groups name: Groups type: string - - description: Should be one of "backup" or "snapshot" - jsonPath: .spec.task - name: Task - type: string - - description: The cron expression represents recurring job scheduling - jsonPath: .spec.cron - name: Cron - type: string - - description: The number of snapshots/backups to keep for the volume - jsonPath: .spec.retain - name: Retain - type: integer - - description: The concurrent job to run by each cron job - jsonPath: .spec.concurrency - name: Concurrency - type: integer - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - description: Specify the labels - jsonPath: .spec.labels - name: Labels - type: string - name: v1beta1 - schema: - openAPIV3Schema: - description: RecurringJob is where Longhorn stores recurring job object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - description: Sets groupings to the jobs. When set to "default" group will be added to the volume label when no other job label exist in volume - jsonPath: .spec.groups - name: Groups - type: string - - description: Should be one of "backup" or "snapshot" + - description: Should be one of "snapshot", "snapshot-force-create", "snapshot-cleanup", + "snapshot-delete", "backup", "backup-force-create", "filesystem-trim" or "system-backup" jsonPath: .spec.task name: Task type: string @@ -2299,15 +2454,25 @@ spec: description: RecurringJob is where Longhorn stores recurring job object. 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: RecurringJobSpec defines the desired state of the Longhorn recurring job + description: RecurringJobSpec defines the desired state of the Longhorn + recurring job properties: concurrency: description: The concurrency of taking the snapshot/backup. @@ -2328,21 +2493,41 @@ spec: name: description: The recurring job name. type: string + parameters: + additionalProperties: + type: string + description: |- + The parameters of the snapshot/backup. + Support parameters: "full-backup-interval", "volume-backup-policy". + type: object retain: description: The retain count of the snapshot/backup. type: integer task: - description: The recurring job type. Can be "snapshot" or "backup". + description: |- + The recurring job task. + Can be "snapshot", "snapshot-force-create", "snapshot-cleanup", "snapshot-delete", "backup", "backup-force-create", "filesystem-trim" or "system-backup". enum: - snapshot + - snapshot-force-create + - snapshot-cleanup + - snapshot-delete - backup + - backup-force-create + - filesystem-trim + - system-backup type: string type: object status: - description: RecurringJobStatus defines the observed state of the Longhorn recurring job + description: RecurringJobStatus defines the observed state of the Longhorn + recurring job properties: + executionCount: + description: The number of jobs that have been triggered. + type: integer ownerID: - description: The owner ID which is responsible to reconcile this recurring job CR. + description: The owner ID which is responsible to reconcile this recurring + job CR. type: string type: object type: object @@ -2350,24 +2535,17 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: replicas.longhorn.io spec: @@ -2382,52 +2560,10 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: - - description: The current state of the replica - jsonPath: .status.currentState - name: State + - description: The data engine of the replica + jsonPath: .spec.dataEngine + name: Data Engine type: string - - description: The node that the replica is on - jsonPath: .spec.nodeID - name: Node - type: string - - description: The disk that the replica is on - jsonPath: .spec.diskID - name: Disk - type: string - - description: The instance manager of the replica - jsonPath: .status.instanceManagerName - name: InstanceManager - type: string - - description: The current image of the replica - jsonPath: .status.currentImage - name: Image - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Replica is where Longhorn stores replica object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - description: The current state of the replica jsonPath: .status.currentState name: State @@ -2457,10 +2593,19 @@ spec: description: Replica is where Longhorn stores replica object. 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' + 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' + 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 @@ -2471,13 +2616,12 @@ spec: type: boolean backingImage: type: string - baseImage: - description: Deprecated. Rename to BackingImage - type: string dataDirectoryName: type: string - dataPath: - description: Deprecated + dataEngine: + enum: + - v1 + - v2 type: string desireState: type: string @@ -2485,18 +2629,56 @@ spec: type: string diskPath: type: string - engineImage: - type: string engineName: type: string + evictionRequested: + type: boolean failedAt: + description: |- + FailedAt is set when a running replica fails or when a running engine is unable to use a replica for any reason. + FailedAt indicates the time the failure occurred. When FailedAt is set, a replica is likely to have useful + (though possibly stale) data. A replica with FailedAt set must be rebuilt from a non-failed replica (or it can + be used in a salvage if all replicas are failed). FailedAt is cleared before a rebuild or salvage. FailedAt may + be later than the corresponding entry in an engine's replicaTransitionTimeMap because it is set when the volume + controller acknowledges the change. type: string hardNodeAffinity: type: string healthyAt: + description: |- + HealthyAt is set the first time a replica becomes read/write in an engine after creation or rebuild. HealthyAt + indicates the time the last successful rebuild occurred. When HealthyAt is set, a replica is likely to have + useful (though possibly stale) data. HealthyAt is cleared before a rebuild. HealthyAt may be later than the + corresponding entry in an engine's replicaTransitionTimeMap because it is set when the volume controller + acknowledges the change. + type: string + image: + type: string + lastFailedAt: + description: |- + LastFailedAt is always set at the same time as FailedAt. Unlike FailedAt, LastFailedAt is never cleared. + LastFailedAt is not a reliable indicator of the state of a replica's data. For example, a replica with + LastFailedAt may already be healthy and in use again. However, because it is never cleared, it can be compared to + LastHealthyAt to help prevent dangerous replica deletion in some corner cases. LastFailedAt may be later than the + corresponding entry in an engine's replicaTransitionTimeMap because it is set when the volume controller + acknowledges the change. + type: string + lastHealthyAt: + description: |- + LastHealthyAt is set every time a replica becomes read/write in an engine. Unlike HealthyAt, LastHealthyAt is + never cleared. LastHealthyAt is not a reliable indicator of the state of a replica's data. For example, a + replica with LastHealthyAt set may be in the middle of a rebuild. However, because it is never cleared, it can be + compared to LastFailedAt to help prevent dangerous replica deletion in some corner cases. LastHealthyAt may be + later than the corresponding entry in an engine's replicaTransitionTimeMap because it is set when the volume + controller acknowledges the change. type: string logRequested: type: boolean + migrationEngineName: + description: |- + MigrationEngineName is indicating the migrating engine which current connected to this replica. This is only + used for live migration of v2 data engine + type: string nodeID: type: string rebuildRetryCount: @@ -2505,6 +2687,11 @@ spec: type: boolean salvageRequested: type: boolean + snapshotMaxCount: + type: integer + snapshotMaxSize: + format: int64 + type: string unmapMarkDiskChainRemovedEnabled: type: boolean volumeName: @@ -2514,7 +2701,8 @@ spec: type: string type: object status: - description: ReplicaStatus defines the observed state of the Longhorn replica + description: ReplicaStatus defines the observed state of the Longhorn + replica properties: conditions: items: @@ -2523,16 +2711,21 @@ spec: description: Last time we probed the condition. type: string lastTransitionTime: - description: Last time the condition transitioned from one status to another. + description: Last time the condition transitioned from one status + to another. type: string message: - description: Human-readable message indicating details about last transition. + description: Human-readable message indicating details about + last transition. type: string reason: - description: Unique, one-word, CamelCase reason for the condition's last transition. + description: Unique, one-word, CamelCase reason for the condition's + last transition. type: string status: - description: Status is the status of the condition. Can be True, False, Unknown. + description: |- + Status is the status of the condition. + Can be True, False, Unknown. type: string type: description: Type is the type of the condition. @@ -2544,8 +2737,6 @@ spec: type: string currentState: type: string - evictionRequested: - type: boolean instanceManagerName: type: string ip: @@ -2560,32 +2751,32 @@ spec: type: boolean started: type: boolean + starting: + type: boolean storageIP: type: string + ublkID: + format: int32 + type: integer + uuid: + type: string type: object type: object served: true storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: settings.longhorn.io spec: @@ -2604,36 +2795,10 @@ spec: jsonPath: .value name: Value type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Setting is where Longhorn stores setting object. - 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 - value: - type: string - required: - - value - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - description: The value of the setting - jsonPath: .value - name: Value - type: string + - description: The setting is applied + jsonPath: .status.applied + name: Applied + type: boolean - jsonPath: .metadata.creationTimestamp name: Age type: date @@ -2643,14 +2808,36 @@ spec: description: Setting is where Longhorn stores setting object. 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' + 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' + 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 + status: + description: The status of the setting. + properties: + applied: + description: The setting is applied. + type: boolean + required: + - applied + type: object value: + description: |- + The value of the setting. + - It can be a non-JSON formatted string that is applied to all the applicable data engines listed in the setting definition. + - It can be a JSON formatted string that contains values for applicable data engines listed in the setting definition's Default. type: string required: - value @@ -2659,24 +2846,17 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: sharemanagers.longhorn.io spec: @@ -2690,40 +2870,6 @@ spec: singular: sharemanager scope: Namespaced versions: - - additionalPrinterColumns: - - description: The state of the share manager - jsonPath: .status.state - name: State - type: string - - description: The node that the share manager is owned by - jsonPath: .status.ownerID - name: Node - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: ShareManager is where Longhorn stores share manager object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: The state of the share manager jsonPath: .status.state @@ -2742,27 +2888,45 @@ spec: description: ShareManager is where Longhorn stores share manager object. 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: ShareManagerSpec defines the desired state of the Longhorn share manager + description: ShareManagerSpec defines the desired state of the Longhorn + share manager properties: image: + description: Share manager image used for creating a share manager + pod type: string type: object status: - description: ShareManagerStatus defines the observed state of the Longhorn share manager + description: ShareManagerStatus defines the observed state of the Longhorn + share manager properties: endpoint: + description: NFS endpoint that can access the mounted filesystem of + the volume type: string ownerID: + description: The node ID on which the controller is responsible to + reconcile this share manager resource type: string state: + description: The state of the share manager resource type: string type: object type: object @@ -2770,24 +2934,17 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: snapshots.longhorn.io spec: @@ -2810,11 +2967,13 @@ spec: jsonPath: .status.creationTime name: CreationTime type: string - - description: Indicates if the snapshot is ready to be used to restore/backup a volume + - description: Indicates if the snapshot is ready to be used to restore/backup + a volume jsonPath: .status.readyToUse name: ReadyToUse type: boolean - - description: Represents the minimum size of volume required to rehydrate from this snapshot + - description: Represents the minimum size of volume required to rehydrate from + this snapshot jsonPath: .status.restoreSize name: RestoreSize type: string @@ -2831,10 +2990,19 @@ spec: description: Snapshot is the Schema for the snapshots 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' + 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' + 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 @@ -2851,7 +3019,9 @@ spec: nullable: true type: object volume: - description: the volume that this snapshot belongs to. This field is immutable after creation. Required + description: |- + the volume that this snapshot belongs to. + This field is immutable after creation. type: string required: - volume @@ -2897,24 +3067,17 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: supportbundles.longhorn.io spec: @@ -2950,15 +3113,25 @@ spec: description: SupportBundle is where Longhorn stores support bundle object 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: SupportBundleSpec defines the desired state of the Longhorn SupportBundle + description: SupportBundleSpec defines the desired state of the Longhorn + SupportBundle properties: description: description: A brief description of the issue @@ -2974,7 +3147,8 @@ spec: - description type: object status: - description: SupportBundleStatus defines the observed state of the Longhorn SupportBundle + description: SupportBundleStatus defines the observed state of the Longhorn + SupportBundle properties: conditions: items: @@ -2983,16 +3157,21 @@ spec: description: Last time we probed the condition. type: string lastTransitionTime: - description: Last time the condition transitioned from one status to another. + description: Last time the condition transitioned from one status + to another. type: string message: - description: Human-readable message indicating details about last transition. + description: Human-readable message indicating details about + last transition. type: string reason: - description: Unique, one-word, CamelCase reason for the condition's last transition. + description: Unique, one-word, CamelCase reason for the condition's + last transition. type: string status: - description: Status is the status of the condition. Can be True, False, Unknown. + description: |- + Status is the status of the condition. + Can be True, False, Unknown. type: string type: description: Type is the type of the condition. @@ -3023,24 +3202,17 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: systembackups.longhorn.io spec: @@ -3077,18 +3249,36 @@ spec: description: SystemBackup is where Longhorn stores system backup object 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: SystemBackupSpec defines the desired state of the Longhorn SystemBackup + description: SystemBackupSpec defines the desired state of the Longhorn + SystemBackup + properties: + volumeBackupPolicy: + description: |- + The create volume backup policy + Can be "if-not-present", "always" or "disabled" + nullable: true + type: string type: object status: - description: SystemBackupStatus defines the observed state of the Longhorn SystemBackup + description: SystemBackupStatus defines the observed state of the Longhorn + SystemBackup properties: conditions: items: @@ -3097,16 +3287,21 @@ spec: description: Last time we probed the condition. type: string lastTransitionTime: - description: Last time the condition transitioned from one status to another. + description: Last time the condition transitioned from one status + to another. type: string message: - description: Human-readable message indicating details about last transition. + description: Human-readable message indicating details about + last transition. type: string reason: - description: Unique, one-word, CamelCase reason for the condition's last transition. + description: Unique, one-word, CamelCase reason for the condition's + last transition. type: string status: - description: Status is the status of the condition. Can be True, False, Unknown. + description: |- + Status is the status of the condition. + Can be True, False, Unknown. type: string type: description: Type is the type of the condition. @@ -3123,7 +3318,8 @@ spec: nullable: true type: string lastSyncedAt: - description: The last time that the system backup was synced into the cluster. + description: The last time that the system backup was synced into + the cluster. format: date-time nullable: true type: string @@ -3131,7 +3327,8 @@ spec: description: The saved manager image. type: string ownerID: - description: The node ID of the responsible controller to reconcile this SystemBackup. + description: The node ID of the responsible controller to reconcile + this SystemBackup. type: string state: description: The system backup state. @@ -3146,24 +3343,17 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: systemrestores.longhorn.io spec: @@ -3191,15 +3381,25 @@ spec: description: SystemRestore is where Longhorn stores system restore object 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' + 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' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: SystemRestoreSpec defines the desired state of the Longhorn SystemRestore + description: SystemRestoreSpec defines the desired state of the Longhorn + SystemRestore properties: systemBackup: description: The system backup name in the object store. @@ -3208,7 +3408,8 @@ spec: - systemBackup type: object status: - description: SystemRestoreStatus defines the observed state of the Longhorn SystemRestore + description: SystemRestoreStatus defines the observed state of the Longhorn + SystemRestore properties: conditions: items: @@ -3217,16 +3418,21 @@ spec: description: Last time we probed the condition. type: string lastTransitionTime: - description: Last time the condition transitioned from one status to another. + description: Last time the condition transitioned from one status + to another. type: string message: - description: Human-readable message indicating details about last transition. + description: Human-readable message indicating details about + last transition. type: string reason: - description: Unique, one-word, CamelCase reason for the condition's last transition. + description: Unique, one-word, CamelCase reason for the condition's + last transition. type: string status: - description: Status is the status of the condition. Can be True, False, Unknown. + description: |- + Status is the status of the condition. + Can be True, False, Unknown. type: string type: description: Type is the type of the condition. @@ -3235,7 +3441,8 @@ spec: nullable: true type: array ownerID: - description: The node ID of the responsible controller to reconcile this SystemRestore. + description: The node ID of the responsible controller to reconcile + this SystemRestore. type: string sourceURL: description: The source system backup URL. @@ -3249,39 +3456,168 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/crds.yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 + controller-gen.kubebuilder.io/version: v0.17.1 labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 + longhorn-manager: "" + name: volumeattachments.longhorn.io +spec: + group: longhorn.io + names: + kind: VolumeAttachment + listKind: VolumeAttachmentList + plural: volumeattachments + shortNames: + - lhva + singular: volumeattachment + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta2 + schema: + openAPIV3Schema: + description: VolumeAttachment stores attachment information of a Longhorn + volume + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VolumeAttachmentSpec defines the desired state of Longhorn + VolumeAttachment + properties: + attachmentTickets: + additionalProperties: + properties: + generation: + description: |- + A sequence number representing a specific generation of the desired state. + Populated by the system. Read-only. + format: int64 + type: integer + id: + description: The unique ID of this attachment. Used to differentiate + different attachments of the same volume. + type: string + nodeID: + description: The node that this attachment is requesting + type: string + parameters: + additionalProperties: + type: string + description: Optional additional parameter for this attachment + type: object + type: + type: string + type: object + type: object + volume: + description: The name of Longhorn volume of this VolumeAttachment + type: string + required: + - volume + type: object + status: + description: VolumeAttachmentStatus defines the observed state of Longhorn + VolumeAttachment + properties: + attachmentTicketStatuses: + additionalProperties: + properties: + conditions: + description: Record any error when trying to fulfill this attachment + items: + properties: + lastProbeTime: + description: Last time we probed the condition. + type: string + lastTransitionTime: + description: Last time the condition transitioned from + one status to another. + type: string + message: + description: Human-readable message indicating details + about last transition. + type: string + reason: + description: Unique, one-word, CamelCase reason for the + condition's last transition. + type: string + status: + description: |- + Status is the status of the condition. + Can be True, False, Unknown. + type: string + type: + description: Type is the type of the condition. + type: string + type: object + nullable: true + type: array + generation: + description: |- + A sequence number representing a specific generation of the desired state. + Populated by the system. Read-only. + format: int64 + type: integer + id: + description: The unique ID of this attachment. Used to differentiate + different attachments of the same volume. + type: string + satisfied: + description: Indicate whether this attachment ticket has been + satisfied + type: boolean + required: + - conditions + - satisfied + type: object + type: object + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +# Source: longhorn/templates/crds.yaml +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.17.1 + labels: + app.kubernetes.io/name: longhorn + app.kubernetes.io/instance: longhorn + app.kubernetes.io/version: v1.10.1 longhorn-manager: "" name: volumes.longhorn.io spec: - preserveUnknownFields: false - conversion: - strategy: Webhook - webhook: - clientConfig: - service: - name: longhorn-conversion-webhook - namespace: longhorn-system - path: /v1/webhook/conversion - port: 9443 - conversionReviewVersions: - - v1beta2 - - v1beta1 group: longhorn.io names: kind: Volume @@ -3293,52 +3629,10 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: - - description: The state of the volume - jsonPath: .status.state - name: State + - description: The data engine of the volume + jsonPath: .spec.dataEngine + name: Data Engine type: string - - description: The robustness of the volume - jsonPath: .status.robustness - name: Robustness - type: string - - description: The scheduled condition of the volume - jsonPath: .status.conditions['scheduled']['status'] - name: Scheduled - type: string - - description: The size of the volume - jsonPath: .spec.size - name: Size - type: string - - description: The node that the volume is currently attaching to - jsonPath: .status.currentNodeID - name: Node - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Volume is where Longhorn stores volume object. - 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: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - description: The state of the volume jsonPath: .status.state name: State @@ -3368,10 +3662,19 @@ spec: description: Volume is where Longhorn stores volume object. 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' + 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' + 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 @@ -3387,8 +3690,34 @@ spec: type: string backingImage: type: string - baseImage: - description: Deprecated. Rename to BackingImage + backupBlockSize: + description: BackupBlockSize indicate the block size to create backups. + The block size is immutable. + enum: + - "2097152" + - "16777216" + format: int64 + type: string + backupCompressionMethod: + enum: + - none + - lz4 + - gzip + type: string + backupTargetName: + description: The backup target name that the volume will be backed + up to or is synced. + type: string + cloneMode: + enum: + - "" + - full-copy + - linked-clone + type: string + dataEngine: + enum: + - v1 + - v2 type: string dataLocality: enum: @@ -3406,22 +3735,26 @@ spec: type: array encrypted: type: boolean - engineImage: - type: string - fromBackup: - type: string - restoreVolumeRecurringJob: + freezeFilesystemForSnapshot: + description: Setting that freezes the filesystem on the root partition + before a snapshot is created. enum: - ignored - enabled - disabled type: string + fromBackup: + type: string frontend: enum: - blockdev - iscsi + - nvmf + - ublk - "" type: string + image: + type: string lastAttachedBy: type: string migratable: @@ -3436,34 +3769,17 @@ spec: type: array numberOfReplicas: type: integer - recurringJobs: - description: Deprecated. Replaced by a separate resource named "RecurringJob" - items: - description: 'VolumeRecurringJobSpec is a deprecated struct. TODO: Should be removed when recurringJobs gets removed from the volume spec.' - properties: - concurrency: - type: integer - cron: - type: string - groups: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - retain: - type: integer - task: - enum: - - snapshot - - backup - type: string - type: object - type: array + offlineRebuilding: + description: |- + Specifies whether Longhorn should rebuild replicas while the detached volume is degraded. + - ignored: Use the global setting for offline replica rebuilding. + - enabled: Enable offline rebuilding for this volume, regardless of the global setting. + - disabled: Disable offline rebuilding for this volume, regardless of the global setting + enum: + - ignored + - disabled + - enabled + type: string replicaAutoBalance: enum: - ignored @@ -3471,6 +3787,44 @@ spec: - least-effort - best-effort type: string + replicaDiskSoftAntiAffinity: + description: Replica disk soft anti affinity of the volume. Set enabled + to allow replicas to be scheduled in the same disk. + enum: + - ignored + - enabled + - disabled + type: string + replicaRebuildingBandwidthLimit: + description: ReplicaRebuildingBandwidthLimit controls the maximum + write bandwidth (in megabytes per second) allowed on the destination + replica during the rebuilding process. Set this value to 0 to disable + bandwidth limiting. + format: int64 + minimum: 0 + type: integer + replicaSoftAntiAffinity: + description: Replica soft anti affinity of the volume. Set enabled + to allow replicas to be scheduled on the same node. + enum: + - ignored + - enabled + - disabled + type: string + replicaZoneSoftAntiAffinity: + description: Replica zone soft anti affinity of the volume. Set enabled + to allow replicas to be scheduled in the same zone. + enum: + - ignored + - enabled + - disabled + type: string + restoreVolumeRecurringJob: + enum: + - ignored + - enabled + - disabled + type: string revisionCounterDisabled: type: boolean size: @@ -3483,6 +3837,11 @@ spec: - enabled - fast-check type: string + snapshotMaxCount: + type: integer + snapshotMaxSize: + format: int64 + type: string staleReplicaTimeout: type: integer unmapMarkSnapChainRemoved: @@ -3500,6 +3859,10 @@ spec: type: integer cloneStatus: properties: + attemptCount: + type: integer + nextAllowedAttemptAt: + type: string snapshot: type: string sourceVolume: @@ -3514,16 +3877,21 @@ spec: description: Last time we probed the condition. type: string lastTransitionTime: - description: Last time the condition transitioned from one status to another. + description: Last time the condition transitioned from one status + to another. type: string message: - description: Human-readable message indicating details about last transition. + description: Human-readable message indicating details about + last transition. type: string reason: - description: Unique, one-word, CamelCase reason for the condition's last transition. + description: Unique, one-word, CamelCase reason for the condition's + last transition. type: string status: - description: Status is the status of the condition. Can be True, False, Unknown. + description: |- + Status is the status of the condition. + Can be True, False, Unknown. type: string type: description: Type is the type of the condition. @@ -3533,6 +3901,9 @@ spec: type: array currentImage: type: string + currentMigrationNodeID: + description: the node that this volume is currently migrating to + type: string currentNodeID: type: string expansionRequired: @@ -3580,8 +3951,6 @@ spec: type: string ownerID: type: string - pendingNodeID: - type: string remountRequestedAt: type: string restoreInitiated: @@ -3602,12 +3971,6 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- # Source: longhorn/templates/clusterrole.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -3617,7 +3980,7 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 rules: - apiGroups: - apiextensions.k8s.io @@ -3626,41 +3989,48 @@ rules: verbs: - "*" - apiGroups: [""] - resources: ["pods", "events", "persistentvolumes", "persistentvolumeclaims","persistentvolumeclaims/status", "nodes", "proxy/nodes", "pods/log", "secrets", "services", "endpoints", "configmaps", "serviceaccounts"] + resources: ["pods"] + verbs: ["get", "list", "watch", "delete", "deletecollection"] +- apiGroups: [""] + resources: ["secrets", "services", "endpoints", "configmaps", "serviceaccounts", "pods/log"] + verbs: ["get", "list", "watch"] +- apiGroups: [""] + resources: ["events", "persistentvolumes", "persistentvolumeclaims", "persistentvolumeclaims/status", "nodes"] verbs: ["*"] - apiGroups: [""] resources: ["namespaces"] verbs: ["get", "list"] - apiGroups: ["apps"] - resources: ["daemonsets", "statefulsets", "deployments"] - verbs: ["*"] + resources: ["daemonsets", "statefulsets", "deployments", "replicasets"] + verbs: ["get", "list", "watch"] - apiGroups: ["batch"] resources: ["jobs", "cronjobs"] - verbs: ["*"] + verbs: ["get", "list", "watch"] - apiGroups: ["policy"] - resources: ["poddisruptionbudgets", "podsecuritypolicies"] - verbs: ["*"] + resources: ["poddisruptionbudgets"] + verbs: ["get", "list", "watch"] - apiGroups: ["scheduling.k8s.io"] resources: ["priorityclasses"] verbs: ["watch", "list"] - apiGroups: ["storage.k8s.io"] - resources: ["storageclasses", "volumeattachments", "volumeattachments/status", "csinodes", "csidrivers"] + resources: ["storageclasses", "volumeattachments", "volumeattachments/status", "csinodes", "csidrivers", "csistoragecapacities"] verbs: ["*"] - apiGroups: ["snapshot.storage.k8s.io"] resources: ["volumesnapshotclasses", "volumesnapshots", "volumesnapshotcontents", "volumesnapshotcontents/status"] verbs: ["*"] - apiGroups: ["longhorn.io"] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", + resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", "settings/status", "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", "sharemanagers", "sharemanagers/status", "backingimages", "backingimages/status", "backingimagemanagers", "backingimagemanagers/status", "backingimagedatasources", "backingimagedatasources/status", "backuptargets", "backuptargets/status", "backupvolumes", "backupvolumes/status", "backups", "backups/status", "recurringjobs", "recurringjobs/status", "orphans", "orphans/status", "snapshots", "snapshots/status", - "supportbundles", "supportbundles/status", "systembackups", "systembackups/status", "systemrestores", "systemrestores/status"] + "supportbundles", "supportbundles/status", "systembackups", "systembackups/status", "systemrestores", "systemrestores/status", + "volumeattachments", "volumeattachments/status", "backupbackingimages", "backupbackingimages/status"] verbs: ["*"] - apiGroups: ["coordination.k8s.io"] resources: ["leases"] - verbs: ["*"] + verbs: ["get", "list", "watch"] - apiGroups: ["metrics.k8s.io"] resources: ["pods", "nodes"] verbs: ["get", "list"] @@ -3671,7 +4041,13 @@ rules: resources: ["mutatingwebhookconfigurations", "validatingwebhookconfigurations"] verbs: ["get", "list", "create", "patch", "delete"] - apiGroups: ["rbac.authorization.k8s.io"] - resources: ["roles", "rolebindings", "clusterrolebindings", "clusterroles"] + resources: ["roles", "rolebindings"] + verbs: ["get", "list", "watch"] +- apiGroups: ["discovery.k8s.io"] + resources: ["endpointslices"] + verbs: ["get", "list", "watch"] +- apiGroups: ["rbac.authorization.k8s.io"] + resources: ["clusterrolebindings", "clusterroles"] verbs: ["*"] --- # Source: longhorn/templates/clusterrolebinding.yaml @@ -3682,7 +4058,7 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole @@ -3700,7 +4076,7 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole @@ -3710,6 +4086,54 @@ subjects: name: longhorn-support-bundle namespace: longhorn-system --- +# Source: longhorn/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: longhorn + namespace: longhorn-system + labels: + app.kubernetes.io/name: longhorn + app.kubernetes.io/instance: longhorn + app.kubernetes.io/version: v1.10.1 +rules: +- apiGroups: [""] + resources: ["pods", "pods/log", "events", "secrets", "services", "endpoints", "configmaps", "serviceaccounts", "persistentvolumeclaims", "persistentvolumeclaims/status"] + verbs: ["*"] +- apiGroups: ["apps"] + resources: ["daemonsets", "deployments", "statefulsets", "replicasets"] + verbs: ["*"] +- apiGroups: ["batch"] + resources: ["jobs", "cronjobs"] + verbs: ["*"] +- apiGroups: ["policy"] + resources: ["poddisruptionbudgets"] + verbs: ["*"] +- apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["*"] +- apiGroups: ["rbac.authorization.k8s.io"] + resources: ["roles", "rolebindings"] + verbs: ["*"] +- apiGroups: ["discovery.k8s.io"] + resources: ["endpointslices"] + verbs: ["*"] +--- +# Source: longhorn/templates/rolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: longhorn + namespace: longhorn-system +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: longhorn +subjects: +- kind: ServiceAccount + name: longhorn-service-account + namespace: longhorn-system +--- # Source: longhorn/templates/daemonset-sa.yaml apiVersion: v1 kind: Service @@ -3717,13 +4141,12 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 app: longhorn-manager name: longhorn-backend namespace: longhorn-system spec: type: ClusterIP - sessionAffinity: ClientIP selector: app: longhorn-manager ports: @@ -3738,7 +4161,7 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 app: longhorn-ui name: longhorn-frontend namespace: longhorn-system @@ -3759,39 +4182,17 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 - app: longhorn-conversion-webhook - name: longhorn-conversion-webhook - namespace: longhorn-system -spec: - type: ClusterIP - sessionAffinity: ClientIP - selector: - app: longhorn-conversion-webhook - ports: - - name: conversion-webhook - port: 9443 - targetPort: conversion-wh ---- -# Source: longhorn/templates/services.yaml -apiVersion: v1 -kind: Service -metadata: - labels: - app.kubernetes.io/name: longhorn - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 app: longhorn-admission-webhook name: longhorn-admission-webhook namespace: longhorn-system spec: type: ClusterIP - sessionAffinity: ClientIP selector: - app: longhorn-admission-webhook + longhorn.io/admission-webhook: longhorn-admission-webhook ports: - name: admission-webhook - port: 9443 + port: 9502 targetPort: admission-wh --- # Source: longhorn/templates/services.yaml @@ -3801,52 +4202,19 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 app: longhorn-recovery-backend name: longhorn-recovery-backend namespace: longhorn-system spec: type: ClusterIP - sessionAffinity: ClientIP selector: - app: longhorn-recovery-backend + longhorn.io/recovery-backend: longhorn-recovery-backend ports: - name: recovery-backend - port: 9600 + port: 9503 targetPort: recov-backend --- -# Source: longhorn/templates/services.yaml -apiVersion: v1 -kind: Service -metadata: - labels: - app.kubernetes.io/name: longhorn - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 - name: longhorn-engine-manager - namespace: longhorn-system -spec: - clusterIP: None - selector: - longhorn.io/component: instance-manager - longhorn.io/instance-manager-type: engine ---- -# Source: longhorn/templates/services.yaml -apiVersion: v1 -kind: Service -metadata: - labels: - app.kubernetes.io/name: longhorn - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 - name: longhorn-replica-manager - namespace: longhorn-system -spec: - clusterIP: None - selector: - longhorn.io/component: instance-manager - longhorn.io/instance-manager-type: replica ---- # Source: longhorn/templates/daemonset-sa.yaml apiVersion: apps/v1 kind: DaemonSet @@ -3854,7 +4222,7 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 app: longhorn-manager name: longhorn-manager namespace: longhorn-system @@ -3867,16 +4235,12 @@ spec: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 app: longhorn-manager spec: - initContainers: - - name: wait-longhorn-admission-webhook - image: longhornio/longhorn-manager:v1.4.0 - command: ['sh', '-c', 'while [ $(curl -m 1 -s -o /dev/null -w "%{http_code}" -k https://longhorn-admission-webhook:9443/v1/healthz) != "200" ]; do echo waiting; sleep 2; done'] containers: - name: longhorn-manager - image: longhornio/longhorn-manager:v1.4.0 + image: rancher/mirrored-longhornio-longhorn-manager:v1.10.1 imagePullPolicy: IfNotPresent securityContext: privileged: true @@ -3885,36 +4249,54 @@ spec: - -d - daemon - --engine-image - - "longhornio/longhorn-engine:v1.4.0" + - "rancher/mirrored-longhornio-longhorn-engine:v1.10.1" - --instance-manager-image - - "longhornio/longhorn-instance-manager:v1.4.0" + - "rancher/mirrored-longhornio-longhorn-instance-manager:v1.10.1" - --share-manager-image - - "longhornio/longhorn-share-manager:v1.4.0" + - "rancher/mirrored-longhornio-longhorn-share-manager:v1.10.1" - --backing-image-manager-image - - "longhornio/backing-image-manager:v1.4.0" + - "rancher/mirrored-longhornio-backing-image-manager:v1.10.1" - --support-bundle-manager-image - - "longhornio/support-bundle-kit:v0.0.17" + - "rancher/mirrored-longhornio-support-bundle-kit:v0.0.71" - --manager-image - - "longhornio/longhorn-manager:v1.4.0" + - "rancher/mirrored-longhornio-longhorn-manager:v1.10.1" - --service-account - longhorn-service-account + - --upgrade-version-check ports: - containerPort: 9500 name: manager + - containerPort: 9502 + name: admission-wh + - containerPort: 9503 + name: recov-backend readinessProbe: - tcpSocket: - port: 9500 + httpGet: + path: /v1/healthz + port: 9502 + scheme: HTTPS volumeMounts: + - name: boot + mountPath: /host/boot/ + readOnly: true - name: dev mountPath: /host/dev/ - name: proc mountPath: /host/proc/ + readOnly: true + - name: etc + mountPath: /host/etc/ + readOnly: true - name: longhorn mountPath: /var/lib/longhorn/ mountPropagation: Bidirectional - name: longhorn-grpc-tls mountPath: /tls-files/ env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: @@ -3927,13 +4309,23 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName + - name: pre-pull-share-manager-image + imagePullPolicy: IfNotPresent + image: rancher/mirrored-longhornio-longhorn-share-manager:v1.10.1 + command: ["sh", "-c", "echo share-manager image pulled && sleep infinity"] volumes: + - name: boot + hostPath: + path: /boot/ - name: dev hostPath: path: /dev/ - name: proc hostPath: path: /proc/ + - name: etc + hostPath: + path: /etc/ - name: longhorn hostPath: path: /var/lib/longhorn/ @@ -3941,6 +4333,7 @@ spec: secret: secretName: longhorn-grpc-tls optional: true + priorityClassName: "longhorn-critical" serviceAccountName: longhorn-service-account updateStrategy: rollingUpdate: @@ -3955,7 +4348,7 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 spec: replicas: 1 selector: @@ -3966,23 +4359,23 @@ spec: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 app: longhorn-driver-deployer spec: initContainers: - name: wait-longhorn-manager - image: longhornio/longhorn-manager:v1.4.0 + image: rancher/mirrored-longhornio-longhorn-manager:v1.10.1 command: ['sh', '-c', 'while [ $(curl -m 1 -s -o /dev/null -w "%{http_code}" http://longhorn-backend:9500/v1) != "200" ]; do echo waiting; sleep 2; done'] containers: - name: longhorn-driver-deployer - image: longhornio/longhorn-manager:v1.4.0 + image: rancher/mirrored-longhornio-longhorn-manager:v1.10.1 imagePullPolicy: IfNotPresent command: - longhorn-manager - -d - deploy-driver - --manager-image - - "longhornio/longhorn-manager:v1.4.0" + - "rancher/mirrored-longhornio-longhorn-manager:v1.10.1" - --manager-url - http://longhorn-backend:9500/v1 env: @@ -3999,87 +4392,22 @@ spec: fieldRef: fieldPath: spec.serviceAccountName - name: CSI_ATTACHER_IMAGE - value: "longhornio/csi-attacher:v3.4.0" + value: "rancher/mirrored-longhornio-csi-attacher:v4.10.0-20251030" - name: CSI_PROVISIONER_IMAGE - value: "longhornio/csi-provisioner:v2.1.2" + value: "rancher/mirrored-longhornio-csi-provisioner:v5.3.0-20251030" - name: CSI_NODE_DRIVER_REGISTRAR_IMAGE - value: "longhornio/csi-node-driver-registrar:v2.5.0" + value: "rancher/mirrored-longhornio-csi-node-driver-registrar:v2.15.0-20251030" - name: CSI_RESIZER_IMAGE - value: "longhornio/csi-resizer:v1.3.0" + value: "rancher/mirrored-longhornio-csi-resizer:v1.14.0-20251030" - name: CSI_SNAPSHOTTER_IMAGE - value: "longhornio/csi-snapshotter:v5.0.1" + value: "rancher/mirrored-longhornio-csi-snapshotter:v8.4.0-20251030" - name: CSI_LIVENESS_PROBE_IMAGE - value: "longhornio/livenessprobe:v2.8.0" + value: "rancher/mirrored-longhornio-livenessprobe:v2.17.0-20251030" + priorityClassName: "longhorn-critical" serviceAccountName: longhorn-service-account securityContext: runAsUser: 0 --- -# Source: longhorn/templates/deployment-recovery-backend.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app.kubernetes.io/name: longhorn - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 - app: longhorn-recovery-backend - name: longhorn-recovery-backend - namespace: longhorn-system -spec: - replicas: 2 - selector: - matchLabels: - app: longhorn-recovery-backend - template: - metadata: - labels: - app.kubernetes.io/name: longhorn - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 - app: longhorn-recovery-backend - spec: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - longhorn-recovery-backend - topologyKey: kubernetes.io/hostname - containers: - - name: longhorn-recovery-backend - image: longhornio/longhorn-manager:v1.4.0 - imagePullPolicy: IfNotPresent - securityContext: - runAsUser: 2000 - command: - - longhorn-manager - - recovery-backend - - --service-account - - longhorn-service-account - ports: - - containerPort: 9600 - name: recov-backend - readinessProbe: - tcpSocket: - port: 9600 - initialDelaySeconds: 3 - periodSeconds: 5 - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - serviceAccountName: longhorn-service-account ---- # Source: longhorn/templates/deployment-ui.yaml apiVersion: apps/v1 kind: Deployment @@ -4087,7 +4415,7 @@ metadata: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 app: longhorn-ui name: longhorn-ui namespace: longhorn-system @@ -4101,14 +4429,14 @@ spec: labels: app.kubernetes.io/name: longhorn app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 + app.kubernetes.io/version: v1.10.1 app: longhorn-ui spec: + serviceAccountName: longhorn-ui-service-account affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - podAffinityTerm: + - podAffinityTerm: labelSelector: matchExpressions: - key: app @@ -4116,14 +4444,15 @@ spec: values: - longhorn-ui topologyKey: kubernetes.io/hostname + weight: 1 containers: - name: longhorn-ui - image: longhornio/longhorn-ui:v1.4.0 + image: rancher/mirrored-longhornio-longhorn-ui:v1.10.1 imagePullPolicy: IfNotPresent volumeMounts: - - name : nginx-cache + - name: nginx-cache mountPath: /var/cache/nginx/ - - name : nginx-config + - name: nginx-config mountPath: /var/config/nginx/ - name: var-run mountPath: /var/run/ @@ -4142,134 +4471,7 @@ spec: name: nginx-config - emptyDir: {} name: var-run + priorityClassName: "longhorn-critical" --- -# Source: longhorn/templates/deployment-webhook.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app.kubernetes.io/name: longhorn - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 - app: longhorn-conversion-webhook - name: longhorn-conversion-webhook - namespace: longhorn-system -spec: - replicas: 2 - selector: - matchLabels: - app: longhorn-conversion-webhook - template: - metadata: - labels: - app.kubernetes.io/name: longhorn - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 - app: longhorn-conversion-webhook - spec: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - longhorn-conversion-webhook - topologyKey: kubernetes.io/hostname - containers: - - name: longhorn-conversion-webhook - image: longhornio/longhorn-manager:v1.4.0 - imagePullPolicy: IfNotPresent - securityContext: - runAsUser: 2000 - command: - - longhorn-manager - - conversion-webhook - - --service-account - - longhorn-service-account - ports: - - containerPort: 9443 - name: conversion-wh - readinessProbe: - tcpSocket: - port: 9443 - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - serviceAccountName: longhorn-service-account ---- -# Source: longhorn/templates/deployment-webhook.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app.kubernetes.io/name: longhorn - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 - app: longhorn-admission-webhook - name: longhorn-admission-webhook - namespace: longhorn-system -spec: - replicas: 2 - selector: - matchLabels: - app: longhorn-admission-webhook - template: - metadata: - labels: - app.kubernetes.io/name: longhorn - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.4.0 - app: longhorn-admission-webhook - spec: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - longhorn-admission-webhook - topologyKey: kubernetes.io/hostname - initContainers: - - name: wait-longhorn-conversion-webhook - image: longhornio/longhorn-manager:v1.4.0 - command: ['sh', '-c', 'while [ $(curl -m 1 -s -o /dev/null -w "%{http_code}" -k https://longhorn-conversion-webhook:9443/v1/healthz) != "200" ]; do echo waiting; sleep 2; done'] - imagePullPolicy: IfNotPresent - securityContext: - runAsUser: 2000 - containers: - - name: longhorn-admission-webhook - image: longhornio/longhorn-manager:v1.4.0 - imagePullPolicy: IfNotPresent - securityContext: - runAsUser: 2000 - command: - - longhorn-manager - - admission-webhook - - --service-account - - longhorn-service-account - ports: - - containerPort: 9443 - name: admission-wh - readinessProbe: - tcpSocket: - port: 9443 - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - serviceAccountName: longhorn-service-account +# Source: longhorn/templates/validate-psp-install.yaml +# diff --git a/tests/integration/secretsencryption/secretsencryption_int_test.go b/tests/integration/secretsencryption/secretsencryption_int_test.go index 30126a77ac8..9d673b4153e 100644 --- a/tests/integration/secretsencryption/secretsencryption_int_test.go +++ b/tests/integration/secretsencryption/secretsencryption_int_test.go @@ -154,6 +154,8 @@ var _ = AfterSuite(func() { if !testutil.IsExistingServer() { if failed { testutil.K3sSaveLog(secretsEncryptionServer, false) + testutil.K3sCopyPodLogs(secretsEncryptionServer) + testutil.K3sDumpResources(secretsEncryptionServer, "node", "pod", "pvc", "pv") } Expect(testutil.K3sKillServer(secretsEncryptionServer)).To(Succeed()) Expect(testutil.K3sCleanup(testLock, secretsEncryptionDataDir)).To(Succeed()) diff --git a/tests/integration/startup/startup_int_test.go b/tests/integration/startup/startup_int_test.go index 7c6c273604a..26b7b4e523b 100644 --- a/tests/integration/startup/startup_int_test.go +++ b/tests/integration/startup/startup_int_test.go @@ -479,6 +479,8 @@ var _ = AfterSuite(func() { if !testutil.IsExistingServer() { if failed { testutil.K3sSaveLog(startupServer, false) + testutil.K3sCopyPodLogs(startupServer) + testutil.K3sDumpResources(startupServer, "node", "pod", "pvc", "pv") Expect(testutil.K3sKillServer(startupServer)).To(Succeed()) } Expect(testutil.K3sCleanup(testLock, "")).To(Succeed())