diff --git a/assets/portworx/portworx-2.10.3.tgz b/assets/portworx/portworx-2.10.3.tgz deleted file mode 100644 index 4b7fb6815..000000000 Binary files a/assets/portworx/portworx-2.10.3.tgz and /dev/null differ diff --git a/assets/portworx/portworx-2.11.4.tgz b/assets/portworx/portworx-2.11.4.tgz deleted file mode 100644 index 60c065e04..000000000 Binary files a/assets/portworx/portworx-2.11.4.tgz and /dev/null differ diff --git a/assets/portworx/portworx-2.8.0.tgz b/assets/portworx/portworx-2.8.0.tgz deleted file mode 100644 index 837b24b50..000000000 Binary files a/assets/portworx/portworx-2.8.0.tgz and /dev/null differ diff --git a/assets/portworx/portworx-2.8.100.tgz b/assets/portworx/portworx-2.8.100.tgz deleted file mode 100644 index 8ff01b104..000000000 Binary files a/assets/portworx/portworx-2.8.100.tgz and /dev/null differ diff --git a/assets/portworx/portworx-2.9.100.tgz b/assets/portworx/portworx-2.9.100.tgz deleted file mode 100644 index 0aa165e7b..000000000 Binary files a/assets/portworx/portworx-2.9.100.tgz and /dev/null differ diff --git a/assets/portworx/portworx-2.9.101.tgz b/assets/portworx/portworx-2.9.101.tgz deleted file mode 100644 index bbaceb166..000000000 Binary files a/assets/portworx/portworx-2.9.101.tgz and /dev/null differ diff --git a/assets/portworx/portworx-essentials-2.10.3.tgz b/assets/portworx/portworx-essentials-2.10.3.tgz deleted file mode 100644 index e80cd1154..000000000 Binary files a/assets/portworx/portworx-essentials-2.10.3.tgz and /dev/null differ diff --git a/assets/portworx/portworx-essentials-2.11.4.tgz b/assets/portworx/portworx-essentials-2.11.4.tgz deleted file mode 100644 index d0d410dbf..000000000 Binary files a/assets/portworx/portworx-essentials-2.11.4.tgz and /dev/null differ diff --git a/assets/portworx/portworx-essentials-2.9.100.tgz b/assets/portworx/portworx-essentials-2.9.100.tgz deleted file mode 100644 index bcc71a116..000000000 Binary files a/assets/portworx/portworx-essentials-2.9.100.tgz and /dev/null differ diff --git a/charts/portworx/portworx-essentials/Chart.yaml b/charts/portworx/portworx-essentials/Chart.yaml deleted file mode 100644 index 44a16fbd8..000000000 --- a/charts/portworx/portworx-essentials/Chart.yaml +++ /dev/null @@ -1,34 +0,0 @@ -annotations: - catalog.cattle.io/certified: partner - catalog.cattle.io/display-name: Portworx Essentials - catalog.cattle.io/kube-version: '>=1.16.0-0' - catalog.cattle.io/release-name: portworx-essentials -apiVersion: v1 -appVersion: 2.11.4 -description: A Helm chart for installing Portworx Essentials on Kubernetes. -home: https://portworx.com/ -icon: https://raw.githubusercontent.com/portworx/helm/master/doc/media/k8s-porx.png -keywords: -- Storage -- ICP -- persistent disk -- pvc -- cloud native storage -- persistent storage -- portworx -- amd64 -- portworx essentials -- free -maintainers: -- email: hadesai@purestorage.com - name: harsh-px -- email: onaumov@purestorage.com - name: trierra -- email: tasharma@purestorage.com - name: sharma-tapas -- email: dahuang@purestorage.com - name: dahuang-purestorage -name: portworx-essentials -sources: -- https://github.com/portworx/charts-rancher/tree/master/stable -version: 2.11.4 diff --git a/charts/portworx/portworx-essentials/README.md b/charts/portworx/portworx-essentials/README.md deleted file mode 100644 index a90a09b2b..000000000 --- a/charts/portworx/portworx-essentials/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Portworx Essentials -[Portworx Essentials](https://docs.portworx.com/concepts/portworx-essentials/) is a free Portworx license with limited functionality that allows you to run small production or proof-of-concept workloads. Essentials limits capacity and advanced features, but otherwise functions the same way as the fully-featured PX-Enterprise version of Portworx. - -The Portworx Essentials license requires that your clusters be connected to the internet and send usage data to PX-Central. Portworx Essentials clusters connect with PX-Central once per hour to renew license leases. Lease periods last for 24 hours, ensuring that any temporary interruptions to your connectivity do not impact your cluster. - -## **Pre-requisites** - -The minimum supported size for a Portworx cluster is three nodes. Each node must meet the following hardware, software, and network requirements: - -### Hardware & Software - -|Resource|Requirements| -|--------|------------| -|CPU|4 cores| -|RAM|4GB| -|Disk (/var)| 2GB free| -|Backing drive|8GB (minimum required) 128 GB (minimum recommended)| -|Storage drives| Minimum: 1 node with a storage drive. Storage drives must be unmounted block storage: raw disks, drive partitions, LVM, or cloud block storage. | -|Ethernet NIC card| 10 GB (recommended)| -|Linux kernel| Version 3.10 or greater.| -|Docker| Version 1.13.1 or greater.| -|Disable swap| Please disable swap on all nodes that will run the Portworx software. Ensure that the swap device is not automatically mounted on server reboot.| - -### Network -Open needed ports : TCP ports 9001-9022 and UDP port 9002 on all Portworx nodes. Also open the KVDB port. (As an example, etcd typically runs on port 2379). If you intend to use Portworx with sharedV4 volumes, you may need to open your NFS ports. - -Please read [this link](https://docs.portworx.com/concepts/portworx-essentials/) before installing to understand the pre-requisites. - -## **Limitations** -* The portworx helm chart can only be deployed in the kube-system namespace. Hence use "kube-system" in the "Target namespace" during configuration. - -## **Uninstalling the Chart** - -#### You can uninstall Portworx using one of the following methods: - -#### **1. Delete all the Kubernetes components associated with the chart and the release.** - -> **Note** > The Portworx configuration files under `/etc/pwx/` directory are preserved, and will not be deleted. - -To perform this operation simply delete the application from the Apps page - -#### **2. Wipe your Portworx installation** -> **Note** > The commands in this section are disruptive and will lead to data loss. Please use caution.. - -See more details [here](https://docs.portworx.com/portworx-install-with-kubernetes/install-px-helm/#uninstall) - -## **Documentation** -* [Portworx docs site](https://docs.portworx.com/install-with-other/rancher/rancher-2.x/#step-1-install-rancher) -* [Portworx interactive tutorials](https://docs.portworx.com/scheduler/kubernetes/px-k8s-interactive.html) - -## **Installing the Chart using the CLI** - -See the installation details [here](https://docs.portworx.com/portworx-install-with-kubernetes/install-px-helm/) - -## **Installing Portworx on AWS** - -See the installation details [here](https://docs.portworx.com/cloud-references/auto-disk-provisioning/aws) diff --git a/charts/portworx/portworx-essentials/app-readme.md b/charts/portworx/portworx-essentials/app-readme.md deleted file mode 100644 index b1e84db9a..000000000 --- a/charts/portworx/portworx-essentials/app-readme.md +++ /dev/null @@ -1,26 +0,0 @@ -# Portworx Essentials - -[Portworx Essentials](https://portworx.com/) is a free Portworx license with limited functionality that allows you to run small production or proof-of-concept workloads. Essentials limits capacity and advanced features, but otherwise functions the same way as the fully-featured PX-Enterprise version of Portworx such as - - * Run containerized stateful applications that are highly-available (HA) across multiple nodes, cloud instances, regions, data centers or even clouds - * Migrate workflows between multiple clusters running across same or hybrid clouds - * Run hyperconverged workloads where the data resides on the same host as the applications - * Have programmatic control on your storage resources - ----- -## Full Features - * Free forever - * 5 nodes - * 500 volumes - * Cloud Drive provisioning - * Failures across nodes/racks/AZ - ----- -## Limited features - * Application consistent Snapshots (5 per volume) - * Cloud Snapshots (1 per volume per day) - * BYOK Encryption (cluster key only) - * Single user cluster management UI (single user, single cluster) - -For more information [Click Here](https://portworx.com/products/features/) -The Portworx Essentials license requires that your clusters be connected to the internet and send usage data to PX-Central. Portworx Essentials clusters connect with PX-Central once per hour to renew license leases. Lease periods last for 24 hours, ensuring that any temporary interruptions to your connectivity do not impact your cluster. \ No newline at end of file diff --git a/charts/portworx/portworx-essentials/ci/test-values.yaml b/charts/portworx/portworx-essentials/ci/test-values.yaml deleted file mode 100644 index 879bf6910..000000000 --- a/charts/portworx/portworx-essentials/ci/test-values.yaml +++ /dev/null @@ -1 +0,0 @@ -etcdType: Built-in \ No newline at end of file diff --git a/charts/portworx/portworx-essentials/questions.yml b/charts/portworx/portworx-essentials/questions.yml deleted file mode 100644 index 9738c6c56..000000000 --- a/charts/portworx/portworx-essentials/questions.yml +++ /dev/null @@ -1,841 +0,0 @@ -categories: -- storage -namespace: kube-system -labels: - io.rancher.certified: partner -questions: - -################################### Essentials options ################################ -- variable: essentialID - type: string - required: true - default: "none" - label: "Essentials Entitlement ID" - description: "Get your free essentials entitlement ID from https://central.portworx.com/profile" - group: "license parameters" - - -################################### Storage options ################################ -- variable: environment - description: "Select your environment" - label: "Environment" - type: enum - default: "OnPrem" - required: true - group: "Storage Parameters" - options: - - "OnPrem" - - "Cloud" - -- variable: provider - show_if: "environment=Cloud" - description: "Select cloud platform" - label: "Cloud provider" - type: enum - required: true - group: "Storage Parameters" - options: - - "AWS" - - "Google cloud/GKE" - -- variable: onpremStorage - show_if: "environment=OnPrem" - type: enum - default: "Automatically scan disks" - label: "Select type of OnPrem storage" - group: "Storage Parameters" - required: true - options: - - "Automatically scan disks" - - "Manually specify disks" - -- variable: deviceConfig - show_if: "environment=Cloud" - description: "If you plan to use EC2 instance storage or plan to manage EBS volumes your own way, select 'Consume unused' or 'Use Existing disks'." - label: "Select a type of disk" - type: enum - default: "Create Using a Spec" - required: true - group: "Storage Parameters" - options: - - "Create Using a Spec" - - "Consume Unused" - - "Use Existing Disks" - - -- variable: journalDevice - description: "This allows PX to create it’s own journal partition on the best drive to absorb PX metadata writes. Journal writes are small with frequent syncs and hence a separate journal partition will enable better performance. Use value 'auto' if you want Portworx to create it's own journal partition." - type: string - label: "Journal Device" - group: "Storage Parameters" - -############ Consume unused ############## -- variable: usedrivesAndPartitions - show_if: "deviceConfig=Consume Unused||onpremStorage=Automatically scan disks" - label: "Use unmounted drives and partitions" - descrition: "Use unmounted disks even if they have a partition or filesystem on it. PX will never use a drive or partition that is mounted." - type: boolean - default: false - group: "Storage Parameters" - - -############ Use Exising Disks ############## -- variable: existingDisk1 - show_if: "deviceConfig=Use Existing Disks||onpremStorage=Manually specify disks" - label: "Drive/Device1" - description: "Enter the block/device name; eg: /dev/sda" - type: string - required: true - group: "Storage Parameters" - -- variable: addExistingDisk2 - show_if: "deviceConfig=Use Existing Disks||onpremStorage=Manually specify disks" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: existingDisk2 - show_if: "addExistingDisk2=true" - label: "Drive/Device2" - description: "Enter the block/device name; eg: /dev/sda" - type: string - required: true - group: "Storage Parameters" - -- variable: addExistingDisk3 - show_if: "addExistingDisk2=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: existingDisk3 - show_if: "addExistingDisk3=true" - label: "Drive/Device3" - description: "Enter the block/device name; eg: /dev/sda" - type: string - required: true - group: "Storage Parameters" - -- variable: addExistingDisk4 - show_if: "addExistingDisk3=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: existingDisk4 - show_if: "addExistingDisk4=true" - label: "Drive/Device4" - description: "Enter the block/device name; eg: /dev/sda" - type: string - required: true - group: "Storage Parameters" - -- variable: addExistingDisk5 - show_if: "addExistingDisk4=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: existingDisk5 - show_if: "addExistingDisk5=true" - label: "Drive/Device5" - description: "Enter the block/device name; eg: /dev/sda" - type: string - required: true - group: "Storage Parameters" - -##################################################### Cloud ################################ - -##################################################### AWS ################################ - -### Section 1 AWS -- variable: drive_1.aws.type - show_if: "provider=AWS&&deviceConfig=Create Using a Spec" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - default: "GP2" - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_1.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_1.aws.size - show_if: "provider=AWS&&deviceConfig=Create Using a Spec" - description: "Volume size" - label: "Size" - type: int - default: 150 - required: true - group: "Storage Parameters" - -### Section 2 AWS -- variable: addEBSDrive_2 - show_if: "provider=AWS&&deviceConfig=Create Using a Spec" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_2.aws.type - show_if: "addEBSDrive_2=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_2.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_2.aws.size - show_if: "addEBSDrive_2=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - - ### Section 3 AWS -- variable: addEBSDrive_3 - show_if: "addEBSDrive_2=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_3.aws.type - show_if: "addEBSDrive_3=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_3.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_3.aws.size - show_if: "addEBSDrive_3=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -### Section 4 AWS -- variable: addEBSDrive_4 - show_if: "addEBSDrive_3=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_4.aws.type - show_if: "addEBSDrive_4=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_4.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_4.aws.size - show_if: "addEBSDrive_4=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -### Section 5 AWS -- variable: addEBSDrive_5 - show_if: "addEBSDrive_4=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_5.aws.type - show_if: "addEBSDrive_5=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_5.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_5.aws.size - show_if: "addEBSDrive_5=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -### Section 6 AWS -- variable: addEBSDrive_6 - show_if: "addEBSDrive_5=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_6.aws.type - show_if: "addEBSDrive_6=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_6.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_6.aws.size - show_if: "addEBSDrive_6=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -### Section 7 AWS -- variable: addEBSDrive_7 - show_if: "addEBSDrive_6=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_7.aws.type - show_if: "addEBSDrive_7=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_7.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_7.aws.size - show_if: "addEBSDrive_7=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -### Section 8 AWS -- variable: addEBSDrive_8 - show_if: "addEBSDrive_7=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_8.aws.type - show_if: "addEBSDrive_8=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_8.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_8.aws.size - show_if: "addEBSDrive_8=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -### Section 9 AWS -- variable: addEBSDrive_9 - show_if: "addEBSDrive_8=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_9.aws.type - show_if: "addEBSDrive_9=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_9.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_9.aws.size - show_if: "addEBSDrive_9=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -### Section 10 AWS -- variable: addEBSDrive_10 - show_if: "addEBSDrive_9=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_10.aws.type - show_if: "addEBSDrive_10=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_10.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_10.aws.size - show_if: "addEBSDrive_10=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -##################################################### GOOGLE CLOUD ################################ - -#### Section 1 GC -- variable: drive_1.gc.type - show_if: "provider=Google cloud/GKE&&deviceConfig=Create Using a Spec" - description: "Select volume type" - label: "Volume" - type: enum - default: "standard" - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_1.gc.size - show_if: "provider=Google cloud/GKE&&deviceConfig=Create Using a Spec" - description: "Volume size" - label: "Size" - type: int - default: 150 - required: true - group: "Storage Parameters" - -#### Section 2 GC -- variable: addGCDrive_2 - show_if: "provider=Google cloud/GKE&&deviceConfig=Create Using a Spec" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_2.gc.type - show_if: "addGCDrive_2=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_2.gc.size - show_if: "addGCDrive_2=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 3 GC -- variable: addGCDrive_3 - show_if: "addGCDrive_2=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_3.gc.type - show_if: "addGCDrive_3=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_3.gc.size - show_if: "addGCDrive_3=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 4 GC -- variable: addGCDrive_4 - show_if: "addGCDrive_3=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_4.gc.type - show_if: "addGCDrive_4=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_4.gc.size - show_if: "addGCDrive_4=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 5 GC -- variable: addGCDrive_5 - show_if: "addGCDrive_4=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_5.gc.type - show_if: "addGCDrive_5=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_5.gc.size - show_if: "addGCDrive_5=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 6 GC -- variable: addGCDrive_6 - show_if: "addGCDrive_5=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_6.gc.type - show_if: "addGCDrive_6=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_6.gc.size - show_if: "addGCDrive_6=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 7 GC -- variable: addGCDrive_7 - show_if: "addGCDrive_6=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_7.gc.type - show_if: "addGCDrive_6=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_7.gc.size - show_if: "addGCDrive_7=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 8 GC -- variable: addGCDrive_8 - show_if: "addGCDrive_7=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_8.gc.type - show_if: "addGCDrive_8=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_8.gc.size - show_if: "addGCDrive_8=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 9 GC -- variable: addGCDrive_9 - show_if: "addGCDrive_8=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_9.gc.type - show_if: "addGCDrive_9=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_9.gc.size - show_if: "addGCDrive_9=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 10 GC -- variable: addGCDrive_10 - show_if: "addGCDrive_9=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_10.gc.type - show_if: "addGCDrive_10=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_10.gc.size - show_if: "addGCDrive_10=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -- variable: maxStorageNodes - show_if: "environment=Cloud&&deviceConfig=Create Using a Spec" - description: "Max storage nodes per availability zone" - label: "Max storage nodes (Optional)" - type: int - group: "Storage Parameters" - -################################### Network options ################################ -- variable: dataInterface - description: "Specify your data network interface (example: `eth1`). If set to `auto`, Portworx will automatically select the first routable interface." - type: string - label: "Data Network Interface" - default: auto - group: "Network Parameters" -- variable: managementInterface - description: "Specify your management network interface (example: `eth1`). If set to `auto`, Portworx will automatically select the first routable interface." - type: string - default: auto - label: "Management Network Interface" - group: "Network Parameters" - -################################### Platform options ################################ -- variable: platformOptions - type: enum - label: "Platform" - group: "Platform Parameters" - options: - - "AKS" - - "EKS" - - "GKE" - -################################### Registry settings options ################################ -- variable: customRegistry - label: "Use a custom container registry?" - type: boolean - default: false - group: "Container Registry Parameters" - -- variable: registrySecret - show_if: "customRegistry=true" - description: "Specify a custom Kubernetes secret that will be used to authenticate with a container registry. Must be defined in kube-system namespace. (example: regcred)" - type: string - label: "Registry Kubernetes Secret" - group: "Container Registry Parameters" -- variable: customRegistryURL - show_if: "customRegistry=true" - description: "Specify a custom container registry server (including repository) that will be used instead of index.docker.io to download Docker images. (example: dockerhub.acme.net:5443 or myregistry.com/myrepository/)" - label: "Custom Registry URL" - type: string - group: "Container Registry Parameters" - - - -################################## Optional features ############################ -# TODO: Once we have a stable CSI release, we will default this to enabled -#- variable: csi -# description: "Select if you want to enable CSI (Container Storage Interface). CSI is still in ALPHA." -# type: boolean -# label: "Enable CSI" -# default: false -# required: false -# group: "Advanced parameters" - -- variable: storkVersion - default: "2.12.0" - label: "Stork version" - type: string - group: "Advanced parameters" - -- variable: envVars - label: "Environment variables" - description: "Enter your environment variables separated by semicolons (example: MYENV1=val1;MYENV2=val2). These environment variables will be exported to Portworx." - type: string - group: "Advanced parameters" - -- variable: imageVersion - default: "2.11.4" - type: string - label: Portworx version to be deployed. - group: "Advanced parameters" - -- variable: clusterName - type: string - label: Portworx cluster name - default: mycluster - group: "Advanced parameters" diff --git a/charts/portworx/portworx-essentials/templates/NOTES.txt b/charts/portworx/portworx-essentials/templates/NOTES.txt deleted file mode 100644 index ea0bb6326..000000000 --- a/charts/portworx/portworx-essentials/templates/NOTES.txt +++ /dev/null @@ -1,13 +0,0 @@ -Your Release is named {{ .Release.Name | quote }} - -Portworx Pods should be running on each node in your cluster. - -Portworx would create a unified pool of the disks attached to your Kubernetes nodes. No further action should be required and you are ready to consume Portworx Volumes as part of your application data requirements. - -For further information on usage of the Portworx, refer to following doc pages. - -- For dynamically provisioning volumes: https://docs.portworx.com/scheduler/kubernetes/dynamic-provisioning.html -- For preprovisioned volumes: https://docs.portworx.com/scheduler/kubernetes/preprovisioned-volumes.html -- To use Stork (Storage Orchestration Runtime for Kubernetes) for hyperconvergence and snapshots: https://docs.portworx.com/scheduler/kubernetes/stork.html -- For stateful application solutions using Portworx: https://docs.portworx.com/scheduler/kubernetes/k8s-px-app-samples.html -- For interactive tutorials on using Portworx on Kubernetes: https://docs.portworx.com/scheduler/kubernetes/px-k8s-interactive.html diff --git a/charts/portworx/portworx-essentials/templates/_helpers.tpl b/charts/portworx/portworx-essentials/templates/_helpers.tpl deleted file mode 100644 index 4367d05ea..000000000 --- a/charts/portworx/portworx-essentials/templates/_helpers.tpl +++ /dev/null @@ -1,443 +0,0 @@ -{{/* Gets the correct API Version based on the version of the cluster -*/}} - -{{- define "rbac.apiVersion" -}} -{{- if semverCompare ">= 1.8-0" .Capabilities.KubeVersion.GitVersion -}} -"rbac.authorization.k8s.io/v1" -{{- else -}} -"rbac.authorization.k8s.io/v1beta1" -{{- end -}} -{{- end -}} - - -{{- define "px.labels" -}} -chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" -heritage: {{ .Release.Service | quote }} -release: {{ .Release.Name | quote }} -{{- end -}} - -{{- define "driveOpts" }} -{{ $v := .Values.installOptions.drives | split "," }} -{{$v._0}} -{{- end -}} - -{{- define "px.kubernetesVersion" -}} -{{$version := .Capabilities.KubeVersion.GitVersion | regexFind "^v\\d+\\.\\d+\\.\\d+"}}{{$version}} -{{- end -}} - - -{{- define "px.getImage" -}} -{{- if (.Values.customRegistryURL) -}} - {{- if (eq "/" (.Values.customRegistryURL | regexFind "/")) -}} - {{- if .Values.openshiftInstall -}} - {{ cat (trim .Values.customRegistryURL) "/px-monitor" | replace " " ""}} - {{- else -}} - {{ cat (trim .Values.customRegistryURL) "/oci-monitor" | replace " " ""}} - {{- end -}} - {{- else -}} - {{- if .Values.openshiftInstall -}} - {{cat (trim .Values.customRegistryURL) "/portworx/px-monitor" | replace " " ""}} - {{- else -}} - {{cat (trim .Values.customRegistryURL) "/portworx/oci-monitor" | replace " " ""}} - {{- end -}} - {{- end -}} -{{- else -}} - {{- if .Values.openshiftInstall -}} - {{ "registry.connect.redhat.com/portworx/px-monitor" }} - {{- else -}} - {{ "portworx/oci-monitor" }} - {{- end -}} -{{- end -}} -{{- end -}} - -{{- define "px.getStorkImage" -}} -{{- if (.Values.customRegistryURL) -}} - {{- if (eq "/" (.Values.customRegistryURL | regexFind "/")) -}} - {{ cat (trim .Values.customRegistryURL) "/stork" | replace " " ""}} - {{- else -}} - {{cat (trim .Values.customRegistryURL) "/openstorage/stork" | replace " " ""}} - {{- end -}} -{{- else -}} - {{ "openstorage/stork" }} -{{- end -}} -{{- end -}} - -{{- define "px.getk8sImages" -}} -{{- $version := .Capabilities.KubeVersion.GitVersion -}} -{{- if (.Values.customRegistryURL) -}} - {{- if (eq "/" (.Values.customRegistryURL | regexFind "/")) -}} - {{ trim .Values.customRegistryURL }} - {{- else -}} - {{- if or (or (and (semverCompare ">= 1.16.14-0" $version ) (semverCompare "<=1.17.0-0" $version)) (and (semverCompare ">= 1.17.10-0" $version) (semverCompare "<=1.18.0-0" $version ))) (semverCompare ">=1.18.7-0" $version) -}} - {{cat (trim .Values.customRegistryURL) "/k8s.gcr.io" | replace " " ""}} - {{- else -}} - {{cat (trim .Values.customRegistryURL) "/gcr.io/google_containers" | replace " " ""}} - {{- end -}} - {{- end -}} -{{- else -}} - {{- if or (or (and (semverCompare ">= 1.16.14-0" $version ) (semverCompare "<=1.17.0-0" $version)) (and (semverCompare ">= 1.17.10-0" $version) (semverCompare "<=1.18.0-0" $version ))) (semverCompare ">=1.18.7-0" $version) -}} - {{ "k8s.gcr.io" }} - {{- else -}} - {{ "gcr.io/google_containers" }} - {{- end -}} -{{- end -}} -{{- end -}} - -{{- define "px.getcsiImages" -}} -{{- if (.Values.customRegistryURL) -}} - {{- if (eq "/" (.Values.customRegistryURL | regexFind "/")) -}} - {{ trim .Values.customRegistryURL }} - {{- else -}} - {{cat (trim .Values.customRegistryURL) "/quay.io/k8scsi" | replace " " ""}} - {{- end -}} -{{- else -}} - {{ "quay.io/k8scsi" }} -{{- end -}} -{{- end -}} - - -{{- define "px.getCSIProvisionerImage" -}} -{{- if semverCompare "<1.17.0-0" .Capabilities.KubeVersion.GitVersion -}} - {{ "docker.io/openstorage/csi-provisioner:v1.6.1-1" }} -{{- else if semverCompare "< 1.20.0-0" .Capabilities.KubeVersion.GitVersion -}} - {{ "docker.io/openstorage/csi-provisioner:v2.2.2-1" }} -{{- else -}} - {{ "docker.io/openstorage/csi-provisioner:v3.0.0-1" }} -{{- end -}} -{{- end -}} - -{{- define "px.getCSISnapshotterImage" -}} -{{- if semverCompare "<1.17.0-0" .Capabilities.KubeVersion.GitVersion -}} - {{ "docker.io/openstorage/csi-snapshotter:v1.2.2-1" }} -{{- else if semverCompare "< 1.20.0-0" .Capabilities.KubeVersion.GitVersion -}} - {{ "k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.3" }} -{{- else -}} - {{ "k8s.gcr.io/sig-storage/csi-snapshotter:v4.2.1" }} -{{- end -}} -{{- end -}} - -{{- define "px.getCSISnapshotControllerImage" -}} -{{- if semverCompare "< 1.20.0-0" .Capabilities.KubeVersion.GitVersion -}} - {{ "k8s.gcr.io/sig-storage/snapshot-controller:v3.0.3" }} -{{- else -}} - {{ "k8s.gcr.io/sig-storage/snapshot-controller:v4.2.1" }} -{{- end -}} -{{- end -}} - -{{- define "px.getPauseImage" -}} -{{- if (.Values.customRegistryURL) -}} - {{- if (eq "/" (.Values.customRegistryURL | regexFind "/")) -}} - {{ trim .Values.customRegistryURL }} - {{- else -}} - {{cat (trim .Values.customRegistryURL) "/k8s.gcr.io" | replace " " ""}} - {{- end -}} -{{- else -}} - {{ "k8s.gcr.io" }} -{{- end -}} -{{- end -}} - -{{- define "px.registryConfigType" -}} -{{- if semverCompare ">=1.9-0" .Capabilities.KubeVersion.GitVersion -}} -".dockerconfigjson" -{{- else -}} -".dockercfg" -{{- end -}} -{{- end -}} - -{{/* -Create the name of the service account to use for hooks -*/}} -{{- define "px.hookServiceAccount" -}} -{{- if .Values.serviceAccount.hook.create -}} - {{- printf "%s-hook" .Chart.Name | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- else -}} - {{ default "default" .Values.serviceAccount.hook.name }} -{{- end -}} -{{- end -}} - -{{/* -Create the name of the cluster role to use for hooks -*/}} -{{- define "px.hookClusterRole" -}} -{{- if .Values.serviceAccount.hook.create -}} - {{- printf "%s-hook" .Chart.Name | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- else -}} - {{ default "default" .Values.serviceAccount.hook.name }} -{{- end -}} -{{- end -}} - -{{/* -Create the name of the cluster role binding to use for hooks -*/}} -{{- define "px.hookClusterRoleBinding" -}} -{{- if .Values.serviceAccount.hook.create -}} - {{- printf "%s-hook" .Chart.Name | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- else -}} - {{ default "default" .Values.serviceAccount.hook.name }} -{{- end -}} -{{- end -}} - -{{/* - String concatenation for drives in AWS section -*/}} -{{- define "px.storage" -}} -{{- $awsType1 := .Values.drive_1.aws.type -}} -{{- $awsType2 := .Values.drive_2.aws.type -}} -{{- $awsType3 := .Values.drive_3.aws.type -}} -{{- $awsType4 := .Values.drive_4.aws.type -}} -{{- $awsType5 := .Values.drive_5.aws.type -}} -{{- $awsType6 := .Values.drive_6.aws.type -}} -{{- $awsType7 := .Values.drive_7.aws.type -}} -{{- $awsType8 := .Values.drive_8.aws.type -}} -{{- $awsType9 := .Values.drive_9.aws.type -}} -{{- $awsType10 := .Values.drive_10.aws.type -}} - -{{- $awsSize1 := .Values.drive_1.aws.size -}} -{{- $awsSize2 := .Values.drive_2.aws.size -}} -{{- $awsSize3 := .Values.drive_3.aws.size -}} -{{- $awsSize4 := .Values.drive_4.aws.size -}} -{{- $awsSize5 := .Values.drive_5.aws.size -}} -{{- $awsSize6 := .Values.drive_6.aws.size -}} -{{- $awsSize7 := .Values.drive_7.aws.size -}} -{{- $awsSize8 := .Values.drive_8.aws.size -}} -{{- $awsSize9 := .Values.drive_9.aws.size -}} -{{- $awsSize10 := .Values.drive_10.aws.size -}} - -{{- $awsIops1 := .Values.drive_1.aws.iops -}} -{{- $awsIops2 := .Values.drive_2.aws.iops -}} -{{- $awsIops3 := .Values.drive_3.aws.iops -}} -{{- $awsIops4 := .Values.drive_4.aws.iops -}} -{{- $awsIops5 := .Values.drive_5.aws.iops -}} -{{- $awsIops6 := .Values.drive_6.aws.iops -}} -{{- $awsIops7 := .Values.drive_7.aws.iops -}} -{{- $awsIops8 := .Values.drive_8.aws.iops -}} -{{- $awsIops9 := .Values.drive_9.aws.iops -}} -{{- $awsIops10 := .Values.drive_10.aws.iops -}} - -{{- $gcType1 := .Values.drive_1.gc.type -}} -{{- $gcType2 := .Values.drive_2.gc.type -}} -{{- $gcType3 := .Values.drive_3.gc.type -}} -{{- $gcType4 := .Values.drive_4.gc.type -}} -{{- $gcType5 := .Values.drive_5.gc.type -}} -{{- $gcType6 := .Values.drive_6.gc.type -}} -{{- $gcType7 := .Values.drive_7.gc.type -}} -{{- $gcType8 := .Values.drive_8.gc.type -}} -{{- $gcType9 := .Values.drive_9.gc.type -}} -{{- $gcType10 := .Values.drive_10.gc.type -}} - -{{- $gcSize1 := .Values.drive_1.gc.size -}} -{{- $gcSize2 := .Values.drive_2.gc.size -}} -{{- $gcSize3 := .Values.drive_3.gc.size -}} -{{- $gcSize4 := .Values.drive_4.gc.size -}} -{{- $gcSize5 := .Values.drive_5.gc.size -}} -{{- $gcSize6 := .Values.drive_6.gc.size -}} -{{- $gcSize7 := .Values.drive_7.gc.size -}} -{{- $gcSize8 := .Values.drive_8.gc.size -}} -{{- $gcSize9 := .Values.drive_9.gc.size -}} -{{- $gcSize10 := .Values.drive_10.gc.size -}} - -{{- $usefileSystemDrive := .Values.usefileSystemDrive | default false }} -{{- $usedrivesAndPartitions := .Values.usedrivesAndPartitions | default false }} -{{- $deployEnvironmentIKS := .Capabilities.KubeVersion.GitVersion | regexMatch "IKS" }} - -{{- if eq "OnPrem" .Values.environment -}} - {{- if eq "Manually specify disks" .Values.onpremStorage }} - {{- if ne "none" .Values.existingDisk1 }} - "-s", "{{- .Values.existingDisk1 }}", - {{- end }} - {{- if ne "none" .Values.existingDisk2 -}} - "-s", "{{- .Values.existingDisk2 }}", - {{- end }} - {{- if ne "none" .Values.existingDisk3 -}} - "-s", "{{- .Values.existingDisk3 }}", - {{- end }} - {{- if ne "none" .Values.existingDisk4 -}} - "-s", "{{- .Values.existingDisk4 }}", - {{- end }} - {{- if ne "none" .Values.existingDisk5 }} - "-s", "{{- .Values.existingDisk5 }}", - {{- end }} - {{- else if eq "Automatically scan disks" .Values.onpremStorage -}} - {{- if or $usedrivesAndPartitions $deployEnvironmentIKS }} - "-f", - {{- end }} - {{- if eq $usedrivesAndPartitions true }} - "-A", - {{- else }} - "-a", - {{- end -}} - {{- end -}} - -{{- else if eq "Cloud" .Values.environment -}} - {{- if eq "Consume Unused" .Values.deviceConfig -}} - {{- if or $usedrivesAndPartitions $deployEnvironmentIKS }} - "-f", - {{- end }} - {{- if eq $usedrivesAndPartitions true }} - "-A", - {{- else }} - "-a", - {{- end -}} - {{- end }} -{{/*------------------- ----------------- Google cloud/GKE -------------- --------------- */}} - {{- if eq "Google cloud/GKE" .Values.provider -}} - {{- if eq "Use Existing Disks" .Values.deviceConfig -}} - {{- if .Values.existingDisk1 -}} - "-s", "{{- .Values.existingDisk1 -}}", - {{- end -}} - {{- if ne "none" .Values.existingDisk2 -}} - "-s", "{{- .Values.existingDisk2 -}}", - {{- end -}} - {{- if ne "none" .Values.existingDisk3 -}} - "-s", "{{- .Values.existingDisk3 -}}", - {{- end -}} - {{- if ne "none" .Values.existingDisk4 -}} - "-s", "{{- .Values.existingDisk4 -}}", - {{- end -}} - {{- if ne "none" .Values.existingDisk5 -}} - "-s", "{{- .Values.existingDisk5 -}}", - {{- end -}} - {{- else if eq "Create Using a Spec" .Values.deviceConfig -}} - {{- if $gcType1 }} - "-s", "type=pd-{{$gcType1 | lower}},size={{$gcSize1}}", - {{- end }} - {{/*------------------- DRIVE 2 --------------- */}} - {{- if $gcType2 -}} - "-s", "type=pd-{{$gcType2 | lower}},size={{$gcSize2}}", - {{- end }} - {{/*------------------- DRIVE 3 --------------- */}} - {{- if $gcType3 -}} - "-s", "type=pd-{{$gcType3 | lower}},size={{$gcSize3}}", - {{- end }} - {{/*------------------- DRIVE 4 --------------- */}} - {{- if $gcType4 -}} - "-s", "type=pd-{{$gcType4 | lower}},size={{$gcSize4}}", - {{- end }} - {{/*------------------- DRIVE 5 --------------- */}} - {{- if $gcType5 -}} - "-s", "type=pd-{{$gcType5 | lower}},size={{$gcSize5}}", - {{- end }} - {{/*------------------- DRIVE 6 --------------- */}} - {{- if $gcType6 -}} - "-s", "type=pd-{{$gcType6 | lower}},size={{$gcSize6}}", - {{- end }} - {{/*------------------- DRIVE 7 --------------- */}} - {{- if $gcType7 -}} - "-s", "type=pd-{{$gcType7 | lower}},size={{$gcSize7}}", - {{- end }} - {{/*------------------- DRIVE 8 --------------- */}} - {{- if $gcType8 -}} - "-s", "type=pd-{{$gcType8 | lower}},size={{$gcSize8}}", - {{- end }} - {{/*------------------- DRIVE 9 --------------- */}} - {{- if $gcType9 -}} - "-s", "type=pd-{{$gcType9 | lower}},size={{$gcSize9}}", - {{- end }} - {{/*------------------- DRIVE 10 --------------- */}} - {{- if $gcType10 -}} - "-s", "type=pd-{{$gcType1 | lower}},size={{$gcSize10}}", - {{- end }} - {{- end -}} -{{/*------------------- ----------------- AWS -------------- --------------- */}} - {{- else if eq "AWS" .Values.provider -}} - {{- if eq "Use Existing Disks" .Values.deviceConfig -}} - {{- if ne "none" .Values.existingDisk1 -}} - "-s", "{{ .Values.existingDisk1 }}", - {{- end -}} - {{- if ne "none" .Values.existingDisk2 -}} - "-s", "{{ .Values.existingDisk2 }}", - {{- end -}} - {{- if ne "none" .Values.existingDisk3 -}} - "-s", "{{ .Values.existingDisk3 }}", - {{- end -}} - {{- if ne "none" .Values.existingDisk4 -}} - "-s", "{{ .Values.existingDisk4 }}", - {{- end -}} - {{- if ne "none" .Values.existingDisk5 -}} - "-s", "{{ .Values.existingDisk5 }}", - {{- end -}} - {{- else if eq "Create Using a Spec" .Values.deviceConfig -}} - {{- if ne "none" $awsType1 }} - {{- if eq "GP2" $awsType1 -}} - "-s", "type={{$awsType1 | lower}},size={{$awsSize1}}", - {{- else if eq "IO1" $awsType1 -}} - "-s", "type={{$awsType1 | lower}},size={{$awsSize1}},iops={{$awsIops1}}", - {{- end }} - {{- end }} - {{/*------------------- DRIVE 2 --------------- */}} - {{- if ne "none" $awsType2 -}} - {{- if eq "GP2" $awsType2 -}} - "-s", "type={{$awsType2 | lower}},size={{$awsSize2}}", - {{- else if eq "IO1" $awsType2 -}} - "-s", "type={{$awsType2 | lower}},size={{$awsSize2}},iops={{$awsIops2}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 3 --------------- */}} - {{- if ne "none" $awsType3 }} - {{- if eq "GP2" $awsType3 -}} - "-s", "type={{$awsType3 | lower}},size={{$awsSize3}}", - {{- else if eq "IO1" $awsType3 -}} - "-s", "type={{$awsType3 | lower}},size={{$awsSize3}},iops={{$awsIops3}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 4 --------------- */}} - {{- if ne "none" $awsType4 }} - {{- if eq "GP2" $awsType4 -}} - "-s", "type={{$awsType4 | lower}},size={{$awsSize4}}", - {{- else if eq "IO1" $awsType4 -}} - "-s", "type={{$awsType4 | lower}},size={{$awsSize4}},iops={{$awsIops4}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 5 --------------- */}} - {{- if ne "none" $awsType5 }} - {{- if eq "GP2" $awsType5 -}} - "-s", "type={{$awsType5 | lower}},size={{$awsSize5}}", - {{- else if eq "IO1" $awsType5 -}} - "-s", "type={{$awsType5 | lower}},size={{$awsSize5}},iops={{$awsIops5}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 6 --------------- */}} - {{- if ne "none" $awsType6 }} - {{- if eq "GP2" $awsType6 -}} - "-s", "type={{$awsType6 | lower}},size={{$awsSize6}}", - {{- else if eq "IO1" $awsType6 -}} - "-s", "type={{$awsType6 | lower}},size={{$awsSize6}},iops={{$awsIops6}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 7 --------------- */}} - {{- if ne "none" $awsType7 }} - {{- if eq "GP2" $awsType7 -}} - "-s", "type={{$awsType7 | lower}},size={{$awsSize7}}", - {{- else if eq "IO1" $awsType7 -}} - "-s", "type={{$awsType7 | lower}},size={{$awsSize7}},iops={{$awsIops7}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 8 --------------- */}} - {{- if ne "none" $awsType8 }} - {{- if eq "GP2" $awsType8 -}} - "-s", "type={{$awsType8 | lower}},size={{$awsSize8}}", - {{- else if eq "IO1" $awsType8 -}} - "-s", "type={{$awsType8 | lower}},size={{$awsSize8}},iops={{$awsIops8}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 9 --------------- */}} - {{- if ne "none" $awsType9 }} - {{- if eq "GP2" $awsType9 -}} - "-s", "type={{$awsType9 | lower}},size={{$awsSize9}}", - {{- else if eq "IO1" $awsType9 -}} - "-s", "type={{$awsType9 | lower}},size={{$awsSize9}},iops={{$awsIops9}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 10 --------------- */}} - {{- if ne "none" $awsType10 }} - {{- if eq "GP2" $awsType10 -}} - "-s", "type={{$awsType10 | lower}},size={{$awsSize10}}", - {{- else if eq "IO1" $awsType10 -}} - "-s", "type={{$awsType10 | lower}},size={{$awsSize10}},iops={{$awsIops10}}", - {{- end -}} - {{- end }} - {{- end -}} - {{- end -}} - {{- end -}} -{{- end }} - diff --git a/charts/portworx/portworx-essentials/templates/hooks/post-delete/px-postdelete-unlabelnode.yaml b/charts/portworx/portworx-essentials/templates/hooks/post-delete/px-postdelete-unlabelnode.yaml deleted file mode 100644 index 8c8efda02..000000000 --- a/charts/portworx/portworx-essentials/templates/hooks/post-delete/px-postdelete-unlabelnode.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- $customRegistryURL := .Values.customRegistryURL | default "none" }} -{{- $registrySecret := .Values.registrySecret | default "none" }} - -apiVersion: batch/v1 -kind: Job -metadata: - namespace: kube-system - name: px-hook-postdelete-unlabelnode - labels: - heritage: {{.Release.Service | quote }} - release: {{.Release.Name | quote }} - chart: "{{.Chart.Name}}-{{.Chart.Version}}" - app.kubernetes.io/managed-by: {{.Release.Service | quote }} - app.kubernetes.io/instance: {{.Release.Name | quote }} - annotations: - "helm.sh/hook": post-delete - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": before-hook-creation -spec: -{{ if semverCompare ">= 1.8-0" .Capabilities.KubeVersion.GitVersion }} - backoffLimit: 0 -{{ else }} - activeDeadlineSeconds: 30 -{{ end }} - template: - spec: - {{- if not (eq $registrySecret "none") }} - imagePullSecrets: - - name: {{ $registrySecret }} - {{- end }} - restartPolicy: Never - serviceAccountName: {{ template "px.hookServiceAccount" . }} - containers: - - name: post-delete-job - {{- if eq $customRegistryURL "none" }} - image: "lachlanevenson/k8s-kubectl:{{ template "px.kubernetesVersion" . }}" - {{- else}} - image: "{{ $customRegistryURL }}/lachlanevenson/k8s-kubectl:{{ template "px.kubernetesVersion" . }}" - {{- end}} - args: ['label','nodes','--all','px/enabled-'] diff --git a/charts/portworx/portworx-essentials/templates/hooks/pre-delete/px-predelete-nodelabel.yaml b/charts/portworx/portworx-essentials/templates/hooks/pre-delete/px-predelete-nodelabel.yaml deleted file mode 100644 index 1942bade7..000000000 --- a/charts/portworx/portworx-essentials/templates/hooks/pre-delete/px-predelete-nodelabel.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- $customRegistryURL := .Values.customRegistryURL | default "none" }} -{{- $registrySecret := .Values.registrySecret | default "none" }} - -apiVersion: batch/v1 -kind: Job -metadata: - namespace: kube-system - name: px-hook-predelete-nodelabel - labels: - heritage: {{.Release.Service | quote }} - release: {{.Release.Name | quote }} - chart: "{{.Chart.Name}}-{{.Chart.Version}}" - app.kubernetes.io/managed-by: {{.Release.Service | quote }} - app.kubernetes.io/instance: {{.Release.Name | quote }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": before-hook-creation -spec: -{{ if semverCompare ">= 1.8-0" .Capabilities.KubeVersion.GitVersion }} - backoffLimit: 0 -{{ else }} - activeDeadlineSeconds: 30 -{{ end }} - template: - spec: - {{- if not (eq $registrySecret "none") }} - imagePullSecrets: - - name: {{ $registrySecret }} - {{- end }} - serviceAccountName: {{ template "px.hookServiceAccount" . }} - restartPolicy: Never - containers: - - name: pre-delete-job - {{- if eq $customRegistryURL "none" }} - image: "lachlanevenson/k8s-kubectl:{{ template "px.kubernetesVersion" . }}" - {{- else}} - image: "{{ $customRegistryURL }}/lachlanevenson/k8s-kubectl:{{ template "px.kubernetesVersion" . }}" - {{- end}} - args: ['label','nodes','--all','px/enabled=remove','--overwrite'] diff --git a/charts/portworx/portworx-essentials/templates/portworx-controller.yaml b/charts/portworx/portworx-essentials/templates/portworx-controller.yaml deleted file mode 100644 index 15301f579..000000000 --- a/charts/portworx/portworx-essentials/templates/portworx-controller.yaml +++ /dev/null @@ -1,128 +0,0 @@ -{{- if or (and (.Values.openshiftInstall) (eq .Values.openshiftInstall true)) (and (.Values.AKSorEKSInstall) (eq .Values.AKSorEKSInstall true)) ((.Capabilities.KubeVersion.GitVersion | regexMatch "gke")) }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: portworx-pvc-controller-account - namespace: kube-system ---- -kind: ClusterRole -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: portworx-pvc-controller-role -rules: -- apiGroups: [""] - resources: ["persistentvolumes"] - verbs: ["create","delete","get","list","update","watch"] -- apiGroups: [""] - resources: ["persistentvolumes/status"] - verbs: ["update"] -- apiGroups: [""] - resources: ["persistentvolumeclaims"] - verbs: ["get", "list", "update", "watch"] -- apiGroups: [""] - resources: ["persistentvolumeclaims/status"] - verbs: ["update"] -- apiGroups: [""] - resources: ["pods"] - verbs: ["create", "delete", "get", "list", "watch"] -- apiGroups: ["storage.k8s.io"] - resources: ["storageclasses"] - verbs: ["get", "list", "watch"] -- apiGroups: [""] - resources: ["endpoints", "services"] - verbs: ["create", "delete", "get", "update"] -- apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["get", "list", "watch"] -- apiGroups: [""] - resources: ["events"] - verbs: ["watch"] -- apiGroups: [""] - resources: ["events"] - verbs: ["create", "patch", "update"] -- apiGroups: [""] - resources: ["serviceaccounts"] - verbs: ["get", "create"] -- apiGroups: [""] - resources: ["configmaps"] - verbs: ["get", "create", "update"] ---- -kind: ClusterRoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: portworx-pvc-controller-role-binding -subjects: -- kind: ServiceAccount - name: portworx-pvc-controller-account - namespace: kube-system -roleRef: - kind: ClusterRole - name: portworx-pvc-controller-role - apiGroup: rbac.authorization.k8s.io ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: - scheduler.alpha.kubernetes.io/critical-pod: "" - labels: - tier: control-plane - name: portworx-pvc-controller - namespace: kube-system -spec: - replicas: 3 - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - annotations: - scheduler.alpha.kubernetes.io/critical-pod: "" - labels: - name: portworx-pvc-controller - tier: control-plane - spec: - {{- if not (empty .Values.registrySecret) }} - imagePullSecrets: - - name: {{ .Values.registrySecret }} - {{- end }} - containers: - - command: - - kube-controller-manager - - --leader-elect=true - - --address=0.0.0.0 - - --controllers=persistentvolume-binder,persistentvolume-expander - - --use-service-account-credentials=true - - --leader-elect-resource-lock=configmaps - image: "{{ template "px.getk8sImages" . }}/kube-controller-manager-amd64:{{ template "px.kubernetesVersion" . }}" - livenessProbe: - failureThreshold: 8 - httpGet: - host: 127.0.0.1 - path: /healthz - port: 10252 - scheme: HTTP - initialDelaySeconds: 15 - timeoutSeconds: 15 - name: portworx-pvc-controller-manager - resources: - requests: - cpu: 200m - hostNetwork: true - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: "name" - operator: In - values: - - portworx-pvc-controller - topologyKey: "kubernetes.io/hostname" - serviceAccountName: portworx-pvc-controller-account -{{- end }} diff --git a/charts/portworx/portworx-essentials/templates/portworx-crd.yaml b/charts/portworx/portworx-essentials/templates/portworx-crd.yaml deleted file mode 100644 index 2811a0f8b..000000000 --- a/charts/portworx/portworx-essentials/templates/portworx-crd.yaml +++ /dev/null @@ -1,1146 +0,0 @@ -{{- if or (and (.Values.csi) (eq .Values.csi true)) (not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty))}} -{{- if (semverCompare ">= 1.17.0-0" .Capabilities.KubeVersion.GitVersion) }} -{{- if (semverCompare ">= 1.20.0-0" .Capabilities.KubeVersion.GitVersion) }} -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.0 - api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419" - creationTimestamp: null - name: volumesnapshotclasses.snapshot.storage.k8s.io -spec: - group: snapshot.storage.k8s.io - names: - kind: VolumeSnapshotClass - listKind: VolumeSnapshotClassList - plural: volumesnapshotclasses - singular: volumesnapshotclass - scope: Cluster - versions: - - additionalPrinterColumns: - - jsonPath: .driver - name: Driver - type: string - - description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. - jsonPath: .deletionPolicy - name: DeletionPolicy - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced - 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 - deletionPolicy: - description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required. - enum: - - Delete - - Retain - type: string - driver: - description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required. - 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 - parameters: - additionalProperties: - type: string - description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes. - type: object - required: - - deletionPolicy - - driver - type: object - served: true - storage: true - subresources: {} - - additionalPrinterColumns: - - jsonPath: .driver - name: Driver - type: string - - description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. - jsonPath: .deletionPolicy - name: DeletionPolicy - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - # This indicates the v1beta1 version of the custom resource is deprecated. - # API requests to this version receive a warning in the server response. - deprecated: true - # This overrides the default warning returned to clients making v1beta1 API requests. - deprecationWarning: "snapshot.storage.k8s.io/v1beta1 VolumeSnapshotClass is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshotClass" - schema: - openAPIV3Schema: - description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced - 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 - deletionPolicy: - description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required. - enum: - - Delete - - Retain - type: string - driver: - description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required. - 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 - parameters: - additionalProperties: - type: string - description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes. - type: object - required: - - deletionPolicy - - driver - type: object - served: true - storage: false - subresources: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.0 - api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419" - creationTimestamp: null - name: volumesnapshotcontents.snapshot.storage.k8s.io -spec: - group: snapshot.storage.k8s.io - names: - kind: VolumeSnapshotContent - listKind: VolumeSnapshotContentList - plural: volumesnapshotcontents - singular: volumesnapshotcontent - scope: Cluster - versions: - - additionalPrinterColumns: - - description: Indicates if the snapshot is ready to be used to restore a volume. - jsonPath: .status.readyToUse - name: ReadyToUse - type: boolean - - description: Represents the complete size of the snapshot in bytes - jsonPath: .status.restoreSize - name: RestoreSize - type: integer - - description: Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. - jsonPath: .spec.deletionPolicy - name: DeletionPolicy - type: string - - description: Name of the CSI driver used to create the physical snapshot on the underlying storage system. - jsonPath: .spec.driver - name: Driver - type: string - - description: Name of the VolumeSnapshotClass to which this snapshot belongs. - jsonPath: .spec.volumeSnapshotClassName - name: VolumeSnapshotClass - type: string - - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. - jsonPath: .spec.volumeSnapshotRef.name - name: VolumeSnapshot - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: VolumeSnapshotContent represents the actual "on-disk" snapshot object in the underlying storage system - 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 - spec: - description: spec defines properties of a VolumeSnapshotContent created by the underlying storage system. Required. - properties: - deletionPolicy: - description: deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. For dynamically provisioned snapshots, this field will automatically be filled in by the CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding VolumeSnapshotClass. For pre-existing snapshots, users MUST specify this field when creating the VolumeSnapshotContent object. Required. - enum: - - Delete - - Retain - type: string - driver: - description: driver is the name of the CSI driver used to create the physical snapshot on the underlying storage system. This MUST be the same as the name returned by the CSI GetPluginName() call for that driver. Required. - type: string - source: - description: source specifies whether the snapshot is (or should be) dynamically provisioned or already exists, and just requires a Kubernetes object representation. This field is immutable after creation. Required. - properties: - snapshotHandle: - description: snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on the underlying storage system for which a Kubernetes object representation was (or should be) created. This field is immutable. - type: string - volumeHandle: - description: volumeHandle specifies the CSI "volume_id" of the volume from which a snapshot should be dynamically taken from. This field is immutable. - type: string - type: object - oneOf: - - required: ["snapshotHandle"] - - required: ["volumeHandle"] - volumeSnapshotClassName: - description: name of the VolumeSnapshotClass from which this snapshot was (or will be) created. Note that after provisioning, the VolumeSnapshotClass may be deleted or recreated with different set of values, and as such, should not be referenced post-snapshot creation. - type: string - volumeSnapshotRef: - description: volumeSnapshotRef specifies the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to this VolumeSnapshotContent's name for the bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent object, name and namespace of the VolumeSnapshot object MUST be provided for binding to happen. This field is immutable after creation. Required. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - required: - - deletionPolicy - - driver - - source - - volumeSnapshotRef - type: object - status: - description: status represents the current information of a snapshot. - properties: - creationTime: - description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it indicates the creation time is unknown. The format of this field is a Unix nanoseconds time encoded as an int64. On Unix, the command `date +%s%N` returns the current time in nanoseconds since 1970-01-01 00:00:00 UTC. - format: int64 - type: integer - error: - description: error is the last observed error during snapshot creation, if any. Upon success after retry, this error field will be cleared. - properties: - message: - description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' - type: string - time: - description: time is the timestamp when the error was encountered. - format: date-time - type: string - type: object - readyToUse: - description: readyToUse indicates if a snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. - type: boolean - restoreSize: - description: restoreSize represents the complete size of the snapshot in bytes. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. - format: int64 - minimum: 0 - type: integer - snapshotHandle: - description: snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. If not specified, it indicates that dynamic snapshot creation has either failed or it is still in progress. - type: string - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - description: Indicates if the snapshot is ready to be used to restore a volume. - jsonPath: .status.readyToUse - name: ReadyToUse - type: boolean - - description: Represents the complete size of the snapshot in bytes - jsonPath: .status.restoreSize - name: RestoreSize - type: integer - - description: Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. - jsonPath: .spec.deletionPolicy - name: DeletionPolicy - type: string - - description: Name of the CSI driver used to create the physical snapshot on the underlying storage system. - jsonPath: .spec.driver - name: Driver - type: string - - description: Name of the VolumeSnapshotClass to which this snapshot belongs. - jsonPath: .spec.volumeSnapshotClassName - name: VolumeSnapshotClass - type: string - - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. - jsonPath: .spec.volumeSnapshotRef.name - name: VolumeSnapshot - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - # This indicates the v1beta1 version of the custom resource is deprecated. - # API requests to this version receive a warning in the server response. - deprecated: true - # This overrides the default warning returned to clients making v1beta1 API requests. - deprecationWarning: "snapshot.storage.k8s.io/v1beta1 VolumeSnapshotContent is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshotContent" - schema: - openAPIV3Schema: - description: VolumeSnapshotContent represents the actual "on-disk" snapshot object in the underlying storage system - 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 - spec: - description: spec defines properties of a VolumeSnapshotContent created by the underlying storage system. Required. - properties: - deletionPolicy: - description: deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. For dynamically provisioned snapshots, this field will automatically be filled in by the CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding VolumeSnapshotClass. For pre-existing snapshots, users MUST specify this field when creating the VolumeSnapshotContent object. Required. - enum: - - Delete - - Retain - type: string - driver: - description: driver is the name of the CSI driver used to create the physical snapshot on the underlying storage system. This MUST be the same as the name returned by the CSI GetPluginName() call for that driver. Required. - type: string - source: - description: source specifies whether the snapshot is (or should be) dynamically provisioned or already exists, and just requires a Kubernetes object representation. This field is immutable after creation. Required. - properties: - snapshotHandle: - description: snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on the underlying storage system for which a Kubernetes object representation was (or should be) created. This field is immutable. - type: string - volumeHandle: - description: volumeHandle specifies the CSI "volume_id" of the volume from which a snapshot should be dynamically taken from. This field is immutable. - type: string - type: object - volumeSnapshotClassName: - description: name of the VolumeSnapshotClass from which this snapshot was (or will be) created. Note that after provisioning, the VolumeSnapshotClass may be deleted or recreated with different set of values, and as such, should not be referenced post-snapshot creation. - type: string - volumeSnapshotRef: - description: volumeSnapshotRef specifies the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to this VolumeSnapshotContent's name for the bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent object, name and namespace of the VolumeSnapshot object MUST be provided for binding to happen. This field is immutable after creation. Required. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - required: - - deletionPolicy - - driver - - source - - volumeSnapshotRef - type: object - status: - description: status represents the current information of a snapshot. - properties: - creationTime: - description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it indicates the creation time is unknown. The format of this field is a Unix nanoseconds time encoded as an int64. On Unix, the command `date +%s%N` returns the current time in nanoseconds since 1970-01-01 00:00:00 UTC. - format: int64 - type: integer - error: - description: error is the last observed error during snapshot creation, if any. Upon success after retry, this error field will be cleared. - properties: - message: - description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' - type: string - time: - description: time is the timestamp when the error was encountered. - format: date-time - type: string - type: object - readyToUse: - description: readyToUse indicates if a snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. - type: boolean - restoreSize: - description: restoreSize represents the complete size of the snapshot in bytes. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. - format: int64 - minimum: 0 - type: integer - snapshotHandle: - description: snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. If not specified, it indicates that dynamic snapshot creation has either failed or it is still in progress. - type: string - type: object - required: - - spec - type: object - served: true - storage: false - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.0 - api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419" - creationTimestamp: null - name: volumesnapshots.snapshot.storage.k8s.io -spec: - group: snapshot.storage.k8s.io - names: - kind: VolumeSnapshot - listKind: VolumeSnapshotList - plural: volumesnapshots - singular: volumesnapshot - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Indicates if the snapshot is ready to be used to restore a volume. - jsonPath: .status.readyToUse - name: ReadyToUse - type: boolean - - description: If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created. - jsonPath: .spec.source.persistentVolumeClaimName - name: SourcePVC - type: string - - description: If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot. - jsonPath: .spec.source.volumeSnapshotContentName - name: SourceSnapshotContent - type: string - - description: Represents the minimum size of volume required to rehydrate from this snapshot. - jsonPath: .status.restoreSize - name: RestoreSize - type: string - - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. - jsonPath: .spec.volumeSnapshotClassName - name: SnapshotClass - type: string - - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object. - jsonPath: .status.boundVolumeSnapshotContentName - name: SnapshotContent - type: string - - description: Timestamp when the point-in-time snapshot was taken by the underlying storage system. - jsonPath: .status.creationTime - name: CreationTime - type: date - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: VolumeSnapshot is a user's request for either creating a point-in-time snapshot of a persistent volume, or binding to a pre-existing snapshot. - 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 - spec: - description: 'spec defines the desired characteristics of a snapshot requested by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots Required.' - properties: - source: - description: source specifies where a snapshot will be created from. This field is immutable after creation. Required. - properties: - persistentVolumeClaimName: - description: persistentVolumeClaimName specifies the name of the PersistentVolumeClaim object representing the volume from which a snapshot should be created. This PVC is assumed to be in the same namespace as the VolumeSnapshot object. This field should be set if the snapshot does not exists, and needs to be created. This field is immutable. - type: string - volumeSnapshotContentName: - description: volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent object representing an existing volume snapshot. This field should be set if the snapshot already exists and only needs a representation in Kubernetes. This field is immutable. - type: string - type: object - oneOf: - - required: ["persistentVolumeClaimName"] - - required: ["volumeSnapshotContentName"] - volumeSnapshotClassName: - description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. VolumeSnapshotClassName may be left nil to indicate that the default SnapshotClass should be used. A given cluster may have multiple default Volume SnapshotClasses: one default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, VolumeSnapshotSource will be checked to figure out what the associated CSI Driver is, and the default VolumeSnapshotClass associated with that CSI Driver will be used. If more than one VolumeSnapshotClass exist for a given CSI Driver and more than one have been marked as default, CreateSnapshot will fail and generate an event. Empty string is not allowed for this field.' - type: string - required: - - source - type: object - status: - description: status represents the current information of a snapshot. Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object. - properties: - boundVolumeSnapshotContentName: - description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent object to which this VolumeSnapshot object intends to bind to. If not specified, it indicates that the VolumeSnapshot object has not been successfully bound to a VolumeSnapshotContent object yet. NOTE: To avoid possible security issues, consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.' - type: string - creationTime: - description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it may indicate that the creation time of the snapshot is unknown. - format: date-time - type: string - error: - description: error is the last observed error during snapshot creation, if any. This field could be helpful to upper level controllers(i.e., application controller) to decide whether they should continue on waiting for the snapshot to be created based on the type of error reported. The snapshot controller will keep retrying when an error occurrs during the snapshot creation. Upon success, this error field will be cleared. - properties: - message: - description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' - type: string - time: - description: time is the timestamp when the error was encountered. - format: date-time - type: string - type: object - readyToUse: - description: readyToUse indicates if the snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. - type: boolean - restoreSize: - type: string - description: restoreSize represents the minimum size of volume required to create a volume from this snapshot. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - description: Indicates if the snapshot is ready to be used to restore a volume. - jsonPath: .status.readyToUse - name: ReadyToUse - type: boolean - - description: If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created. - jsonPath: .spec.source.persistentVolumeClaimName - name: SourcePVC - type: string - - description: If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot. - jsonPath: .spec.source.volumeSnapshotContentName - name: SourceSnapshotContent - type: string - - description: Represents the minimum size of volume required to rehydrate from this snapshot. - jsonPath: .status.restoreSize - name: RestoreSize - type: string - - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. - jsonPath: .spec.volumeSnapshotClassName - name: SnapshotClass - type: string - - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object. - jsonPath: .status.boundVolumeSnapshotContentName - name: SnapshotContent - type: string - - description: Timestamp when the point-in-time snapshot was taken by the underlying storage system. - jsonPath: .status.creationTime - name: CreationTime - type: date - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - # This indicates the v1beta1 version of the custom resource is deprecated. - # API requests to this version receive a warning in the server response. - deprecated: true - # This overrides the default warning returned to clients making v1beta1 API requests. - deprecationWarning: "snapshot.storage.k8s.io/v1beta1 VolumeSnapshot is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshot" - schema: - openAPIV3Schema: - description: VolumeSnapshot is a user's request for either creating a point-in-time snapshot of a persistent volume, or binding to a pre-existing snapshot. - 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 - spec: - description: 'spec defines the desired characteristics of a snapshot requested by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots Required.' - properties: - source: - description: source specifies where a snapshot will be created from. This field is immutable after creation. Required. - properties: - persistentVolumeClaimName: - description: persistentVolumeClaimName specifies the name of the PersistentVolumeClaim object representing the volume from which a snapshot should be created. This PVC is assumed to be in the same namespace as the VolumeSnapshot object. This field should be set if the snapshot does not exists, and needs to be created. This field is immutable. - type: string - volumeSnapshotContentName: - description: volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent object representing an existing volume snapshot. This field should be set if the snapshot already exists and only needs a representation in Kubernetes. This field is immutable. - type: string - type: object - volumeSnapshotClassName: - description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. VolumeSnapshotClassName may be left nil to indicate that the default SnapshotClass should be used. A given cluster may have multiple default Volume SnapshotClasses: one default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, VolumeSnapshotSource will be checked to figure out what the associated CSI Driver is, and the default VolumeSnapshotClass associated with that CSI Driver will be used. If more than one VolumeSnapshotClass exist for a given CSI Driver and more than one have been marked as default, CreateSnapshot will fail and generate an event. Empty string is not allowed for this field.' - type: string - required: - - source - type: object - status: - description: status represents the current information of a snapshot. Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object. - properties: - boundVolumeSnapshotContentName: - description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent object to which this VolumeSnapshot object intends to bind to. If not specified, it indicates that the VolumeSnapshot object has not been successfully bound to a VolumeSnapshotContent object yet. NOTE: To avoid possible security issues, consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.' - type: string - creationTime: - description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it may indicate that the creation time of the snapshot is unknown. - format: date-time - type: string - error: - description: error is the last observed error during snapshot creation, if any. This field could be helpful to upper level controllers(i.e., application controller) to decide whether they should continue on waiting for the snapshot to be created based on the type of error reported. The snapshot controller will keep retrying when an error occurrs during the snapshot creation. Upon success, this error field will be cleared. - properties: - message: - description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' - type: string - time: - description: time is the timestamp when the error was encountered. - format: date-time - type: string - type: object - readyToUse: - description: readyToUse indicates if the snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. - type: boolean - restoreSize: - type: string - description: restoreSize represents the minimum size of volume required to create a volume from this snapshot. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - required: - - spec - type: object - served: true - storage: false - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] -{{- else }} -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/139" - creationTimestamp: null - name: volumesnapshotclasses.snapshot.storage.k8s.io -spec: - group: snapshot.storage.k8s.io - names: - kind: VolumeSnapshotClass - listKind: VolumeSnapshotClassList - plural: volumesnapshotclasses - singular: volumesnapshotclass - scope: Cluster - versions: - - additionalPrinterColumns: - - jsonPath: .driver - name: Driver - type: string - - description: Determines whether a VolumeSnapshotContent created through the - VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. - jsonPath: .deletionPolicy - name: DeletionPolicy - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: VolumeSnapshotClass specifies parameters that a underlying storage - system uses when creating a volume snapshot. A specific VolumeSnapshotClass - is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses - are non-namespaced - 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 - deletionPolicy: - description: deletionPolicy determines whether a VolumeSnapshotContent - created through the VolumeSnapshotClass should be deleted when its bound - VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". - "Retain" means that the VolumeSnapshotContent and its physical snapshot - on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent - and its physical snapshot on underlying storage system are deleted. - Required. - enum: - - Delete - - Retain - type: string - driver: - description: driver is the name of the storage driver that handles this - VolumeSnapshotClass. Required. - 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 - parameters: - additionalProperties: - type: string - description: parameters is a key-value map with storage driver specific - parameters for creating snapshots. These values are opaque to Kubernetes. - type: object - required: - - deletionPolicy - - driver - type: object - served: true - storage: true - subresources: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/139" - creationTimestamp: null - name: volumesnapshotcontents.snapshot.storage.k8s.io -spec: - group: snapshot.storage.k8s.io - names: - kind: VolumeSnapshotContent - listKind: VolumeSnapshotContentList - plural: volumesnapshotcontents - singular: volumesnapshotcontent - scope: Cluster - versions: - - additionalPrinterColumns: - - description: Indicates if a snapshot is ready to be used to restore a volume. - jsonPath: .status.readyToUse - name: ReadyToUse - type: boolean - - description: Represents the complete size of the snapshot in bytes - jsonPath: .status.restoreSize - name: RestoreSize - type: integer - - description: Determines whether this VolumeSnapshotContent and its physical - snapshot on the underlying storage system should be deleted when its bound - VolumeSnapshot is deleted. - jsonPath: .spec.deletionPolicy - name: DeletionPolicy - type: string - - description: Name of the CSI driver used to create the physical snapshot on - the underlying storage system. - jsonPath: .spec.driver - name: Driver - type: string - - description: Name of the VolumeSnapshotClass to which this snapshot belongs. - jsonPath: .spec.volumeSnapshotClassName - name: VolumeSnapshotClass - type: string - - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent - object is bound. - jsonPath: .spec.volumeSnapshotRef.name - name: VolumeSnapshot - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: VolumeSnapshotContent represents the actual "on-disk" snapshot - object in the underlying storage system - 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 - spec: - description: spec defines properties of a VolumeSnapshotContent created - by the underlying storage system. Required. - properties: - deletionPolicy: - description: deletionPolicy determines whether this VolumeSnapshotContent - and its physical snapshot on the underlying storage system should - be deleted when its bound VolumeSnapshot is deleted. Supported values - are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent - and its physical snapshot on underlying storage system are kept. - "Delete" means that the VolumeSnapshotContent and its physical snapshot - on underlying storage system are deleted. In dynamic snapshot creation - case, this field will be filled in with the "DeletionPolicy" field - defined in the VolumeSnapshotClass the VolumeSnapshot refers to. - For pre-existing snapshots, users MUST specify this field when creating - the VolumeSnapshotContent object. Required. - enum: - - Delete - - Retain - type: string - driver: - description: driver is the name of the CSI driver used to create the - physical snapshot on the underlying storage system. This MUST be - the same as the name returned by the CSI GetPluginName() call for - that driver. Required. - type: string - source: - description: source specifies from where a snapshot will be created. - This field is immutable after creation. Required. - properties: - snapshotHandle: - description: snapshotHandle specifies the CSI "snapshot_id" of - a pre-existing snapshot on the underlying storage system. This - field is immutable. - type: string - volumeHandle: - description: volumeHandle specifies the CSI "volume_id" of the - volume from which a snapshot should be dynamically taken from. - This field is immutable. - type: string - type: object - volumeSnapshotClassName: - description: name of the VolumeSnapshotClass to which this snapshot - belongs. - type: string - volumeSnapshotRef: - description: volumeSnapshotRef specifies the VolumeSnapshot object - to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName - field must reference to this VolumeSnapshotContent's name for the - bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent - object, name and namespace of the VolumeSnapshot object MUST be - provided for binding to happen. This field is immutable after creation. - Required. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - required: - - deletionPolicy - - driver - - source - - volumeSnapshotRef - type: object - status: - description: status represents the current information of a snapshot. - properties: - creationTime: - description: creationTime is the timestamp when the point-in-time - snapshot is taken by the underlying storage system. In dynamic snapshot - creation case, this field will be filled in with the "creation_time" - value returned from CSI "CreateSnapshotRequest" gRPC call. For a - pre-existing snapshot, this field will be filled with the "creation_time" - value returned from the CSI "ListSnapshots" gRPC call if the driver - supports it. If not specified, it indicates the creation time is - unknown. The format of this field is a Unix nanoseconds time encoded - as an int64. On Unix, the command `date +%s%N` returns the current - time in nanoseconds since 1970-01-01 00:00:00 UTC. - format: int64 - type: integer - error: - description: error is the latest observed error during snapshot creation, - if any. - properties: - message: - description: 'message is a string detailing the encountered error - during snapshot creation if specified. NOTE: message may be - logged, and it should not contain sensitive information.' - type: string - time: - description: time is the timestamp when the error was encountered. - format: date-time - type: string - type: object - readyToUse: - description: readyToUse indicates if a snapshot is ready to be used - to restore a volume. In dynamic snapshot creation case, this field - will be filled in with the "ready_to_use" value returned from CSI - "CreateSnapshotRequest" gRPC call. For a pre-existing snapshot, - this field will be filled with the "ready_to_use" value returned - from the CSI "ListSnapshots" gRPC call if the driver supports it, - otherwise, this field will be set to "True". If not specified, it - means the readiness of a snapshot is unknown. - type: boolean - restoreSize: - description: restoreSize represents the complete size of the snapshot - in bytes. In dynamic snapshot creation case, this field will be - filled in with the "size_bytes" value returned from CSI "CreateSnapshotRequest" - gRPC call. For a pre-existing snapshot, this field will be filled - with the "size_bytes" value returned from the CSI "ListSnapshots" - gRPC call if the driver supports it. When restoring a volume from - this snapshot, the size of the volume MUST NOT be smaller than the - restoreSize if it is specified, otherwise the restoration will fail. - If not specified, it indicates that the size is unknown. - format: int64 - minimum: 0 - type: integer - snapshotHandle: - description: snapshotHandle is the CSI "snapshot_id" of a snapshot - on the underlying storage system. If not specified, it indicates - that dynamic snapshot creation has either failed or it is still - in progress. - type: string - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/139" - creationTimestamp: null - name: volumesnapshots.snapshot.storage.k8s.io -spec: - group: snapshot.storage.k8s.io - names: - kind: VolumeSnapshot - listKind: VolumeSnapshotList - plural: volumesnapshots - singular: volumesnapshot - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Indicates if a snapshot is ready to be used to restore a volume. - jsonPath: .status.readyToUse - name: ReadyToUse - type: boolean - - description: Name of the source PVC from where a dynamically taken snapshot - will be created. - jsonPath: .spec.source.persistentVolumeClaimName - name: SourcePVC - type: string - - description: Name of the VolumeSnapshotContent which represents a pre-provisioned - snapshot. - jsonPath: .spec.source.volumeSnapshotContentName - name: SourceSnapshotContent - type: string - - description: Represents the complete size of the snapshot. - jsonPath: .status.restoreSize - name: RestoreSize - type: string - - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. - jsonPath: .spec.volumeSnapshotClassName - name: SnapshotClass - type: string - - description: The name of the VolumeSnapshotContent to which this VolumeSnapshot - is bound. - jsonPath: .status.boundVolumeSnapshotContentName - name: SnapshotContent - type: string - - description: Timestamp when the point-in-time snapshot is taken by the underlying - storage system. - jsonPath: .status.creationTime - name: CreationTime - type: date - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: VolumeSnapshot is a user's request for either creating a point-in-time - snapshot of a persistent volume, or binding to a pre-existing snapshot. - 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 - spec: - description: 'spec defines the desired characteristics of a snapshot requested - by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots - Required.' - properties: - source: - description: source specifies where a snapshot will be created from. - This field is immutable after creation. Required. - properties: - persistentVolumeClaimName: - description: persistentVolumeClaimName specifies the name of the - PersistentVolumeClaim object in the same namespace as the VolumeSnapshot - object where the snapshot should be dynamically taken from. - This field is immutable. - type: string - volumeSnapshotContentName: - description: volumeSnapshotContentName specifies the name of a - pre-existing VolumeSnapshotContent object. This field is immutable. - type: string - type: object - volumeSnapshotClassName: - description: 'volumeSnapshotClassName is the name of the VolumeSnapshotClass - requested by the VolumeSnapshot. If not specified, the default snapshot - class will be used if one exists. If not specified, and there is - no default snapshot class, dynamic snapshot creation will fail. - Empty string is not allowed for this field. TODO(xiangqian): a webhook - validation on empty string. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshot-classes' - type: string - required: - - source - type: object - status: - description: 'status represents the current information of a snapshot. - NOTE: status can be modified by sources other than system controllers, - and must not be depended upon for accuracy. Controllers should only - use information from the VolumeSnapshotContent object after verifying - that the binding is accurate and complete.' - properties: - boundVolumeSnapshotContentName: - description: 'boundVolumeSnapshotContentName represents the name of - the VolumeSnapshotContent object to which the VolumeSnapshot object - is bound. If not specified, it indicates that the VolumeSnapshot - object has not been successfully bound to a VolumeSnapshotContent - object yet. NOTE: Specified boundVolumeSnapshotContentName alone - does not mean binding is valid. Controllers MUST always verify - bidirectional binding between VolumeSnapshot and VolumeSnapshotContent - to avoid possible security issues.' - type: string - creationTime: - description: creationTime is the timestamp when the point-in-time - snapshot is taken by the underlying storage system. In dynamic snapshot - creation case, this field will be filled in with the "creation_time" - value returned from CSI "CreateSnapshotRequest" gRPC call. For a - pre-existing snapshot, this field will be filled with the "creation_time" - value returned from the CSI "ListSnapshots" gRPC call if the driver - supports it. If not specified, it indicates that the creation time - of the snapshot is unknown. - format: date-time - type: string - error: - description: error is the last observed error during snapshot creation, - if any. This field could be helpful to upper level controllers(i.e., - application controller) to decide whether they should continue on - waiting for the snapshot to be created based on the type of error - reported. - properties: - message: - description: 'message is a string detailing the encountered error - during snapshot creation if specified. NOTE: message may be - logged, and it should not contain sensitive information.' - type: string - time: - description: time is the timestamp when the error was encountered. - format: date-time - type: string - type: object - readyToUse: - description: readyToUse indicates if a snapshot is ready to be used - to restore a volume. In dynamic snapshot creation case, this field - will be filled in with the "ready_to_use" value returned from CSI - "CreateSnapshotRequest" gRPC call. For a pre-existing snapshot, - this field will be filled with the "ready_to_use" value returned - from the CSI "ListSnapshots" gRPC call if the driver supports it, - otherwise, this field will be set to "True". If not specified, it - means the readiness of a snapshot is unknown. - type: boolean - restoreSize: - type: string - description: restoreSize represents the complete size of the snapshot - in bytes. In dynamic snapshot creation case, this field will be - filled in with the "size_bytes" value returned from CSI "CreateSnapshotRequest" - gRPC call. For a pre-existing snapshot, this field will be filled - with the "size_bytes" value returned from the CSI "ListSnapshots" - gRPC call if the driver supports it. When restoring a volume from - this snapshot, the size of the volume MUST NOT be smaller than the - restoreSize if it is specified, otherwise the restoration will fail. - If not specified, it indicates that the size is unknown. - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] -{{- end}} -{{- end}} -{{- end}} \ No newline at end of file diff --git a/charts/portworx/portworx-essentials/templates/portworx-csi.yaml b/charts/portworx/portworx-essentials/templates/portworx-csi.yaml deleted file mode 100644 index b3b543483..000000000 --- a/charts/portworx/portworx-essentials/templates/portworx-csi.yaml +++ /dev/null @@ -1,195 +0,0 @@ -{{- if or (and (.Values.csi) (eq .Values.csi true)) (not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty))}} -{{- $customRegistryURL := .Values.customRegistryURL | default "none" }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: px-csi-account - namespace: kube-system ---- -kind: ClusterRole -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: px-csi-role -rules: -- apiGroups: ["extensions"] - resources: ["podsecuritypolicies"] - resourceNames: ["privileged"] - verbs: ["use"] -- apiGroups: ["apiextensions.k8s.io"] - resources: ["customresourcedefinitions"] - verbs: ["*"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["get", "list", "watch"] -- apiGroups: [""] - resources: ["persistentvolumes"] - verbs: ["get", "list", "watch", "create", "delete", "update", "patch"] -- apiGroups: [""] - resources: ["persistentvolumeclaims"] - verbs: ["get", "list", "watch", "update"] -- apiGroups: [""] - resources: ["persistentvolumeclaims/status"] - verbs: ["update", "patch"] -- apiGroups: [""] - resources: ["pods"] - verbs: ["get", "list", "watch"] -- apiGroups: ["storage.k8s.io"] - resources: ["storageclasses"] - verbs: ["get", "list", "watch"] -- apiGroups: ["storage.k8s.io"] - resources: ["volumeattachments"] - verbs: ["get", "list", "watch", "update", "patch"] -- apiGroups: ["storage.k8s.io"] - resources: ["csistoragecapacities"] - verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] -- apiGroups: ["apps"] - resources: ["replicasets"] - verbs: ["get"] -- apiGroups: [""] - resources: ["events"] - verbs: ["list", "watch", "create", "update", "patch"] -- apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list"] -- apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshots", "volumesnapshotcontents", "volumesnapshotclasses", "volumesnapshots/status", "volumesnapshotcontents/status"] - verbs: ["create", "get", "list", "watch", "update", "delete"] -- apiGroups: ["csi.storage.k8s.io"] - resources: ["csinodeinfos"] - verbs: ["get", "list", "watch", "update"] -- apiGroups: ["storage.k8s.io"] - resources: ["csinodes"] - verbs: ["get", "list", "watch", "update"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["get", "list", "watch"] -- apiGroups: ["csi.storage.k8s.io"] - resources: ["csidrivers"] - verbs: ["create", "delete"] -- apiGroups: [""] - resources: ["endpoints"] - verbs: ["get", "watch", "list", "delete", "update", "create"] -- apiGroups: [""] - resources: ["configmaps"] - verbs: ["get", "watch", "list", "delete", "update", "create"] -- apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["*"] ---- -kind: ClusterRoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: px-csi-role-binding -subjects: -- kind: ServiceAccount - name: px-csi-account - namespace: kube-system -roleRef: - kind: ClusterRole - name: px-csi-role - apiGroup: rbac.authorization.k8s.io ---- -kind: Service -apiVersion: v1 -metadata: - name: px-csi-service - namespace: kube-system -spec: - clusterIP: None ---- -kind: Deployment -apiVersion: apps/v1 -metadata: - name: px-csi-ext - namespace: kube-system -spec: - selector: - matchLabels: - app: px-csi-driver - replicas: 1 - template: - metadata: - labels: - app: px-csi-driver - spec: - serviceAccount: px-csi-account - containers: - - name: csi-external-provisioner - imagePullPolicy: Always - image: {{ template "px.getCSIProvisionerImage" . }} - args: - - "--v=3" - - "--csi-address=$(ADDRESS)" - {{- if semverCompare "<1.17.0-0" .Capabilities.KubeVersion.GitVersion }} - - "--provisioner=pxd.portworx.com" - - "--enable-leader-election" - - "--leader-election-type={{if and (semverCompare ">=1.13.0-0" .Capabilities.KubeVersion.GitVersion) (semverCompare "<1.14.0-0" .Capabilities.KubeVersion.GitVersion) }}endpoints{{else}}leases{{end}}" - {{- else }} - - "--leader-election=true" - - "--default-fstype=ext4" - {{- end }} - env: - - name: ADDRESS - value: /csi/csi.sock - securityContext: - privileged: true - volumeMounts: - - name: socket-dir - mountPath: /csi - {{- if semverCompare ">=1.12.0-0" .Capabilities.KubeVersion.GitVersion }} - - name: csi-snapshotter - imagePullPolicy: Always - image: {{ template "px.getCSISnapshotterImage" . }} - args: - - "--v=3" - - "--csi-address=$(ADDRESS)" - - "--leader-election=true" - {{if and (semverCompare ">=1.13.0-0" .Capabilities.KubeVersion.GitVersion) (semverCompare "<1.14.0-0" .Capabilities.KubeVersion.GitVersion) }} - - "--leader-election-type=configmaps" - {{- end}} - env: - - name: ADDRESS - value: /csi/csi.sock - volumeMounts: - - name: socket-dir - mountPath: /csi - {{- end }} - {{- if semverCompare ">=1.17.0-0" .Capabilities.KubeVersion.GitVersion }} - - name: csi-snapshot-controller - imagePullPolicy: Always - image: {{ template "px.getCSISnapshotControllerImage" . }} - args: - - "--v=3" - - "--leader-election=true" - env: - - name: ADDRESS - value: /csi/csi.sock - securityContext: - privileged: true - volumeMounts: - - name: socket-dir - mountPath: /csi - {{- end }} - {{- if semverCompare ">=1.16.0-0" .Capabilities.KubeVersion.GitVersion }} - - name: csi-resizer - imagePullPolicy: Always - image: k8s.gcr.io/sig-storage/csi-resizer:v1.3.0 - args: - - "--v=3" - - "--csi-address=$(ADDRESS)" - - "--leader-election=true" - env: - - name: ADDRESS - value: /csi/csi.sock - securityContext: - privileged: true - volumeMounts: - - name: socket-dir - mountPath: /csi - {{- end }} - volumes: - - name: socket-dir - hostPath: - path: /var/lib/kubelet/plugins/pxd.portworx.com - type: DirectoryOrCreate -{{- end }} \ No newline at end of file diff --git a/charts/portworx/portworx-essentials/templates/portworx-ds.yaml b/charts/portworx/portworx-essentials/templates/portworx-ds.yaml deleted file mode 100644 index 8c8209ea2..000000000 --- a/charts/portworx/portworx-essentials/templates/portworx-ds.yaml +++ /dev/null @@ -1,477 +0,0 @@ -{{/* Setting defaults if they are omitted. */}} -{{- $deployEnvironmentIKS := .Capabilities.KubeVersion.GitVersion | regexMatch "IKS" }} -{{- $usefileSystemDrive := .Values.usefileSystemDrive | default false }} -{{- $usedrivesAndPartitions := .Values.usedrivesAndPartitions | default false }} -{{- $secretType := .Values.secretType | default "k8s" }} -{{- $journalDevice := .Values.journalDevice | default "none" }} -{{- $maxStorageNodes := .Values.maxStorageNodes | default "none" }} -{{- $customRegistryURL := .Values.customRegistryURL | default "none" }} -{{- $registrySecret := .Values.registrySecret | default "none" }} - -{{- $dataInterface := .Values.dataInterface | default "none" }} -{{- $managementInterface := .Values.managementInterface | default "none" }} -{{- $essentialSecretID := .Values.essentialID | default "none" }} - -{{- $envVars := .Values.envVars | default "none" }} -{{- $isCoreOS := .Values.isTargetOSCoreOS | default false }} - -{{- $pksInstall := .Values.pksInstall | default false }} -{{- $internalKVDB := .Values.etcdType | default "none" }} -{{- $csi := .Values.csi | default (not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty)) }} - -{{- $etcdCredentials := .Values.etcd.credentials | default "none:none" }} -{{- $etcdCertPath := .Values.etcd.ca | default "none" }} -{{- $etcdCA := .Values.etcd.ca | default "none" }} -{{- $etcdCert := .Values.etcd.cert | default "none" }} -{{- $etcdKey := .Values.etcd.key | default "none" }} -{{- $consulToken := .Values.consul.token | default "none" }} -{{- $misc := .Values.misc | default "" | split " " }} -{{- $etcdEndPoints := .Values.kvdb }} - -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: portworx - namespace: kube-system - labels: - name: portworx -spec: - minReadySeconds: 0 - updateStrategy: - type: RollingUpdate - rollingUpdate: - maxUnavailable: 1 - selector: - matchLabels: - name: portworx - app: portworx - template: - metadata: - labels: - app: portworx - name: portworx - spec: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: px/enabled - operator: NotIn - values: - - "false" - {{- if and (.Values.openshiftInstall) (eq .Values.openshiftInstall true)}} - - key: openshift-infra - operator: DoesNotExist - {{- else if or (not .Values.deployOnMaster) (eq .Values.deployOnMaster false)}} - - key: node-role.kubernetes.io/master - operator: DoesNotExist - {{- end }} - hostNetwork: true - hostPID: true - {{- if not (eq $registrySecret "none") }} - imagePullSecrets: - - name: {{ $registrySecret }} - {{- end }} - containers: - # {{ template "px.getImage"}} - - name: portworx - image: {{ template "px.getImage" . }}:{{ required "A valid Image tag is required in the SemVer format" .Values.imageVersion }} - terminationMessagePath: "/tmp/px-termination-log" - imagePullPolicy: Always - args: - [ - {{ include "px.storage" . | indent 0 }} - {{- with .Values -}} - {{- if eq "Built-in" $internalKVDB }} - "-b", - {{- end -}} - - {{- if ne $journalDevice "none" }} - "-j", "{{ $journalDevice }}", - {{- end -}} - - {{- if $etcdEndPoints -}} - "-k", "{{ regexReplaceAllLiteral "(;)" .kvdb "," }}", - {{- else }} - {{- if ne "Built-in" $internalKVDB }} - {{- if eq "US region" .region }} - "-k", "etcd:http://px-etcd1.portworx.com:2379,etcd:http://px-etcd2.portworx.com:2379,etcd:http://px-etcd3.portworx.com:2379", - {{- else if eq "EU region" .region }} - "-k", "etcd:http://px-eu-etcd1.portworx.com:2379,etcd:http://px-eu-etcd2.portworx.com:2379,etcd:http://px-eu-etcd3.portworx.com:2379", - {{- else }} - "{{ required "A valid kvdb url is required." .kvdb }}" - {{- end -}} - {{- end -}} - {{- end -}} - "-c", "{{ required "Clustername cannot be empty" .clusterName }}", - - {{- if ne $secretType "none" }} - "-secret_type", "{{ $secretType }}", - {{- else }} - {{- if $deployEnvironmentIKS }} - "-secret_type", "ibm-kp", - {{- end -}} - {{- end -}} - - {{- if and (ne $dataInterface "none") (ne $dataInterface "auto")}} - "-d", "{{ $dataInterface }}", - {{- end -}} - - {{- if and (ne $managementInterface "none") (ne $managementInterface "auto") }} - "-m", "{{ $managementInterface }}", - {{- end -}} - - {{- if ne $etcdCredentials "none:none" }} - "-userpwd", "{{ $etcdCredentials }}", - {{- end -}} - - {{- if ne $etcdCA "none" }} - "-ca", "/etc/pwx/etcdcerts/{{ $etcdCA }}", - {{- end -}} - - {{- if ne $etcdCert "none" }} - "-cert", "/etc/pwx/etcdcerts/{{ $etcdCert }}", - {{- end -}} - - {{- if ne $etcdKey "none" }} - "-key", "/etc/pwx/etcdcerts/{{ $etcdKey }}", - {{- end -}} - - {{- if ne $consulToken "none" }} - "-acltoken", "{{ $consulToken }}", - {{- end -}} - - {{- if .misc }} - {{- range $index, $name := $misc }} - "{{ $name }}", - {{- end }} - {{ end -}} - - {{- if ne $essentialSecretID "none" }} - "--oem", "esse", - {{ end -}} - "-marketplace_name","rancher_catalog", - "-x", "kubernetes" - {{- end -}} - ] - env: - - name: "PX_TEMPLATE_VERSION" - value: "v2" - {{ if not (eq $envVars "none") }} - {{- $vars := $envVars | split ";" }} - {{- range $key, $val := $vars }} - {{- $envVariable := $val | split "=" }} - - name: {{ $envVariable._0 | trim | quote }} - value: {{ $envVariable._1 | trim | quote }} - {{ end }} - {{- end }} - - {{- if not (eq $registrySecret "none") }} - - name: REGISTRY_CONFIG - valueFrom: - secretKeyRef: - {{- if (semverCompare ">=1.9-0" .Capabilities.KubeVersion.GitVersion) or (.Values.openshiftInstall and semverCompare ">=1.8-0" .Capabilities.KubeVersion.GitVersion) }} - key: ".dockerconfigjson" - {{- else }} - key: ".dockercfg" - {{- end }} - name: "{{ $registrySecret }}" - {{- end }} - - {{- if eq $pksInstall true }} - - name: "PRE-EXEC" - value: "if [ ! -x /bin/systemctl ]; then apt-get update; apt-get install -y systemd; fi" - {{- end }} - - {{- if eq $csi true }} - - name: CSI_ENDPOINT - value: unix:///var/lib/kubelet/plugins/pxd.portworx.com/csi.sock - {{- end }} - - livenessProbe: - periodSeconds: 30 - initialDelaySeconds: 840 # allow image pull in slow networks - httpGet: - host: 127.0.0.1 - path: /status - port: 9001 - readinessProbe: - periodSeconds: 10 - httpGet: - host: 127.0.0.1 - {{- if eq (.Values.deploymentType | upper | lower) "oci" }} - path: /health - port: 9015 - {{- else }} - path: /v1/cluster/nodehealth - port: 9001 - {{- end}} - securityContext: - privileged: true - volumeMounts: - {{- if not (eq $etcdCertPath "none") }} - - mountPath: /etc/pwx/etcdcerts - name: etcdcerts - {{- end }} - {{- if not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty) }} - - name: containerd-k3s - mountPath: /run/containerd/containerd.sock - {{- end }} - - name: dockersock - mountPath: /var/run/docker.sock - - name: containerdsock - mountPath: /run/containerd - - name: etcpwx - mountPath: /etc/pwx - - name: cores - mountPath: /var/cores - {{- if eq (.Values.deploymentType | upper | lower) "oci" }} - - name: optpwx - mountPath: /opt/pwx - - name: sysdmount - mountPath: /etc/systemd/system - - name: journalmount1 - mountPath: /var/run/log - readOnly: true - - name: journalmount2 - mountPath: /var/log - readOnly: true - - name: dbusmount - mountPath: /var/run/dbus - - name: hostproc - mountPath: /host_proc - {{- else if eq (.Values.deploymentType | upper | lower) "docker" }} - - name: dev - mountPath: /dev - - name: optpwx - mountPath: /export_bin - - name: dockerplugins - mountPath: /run/docker/plugins - - name: hostproc - mountPath: /hostproc - {{- if semverCompare "< 1.10-0" .Capabilities.KubeVersion.GitVersion }} - - name: libosd - mountPath: /var/lib/osd:shared - {{- if (.Values.openshiftInstall) and (eq .Values.openshiftInstall true)}} - - name: kubelet - mountPath: /var/lib/origin/openshift.local.volumes:shared - {{- else }} - - name: kubelet - mountPath: /var/lib/kubelet:shared - {{- end }} - - {{- else }} - - name: libosd - mountPath: /var/lib/osd - mountPropagation: "Bidirectional" - {{- if (.Values.openshiftInstall) and (eq .Values.openshiftInstall true)}} - - name: kubelet - mountPath: /var/lib/origin/openshift.local.volumes - mountPropagation: "Bidirectional" - {{- else }} - - name: kubelet - mountPath: /var/lib/kubelet - mountPropagation: "Bidirectional" - {{- end }} - - {{- end }} - - {{- if eq $isCoreOS true}} - - name: src - mountPath: /lib/modules - {{- else }} - - name: src - mountPath: /usr/src - {{- end }} - {{- end }} - - {{- if eq $csi true }} - - name: csi-node-driver-registrar - imagePullPolicy: Always - {{- if eq $customRegistryURL "none" }} - image: "k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.1.0" - {{- else }} - image: "{{ $customRegistryURL }}/k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.1.0" - {{- end}} - args: - - "--v=5" - - "--csi-address=$(ADDRESS)" - - "--kubelet-registration-path=/var/lib/kubelet/plugins/pxd.portworx.com/csi.sock" - env: - - name: ADDRESS - value: /csi/csi.sock - - name: KUBE_NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - volumeMounts: - - name: csi-driver-path - mountPath: /csi - - name: registration-dir - mountPath: /registration - {{- end }} - - restartPolicy: Always - {{- if not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty) }} - tolerations: - - key: node-role.kubernetes.io/master - effect: NoSchedule - {{- end }} - serviceAccountName: px-account - volumes: - {{- if ne $etcdCertPath "none" }} - - name: etcdcerts - secret: - secretName: px-etcd-certs - items: - - key: "{{ $etcdCA }}" - path: "{{ $etcdCA }}" - - key: "{{ $etcdCert }}" - path: "{{ $etcdCert }}" - - key: "{{ $etcdKey }}" - path: "{{ $etcdKey }}" - {{- end}} - {{- if not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty) }} - - name: containerd-k3s - hostPath: - path: /run/k3s/containerd/containerd.sock - {{- end }} - - name: dockersock - hostPath: - path: {{if eq $pksInstall true}}/var/vcap/sys/run/docker/docker.sock{{else}}/var/run/docker.sock{{end}} - - name: containerdsock - hostPath: - path: {{if eq $pksInstall true}}/var/vcap/sys/run/containerd{{else}}/run/containerd{{end}} - {{- if eq $csi true}} - - name: csi-driver-path - hostPath: - path: /var/lib/kubelet/plugins/pxd.portworx.com - type: DirectoryOrCreate - - name: registration-dir - hostPath: - path: /var/lib/kubelet/plugins_registry - type: DirectoryOrCreate - {{- end}} - - name: etcpwx - hostPath: - path: /etc/pwx - - name: cores - hostPath: - path: {{if eq $pksInstall true }}/var/vcap/store/cores{{else}}/var/cores{{end}} - {{- if eq (.Values.deploymentType | upper | lower) "oci" }} - - name: optpwx - hostPath: - path: {{if eq $pksInstall true }}/var/vcap/store/opt/pwx{{else}}/opt/pwx{{end}} - - name: sysdmount - hostPath: - path: /etc/systemd/system - - name: journalmount1 - hostPath: - path: /var/run/log - - name: journalmount2 - hostPath: - path: /var/log - - name: dbusmount - hostPath: - path: /var/run/dbus - - name: hostproc - hostPath: - path: /proc - {{- else if eq (.Values.deploymentType | upper | lower) "docker" }} - - name: libosd - hostPath: - path: /var/lib/osd - - name: optpwx - hostPath: - path: /opt/pwx/bin - - name: dev - hostPath: - path: /dev - {{- if (.Values.openshiftInstall) and (eq .Values.openshiftInstall true)}} - - name: kubelet - hostPath: - path: /var/lib/origin/openshift.local.volumes - {{- else }} - - name: kubelet - hostPath: - path: /var/lib/kubelet - {{- end }} - {{- if eq $isCoreOS true}} - - name: src - hostPath: - path: /lib/modules - {{- else }} - - name: src - hostPath: - path: /usr/src - {{- end }} - - name: dockerplugins - hostPath: - path: /run/docker/plugins - - name: hostproc - hostPath: - path: /proc - {{- end }} ---- -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: portworx-api - namespace: kube-system - labels: - name: portworx-api -spec: - selector: - matchLabels: - name: portworx-api - minReadySeconds: 0 - updateStrategy: - type: RollingUpdate - rollingUpdate: - maxUnavailable: 100% - template: - metadata: - labels: - name: portworx-api - spec: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: px/enabled - operator: NotIn - values: - - "false" - {{- if not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty) }} - - key: node-role.kubernetes.io/master - operator: DoesNotExist - {{- end }} - hostNetwork: true - hostPID: false - containers: - - name: portworx-api - image: "{{ template "px.getPauseImage" . }}/pause:3.1" - imagePullPolicy: Always - readinessProbe: - periodSeconds: 10 - httpGet: - host: 127.0.0.1 - path: /status - port: 9001 - restartPolicy: Always - serviceAccountName: px-account -{{- if eq $csi true }} ---- -apiVersion: storage.k8s.io/v1 -kind: CSIDriver -metadata: - name: "pxd.portworx.com" -spec: - attachRequired: false - podInfoOnMount: true - volumeLifecycleModes: - - Persistent - - Ephemeral -{{- end}} \ No newline at end of file diff --git a/charts/portworx/portworx-essentials/templates/portworx-essential.yaml b/charts/portworx/portworx-essentials/templates/portworx-essential.yaml deleted file mode 100644 index 6decc3047..000000000 --- a/charts/portworx/portworx-essentials/templates/portworx-essential.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $essentialSecretID := .Values.essentialID | default "none" }} -{{- if ne $essentialSecretID "none" -}} -apiVersion: v1 -kind: Secret -metadata: - name: px-essential - namespace: kube-system - labels: - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{.Release.Service | quote }} - app.kubernetes.io/instance: {{.Release.Name | quote }} - chart: "{{.Chart.Name}}-{{.Chart.Version}}" -type: Opaque -data: - px-essen-user-id: {{ $essentialSecretID | b64enc }} - px-osb-endpoint: aHR0cHM6Ly9weGVzc2VudGlhbHMucG9ydHdvcnguY29tL29zYi9iaWxsaW5nL3YxL3JlZ2lzdGVy - px-essen-market-place: cmFuY2hlci1tYXJrZXRwbGFjZQ== -{{- end -}} \ No newline at end of file diff --git a/charts/portworx/portworx-essentials/templates/portworx-rbac-config.yaml b/charts/portworx/portworx-essentials/templates/portworx-rbac-config.yaml deleted file mode 100644 index 468b6dada..000000000 --- a/charts/portworx/portworx-essentials/templates/portworx-rbac-config.yaml +++ /dev/null @@ -1,83 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: portworx ---- -kind: Role -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: px-role - namespace: portworx -rules: - - apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list", "create", "update", "patch", "delete"] ---- -kind: RoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: px-role-binding - namespace: portworx -subjects: - - kind: ServiceAccount - name: px-account - namespace: kube-system -roleRef: - kind: Role - name: px-role - apiGroup: rbac.authorization.k8s.io ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: px-account - namespace: kube-system ---- - -kind: ClusterRole -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: node-get-put-list-role -rules: -- apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["watch", "get", "update", "list"] -- apiGroups: [""] - resources: ["pods"] - verbs: ["delete", "get", "list", "watch", "update"] -- apiGroups: [""] - resources: ["persistentvolumeclaims", "persistentvolumes"] - verbs: ["get", "list"] -- apiGroups: [""] - resources: ["configmaps"] - verbs: ["get", "list", "update", "create"] -- apiGroups: ["extensions"] - resources: ["podsecuritypolicies"] - resourceNames: ["privileged"] - verbs: ["use"] -- apiGroups: ["portworx.io"] - resources: ["volumeplacementstrategies"] - verbs: ["get", "list"] -- apiGroups: ["stork.libopenstorage.org"] - resources: ["backuplocations"] - verbs: ["get", "list"] -- apiGroups: [""] - resources: ["events"] - verbs: ["create"] ---- - -kind: ClusterRoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: node-role-binding -subjects: -- kind: ServiceAccount - name: px-account - namespace: kube-system -roleRef: - kind: ClusterRole - name: node-get-put-list-role - apiGroup: rbac.authorization.k8s.io diff --git a/charts/portworx/portworx-essentials/templates/portworx-service.yaml b/charts/portworx/portworx-essentials/templates/portworx-service.yaml deleted file mode 100644 index 8d3ac159d..000000000 --- a/charts/portworx/portworx-essentials/templates/portworx-service.yaml +++ /dev/null @@ -1,54 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: portworx-service - namespace: kube-system - labels: - name: portworx -spec: - selector: - name: portworx - type: ClusterIP - ports: - - name: px-api - protocol: TCP - port: 9001 - targetPort: 9001 - - name: px-kvdb - protocol: TCP - port: 9019 - targetPort: 9019 - - name: px-sdk - protocol: TCP - port: 9020 - targetPort: 9020 - - name: px-rest-gateway - protocol: TCP - port: 9021 - targetPort: 9021 ---- -kind: Service -apiVersion: v1 -metadata: - name: portworx-api - namespace: kube-system - labels: - name: portworx-api -spec: - selector: - name: portworx-api - type: ClusterIP - ports: - - name: px-api - protocol: TCP - port: 9001 - targetPort: 9001 - - name: px-sdk - protocol: TCP - port: 9020 - targetPort: 9020 - - name: px-rest-gateway - protocol: TCP - port: 9021 - targetPort: 9021 ---- diff --git a/charts/portworx/portworx-essentials/templates/portworx-storageclasses.yaml b/charts/portworx/portworx-essentials/templates/portworx-storageclasses.yaml deleted file mode 100644 index b430fee8f..000000000 --- a/charts/portworx/portworx-essentials/templates/portworx-storageclasses.yaml +++ /dev/null @@ -1,56 +0,0 @@ -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: portworx-db-sc -provisioner: kubernetes.io/portworx-volume -parameters: - repl: "3" - io_profile: "db" ---- -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: portworx-db2-sc -provisioner: kubernetes.io/portworx-volume -parameters: - repl: "3" - block_size: "512b" - io_profile: "db" ---- -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: portworx-shared-sc -provisioner: kubernetes.io/portworx-volume -parameters: - repl: "3" - shared: "true" ---- -# -# NULL StorageClass that documents all possible -# Portworx StorageClass parameters -# -# Please refer to : https://docs.portworx.com/scheduler/kubernetes/dynamic-provisioning.html -# -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: portworx-null-sc - annotations: - params/docs: 'https://docs.portworx.com/scheduler/kubernetes/dynamic-provisioning.html' - params/fs: "Filesystem to be laid out: none|xfs|ext4 " - params/block_size: "Block size" - params/repl: "Replication factor for the volume: 1|2|3" - params/shared: "Flag to create a globally shared namespace volume which can be used by multiple pods : true|false" - params/priority_io: "IO Priority: low|medium|high" - params/io_profile: "IO Profile can be used to override the I/O algorithm Portworx uses for the volumes. Supported values are [db](/maintain/performance/tuning.html#db), [sequential](/maintain/performance/tuning.html#sequential), [random](/maintain/performance/tuning.html#random), [cms](/maintain/performance/tuning.html#cms)" - params/group: "The group a volume should belong too. Portworx will restrict replication sets of volumes of the same group on different nodes. If the force group option 'fg' is set to true, the volume group rule will be strictly enforced. By default, it's not strictly enforced." - params/fg: "This option enforces volume group policy. If a volume belonging to a group cannot find nodes for it's replication sets which don't have other volumes of same group, the volume creation will fail." - params/label: "List of comma-separated name=value pairs to apply to the Portworx volume" - params/nodes: "Comma-separated Portworx Node ID's to use for replication sets of the volume" - params/aggregation_level: "Specifies the number of replication sets the volume can be aggregated from" - params/snap_schedule: "Snapshot schedule. Following are the accepted formats: periodic=_mins_,_snaps-to-keep_ daily=_hh:mm_,_snaps-to-keep_ weekly=_weekday@hh:mm_,_snaps-to-keep_ monthly=_day@hh:mm_,_snaps-to-keep_ _snaps-to-keep_ is optional. Periodic, Daily, Weekly and Monthly keep last 5, 7, 5 and 12 snapshots by default respectively" - params/sticky: "Flag to create sticky volumes that cannot be deleted until the flag is disabled" - params/journal: "Flag to indicate if you want to use journal device for the volume's metadata. This will use the journal device that you used when installing Portworx. As of PX version 1.3, it is recommended to use a journal device to absorb PX metadata writes" -provisioner: kubernetes.io/portworx-volume -parameters: diff --git a/charts/portworx/portworx-essentials/templates/portworx-stork.yaml b/charts/portworx/portworx-essentials/templates/portworx-stork.yaml deleted file mode 100644 index 77449b394..000000000 --- a/charts/portworx/portworx-essentials/templates/portworx-stork.yaml +++ /dev/null @@ -1,645 +0,0 @@ -{{- if and (.Values.stork) (eq .Values.stork true)}} - {{- $isCoreOS := .Values.isTargetOSCoreOS | default false }} - {{- $customRegistryURL := .Values.customRegistryURL | default "none" }} - {{- $registrySecret := .Values.registrySecret | default "none" }} - -apiVersion: v1 -kind: ConfigMap -metadata: - name: stork-config - namespace: kube-system -data: - policy.cfg: |- - { - "kind": "Policy", - "apiVersion": "v1", -{{- if semverCompare "< 1.10-0" .Capabilities.KubeVersion.GitVersion }} - "predicates": [ -{{- if semverCompare "< 1.9-0" .Capabilities.KubeVersion.GitVersion }} - {"name": "NoVolumeNodeConflict"}, -{{- end}} - {"name": "MaxAzureDiskVolumeCount"}, - {"name": "NoVolumeZoneConflict"}, - {"name": "PodToleratesNodeTaints"}, - {"name": "CheckNodeMemoryPressure"}, - {"name": "MaxEBSVolumeCount"}, - {"name": "MaxGCEPDVolumeCount"}, - {"name": "MatchInterPodAffinity"}, - {"name": "NoDiskConflict"}, - {"name": "GeneralPredicates"}, - {"name": "CheckNodeDiskPressure"} - ], - "priorities": [ - {"name": "NodeAffinityPriority", "weight": 1}, - {"name": "TaintTolerationPriority", "weight": 1}, - {"name": "SelectorSpreadPriority", "weight": 1}, - {"name": "InterPodAffinityPriority", "weight": 1}, - {"name": "LeastRequestedPriority", "weight": 1}, - {"name": "BalancedResourceAllocation", "weight": 1}, - {"name": "NodePreferAvoidPodsPriority", "weight": 1} - ], -{{- end}} - "extenders": [ - { - "urlPrefix": "http://stork-service.kube-system:8099", - "apiVersion": "v1beta1", - "filterVerb": "filter", - "prioritizeVerb": "prioritize", - "weight": 5, - "enableHttps": false, - "nodeCacheCapable": false - } - ] - } ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: stork-account - namespace: kube-system ---- -kind: ClusterRole -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: stork-role -rules: - - apiGroups: ["*"] - resources: ["*"] - verbs: ["*"] ---- -kind: ClusterRoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: stork-role-binding -subjects: - - kind: ServiceAccount - name: stork-account - namespace: kube-system -roleRef: - kind: ClusterRole - name: stork-role - apiGroup: rbac.authorization.k8s.io ---- -kind: Service -apiVersion: v1 -metadata: - name: stork-service - namespace: kube-system -spec: - selector: - name: stork - ports: - - name: extender - protocol: TCP - port: 8099 - targetPort: 8099 - - name: webhook - protocol: TCP - port: 443 - targetPort: 443 ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: volumeplacementstrategies.portworx.io -spec: - group: portworx.io - versions: - - name: v1beta2 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - required: - - spec - properties: - spec: - type: object - description: The desired spec of the volume placement strategy - properties: - replicaAffinity: - type: array - description: Allows you to specify a rule which creates an affinity for replicas within a volume - items: - type: object - properties: - affected_replicas: - type: integer - description: The number of volume replicas affected by the replica affinity - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - matchExpressions: - description: Expression to use for the replica affinity rule - type: array - items: - type: object - properties: - key: - type: string - minLength: 1 - operator: - type: string - enum: - - In - - NotIn - - Exists - - DoesNotExist - - Lt - - Gt - description: The logical operator to use for comparing the key and values in the match expression - values: - type: array - items: - type: string - required: - - key - - operator - replicaAntiAffinity: - type: array - description: Allows you to specify a rule that creates an anti-affinity for replicas within a volume - items: - type: object - properties: - affected_replicas: - type: integer - description: The number of volume replicas affected by the replica anti affinity - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - required: - - topologyKey - volumeAffinity: - type: array - description: Allows you to colocate volumes by specifying rules that place replicas of a volume together with those of another volume for which the specified labels match - items: - type: object - properties: - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - matchExpressions: - description: Expression to use for the volume affinity rule - type: array - items: - type: object - properties: - key: - type: string - minLength: 1 - operator: - type: string - enum: - - In - - NotIn - - Exists - - DoesNotExist - - Lt - - Gt - description: The logical operator to use for comparing the key and values in the match expression - values: - type: array - items: - type: string - required: - - key - - operator - required: - - matchExpressions - volumeAntiAffinity: - type: array - description: Allows you to specify dissociation rules between 2 or more volumes that match the given labels - items: - type: object - properties: - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - matchExpressions: - description: Expression to use for the volume anti affinity rule - type: array - items: - type: object - properties: - key: - type: string - minLength: 1 - operator: - type: string - enum: - - In - - NotIn - - Exists - - DoesNotExist - - Lt - - Gt - description: The logical operator to use for comparing the key and values in the match expression - values: - type: array - items: - type: string - required: - - key - - operator - required: - - matchExpressions - - name: v1beta1 - served: false - storage: false - schema: - openAPIV3Schema: - type: object - required: - - spec - properties: - spec: - type: object - description: The desired spec of the volume placement strategy - properties: - replicaAffinity: - type: array - description: Allows you to specify a rule which creates an affinity for replicas within a volume - items: - type: object - properties: - affected_replicas: - type: integer - description: The number of volume replicas affected by the replica affinity - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - matchExpressions: - description: Expression to use for the replica affinity rule - type: array - items: - type: object - properties: - key: - type: string - minLength: 1 - operator: - type: string - enum: - - In - - NotIn - - Exists - - DoesNotExist - - Lt - - Gt - description: The logical operator to use for comparing the key and values in the match expression - values: - type: array - items: - type: string - required: - - key - - operator - replicaAntiAffinity: - type: array - description: Allows you to specify a rule that creates an anti-affinity for replicas within a volume - items: - type: object - properties: - affected_replicas: - type: integer - description: The number of volume replicas affected by the replica anti affinity - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - required: - - topologyKey - volumeAffinity: - type: array - description: Allows you to colocate volumes by specifying rules that place replicas of a volume together with those of another volume for which the specified labels match - items: - type: object - properties: - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - matchExpressions: - description: Expression to use for the volume affinity rule - type: array - items: - type: object - properties: - key: - type: string - minLength: 1 - operator: - type: string - enum: - - In - - NotIn - - Exists - - DoesNotExist - - Lt - - Gt - description: The logical operator to use for comparing the key and values in the match expression - values: - type: array - items: - type: string - required: - - key - - operator - required: - - matchExpressions - volumeAntiAffinity: - type: array - description: Allows you to specify dissociation rules between 2 or more volumes that match the given labels - items: - type: object - properties: - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - matchExpressions: - description: Expression to use for the volume anti affinity rule - type: array - items: - type: object - properties: - key: - type: string - minLength: 1 - operator: - type: string - enum: - - In - - NotIn - - Exists - - DoesNotExist - - Lt - - Gt - description: The logical operator to use for comparing the key and values in the match expression - values: - type: array - items: - type: string - required: - - key - - operator - required: - - matchExpressions - scope: Cluster - names: - plural: volumeplacementstrategies - singular: volumeplacementstrategy - kind: VolumePlacementStrategy - shortNames: - - vps - - vp ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: - scheduler.alpha.kubernetes.io/critical-pod: "" - labels: - tier: control-plane - name: stork - namespace: kube-system -spec: - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - replicas: 3 - selector: - matchLabels: - name: stork - tier: control-plane - template: - metadata: - annotations: - scheduler.alpha.kubernetes.io/critical-pod: "" - labels: - name: stork - tier: control-plane - spec: - {{- if not (eq $registrySecret "none") }} - imagePullSecrets: - - name: {{ $registrySecret }} - {{- end }} - containers: - - command: - - /stork - - --driver=pxd - - --verbose - - --leader-elect=true - - --webhook-controller=false - imagePullPolicy: Always - image: {{ template "px.getStorkImage" . }}:{{ required "A valid Image tag is required in the SemVer format" .Values.storkVersion }} - resources: - requests: - cpu: '0.1' - name: stork - hostPID: false - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: "name" - operator: In - values: - - stork - topologyKey: "kubernetes.io/hostname" - serviceAccountName: stork-account ---- -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: stork-snapshot-sc -provisioner: stork-snapshot ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: stork-scheduler-account - namespace: kube-system ---- -kind: ClusterRole -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: stork-scheduler-role -rules: - - apiGroups: [""] - resources: ["endpoints"] - verbs: ["get", "update"] - - apiGroups: [""] - resources: ["configmaps"] - verbs: ["get", "list", "watch"] - - apiGroups: ["", "events.k8s.io"] - resources: ["events"] - verbs: ["create", "patch", "update"] - - apiGroups: [""] - resources: ["endpoints"] - verbs: ["create"] - - apiGroups: [""] - resourceNames: ["kube-scheduler"] - resources: ["endpoints"] - verbs: ["delete", "get", "patch", "update"] - - apiGroups: [""] - resources: ["nodes"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["pods"] - verbs: ["delete", "get", "list", "watch"] - - apiGroups: [""] - resources: ["bindings", "pods/binding"] - verbs: ["create"] - - apiGroups: [""] - resources: ["pods/status"] - verbs: ["patch", "update"] - - apiGroups: [""] - resources: ["replicationcontrollers", "services"] - verbs: ["get", "list", "watch"] - - apiGroups: ["apps", "extensions"] - resources: ["replicasets"] - verbs: ["get", "list", "watch"] - - apiGroups: ["apps"] - resources: ["statefulsets"] - verbs: ["get", "list", "watch"] - - apiGroups: ["policy"] - resources: ["poddisruptionbudgets"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["persistentvolumeclaims", "persistentvolumes"] - verbs: ["get", "list", "watch"] - - apiGroups: ["storage.k8s.io"] - resources: ["storageclasses", "csinodes", "csidrivers", "csistoragecapacities"] - verbs: ["get", "list", "watch"] - - apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["create", "update", "get", "list", "watch"] ---- -kind: ClusterRoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: stork-scheduler-role-binding -subjects: - - kind: ServiceAccount - name: stork-scheduler-account - namespace: kube-system -roleRef: - kind: ClusterRole - name: stork-scheduler-role - apiGroup: rbac.authorization.k8s.io ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - component: scheduler - tier: control-plane - name: stork-scheduler - namespace: kube-system -spec: - replicas: 3 - selector: - matchLabels: - component: scheduler - tier: control-plane - template: - metadata: - labels: - component: scheduler - tier: control-plane - name: stork-scheduler - spec: - containers: - - command: - - /usr/local/bin/kube-scheduler - - --address=0.0.0.0 - - --leader-elect=true - - --scheduler-name=stork - - --policy-configmap=stork-config - - --policy-configmap-namespace=kube-system - - --lock-object-name=stork-scheduler - image: "{{ template "px.getk8sImages" . }}/kube-scheduler-amd64:v1.21.4" - livenessProbe: - httpGet: - path: /healthz - port: 10251 - initialDelaySeconds: 15 - name: stork-scheduler - readinessProbe: - httpGet: - path: /healthz - port: 10251 - resources: - requests: - cpu: '0.1' - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: "name" - operator: In - values: - - stork-scheduler - topologyKey: "kubernetes.io/hostname" - hostPID: false - serviceAccountName: stork-scheduler-account - {{- end }} diff --git a/charts/portworx/portworx-essentials/templates/serviceaccount-hook.yaml b/charts/portworx/portworx-essentials/templates/serviceaccount-hook.yaml deleted file mode 100644 index 9f4f0defd..000000000 --- a/charts/portworx/portworx-essentials/templates/serviceaccount-hook.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "px.hookServiceAccount" . }} - namespace: kube-system - annotations: - "helm.sh/hook-delete-policy": before-hook-creation - "helm.sh/hook": "post-install,pre-delete,post-delete" - labels: - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{.Release.Service | quote }} - app.kubernetes.io/instance: {{.Release.Name | quote }} - chart: "{{.Chart.Name}}-{{.Chart.Version}}" ---- -kind: ClusterRole -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - annotations: - "helm.sh/hook-delete-policy": before-hook-creation - "helm.sh/hook": "post-install,pre-delete,post-delete" - name: {{ template "px.hookClusterRole" . }} -rules: -- apiGroups: [""] - resources: ["nodes"] - verbs: ["patch", "get", "update", "list"] ---- -kind: ClusterRoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - annotations: - "helm.sh/hook-delete-policy": before-hook-creation - "helm.sh/hook": "post-install,pre-delete,post-delete" - name: {{ template "px.hookClusterRoleBinding" . }} -subjects: -- kind: ServiceAccount - name: {{ template "px.hookServiceAccount" . }} - namespace: kube-system -roleRef: - kind: ClusterRole - name: {{ template "px.hookClusterRole" . }} - apiGroup: rbac.authorization.k8s.io \ No newline at end of file diff --git a/charts/portworx/portworx-essentials/values.yaml b/charts/portworx/portworx-essentials/values.yaml deleted file mode 100644 index fccdf27b3..000000000 --- a/charts/portworx/portworx-essentials/values.yaml +++ /dev/null @@ -1,151 +0,0 @@ -# Please uncomment and specify values for these options as per your requirements. -kvdb: -ownEtcdOption: none -etcdAuth: none -etcdType: "Built-in" # KVDB type - -etcd: - credentials: none:none # Username and password for ETCD authentication in the form user:password - ca: none # Name of CA file for ETCD authentication. server.ca - cert: none # Name of certificate for ETCD authentication. Should be server.crt - key: none # Name of certificate key for ETCD authentication Should be server.key -consul: - token: none # ACL token value used for Consul authentication. (example: 398073a8-5091-4d9c-871a-bbbeb030d1f6) -region: none # US or EU regions for Portworx hosted etcds - -dataInterface: none # Name of the interface -managementInterface: none # Name of the interface -platformOptions: none # AKS, EKS or GKE platforms - -customRegistryURL: -registrySecret: - -clusterName: mycluster # This is the default. please change it to your cluster name. -secretType: k8s # Defaults to None, but can be AWS / KVDB / Vault. -envVars: none # NOTE: This is a ";" seperated list of environment variables. For eg: MYENV1=myvalue1;MYENV2=myvalue2 -stork: true # Use Stork https://docs.portworx.com/scheduler/kubernetes/stork.html for hyperconvergence. -storkVersion: 2.12.0 - -deployOnMaster: false # For POC only -csi: false # Enable CSI - -openshiftInstall: false -AKSorEKSInstall: false -serviceAccount: - hook: - create: true - name: - -deploymentType: oci # accepts "oci" or "docker" -imageType: none # -imageVersion: 2.11.4 # Version of the PX Image. - -result: none -environment: none -onpremStorage: none - -maxStorageNodes: none -journalDevice: none - -usefileSystemDrive: false # true/false Instructs PX to use an unmounted Drive even if it has a filesystem. -usedrivesAndPartitions: false # Use unmounted disks even if they have a partition or filesystem on it. PX will never use a drive or partition that is mounted. (useDrivesAndPartitions) - -provider: none -deviceConfig: none -essentialID: none - -drive_1: - aws: - type: none - size: none - iops: none - gc: - type: standard - size: 1000 - -drive_2: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_3: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_4: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_5: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_6: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_7: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_8: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_9: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_10: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -existingDisk1: none -existingDisk2: none -existingDisk3: none -existingDisk4: none -existingDisk5: none diff --git a/charts/portworx/portworx/Chart.yaml b/charts/portworx/portworx/Chart.yaml deleted file mode 100644 index f3972eabb..000000000 --- a/charts/portworx/portworx/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -annotations: - catalog.cattle.io/certified: partner - catalog.cattle.io/display-name: Portworx - catalog.cattle.io/kube-version: '>=1.16.0-0' - catalog.cattle.io/release-name: portworx -apiVersion: v1 -appVersion: 2.11.4 -description: A Helm chart for installing Portworx on Kubernetes. -home: https://portworx.com/ -icon: https://raw.githubusercontent.com/portworx/helm/master/doc/media/k8s-porx.png -keywords: -- Storage -- ICP -- persistent disk -- pvc -- cloud native storage -- persistent storage -- portworx -- amd64 -maintainers: -- email: hadesai@purestorage.com - name: harsh-px -- email: onaumov@purestorage.com - name: trierra -- email: tasharma@purestorage.com - name: sharma-tapas -- email: dahuang@purestorage.com - name: dahuang-purestorage -name: portworx -sources: -- https://github.com/portworx/charts-rancher/tree/master/stable -version: 2.11.4 diff --git a/charts/portworx/portworx/README.md b/charts/portworx/portworx/README.md deleted file mode 100644 index 76066d7e2..000000000 --- a/charts/portworx/portworx/README.md +++ /dev/null @@ -1,76 +0,0 @@ -# Portworx - -## **Pre-requisites** - -Use this Helm chart to deploy [Portworx](https://portworx.com/) and [Stork](https://docs.portworx.com/scheduler/kubernetes/stork.html) to your Kubernetes cluster. - -Prerequisites - -Refer to the [Install Portworx on Kubernetes via Helm](https://docs.portworx.com/portworx-install-with-kubernetes/install-px-helm/#pre-requisites) page for the list of prerequisites. - -## **Limitations** -* The portworx helm chart can only be deployed in the kube-system namespace. Hence use "kube-system" in the "Target namespace" during configuration. - -## **Uninstalling the Chart** - -#### You can uninstall Portworx using one of the following methods: - -#### **1. Delete all the Kubernetes components associated with the chart and the release.** - -> **Note** > The Portworx configuration files under `/etc/pwx/` directory are preserved, and will not be deleted. - -To perform this operation simply delete the application from the Apps page - -#### **2. Wipe your Portworx installation** -> **Note** > The commands in this section are disruptive and will lead to data loss. Please use caution.. - -See more details [here](https://docs.portworx.com/portworx-install-with-kubernetes/install-px-helm/#uninstall) - -## **Documentation** -* [Portworx docs site](https://docs.portworx.com/install-with-other/rancher/rancher-2.x/#step-1-install-rancher) -* [Portworx interactive tutorials](https://docs.portworx.com/scheduler/kubernetes/px-k8s-interactive.html) - -## **Installing the Chart using the CLI** - -See the installation details [here](https://docs.portworx.com/portworx-install-with-kubernetes/install-px-helm/) - -## **Installing Portworx on AWS** - -See the installation details [here](https://docs.portworx.com/cloud-references/auto-disk-provisioning/aws) - -## ** Giving your etcd certificates to Portworx using Kubernetes Secrets.** -This is the recommended way of providing etcd certificates, as the certificates will be automatically available to the new nodes joining the cluster - -* Create Kubernetes secret -* Copy all your etcd certificates and key in a directory etcd-secrets/ to create a Kubernetes secret from it. Make sure the file names are the same as you gave above. - -``` -# ls -1 etcd-secrets/ -etcd-ca.crt -etcd.crt -etcd.key -``` - -* Use kubectl to create the secret named px-etcd-certs from the above files: -``` -# kubectl -n kube-system create secret generic px-etcd-certs --from-file=etcd-secrets/ -``` - -* Notice that the secret has 3 keys etcd-ca.crt, etcd.crt and etcd.key, corresponding to file names in the etcd-secrets folder. We will use these keys in the Portworx spec file to reference the certificates. - -``` -# kubectl -n kube-system describe secret px-etcd-certs -Name: px-etcd-certs -Namespace: kube-system -Labels: -Annotations: - -Type: Opaque - -Data -==== -etcd-ca.crt: 1679 bytes -etcd.crt: 1680 bytes -etcd.key: 414 bytes -``` -Once above secret is created, proceed to the next steps. diff --git a/charts/portworx/portworx/app-readme.md b/charts/portworx/portworx/app-readme.md deleted file mode 100644 index ae8bbe96f..000000000 --- a/charts/portworx/portworx/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -# Portworx - -[Portworx](https://portworx.com/) is a software defined storage overlay that allows you to - - * Run containerized stateful applications that are highly-available (HA) across multiple nodes, cloud instances, regions, data centers or even clouds - * Migrate workflows between multiple clusters running across same or hybrid clouds - * Run hyperconverged workloads where the data resides on the same host as the applications - * Have programmatic control on your storage resources \ No newline at end of file diff --git a/charts/portworx/portworx/ci/test-values.yaml b/charts/portworx/portworx/ci/test-values.yaml deleted file mode 100644 index 879bf6910..000000000 --- a/charts/portworx/portworx/ci/test-values.yaml +++ /dev/null @@ -1 +0,0 @@ -etcdType: Built-in \ No newline at end of file diff --git a/charts/portworx/portworx/questions.yml b/charts/portworx/portworx/questions.yml deleted file mode 100644 index 81d648973..000000000 --- a/charts/portworx/portworx/questions.yml +++ /dev/null @@ -1,915 +0,0 @@ -categories: -- storage -namespace: kube-system -labels: - io.rancher.certified: partner -questions: - -################################### KVDB options ################################ -- variable: etcdType - label: "Select ETCD" - type: enum - required: true - group: "Key value store parameters (Required)" - options: - - "Provide your own etcd" - - "Built-in" - -# ------ "Provide your own etcd" ------ -- variable: ownEtcdOption - show_if: "etcdType=Provide your own etcd" - label: "Select one of 2 options for your ETCD cluster" - type: enum - required: true - group: "Key value store parameters (Required)" - options: - - "Your etcd details" - - "Portworx hosted (for PoCs only)" - -- variable: etcdAuth - show_if: "ownEtcdOption=Your etcd details&&etcdType=Provide your own etcd" - label: "Select an auth option for your ETCD cluster" - type: enum - default: "Disable HTTPS" - required: true - group: "Key value store parameters (Required)" - options: - - "Disable HTTPS" - - "Certificate Auth" - - "Password Auth" - -- variable: region - show_if: "ownEtcdOption=Portworx hosted (for PoCs only)" - label: "Select region" - type: enum - required: true - group: "Key value store parameters (Required)" - options: - - "US region" - - "EU region" - -# kvdb endpoint -- variable: kvdb - show_if: "ownEtcdOption=Your etcd details" - description: "Enter your etcd or Consul endpoints separated by semicolons. Use the following as an example: etcd://myetc1.company.com:2379;etcd://myetc2.company.com.2379. Note: If the `etcdAuth` key is set to 'Disable HTTPS', you must provide HTTP endpoints." - type: string - label: "Endpoint address" - required: true - group: "Key value store parameters (Required)" - -- variable: etcd.ca - show_if: "etcdAuth=Certificate Auth" - description: "Name of CA file for ETCD authentication. Example: etcd-ca.crt. Follow https://docs.portworx.com/scheduler/kubernetes/etcd-certs-using-secrets.html to create a Kubernetes secret for the etcd certs." - type: string - required: true - label: "ETCD CA file" - group: "Key value store security Parameters (Details in README)" - -- variable: etcd.cert - show_if: "etcdAuth=Certificate Auth" - description: "Name of certificate for ETCD authentication. Example: etcd.crt" - type: string - required: true - label: "ETCD cert file" - group: "Key value store security Parameters (Details in README)" - -- variable: etcd.key - show_if: "etcdAuth=Certificate Auth" - description: "Name of certificate key for ETCD authentication Example: etcd.key" - type: string - required: true - label: "ETCD cert key file" - group: "Key value store security Parameters (Details in README)" - -- variable: etcd.credentials - show_if: "etcdAuth=Password Auth" - description: "Username and password for ETCD authentication in the form user:password. Not needed if using certificates." - type: string - required: true - label: "ETCD credentials" - group: "Key value store security Parameters (Details in README)" - -################################### Storage options ################################ -- variable: environment - description: "Select your environment" - label: "Environment" - type: enum - default: "OnPrem" - required: true - group: "Storage Parameters" - options: - - "OnPrem" - - "Cloud" - -- variable: provider - show_if: "environment=Cloud" - description: "Select cloud platform" - label: "Cloud provider" - type: enum - required: true - group: "Storage Parameters" - options: - - "AWS" - - "Google cloud/GKE" - -- variable: onpremStorage - show_if: "environment=OnPrem" - type: enum - default: "Automatically scan disks" - label: "Select type of OnPrem storage" - group: "Storage Parameters" - required: true - options: - - "Automatically scan disks" - - "Manually specify disks" - -- variable: deviceConfig - show_if: "environment=Cloud" - description: "If you plan to use EC2 instance storage or plan to manage EBS volumes your own way, select 'Consume unused' or 'Use Existing disks'." - label: "Select a type of disk" - type: enum - default: "Create Using a Spec" - required: true - group: "Storage Parameters" - options: - - "Create Using a Spec" - - "Consume Unused" - - "Use Existing Disks" - - -- variable: journalDevice - description: "This allows PX to create it’s own journal partition on the best drive to absorb PX metadata writes. Journal writes are small with frequent syncs and hence a separate journal partition will enable better performance. Use value 'auto' if you want Portworx to create it's own journal partition." - type: string - label: "Journal Device" - group: "Storage Parameters" - -############ Consume unused ############## -- variable: usedrivesAndPartitions - show_if: "deviceConfig=Consume Unused||onpremStorage=Automatically scan disks" - label: "Use unmounted drives and partitions" - descrition: "Use unmounted disks even if they have a partition or filesystem on it. PX will never use a drive or partition that is mounted." - type: boolean - default: false - group: "Storage Parameters" - - -############ Use Exising Disks ############## -- variable: existingDisk1 - show_if: "deviceConfig=Use Existing Disks||onpremStorage=Manually specify disks" - label: "Drive/Device1" - description: "Enter the block/device name; eg: /dev/sda" - type: string - required: true - group: "Storage Parameters" - -- variable: addExistingDisk2 - show_if: "deviceConfig=Use Existing Disks||onpremStorage=Manually specify disks" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: existingDisk2 - show_if: "addExistingDisk2=true" - label: "Drive/Device2" - description: "Enter the block/device name; eg: /dev/sda" - type: string - required: true - group: "Storage Parameters" - -- variable: addExistingDisk3 - show_if: "addExistingDisk2=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: existingDisk3 - show_if: "addExistingDisk3=true" - label: "Drive/Device3" - description: "Enter the block/device name; eg: /dev/sda" - type: string - required: true - group: "Storage Parameters" - -- variable: addExistingDisk4 - show_if: "addExistingDisk3=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: existingDisk4 - show_if: "addExistingDisk4=true" - label: "Drive/Device4" - description: "Enter the block/device name; eg: /dev/sda" - type: string - required: true - group: "Storage Parameters" - -- variable: addExistingDisk5 - show_if: "addExistingDisk4=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: existingDisk5 - show_if: "addExistingDisk5=true" - label: "Drive/Device5" - description: "Enter the block/device name; eg: /dev/sda" - type: string - required: true - group: "Storage Parameters" - -##################################################### Cloud ################################ - -##################################################### AWS ################################ - -### Section 1 AWS -- variable: drive_1.aws.type - show_if: "provider=AWS&&deviceConfig=Create Using a Spec" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - default: "GP2" - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_1.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_1.aws.size - show_if: "provider=AWS&&deviceConfig=Create Using a Spec" - description: "Volume size" - label: "Size" - type: int - default: 150 - required: true - group: "Storage Parameters" - -### Section 2 AWS -- variable: addEBSDrive_2 - show_if: "provider=AWS&&deviceConfig=Create Using a Spec" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_2.aws.type - show_if: "addEBSDrive_2=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_2.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_2.aws.size - show_if: "addEBSDrive_2=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - - ### Section 3 AWS -- variable: addEBSDrive_3 - show_if: "addEBSDrive_2=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_3.aws.type - show_if: "addEBSDrive_3=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_3.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_3.aws.size - show_if: "addEBSDrive_3=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -### Section 4 AWS -- variable: addEBSDrive_4 - show_if: "addEBSDrive_3=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_4.aws.type - show_if: "addEBSDrive_4=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_4.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_4.aws.size - show_if: "addEBSDrive_4=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -### Section 5 AWS -- variable: addEBSDrive_5 - show_if: "addEBSDrive_4=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_5.aws.type - show_if: "addEBSDrive_5=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_5.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_5.aws.size - show_if: "addEBSDrive_5=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -### Section 6 AWS -- variable: addEBSDrive_6 - show_if: "addEBSDrive_5=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_6.aws.type - show_if: "addEBSDrive_6=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_6.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_6.aws.size - show_if: "addEBSDrive_6=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -### Section 7 AWS -- variable: addEBSDrive_7 - show_if: "addEBSDrive_6=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_7.aws.type - show_if: "addEBSDrive_7=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_7.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_7.aws.size - show_if: "addEBSDrive_7=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -### Section 8 AWS -- variable: addEBSDrive_8 - show_if: "addEBSDrive_7=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_8.aws.type - show_if: "addEBSDrive_8=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_8.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_8.aws.size - show_if: "addEBSDrive_8=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -### Section 9 AWS -- variable: addEBSDrive_9 - show_if: "addEBSDrive_8=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_9.aws.type - show_if: "addEBSDrive_9=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_9.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_9.aws.size - show_if: "addEBSDrive_9=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -### Section 10 AWS -- variable: addEBSDrive_10 - show_if: "addEBSDrive_9=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_10.aws.type - show_if: "addEBSDrive_10=true" - description: "Select the type of EBS volume" - label: "EBS volume" - type: enum - required: true - show_subquestion_if: "IO1" - group: "Storage Parameters" - options: - - "GP2" - - "IO1" - subquestions: - - variable: drive_10.aws.iops - required: true - description: "*IOPS required from EBS volume" - type: int - label: IOPS - -- variable: drive_10.aws.size - show_if: "addEBSDrive_10=true" - description: "Volume size" - label: "Size" - required: true - type: int - group: "Storage Parameters" - -##################################################### GOOGLE CLOUD ################################ - -#### Section 1 GC -- variable: drive_1.gc.type - show_if: "provider=Google cloud/GKE&&deviceConfig=Create Using a Spec" - description: "Select volume type" - label: "Volume" - type: enum - default: "standard" - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_1.gc.size - show_if: "provider=Google cloud/GKE&&deviceConfig=Create Using a Spec" - description: "Volume size" - label: "Size" - type: int - default: 150 - required: true - group: "Storage Parameters" - -#### Section 2 GC -- variable: addGCDrive_2 - show_if: "provider=Google cloud/GKE&&deviceConfig=Create Using a Spec" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_2.gc.type - show_if: "addGCDrive_2=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_2.gc.size - show_if: "addGCDrive_2=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 3 GC -- variable: addGCDrive_3 - show_if: "addGCDrive_2=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_3.gc.type - show_if: "addGCDrive_3=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_3.gc.size - show_if: "addGCDrive_3=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 4 GC -- variable: addGCDrive_4 - show_if: "addGCDrive_3=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_4.gc.type - show_if: "addGCDrive_4=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_4.gc.size - show_if: "addGCDrive_4=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 5 GC -- variable: addGCDrive_5 - show_if: "addGCDrive_4=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_5.gc.type - show_if: "addGCDrive_5=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_5.gc.size - show_if: "addGCDrive_5=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 6 GC -- variable: addGCDrive_6 - show_if: "addGCDrive_5=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_6.gc.type - show_if: "addGCDrive_6=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_6.gc.size - show_if: "addGCDrive_6=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 7 GC -- variable: addGCDrive_7 - show_if: "addGCDrive_6=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_7.gc.type - show_if: "addGCDrive_6=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_7.gc.size - show_if: "addGCDrive_7=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 8 GC -- variable: addGCDrive_8 - show_if: "addGCDrive_7=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_8.gc.type - show_if: "addGCDrive_8=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_8.gc.size - show_if: "addGCDrive_8=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 9 GC -- variable: addGCDrive_9 - show_if: "addGCDrive_8=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_9.gc.type - show_if: "addGCDrive_9=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_9.gc.size - show_if: "addGCDrive_9=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -#### Section 10 GC -- variable: addGCDrive_10 - show_if: "addGCDrive_9=true" - label: "Add another drive?" - type: boolean - default: false - group: "Storage Parameters" - -- variable: drive_10.gc.type - show_if: "addGCDrive_10=true" - description: "Select volume type" - label: "Volume" - type: enum - required: true - group: "Storage Parameters" - options: - - "standard" - - "ssd" - -- variable: drive_10.gc.size - show_if: "addGCDrive_10=true" - description: "Volume size" - label: "Size" - type: int - required: true - group: "Storage Parameters" - -- variable: maxStorageNodes - show_if: "environment=Cloud&&deviceConfig=Create Using a Spec" - description: "Max storage nodes per availability zone" - label: "Max storage nodes (Optional)" - type: int - group: "Storage Parameters" - -################################### Network options ################################ -- variable: dataInterface - description: "Specify your data network interface (example: `eth1`). If set to `auto`, Portworx will automatically select the first routable interface." - type: string - label: "Data Network Interface" - default: auto - group: "Network Parameters" -- variable: managementInterface - description: "Specify your management network interface (example: `eth1`). If set to `auto`, Portworx will automatically select the first routable interface." - type: string - default: auto - label: "Management Network Interface" - group: "Network Parameters" - -################################### Platform options ################################ -- variable: platformOptions - type: enum - label: "Platform" - group: "Platform Parameters" - options: - - "AKS" - - "EKS" - - "GKE" - -################################### Registry settings options ################################ -- variable: customRegistry - label: "Use a custom container registry?" - type: boolean - default: false - group: "Container Registry Parameters" - -- variable: registrySecret - show_if: "customRegistry=true" - description: "Specify a custom Kubernetes secret that will be used to authenticate with a container registry. Must be defined in kube-system namespace. (example: regcred)" - type: string - label: "Registry Kubernetes Secret" - group: "Container Registry Parameters" -- variable: customRegistryURL - show_if: "customRegistry=true" - description: "Specify a custom container registry server (including repository) that will be used instead of index.docker.io to download Docker images. (example: dockerhub.acme.net:5443 or myregistry.com/myrepository/)" - label: "Custom Registry URL" - type: string - group: "Container Registry Parameters" - - - -################################## Optional features ############################ -# TODO: Once we have a stable CSI release, we will default this to enabled -#- variable: csi -# description: "Select if you want to enable CSI (Container Storage Interface). CSI is still in ALPHA." -# type: boolean -# label: "Enable CSI" -# default: false -# required: false -# group: "Advanced parameters" - -- variable: storkVersion - default: "2.12.0" - label: "Stork version" - type: string - group: "Advanced parameters" - -- variable: envVars - label: "Environment variables" - description: "Enter your environment variables separated by semicolons (example: API_SERVER=http://lighthouse-new.portworx.com;MYENV1=val1;MYENV2=val2). These environment variables will be exported to Portworx." - type: string - group: "Advanced parameters" - -- variable: imageVersion - default: "2.11.4" - type: string - label: Portworx version to be deployed. - group: "Advanced parameters" - -- variable: clusterName - type: string - label: Portworx cluster name - default: mycluster - group: "Advanced parameters" diff --git a/charts/portworx/portworx/templates/NOTES.txt b/charts/portworx/portworx/templates/NOTES.txt deleted file mode 100644 index ea0bb6326..000000000 --- a/charts/portworx/portworx/templates/NOTES.txt +++ /dev/null @@ -1,13 +0,0 @@ -Your Release is named {{ .Release.Name | quote }} - -Portworx Pods should be running on each node in your cluster. - -Portworx would create a unified pool of the disks attached to your Kubernetes nodes. No further action should be required and you are ready to consume Portworx Volumes as part of your application data requirements. - -For further information on usage of the Portworx, refer to following doc pages. - -- For dynamically provisioning volumes: https://docs.portworx.com/scheduler/kubernetes/dynamic-provisioning.html -- For preprovisioned volumes: https://docs.portworx.com/scheduler/kubernetes/preprovisioned-volumes.html -- To use Stork (Storage Orchestration Runtime for Kubernetes) for hyperconvergence and snapshots: https://docs.portworx.com/scheduler/kubernetes/stork.html -- For stateful application solutions using Portworx: https://docs.portworx.com/scheduler/kubernetes/k8s-px-app-samples.html -- For interactive tutorials on using Portworx on Kubernetes: https://docs.portworx.com/scheduler/kubernetes/px-k8s-interactive.html diff --git a/charts/portworx/portworx/templates/_helpers.tpl b/charts/portworx/portworx/templates/_helpers.tpl deleted file mode 100644 index 892bc3257..000000000 --- a/charts/portworx/portworx/templates/_helpers.tpl +++ /dev/null @@ -1,443 +0,0 @@ -{{/* Gets the correct API Version based on the version of the cluster -*/}} - -{{- define "rbac.apiVersion" -}} -{{- if semverCompare ">= 1.8-0" .Capabilities.KubeVersion.GitVersion -}} -"rbac.authorization.k8s.io/v1" -{{- else -}} -"rbac.authorization.k8s.io/v1beta1" -{{- end -}} -{{- end -}} - - -{{- define "px.labels" -}} -chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" -heritage: {{ .Release.Service | quote }} -release: {{ .Release.Name | quote }} -{{- end -}} - -{{- define "driveOpts" }} -{{ $v := .Values.installOptions.drives | split "," }} -{{$v._0}} -{{- end -}} - -{{- define "px.kubernetesVersion" -}} -{{$version := .Capabilities.KubeVersion.GitVersion | regexFind "^v\\d+\\.\\d+\\.\\d+"}}{{$version}} -{{- end -}} - - -{{- define "px.getImage" -}} -{{- if (.Values.customRegistryURL) -}} - {{- if (eq "/" (.Values.customRegistryURL | regexFind "/")) -}} - {{- if .Values.openshiftInstall -}} - {{ cat (trim .Values.customRegistryURL) "/px-monitor" | replace " " ""}} - {{- else -}} - {{ cat (trim .Values.customRegistryURL) "/oci-monitor" | replace " " ""}} - {{- end -}} - {{- else -}} - {{- if .Values.openshiftInstall -}} - {{cat (trim .Values.customRegistryURL) "/portworx/px-monitor" | replace " " ""}} - {{- else -}} - {{cat (trim .Values.customRegistryURL) "/portworx/oci-monitor" | replace " " ""}} - {{- end -}} - {{- end -}} -{{- else -}} - {{- if .Values.openshiftInstall -}} - {{ "registry.connect.redhat.com/portworx/px-monitor" }} - {{- else -}} - {{ "portworx/oci-monitor" }} - {{- end -}} -{{- end -}} -{{- end -}} - -{{- define "px.getStorkImage" -}} -{{- if (.Values.customRegistryURL) -}} - {{- if (eq "/" (.Values.customRegistryURL | regexFind "/")) -}} - {{ cat (trim .Values.customRegistryURL) "/stork" | replace " " ""}} - {{- else -}} - {{cat (trim .Values.customRegistryURL) "/openstorage/stork" | replace " " ""}} - {{- end -}} -{{- else -}} - {{ "openstorage/stork" }} -{{- end -}} -{{- end -}} - -{{- define "px.getk8sImages" -}} -{{- $version := .Capabilities.KubeVersion.GitVersion -}} -{{- if (.Values.customRegistryURL) -}} - {{- if (eq "/" (.Values.customRegistryURL | regexFind "/")) -}} - {{ trim .Values.customRegistryURL }} - {{- else -}} - {{- if or (or (and (semverCompare ">= 1.16.14-0" $version ) (semverCompare "<=1.17.0-0" $version)) (and (semverCompare ">= 1.17.10" $version) (semverCompare "<=1.18.0-0" $version ))) (semverCompare ">=1.18.7-0" $version) -}} - {{cat (trim .Values.customRegistryURL) "/k8s.gcr.io" | replace " " ""}} - {{- else -}} - {{cat (trim .Values.customRegistryURL) "/gcr.io/google_containers" | replace " " ""}} - {{- end -}} - {{- end -}} -{{- else -}} - {{- if or (or (and (semverCompare ">= 1.16.14-0" $version ) (semverCompare "<=1.17.0-0" $version)) (and (semverCompare ">= 1.17.10-0" $version) (semverCompare "<=1.18.0-0" $version ))) (semverCompare ">=1.18.7-0" $version) -}} - {{ "k8s.gcr.io" }} - {{- else -}} - {{ "gcr.io/google_containers" }} - {{- end -}} -{{- end -}} -{{- end -}} - -{{- define "px.getcsiImages" -}} -{{- if (.Values.customRegistryURL) -}} - {{- if (eq "/" (.Values.customRegistryURL | regexFind "/")) -}} - {{ trim .Values.customRegistryURL }} - {{- else -}} - {{cat (trim .Values.customRegistryURL) "/quay.io/k8scsi" | replace " " ""}} - {{- end -}} -{{- else -}} - {{ "quay.io/k8scsi" }} -{{- end -}} -{{- end -}} - - -{{- define "px.getCSIProvisionerImage" -}} -{{- if semverCompare "<1.17.0-0" .Capabilities.KubeVersion.GitVersion -}} - {{ "docker.io/openstorage/csi-provisioner:v1.6.1-1" }} -{{- else if semverCompare "< 1.20.0-0" .Capabilities.KubeVersion.GitVersion -}} - {{ "docker.io/openstorage/csi-provisioner:v2.2.2-1" }} -{{- else -}} - {{ "docker.io/openstorage/csi-provisioner:v3.0.0-1" }} -{{- end -}} -{{- end -}} - -{{- define "px.getCSISnapshotterImage" -}} -{{- if semverCompare "<1.17.0-0" .Capabilities.KubeVersion.GitVersion -}} - {{ "docker.io/openstorage/csi-snapshotter:v1.2.2-1" }} -{{- else if semverCompare "< 1.20.0-0" .Capabilities.KubeVersion.GitVersion -}} - {{ "k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.3" }} -{{- else -}} - {{ "k8s.gcr.io/sig-storage/csi-snapshotter:v4.2.1" }} -{{- end -}} -{{- end -}} - -{{- define "px.getCSISnapshotControllerImage" -}} -{{- if semverCompare "< 1.20.0-0" .Capabilities.KubeVersion.GitVersion -}} - {{ "k8s.gcr.io/sig-storage/snapshot-controller:v3.0.3" }} -{{- else -}} - {{ "k8s.gcr.io/sig-storage/snapshot-controller:v4.2.1" }} -{{- end -}} -{{- end -}} - -{{- define "px.getPauseImage" -}} -{{- if (.Values.customRegistryURL) -}} - {{- if (eq "/" (.Values.customRegistryURL | regexFind "/")) -}} - {{ trim .Values.customRegistryURL }} - {{- else -}} - {{cat (trim .Values.customRegistryURL) "/k8s.gcr.io" | replace " " ""}} - {{- end -}} -{{- else -}} - {{ "k8s.gcr.io" }} -{{- end -}} -{{- end -}} - -{{- define "px.registryConfigType" -}} -{{- if semverCompare ">=1.9-0" .Capabilities.KubeVersion.GitVersion -}} -".dockerconfigjson" -{{- else -}} -".dockercfg" -{{- end -}} -{{- end -}} - -{{/* -Create the name of the service account to use for hooks -*/}} -{{- define "px.hookServiceAccount" -}} -{{- if .Values.serviceAccount.hook.create -}} - {{- printf "%s-hook" .Chart.Name | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- else -}} - {{ default "default" .Values.serviceAccount.hook.name }} -{{- end -}} -{{- end -}} - -{{/* -Create the name of the cluster role to use for hooks -*/}} -{{- define "px.hookClusterRole" -}} -{{- if .Values.serviceAccount.hook.create -}} - {{- printf "%s-hook" .Chart.Name | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- else -}} - {{ default "default" .Values.serviceAccount.hook.name }} -{{- end -}} -{{- end -}} - -{{/* -Create the name of the cluster role binding to use for hooks -*/}} -{{- define "px.hookClusterRoleBinding" -}} -{{- if .Values.serviceAccount.hook.create -}} - {{- printf "%s-hook" .Chart.Name | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- else -}} - {{ default "default" .Values.serviceAccount.hook.name }} -{{- end -}} -{{- end -}} - -{{/* - String concatenation for drives in AWS section -*/}} -{{- define "px.storage" -}} -{{- $awsType1 := .Values.drive_1.aws.type -}} -{{- $awsType2 := .Values.drive_2.aws.type -}} -{{- $awsType3 := .Values.drive_3.aws.type -}} -{{- $awsType4 := .Values.drive_4.aws.type -}} -{{- $awsType5 := .Values.drive_5.aws.type -}} -{{- $awsType6 := .Values.drive_6.aws.type -}} -{{- $awsType7 := .Values.drive_7.aws.type -}} -{{- $awsType8 := .Values.drive_8.aws.type -}} -{{- $awsType9 := .Values.drive_9.aws.type -}} -{{- $awsType10 := .Values.drive_10.aws.type -}} - -{{- $awsSize1 := .Values.drive_1.aws.size -}} -{{- $awsSize2 := .Values.drive_2.aws.size -}} -{{- $awsSize3 := .Values.drive_3.aws.size -}} -{{- $awsSize4 := .Values.drive_4.aws.size -}} -{{- $awsSize5 := .Values.drive_5.aws.size -}} -{{- $awsSize6 := .Values.drive_6.aws.size -}} -{{- $awsSize7 := .Values.drive_7.aws.size -}} -{{- $awsSize8 := .Values.drive_8.aws.size -}} -{{- $awsSize9 := .Values.drive_9.aws.size -}} -{{- $awsSize10 := .Values.drive_10.aws.size -}} - -{{- $awsIops1 := .Values.drive_1.aws.iops -}} -{{- $awsIops2 := .Values.drive_2.aws.iops -}} -{{- $awsIops3 := .Values.drive_3.aws.iops -}} -{{- $awsIops4 := .Values.drive_4.aws.iops -}} -{{- $awsIops5 := .Values.drive_5.aws.iops -}} -{{- $awsIops6 := .Values.drive_6.aws.iops -}} -{{- $awsIops7 := .Values.drive_7.aws.iops -}} -{{- $awsIops8 := .Values.drive_8.aws.iops -}} -{{- $awsIops9 := .Values.drive_9.aws.iops -}} -{{- $awsIops10 := .Values.drive_10.aws.iops -}} - -{{- $gcType1 := .Values.drive_1.gc.type -}} -{{- $gcType2 := .Values.drive_2.gc.type -}} -{{- $gcType3 := .Values.drive_3.gc.type -}} -{{- $gcType4 := .Values.drive_4.gc.type -}} -{{- $gcType5 := .Values.drive_5.gc.type -}} -{{- $gcType6 := .Values.drive_6.gc.type -}} -{{- $gcType7 := .Values.drive_7.gc.type -}} -{{- $gcType8 := .Values.drive_8.gc.type -}} -{{- $gcType9 := .Values.drive_9.gc.type -}} -{{- $gcType10 := .Values.drive_10.gc.type -}} - -{{- $gcSize1 := .Values.drive_1.gc.size -}} -{{- $gcSize2 := .Values.drive_2.gc.size -}} -{{- $gcSize3 := .Values.drive_3.gc.size -}} -{{- $gcSize4 := .Values.drive_4.gc.size -}} -{{- $gcSize5 := .Values.drive_5.gc.size -}} -{{- $gcSize6 := .Values.drive_6.gc.size -}} -{{- $gcSize7 := .Values.drive_7.gc.size -}} -{{- $gcSize8 := .Values.drive_8.gc.size -}} -{{- $gcSize9 := .Values.drive_9.gc.size -}} -{{- $gcSize10 := .Values.drive_10.gc.size -}} - -{{- $usefileSystemDrive := .Values.usefileSystemDrive | default false }} -{{- $usedrivesAndPartitions := .Values.usedrivesAndPartitions | default false }} -{{- $deployEnvironmentIKS := .Capabilities.KubeVersion.GitVersion | regexMatch "IKS" }} - -{{- if eq "OnPrem" .Values.environment -}} - {{- if eq "Manually specify disks" .Values.onpremStorage }} - {{- if ne "none" .Values.existingDisk1 }} - "-s", "{{- .Values.existingDisk1 }}", - {{- end }} - {{- if ne "none" .Values.existingDisk2 -}} - "-s", "{{- .Values.existingDisk2 }}", - {{- end }} - {{- if ne "none" .Values.existingDisk3 -}} - "-s", "{{- .Values.existingDisk3 }}", - {{- end }} - {{- if ne "none" .Values.existingDisk4 -}} - "-s", "{{- .Values.existingDisk4 }}", - {{- end }} - {{- if ne "none" .Values.existingDisk5 }} - "-s", "{{- .Values.existingDisk5 }}", - {{- end }} - {{- else if eq "Automatically scan disks" .Values.onpremStorage -}} - {{- if or $usedrivesAndPartitions $deployEnvironmentIKS }} - "-f", - {{- end }} - {{- if eq $usedrivesAndPartitions true }} - "-A", - {{- else }} - "-a", - {{- end -}} - {{- end -}} - -{{- else if eq "Cloud" .Values.environment -}} - {{- if eq "Consume Unused" .Values.deviceConfig -}} - {{- if or $usedrivesAndPartitions $deployEnvironmentIKS }} - "-f", - {{- end }} - {{- if eq $usedrivesAndPartitions true }} - "-A", - {{- else }} - "-a", - {{- end -}} - {{- end }} -{{/*------------------- ----------------- Google cloud/GKE -------------- --------------- */}} - {{- if eq "Google cloud/GKE" .Values.provider -}} - {{- if eq "Use Existing Disks" .Values.deviceConfig -}} - {{- if .Values.existingDisk1 -}} - "-s", "{{- .Values.existingDisk1 -}}", - {{- end -}} - {{- if ne "none" .Values.existingDisk2 -}} - "-s", "{{- .Values.existingDisk2 -}}", - {{- end -}} - {{- if ne "none" .Values.existingDisk3 -}} - "-s", "{{- .Values.existingDisk3 -}}", - {{- end -}} - {{- if ne "none" .Values.existingDisk4 -}} - "-s", "{{- .Values.existingDisk4 -}}", - {{- end -}} - {{- if ne "none" .Values.existingDisk5 -}} - "-s", "{{- .Values.existingDisk5 -}}", - {{- end -}} - {{- else if eq "Create Using a Spec" .Values.deviceConfig -}} - {{- if $gcType1 }} - "-s", "type=pd-{{$gcType1 | lower}},size={{$gcSize1}}", - {{- end }} - {{/*------------------- DRIVE 2 --------------- */}} - {{- if $gcType2 -}} - "-s", "type=pd-{{$gcType2 | lower}},size={{$gcSize2}}", - {{- end }} - {{/*------------------- DRIVE 3 --------------- */}} - {{- if $gcType3 -}} - "-s", "type=pd-{{$gcType3 | lower}},size={{$gcSize3}}", - {{- end }} - {{/*------------------- DRIVE 4 --------------- */}} - {{- if $gcType4 -}} - "-s", "type=pd-{{$gcType4 | lower}},size={{$gcSize4}}", - {{- end }} - {{/*------------------- DRIVE 5 --------------- */}} - {{- if $gcType5 -}} - "-s", "type=pd-{{$gcType5 | lower}},size={{$gcSize5}}", - {{- end }} - {{/*------------------- DRIVE 6 --------------- */}} - {{- if $gcType6 -}} - "-s", "type=pd-{{$gcType6 | lower}},size={{$gcSize6}}", - {{- end }} - {{/*------------------- DRIVE 7 --------------- */}} - {{- if $gcType7 -}} - "-s", "type=pd-{{$gcType7 | lower}},size={{$gcSize7}}", - {{- end }} - {{/*------------------- DRIVE 8 --------------- */}} - {{- if $gcType8 -}} - "-s", "type=pd-{{$gcType8 | lower}},size={{$gcSize8}}", - {{- end }} - {{/*------------------- DRIVE 9 --------------- */}} - {{- if $gcType9 -}} - "-s", "type=pd-{{$gcType9 | lower}},size={{$gcSize9}}", - {{- end }} - {{/*------------------- DRIVE 10 --------------- */}} - {{- if $gcType10 -}} - "-s", "type=pd-{{$gcType1 | lower}},size={{$gcSize10}}", - {{- end }} - {{- end -}} -{{/*------------------- ----------------- AWS -------------- --------------- */}} - {{- else if eq "AWS" .Values.provider -}} - {{- if eq "Use Existing Disks" .Values.deviceConfig -}} - {{- if ne "none" .Values.existingDisk1 -}} - "-s", "{{ .Values.existingDisk1 }}", - {{- end -}} - {{- if ne "none" .Values.existingDisk2 -}} - "-s", "{{ .Values.existingDisk2 }}", - {{- end -}} - {{- if ne "none" .Values.existingDisk3 -}} - "-s", "{{ .Values.existingDisk3 }}", - {{- end -}} - {{- if ne "none" .Values.existingDisk4 -}} - "-s", "{{ .Values.existingDisk4 }}", - {{- end -}} - {{- if ne "none" .Values.existingDisk5 -}} - "-s", "{{ .Values.existingDisk5 }}", - {{- end -}} - {{- else if eq "Create Using a Spec" .Values.deviceConfig -}} - {{- if ne "none" $awsType1 }} - {{- if eq "GP2" $awsType1 -}} - "-s", "type={{$awsType1 | lower}},size={{$awsSize1}}", - {{- else if eq "IO1" $awsType1 -}} - "-s", "type={{$awsType1 | lower}},size={{$awsSize1}},iops={{$awsIops1}}", - {{- end }} - {{- end }} - {{/*------------------- DRIVE 2 --------------- */}} - {{- if ne "none" $awsType2 -}} - {{- if eq "GP2" $awsType2 -}} - "-s", "type={{$awsType2 | lower}},size={{$awsSize2}}", - {{- else if eq "IO1" $awsType2 -}} - "-s", "type={{$awsType2 | lower}},size={{$awsSize2}},iops={{$awsIops2}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 3 --------------- */}} - {{- if ne "none" $awsType3 }} - {{- if eq "GP2" $awsType3 -}} - "-s", "type={{$awsType3 | lower}},size={{$awsSize3}}", - {{- else if eq "IO1" $awsType3 -}} - "-s", "type={{$awsType3 | lower}},size={{$awsSize3}},iops={{$awsIops3}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 4 --------------- */}} - {{- if ne "none" $awsType4 }} - {{- if eq "GP2" $awsType4 -}} - "-s", "type={{$awsType4 | lower}},size={{$awsSize4}}", - {{- else if eq "IO1" $awsType4 -}} - "-s", "type={{$awsType4 | lower}},size={{$awsSize4}},iops={{$awsIops4}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 5 --------------- */}} - {{- if ne "none" $awsType5 }} - {{- if eq "GP2" $awsType5 -}} - "-s", "type={{$awsType5 | lower}},size={{$awsSize5}}", - {{- else if eq "IO1" $awsType5 -}} - "-s", "type={{$awsType5 | lower}},size={{$awsSize5}},iops={{$awsIops5}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 6 --------------- */}} - {{- if ne "none" $awsType6 }} - {{- if eq "GP2" $awsType6 -}} - "-s", "type={{$awsType6 | lower}},size={{$awsSize6}}", - {{- else if eq "IO1" $awsType6 -}} - "-s", "type={{$awsType6 | lower}},size={{$awsSize6}},iops={{$awsIops6}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 7 --------------- */}} - {{- if ne "none" $awsType7 }} - {{- if eq "GP2" $awsType7 -}} - "-s", "type={{$awsType7 | lower}},size={{$awsSize7}}", - {{- else if eq "IO1" $awsType7 -}} - "-s", "type={{$awsType7 | lower}},size={{$awsSize7}},iops={{$awsIops7}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 8 --------------- */}} - {{- if ne "none" $awsType8 }} - {{- if eq "GP2" $awsType8 -}} - "-s", "type={{$awsType8 | lower}},size={{$awsSize8}}", - {{- else if eq "IO1" $awsType8 -}} - "-s", "type={{$awsType8 | lower}},size={{$awsSize8}},iops={{$awsIops8}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 9 --------------- */}} - {{- if ne "none" $awsType9 }} - {{- if eq "GP2" $awsType9 -}} - "-s", "type={{$awsType9 | lower}},size={{$awsSize9}}", - {{- else if eq "IO1" $awsType9 -}} - "-s", "type={{$awsType9 | lower}},size={{$awsSize9}},iops={{$awsIops9}}", - {{- end -}} - {{- end }} - {{/*------------------- DRIVE 10 --------------- */}} - {{- if ne "none" $awsType10 }} - {{- if eq "GP2" $awsType10 -}} - "-s", "type={{$awsType10 | lower}},size={{$awsSize10}}", - {{- else if eq "IO1" $awsType10 -}} - "-s", "type={{$awsType10 | lower}},size={{$awsSize10}},iops={{$awsIops10}}", - {{- end -}} - {{- end }} - {{- end -}} - {{- end -}} - {{- end -}} -{{- end }} - diff --git a/charts/portworx/portworx/templates/hooks/post-delete/px-postdelete-unlabelnode.yaml b/charts/portworx/portworx/templates/hooks/post-delete/px-postdelete-unlabelnode.yaml deleted file mode 100644 index 8c8efda02..000000000 --- a/charts/portworx/portworx/templates/hooks/post-delete/px-postdelete-unlabelnode.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- $customRegistryURL := .Values.customRegistryURL | default "none" }} -{{- $registrySecret := .Values.registrySecret | default "none" }} - -apiVersion: batch/v1 -kind: Job -metadata: - namespace: kube-system - name: px-hook-postdelete-unlabelnode - labels: - heritage: {{.Release.Service | quote }} - release: {{.Release.Name | quote }} - chart: "{{.Chart.Name}}-{{.Chart.Version}}" - app.kubernetes.io/managed-by: {{.Release.Service | quote }} - app.kubernetes.io/instance: {{.Release.Name | quote }} - annotations: - "helm.sh/hook": post-delete - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": before-hook-creation -spec: -{{ if semverCompare ">= 1.8-0" .Capabilities.KubeVersion.GitVersion }} - backoffLimit: 0 -{{ else }} - activeDeadlineSeconds: 30 -{{ end }} - template: - spec: - {{- if not (eq $registrySecret "none") }} - imagePullSecrets: - - name: {{ $registrySecret }} - {{- end }} - restartPolicy: Never - serviceAccountName: {{ template "px.hookServiceAccount" . }} - containers: - - name: post-delete-job - {{- if eq $customRegistryURL "none" }} - image: "lachlanevenson/k8s-kubectl:{{ template "px.kubernetesVersion" . }}" - {{- else}} - image: "{{ $customRegistryURL }}/lachlanevenson/k8s-kubectl:{{ template "px.kubernetesVersion" . }}" - {{- end}} - args: ['label','nodes','--all','px/enabled-'] diff --git a/charts/portworx/portworx/templates/hooks/pre-delete/px-predelete-nodelabel.yaml b/charts/portworx/portworx/templates/hooks/pre-delete/px-predelete-nodelabel.yaml deleted file mode 100644 index 1942bade7..000000000 --- a/charts/portworx/portworx/templates/hooks/pre-delete/px-predelete-nodelabel.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- $customRegistryURL := .Values.customRegistryURL | default "none" }} -{{- $registrySecret := .Values.registrySecret | default "none" }} - -apiVersion: batch/v1 -kind: Job -metadata: - namespace: kube-system - name: px-hook-predelete-nodelabel - labels: - heritage: {{.Release.Service | quote }} - release: {{.Release.Name | quote }} - chart: "{{.Chart.Name}}-{{.Chart.Version}}" - app.kubernetes.io/managed-by: {{.Release.Service | quote }} - app.kubernetes.io/instance: {{.Release.Name | quote }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": before-hook-creation -spec: -{{ if semverCompare ">= 1.8-0" .Capabilities.KubeVersion.GitVersion }} - backoffLimit: 0 -{{ else }} - activeDeadlineSeconds: 30 -{{ end }} - template: - spec: - {{- if not (eq $registrySecret "none") }} - imagePullSecrets: - - name: {{ $registrySecret }} - {{- end }} - serviceAccountName: {{ template "px.hookServiceAccount" . }} - restartPolicy: Never - containers: - - name: pre-delete-job - {{- if eq $customRegistryURL "none" }} - image: "lachlanevenson/k8s-kubectl:{{ template "px.kubernetesVersion" . }}" - {{- else}} - image: "{{ $customRegistryURL }}/lachlanevenson/k8s-kubectl:{{ template "px.kubernetesVersion" . }}" - {{- end}} - args: ['label','nodes','--all','px/enabled=remove','--overwrite'] diff --git a/charts/portworx/portworx/templates/portworx-controller.yaml b/charts/portworx/portworx/templates/portworx-controller.yaml deleted file mode 100644 index 15301f579..000000000 --- a/charts/portworx/portworx/templates/portworx-controller.yaml +++ /dev/null @@ -1,128 +0,0 @@ -{{- if or (and (.Values.openshiftInstall) (eq .Values.openshiftInstall true)) (and (.Values.AKSorEKSInstall) (eq .Values.AKSorEKSInstall true)) ((.Capabilities.KubeVersion.GitVersion | regexMatch "gke")) }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: portworx-pvc-controller-account - namespace: kube-system ---- -kind: ClusterRole -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: portworx-pvc-controller-role -rules: -- apiGroups: [""] - resources: ["persistentvolumes"] - verbs: ["create","delete","get","list","update","watch"] -- apiGroups: [""] - resources: ["persistentvolumes/status"] - verbs: ["update"] -- apiGroups: [""] - resources: ["persistentvolumeclaims"] - verbs: ["get", "list", "update", "watch"] -- apiGroups: [""] - resources: ["persistentvolumeclaims/status"] - verbs: ["update"] -- apiGroups: [""] - resources: ["pods"] - verbs: ["create", "delete", "get", "list", "watch"] -- apiGroups: ["storage.k8s.io"] - resources: ["storageclasses"] - verbs: ["get", "list", "watch"] -- apiGroups: [""] - resources: ["endpoints", "services"] - verbs: ["create", "delete", "get", "update"] -- apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["get", "list", "watch"] -- apiGroups: [""] - resources: ["events"] - verbs: ["watch"] -- apiGroups: [""] - resources: ["events"] - verbs: ["create", "patch", "update"] -- apiGroups: [""] - resources: ["serviceaccounts"] - verbs: ["get", "create"] -- apiGroups: [""] - resources: ["configmaps"] - verbs: ["get", "create", "update"] ---- -kind: ClusterRoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: portworx-pvc-controller-role-binding -subjects: -- kind: ServiceAccount - name: portworx-pvc-controller-account - namespace: kube-system -roleRef: - kind: ClusterRole - name: portworx-pvc-controller-role - apiGroup: rbac.authorization.k8s.io ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: - scheduler.alpha.kubernetes.io/critical-pod: "" - labels: - tier: control-plane - name: portworx-pvc-controller - namespace: kube-system -spec: - replicas: 3 - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - annotations: - scheduler.alpha.kubernetes.io/critical-pod: "" - labels: - name: portworx-pvc-controller - tier: control-plane - spec: - {{- if not (empty .Values.registrySecret) }} - imagePullSecrets: - - name: {{ .Values.registrySecret }} - {{- end }} - containers: - - command: - - kube-controller-manager - - --leader-elect=true - - --address=0.0.0.0 - - --controllers=persistentvolume-binder,persistentvolume-expander - - --use-service-account-credentials=true - - --leader-elect-resource-lock=configmaps - image: "{{ template "px.getk8sImages" . }}/kube-controller-manager-amd64:{{ template "px.kubernetesVersion" . }}" - livenessProbe: - failureThreshold: 8 - httpGet: - host: 127.0.0.1 - path: /healthz - port: 10252 - scheme: HTTP - initialDelaySeconds: 15 - timeoutSeconds: 15 - name: portworx-pvc-controller-manager - resources: - requests: - cpu: 200m - hostNetwork: true - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: "name" - operator: In - values: - - portworx-pvc-controller - topologyKey: "kubernetes.io/hostname" - serviceAccountName: portworx-pvc-controller-account -{{- end }} diff --git a/charts/portworx/portworx/templates/portworx-crd.yaml b/charts/portworx/portworx/templates/portworx-crd.yaml deleted file mode 100644 index 2811a0f8b..000000000 --- a/charts/portworx/portworx/templates/portworx-crd.yaml +++ /dev/null @@ -1,1146 +0,0 @@ -{{- if or (and (.Values.csi) (eq .Values.csi true)) (not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty))}} -{{- if (semverCompare ">= 1.17.0-0" .Capabilities.KubeVersion.GitVersion) }} -{{- if (semverCompare ">= 1.20.0-0" .Capabilities.KubeVersion.GitVersion) }} -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.0 - api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419" - creationTimestamp: null - name: volumesnapshotclasses.snapshot.storage.k8s.io -spec: - group: snapshot.storage.k8s.io - names: - kind: VolumeSnapshotClass - listKind: VolumeSnapshotClassList - plural: volumesnapshotclasses - singular: volumesnapshotclass - scope: Cluster - versions: - - additionalPrinterColumns: - - jsonPath: .driver - name: Driver - type: string - - description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. - jsonPath: .deletionPolicy - name: DeletionPolicy - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced - 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 - deletionPolicy: - description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required. - enum: - - Delete - - Retain - type: string - driver: - description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required. - 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 - parameters: - additionalProperties: - type: string - description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes. - type: object - required: - - deletionPolicy - - driver - type: object - served: true - storage: true - subresources: {} - - additionalPrinterColumns: - - jsonPath: .driver - name: Driver - type: string - - description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. - jsonPath: .deletionPolicy - name: DeletionPolicy - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - # This indicates the v1beta1 version of the custom resource is deprecated. - # API requests to this version receive a warning in the server response. - deprecated: true - # This overrides the default warning returned to clients making v1beta1 API requests. - deprecationWarning: "snapshot.storage.k8s.io/v1beta1 VolumeSnapshotClass is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshotClass" - schema: - openAPIV3Schema: - description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced - 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 - deletionPolicy: - description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required. - enum: - - Delete - - Retain - type: string - driver: - description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required. - 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 - parameters: - additionalProperties: - type: string - description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes. - type: object - required: - - deletionPolicy - - driver - type: object - served: true - storage: false - subresources: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.0 - api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419" - creationTimestamp: null - name: volumesnapshotcontents.snapshot.storage.k8s.io -spec: - group: snapshot.storage.k8s.io - names: - kind: VolumeSnapshotContent - listKind: VolumeSnapshotContentList - plural: volumesnapshotcontents - singular: volumesnapshotcontent - scope: Cluster - versions: - - additionalPrinterColumns: - - description: Indicates if the snapshot is ready to be used to restore a volume. - jsonPath: .status.readyToUse - name: ReadyToUse - type: boolean - - description: Represents the complete size of the snapshot in bytes - jsonPath: .status.restoreSize - name: RestoreSize - type: integer - - description: Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. - jsonPath: .spec.deletionPolicy - name: DeletionPolicy - type: string - - description: Name of the CSI driver used to create the physical snapshot on the underlying storage system. - jsonPath: .spec.driver - name: Driver - type: string - - description: Name of the VolumeSnapshotClass to which this snapshot belongs. - jsonPath: .spec.volumeSnapshotClassName - name: VolumeSnapshotClass - type: string - - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. - jsonPath: .spec.volumeSnapshotRef.name - name: VolumeSnapshot - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: VolumeSnapshotContent represents the actual "on-disk" snapshot object in the underlying storage system - 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 - spec: - description: spec defines properties of a VolumeSnapshotContent created by the underlying storage system. Required. - properties: - deletionPolicy: - description: deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. For dynamically provisioned snapshots, this field will automatically be filled in by the CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding VolumeSnapshotClass. For pre-existing snapshots, users MUST specify this field when creating the VolumeSnapshotContent object. Required. - enum: - - Delete - - Retain - type: string - driver: - description: driver is the name of the CSI driver used to create the physical snapshot on the underlying storage system. This MUST be the same as the name returned by the CSI GetPluginName() call for that driver. Required. - type: string - source: - description: source specifies whether the snapshot is (or should be) dynamically provisioned or already exists, and just requires a Kubernetes object representation. This field is immutable after creation. Required. - properties: - snapshotHandle: - description: snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on the underlying storage system for which a Kubernetes object representation was (or should be) created. This field is immutable. - type: string - volumeHandle: - description: volumeHandle specifies the CSI "volume_id" of the volume from which a snapshot should be dynamically taken from. This field is immutable. - type: string - type: object - oneOf: - - required: ["snapshotHandle"] - - required: ["volumeHandle"] - volumeSnapshotClassName: - description: name of the VolumeSnapshotClass from which this snapshot was (or will be) created. Note that after provisioning, the VolumeSnapshotClass may be deleted or recreated with different set of values, and as such, should not be referenced post-snapshot creation. - type: string - volumeSnapshotRef: - description: volumeSnapshotRef specifies the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to this VolumeSnapshotContent's name for the bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent object, name and namespace of the VolumeSnapshot object MUST be provided for binding to happen. This field is immutable after creation. Required. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - required: - - deletionPolicy - - driver - - source - - volumeSnapshotRef - type: object - status: - description: status represents the current information of a snapshot. - properties: - creationTime: - description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it indicates the creation time is unknown. The format of this field is a Unix nanoseconds time encoded as an int64. On Unix, the command `date +%s%N` returns the current time in nanoseconds since 1970-01-01 00:00:00 UTC. - format: int64 - type: integer - error: - description: error is the last observed error during snapshot creation, if any. Upon success after retry, this error field will be cleared. - properties: - message: - description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' - type: string - time: - description: time is the timestamp when the error was encountered. - format: date-time - type: string - type: object - readyToUse: - description: readyToUse indicates if a snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. - type: boolean - restoreSize: - description: restoreSize represents the complete size of the snapshot in bytes. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. - format: int64 - minimum: 0 - type: integer - snapshotHandle: - description: snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. If not specified, it indicates that dynamic snapshot creation has either failed or it is still in progress. - type: string - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - description: Indicates if the snapshot is ready to be used to restore a volume. - jsonPath: .status.readyToUse - name: ReadyToUse - type: boolean - - description: Represents the complete size of the snapshot in bytes - jsonPath: .status.restoreSize - name: RestoreSize - type: integer - - description: Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. - jsonPath: .spec.deletionPolicy - name: DeletionPolicy - type: string - - description: Name of the CSI driver used to create the physical snapshot on the underlying storage system. - jsonPath: .spec.driver - name: Driver - type: string - - description: Name of the VolumeSnapshotClass to which this snapshot belongs. - jsonPath: .spec.volumeSnapshotClassName - name: VolumeSnapshotClass - type: string - - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. - jsonPath: .spec.volumeSnapshotRef.name - name: VolumeSnapshot - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - # This indicates the v1beta1 version of the custom resource is deprecated. - # API requests to this version receive a warning in the server response. - deprecated: true - # This overrides the default warning returned to clients making v1beta1 API requests. - deprecationWarning: "snapshot.storage.k8s.io/v1beta1 VolumeSnapshotContent is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshotContent" - schema: - openAPIV3Schema: - description: VolumeSnapshotContent represents the actual "on-disk" snapshot object in the underlying storage system - 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 - spec: - description: spec defines properties of a VolumeSnapshotContent created by the underlying storage system. Required. - properties: - deletionPolicy: - description: deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. For dynamically provisioned snapshots, this field will automatically be filled in by the CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding VolumeSnapshotClass. For pre-existing snapshots, users MUST specify this field when creating the VolumeSnapshotContent object. Required. - enum: - - Delete - - Retain - type: string - driver: - description: driver is the name of the CSI driver used to create the physical snapshot on the underlying storage system. This MUST be the same as the name returned by the CSI GetPluginName() call for that driver. Required. - type: string - source: - description: source specifies whether the snapshot is (or should be) dynamically provisioned or already exists, and just requires a Kubernetes object representation. This field is immutable after creation. Required. - properties: - snapshotHandle: - description: snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on the underlying storage system for which a Kubernetes object representation was (or should be) created. This field is immutable. - type: string - volumeHandle: - description: volumeHandle specifies the CSI "volume_id" of the volume from which a snapshot should be dynamically taken from. This field is immutable. - type: string - type: object - volumeSnapshotClassName: - description: name of the VolumeSnapshotClass from which this snapshot was (or will be) created. Note that after provisioning, the VolumeSnapshotClass may be deleted or recreated with different set of values, and as such, should not be referenced post-snapshot creation. - type: string - volumeSnapshotRef: - description: volumeSnapshotRef specifies the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to this VolumeSnapshotContent's name for the bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent object, name and namespace of the VolumeSnapshot object MUST be provided for binding to happen. This field is immutable after creation. Required. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - required: - - deletionPolicy - - driver - - source - - volumeSnapshotRef - type: object - status: - description: status represents the current information of a snapshot. - properties: - creationTime: - description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it indicates the creation time is unknown. The format of this field is a Unix nanoseconds time encoded as an int64. On Unix, the command `date +%s%N` returns the current time in nanoseconds since 1970-01-01 00:00:00 UTC. - format: int64 - type: integer - error: - description: error is the last observed error during snapshot creation, if any. Upon success after retry, this error field will be cleared. - properties: - message: - description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' - type: string - time: - description: time is the timestamp when the error was encountered. - format: date-time - type: string - type: object - readyToUse: - description: readyToUse indicates if a snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. - type: boolean - restoreSize: - description: restoreSize represents the complete size of the snapshot in bytes. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. - format: int64 - minimum: 0 - type: integer - snapshotHandle: - description: snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. If not specified, it indicates that dynamic snapshot creation has either failed or it is still in progress. - type: string - type: object - required: - - spec - type: object - served: true - storage: false - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.0 - api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419" - creationTimestamp: null - name: volumesnapshots.snapshot.storage.k8s.io -spec: - group: snapshot.storage.k8s.io - names: - kind: VolumeSnapshot - listKind: VolumeSnapshotList - plural: volumesnapshots - singular: volumesnapshot - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Indicates if the snapshot is ready to be used to restore a volume. - jsonPath: .status.readyToUse - name: ReadyToUse - type: boolean - - description: If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created. - jsonPath: .spec.source.persistentVolumeClaimName - name: SourcePVC - type: string - - description: If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot. - jsonPath: .spec.source.volumeSnapshotContentName - name: SourceSnapshotContent - type: string - - description: Represents the minimum size of volume required to rehydrate from this snapshot. - jsonPath: .status.restoreSize - name: RestoreSize - type: string - - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. - jsonPath: .spec.volumeSnapshotClassName - name: SnapshotClass - type: string - - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object. - jsonPath: .status.boundVolumeSnapshotContentName - name: SnapshotContent - type: string - - description: Timestamp when the point-in-time snapshot was taken by the underlying storage system. - jsonPath: .status.creationTime - name: CreationTime - type: date - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: VolumeSnapshot is a user's request for either creating a point-in-time snapshot of a persistent volume, or binding to a pre-existing snapshot. - 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 - spec: - description: 'spec defines the desired characteristics of a snapshot requested by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots Required.' - properties: - source: - description: source specifies where a snapshot will be created from. This field is immutable after creation. Required. - properties: - persistentVolumeClaimName: - description: persistentVolumeClaimName specifies the name of the PersistentVolumeClaim object representing the volume from which a snapshot should be created. This PVC is assumed to be in the same namespace as the VolumeSnapshot object. This field should be set if the snapshot does not exists, and needs to be created. This field is immutable. - type: string - volumeSnapshotContentName: - description: volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent object representing an existing volume snapshot. This field should be set if the snapshot already exists and only needs a representation in Kubernetes. This field is immutable. - type: string - type: object - oneOf: - - required: ["persistentVolumeClaimName"] - - required: ["volumeSnapshotContentName"] - volumeSnapshotClassName: - description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. VolumeSnapshotClassName may be left nil to indicate that the default SnapshotClass should be used. A given cluster may have multiple default Volume SnapshotClasses: one default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, VolumeSnapshotSource will be checked to figure out what the associated CSI Driver is, and the default VolumeSnapshotClass associated with that CSI Driver will be used. If more than one VolumeSnapshotClass exist for a given CSI Driver and more than one have been marked as default, CreateSnapshot will fail and generate an event. Empty string is not allowed for this field.' - type: string - required: - - source - type: object - status: - description: status represents the current information of a snapshot. Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object. - properties: - boundVolumeSnapshotContentName: - description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent object to which this VolumeSnapshot object intends to bind to. If not specified, it indicates that the VolumeSnapshot object has not been successfully bound to a VolumeSnapshotContent object yet. NOTE: To avoid possible security issues, consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.' - type: string - creationTime: - description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it may indicate that the creation time of the snapshot is unknown. - format: date-time - type: string - error: - description: error is the last observed error during snapshot creation, if any. This field could be helpful to upper level controllers(i.e., application controller) to decide whether they should continue on waiting for the snapshot to be created based on the type of error reported. The snapshot controller will keep retrying when an error occurrs during the snapshot creation. Upon success, this error field will be cleared. - properties: - message: - description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' - type: string - time: - description: time is the timestamp when the error was encountered. - format: date-time - type: string - type: object - readyToUse: - description: readyToUse indicates if the snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. - type: boolean - restoreSize: - type: string - description: restoreSize represents the minimum size of volume required to create a volume from this snapshot. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - description: Indicates if the snapshot is ready to be used to restore a volume. - jsonPath: .status.readyToUse - name: ReadyToUse - type: boolean - - description: If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created. - jsonPath: .spec.source.persistentVolumeClaimName - name: SourcePVC - type: string - - description: If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot. - jsonPath: .spec.source.volumeSnapshotContentName - name: SourceSnapshotContent - type: string - - description: Represents the minimum size of volume required to rehydrate from this snapshot. - jsonPath: .status.restoreSize - name: RestoreSize - type: string - - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. - jsonPath: .spec.volumeSnapshotClassName - name: SnapshotClass - type: string - - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object. - jsonPath: .status.boundVolumeSnapshotContentName - name: SnapshotContent - type: string - - description: Timestamp when the point-in-time snapshot was taken by the underlying storage system. - jsonPath: .status.creationTime - name: CreationTime - type: date - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - # This indicates the v1beta1 version of the custom resource is deprecated. - # API requests to this version receive a warning in the server response. - deprecated: true - # This overrides the default warning returned to clients making v1beta1 API requests. - deprecationWarning: "snapshot.storage.k8s.io/v1beta1 VolumeSnapshot is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshot" - schema: - openAPIV3Schema: - description: VolumeSnapshot is a user's request for either creating a point-in-time snapshot of a persistent volume, or binding to a pre-existing snapshot. - 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 - spec: - description: 'spec defines the desired characteristics of a snapshot requested by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots Required.' - properties: - source: - description: source specifies where a snapshot will be created from. This field is immutable after creation. Required. - properties: - persistentVolumeClaimName: - description: persistentVolumeClaimName specifies the name of the PersistentVolumeClaim object representing the volume from which a snapshot should be created. This PVC is assumed to be in the same namespace as the VolumeSnapshot object. This field should be set if the snapshot does not exists, and needs to be created. This field is immutable. - type: string - volumeSnapshotContentName: - description: volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent object representing an existing volume snapshot. This field should be set if the snapshot already exists and only needs a representation in Kubernetes. This field is immutable. - type: string - type: object - volumeSnapshotClassName: - description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. VolumeSnapshotClassName may be left nil to indicate that the default SnapshotClass should be used. A given cluster may have multiple default Volume SnapshotClasses: one default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, VolumeSnapshotSource will be checked to figure out what the associated CSI Driver is, and the default VolumeSnapshotClass associated with that CSI Driver will be used. If more than one VolumeSnapshotClass exist for a given CSI Driver and more than one have been marked as default, CreateSnapshot will fail and generate an event. Empty string is not allowed for this field.' - type: string - required: - - source - type: object - status: - description: status represents the current information of a snapshot. Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object. - properties: - boundVolumeSnapshotContentName: - description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent object to which this VolumeSnapshot object intends to bind to. If not specified, it indicates that the VolumeSnapshot object has not been successfully bound to a VolumeSnapshotContent object yet. NOTE: To avoid possible security issues, consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.' - type: string - creationTime: - description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it may indicate that the creation time of the snapshot is unknown. - format: date-time - type: string - error: - description: error is the last observed error during snapshot creation, if any. This field could be helpful to upper level controllers(i.e., application controller) to decide whether they should continue on waiting for the snapshot to be created based on the type of error reported. The snapshot controller will keep retrying when an error occurrs during the snapshot creation. Upon success, this error field will be cleared. - properties: - message: - description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' - type: string - time: - description: time is the timestamp when the error was encountered. - format: date-time - type: string - type: object - readyToUse: - description: readyToUse indicates if the snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. - type: boolean - restoreSize: - type: string - description: restoreSize represents the minimum size of volume required to create a volume from this snapshot. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - required: - - spec - type: object - served: true - storage: false - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] -{{- else }} -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/139" - creationTimestamp: null - name: volumesnapshotclasses.snapshot.storage.k8s.io -spec: - group: snapshot.storage.k8s.io - names: - kind: VolumeSnapshotClass - listKind: VolumeSnapshotClassList - plural: volumesnapshotclasses - singular: volumesnapshotclass - scope: Cluster - versions: - - additionalPrinterColumns: - - jsonPath: .driver - name: Driver - type: string - - description: Determines whether a VolumeSnapshotContent created through the - VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. - jsonPath: .deletionPolicy - name: DeletionPolicy - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: VolumeSnapshotClass specifies parameters that a underlying storage - system uses when creating a volume snapshot. A specific VolumeSnapshotClass - is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses - are non-namespaced - 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 - deletionPolicy: - description: deletionPolicy determines whether a VolumeSnapshotContent - created through the VolumeSnapshotClass should be deleted when its bound - VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". - "Retain" means that the VolumeSnapshotContent and its physical snapshot - on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent - and its physical snapshot on underlying storage system are deleted. - Required. - enum: - - Delete - - Retain - type: string - driver: - description: driver is the name of the storage driver that handles this - VolumeSnapshotClass. Required. - 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 - parameters: - additionalProperties: - type: string - description: parameters is a key-value map with storage driver specific - parameters for creating snapshots. These values are opaque to Kubernetes. - type: object - required: - - deletionPolicy - - driver - type: object - served: true - storage: true - subresources: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/139" - creationTimestamp: null - name: volumesnapshotcontents.snapshot.storage.k8s.io -spec: - group: snapshot.storage.k8s.io - names: - kind: VolumeSnapshotContent - listKind: VolumeSnapshotContentList - plural: volumesnapshotcontents - singular: volumesnapshotcontent - scope: Cluster - versions: - - additionalPrinterColumns: - - description: Indicates if a snapshot is ready to be used to restore a volume. - jsonPath: .status.readyToUse - name: ReadyToUse - type: boolean - - description: Represents the complete size of the snapshot in bytes - jsonPath: .status.restoreSize - name: RestoreSize - type: integer - - description: Determines whether this VolumeSnapshotContent and its physical - snapshot on the underlying storage system should be deleted when its bound - VolumeSnapshot is deleted. - jsonPath: .spec.deletionPolicy - name: DeletionPolicy - type: string - - description: Name of the CSI driver used to create the physical snapshot on - the underlying storage system. - jsonPath: .spec.driver - name: Driver - type: string - - description: Name of the VolumeSnapshotClass to which this snapshot belongs. - jsonPath: .spec.volumeSnapshotClassName - name: VolumeSnapshotClass - type: string - - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent - object is bound. - jsonPath: .spec.volumeSnapshotRef.name - name: VolumeSnapshot - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: VolumeSnapshotContent represents the actual "on-disk" snapshot - object in the underlying storage system - 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 - spec: - description: spec defines properties of a VolumeSnapshotContent created - by the underlying storage system. Required. - properties: - deletionPolicy: - description: deletionPolicy determines whether this VolumeSnapshotContent - and its physical snapshot on the underlying storage system should - be deleted when its bound VolumeSnapshot is deleted. Supported values - are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent - and its physical snapshot on underlying storage system are kept. - "Delete" means that the VolumeSnapshotContent and its physical snapshot - on underlying storage system are deleted. In dynamic snapshot creation - case, this field will be filled in with the "DeletionPolicy" field - defined in the VolumeSnapshotClass the VolumeSnapshot refers to. - For pre-existing snapshots, users MUST specify this field when creating - the VolumeSnapshotContent object. Required. - enum: - - Delete - - Retain - type: string - driver: - description: driver is the name of the CSI driver used to create the - physical snapshot on the underlying storage system. This MUST be - the same as the name returned by the CSI GetPluginName() call for - that driver. Required. - type: string - source: - description: source specifies from where a snapshot will be created. - This field is immutable after creation. Required. - properties: - snapshotHandle: - description: snapshotHandle specifies the CSI "snapshot_id" of - a pre-existing snapshot on the underlying storage system. This - field is immutable. - type: string - volumeHandle: - description: volumeHandle specifies the CSI "volume_id" of the - volume from which a snapshot should be dynamically taken from. - This field is immutable. - type: string - type: object - volumeSnapshotClassName: - description: name of the VolumeSnapshotClass to which this snapshot - belongs. - type: string - volumeSnapshotRef: - description: volumeSnapshotRef specifies the VolumeSnapshot object - to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName - field must reference to this VolumeSnapshotContent's name for the - bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent - object, name and namespace of the VolumeSnapshot object MUST be - provided for binding to happen. This field is immutable after creation. - Required. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - required: - - deletionPolicy - - driver - - source - - volumeSnapshotRef - type: object - status: - description: status represents the current information of a snapshot. - properties: - creationTime: - description: creationTime is the timestamp when the point-in-time - snapshot is taken by the underlying storage system. In dynamic snapshot - creation case, this field will be filled in with the "creation_time" - value returned from CSI "CreateSnapshotRequest" gRPC call. For a - pre-existing snapshot, this field will be filled with the "creation_time" - value returned from the CSI "ListSnapshots" gRPC call if the driver - supports it. If not specified, it indicates the creation time is - unknown. The format of this field is a Unix nanoseconds time encoded - as an int64. On Unix, the command `date +%s%N` returns the current - time in nanoseconds since 1970-01-01 00:00:00 UTC. - format: int64 - type: integer - error: - description: error is the latest observed error during snapshot creation, - if any. - properties: - message: - description: 'message is a string detailing the encountered error - during snapshot creation if specified. NOTE: message may be - logged, and it should not contain sensitive information.' - type: string - time: - description: time is the timestamp when the error was encountered. - format: date-time - type: string - type: object - readyToUse: - description: readyToUse indicates if a snapshot is ready to be used - to restore a volume. In dynamic snapshot creation case, this field - will be filled in with the "ready_to_use" value returned from CSI - "CreateSnapshotRequest" gRPC call. For a pre-existing snapshot, - this field will be filled with the "ready_to_use" value returned - from the CSI "ListSnapshots" gRPC call if the driver supports it, - otherwise, this field will be set to "True". If not specified, it - means the readiness of a snapshot is unknown. - type: boolean - restoreSize: - description: restoreSize represents the complete size of the snapshot - in bytes. In dynamic snapshot creation case, this field will be - filled in with the "size_bytes" value returned from CSI "CreateSnapshotRequest" - gRPC call. For a pre-existing snapshot, this field will be filled - with the "size_bytes" value returned from the CSI "ListSnapshots" - gRPC call if the driver supports it. When restoring a volume from - this snapshot, the size of the volume MUST NOT be smaller than the - restoreSize if it is specified, otherwise the restoration will fail. - If not specified, it indicates that the size is unknown. - format: int64 - minimum: 0 - type: integer - snapshotHandle: - description: snapshotHandle is the CSI "snapshot_id" of a snapshot - on the underlying storage system. If not specified, it indicates - that dynamic snapshot creation has either failed or it is still - in progress. - type: string - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/139" - creationTimestamp: null - name: volumesnapshots.snapshot.storage.k8s.io -spec: - group: snapshot.storage.k8s.io - names: - kind: VolumeSnapshot - listKind: VolumeSnapshotList - plural: volumesnapshots - singular: volumesnapshot - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Indicates if a snapshot is ready to be used to restore a volume. - jsonPath: .status.readyToUse - name: ReadyToUse - type: boolean - - description: Name of the source PVC from where a dynamically taken snapshot - will be created. - jsonPath: .spec.source.persistentVolumeClaimName - name: SourcePVC - type: string - - description: Name of the VolumeSnapshotContent which represents a pre-provisioned - snapshot. - jsonPath: .spec.source.volumeSnapshotContentName - name: SourceSnapshotContent - type: string - - description: Represents the complete size of the snapshot. - jsonPath: .status.restoreSize - name: RestoreSize - type: string - - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. - jsonPath: .spec.volumeSnapshotClassName - name: SnapshotClass - type: string - - description: The name of the VolumeSnapshotContent to which this VolumeSnapshot - is bound. - jsonPath: .status.boundVolumeSnapshotContentName - name: SnapshotContent - type: string - - description: Timestamp when the point-in-time snapshot is taken by the underlying - storage system. - jsonPath: .status.creationTime - name: CreationTime - type: date - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: VolumeSnapshot is a user's request for either creating a point-in-time - snapshot of a persistent volume, or binding to a pre-existing snapshot. - 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 - spec: - description: 'spec defines the desired characteristics of a snapshot requested - by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots - Required.' - properties: - source: - description: source specifies where a snapshot will be created from. - This field is immutable after creation. Required. - properties: - persistentVolumeClaimName: - description: persistentVolumeClaimName specifies the name of the - PersistentVolumeClaim object in the same namespace as the VolumeSnapshot - object where the snapshot should be dynamically taken from. - This field is immutable. - type: string - volumeSnapshotContentName: - description: volumeSnapshotContentName specifies the name of a - pre-existing VolumeSnapshotContent object. This field is immutable. - type: string - type: object - volumeSnapshotClassName: - description: 'volumeSnapshotClassName is the name of the VolumeSnapshotClass - requested by the VolumeSnapshot. If not specified, the default snapshot - class will be used if one exists. If not specified, and there is - no default snapshot class, dynamic snapshot creation will fail. - Empty string is not allowed for this field. TODO(xiangqian): a webhook - validation on empty string. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshot-classes' - type: string - required: - - source - type: object - status: - description: 'status represents the current information of a snapshot. - NOTE: status can be modified by sources other than system controllers, - and must not be depended upon for accuracy. Controllers should only - use information from the VolumeSnapshotContent object after verifying - that the binding is accurate and complete.' - properties: - boundVolumeSnapshotContentName: - description: 'boundVolumeSnapshotContentName represents the name of - the VolumeSnapshotContent object to which the VolumeSnapshot object - is bound. If not specified, it indicates that the VolumeSnapshot - object has not been successfully bound to a VolumeSnapshotContent - object yet. NOTE: Specified boundVolumeSnapshotContentName alone - does not mean binding is valid. Controllers MUST always verify - bidirectional binding between VolumeSnapshot and VolumeSnapshotContent - to avoid possible security issues.' - type: string - creationTime: - description: creationTime is the timestamp when the point-in-time - snapshot is taken by the underlying storage system. In dynamic snapshot - creation case, this field will be filled in with the "creation_time" - value returned from CSI "CreateSnapshotRequest" gRPC call. For a - pre-existing snapshot, this field will be filled with the "creation_time" - value returned from the CSI "ListSnapshots" gRPC call if the driver - supports it. If not specified, it indicates that the creation time - of the snapshot is unknown. - format: date-time - type: string - error: - description: error is the last observed error during snapshot creation, - if any. This field could be helpful to upper level controllers(i.e., - application controller) to decide whether they should continue on - waiting for the snapshot to be created based on the type of error - reported. - properties: - message: - description: 'message is a string detailing the encountered error - during snapshot creation if specified. NOTE: message may be - logged, and it should not contain sensitive information.' - type: string - time: - description: time is the timestamp when the error was encountered. - format: date-time - type: string - type: object - readyToUse: - description: readyToUse indicates if a snapshot is ready to be used - to restore a volume. In dynamic snapshot creation case, this field - will be filled in with the "ready_to_use" value returned from CSI - "CreateSnapshotRequest" gRPC call. For a pre-existing snapshot, - this field will be filled with the "ready_to_use" value returned - from the CSI "ListSnapshots" gRPC call if the driver supports it, - otherwise, this field will be set to "True". If not specified, it - means the readiness of a snapshot is unknown. - type: boolean - restoreSize: - type: string - description: restoreSize represents the complete size of the snapshot - in bytes. In dynamic snapshot creation case, this field will be - filled in with the "size_bytes" value returned from CSI "CreateSnapshotRequest" - gRPC call. For a pre-existing snapshot, this field will be filled - with the "size_bytes" value returned from the CSI "ListSnapshots" - gRPC call if the driver supports it. When restoring a volume from - this snapshot, the size of the volume MUST NOT be smaller than the - restoreSize if it is specified, otherwise the restoration will fail. - If not specified, it indicates that the size is unknown. - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] -{{- end}} -{{- end}} -{{- end}} \ No newline at end of file diff --git a/charts/portworx/portworx/templates/portworx-csi.yaml b/charts/portworx/portworx/templates/portworx-csi.yaml deleted file mode 100644 index b3b543483..000000000 --- a/charts/portworx/portworx/templates/portworx-csi.yaml +++ /dev/null @@ -1,195 +0,0 @@ -{{- if or (and (.Values.csi) (eq .Values.csi true)) (not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty))}} -{{- $customRegistryURL := .Values.customRegistryURL | default "none" }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: px-csi-account - namespace: kube-system ---- -kind: ClusterRole -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: px-csi-role -rules: -- apiGroups: ["extensions"] - resources: ["podsecuritypolicies"] - resourceNames: ["privileged"] - verbs: ["use"] -- apiGroups: ["apiextensions.k8s.io"] - resources: ["customresourcedefinitions"] - verbs: ["*"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["get", "list", "watch"] -- apiGroups: [""] - resources: ["persistentvolumes"] - verbs: ["get", "list", "watch", "create", "delete", "update", "patch"] -- apiGroups: [""] - resources: ["persistentvolumeclaims"] - verbs: ["get", "list", "watch", "update"] -- apiGroups: [""] - resources: ["persistentvolumeclaims/status"] - verbs: ["update", "patch"] -- apiGroups: [""] - resources: ["pods"] - verbs: ["get", "list", "watch"] -- apiGroups: ["storage.k8s.io"] - resources: ["storageclasses"] - verbs: ["get", "list", "watch"] -- apiGroups: ["storage.k8s.io"] - resources: ["volumeattachments"] - verbs: ["get", "list", "watch", "update", "patch"] -- apiGroups: ["storage.k8s.io"] - resources: ["csistoragecapacities"] - verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] -- apiGroups: ["apps"] - resources: ["replicasets"] - verbs: ["get"] -- apiGroups: [""] - resources: ["events"] - verbs: ["list", "watch", "create", "update", "patch"] -- apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list"] -- apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshots", "volumesnapshotcontents", "volumesnapshotclasses", "volumesnapshots/status", "volumesnapshotcontents/status"] - verbs: ["create", "get", "list", "watch", "update", "delete"] -- apiGroups: ["csi.storage.k8s.io"] - resources: ["csinodeinfos"] - verbs: ["get", "list", "watch", "update"] -- apiGroups: ["storage.k8s.io"] - resources: ["csinodes"] - verbs: ["get", "list", "watch", "update"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["get", "list", "watch"] -- apiGroups: ["csi.storage.k8s.io"] - resources: ["csidrivers"] - verbs: ["create", "delete"] -- apiGroups: [""] - resources: ["endpoints"] - verbs: ["get", "watch", "list", "delete", "update", "create"] -- apiGroups: [""] - resources: ["configmaps"] - verbs: ["get", "watch", "list", "delete", "update", "create"] -- apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["*"] ---- -kind: ClusterRoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: px-csi-role-binding -subjects: -- kind: ServiceAccount - name: px-csi-account - namespace: kube-system -roleRef: - kind: ClusterRole - name: px-csi-role - apiGroup: rbac.authorization.k8s.io ---- -kind: Service -apiVersion: v1 -metadata: - name: px-csi-service - namespace: kube-system -spec: - clusterIP: None ---- -kind: Deployment -apiVersion: apps/v1 -metadata: - name: px-csi-ext - namespace: kube-system -spec: - selector: - matchLabels: - app: px-csi-driver - replicas: 1 - template: - metadata: - labels: - app: px-csi-driver - spec: - serviceAccount: px-csi-account - containers: - - name: csi-external-provisioner - imagePullPolicy: Always - image: {{ template "px.getCSIProvisionerImage" . }} - args: - - "--v=3" - - "--csi-address=$(ADDRESS)" - {{- if semverCompare "<1.17.0-0" .Capabilities.KubeVersion.GitVersion }} - - "--provisioner=pxd.portworx.com" - - "--enable-leader-election" - - "--leader-election-type={{if and (semverCompare ">=1.13.0-0" .Capabilities.KubeVersion.GitVersion) (semverCompare "<1.14.0-0" .Capabilities.KubeVersion.GitVersion) }}endpoints{{else}}leases{{end}}" - {{- else }} - - "--leader-election=true" - - "--default-fstype=ext4" - {{- end }} - env: - - name: ADDRESS - value: /csi/csi.sock - securityContext: - privileged: true - volumeMounts: - - name: socket-dir - mountPath: /csi - {{- if semverCompare ">=1.12.0-0" .Capabilities.KubeVersion.GitVersion }} - - name: csi-snapshotter - imagePullPolicy: Always - image: {{ template "px.getCSISnapshotterImage" . }} - args: - - "--v=3" - - "--csi-address=$(ADDRESS)" - - "--leader-election=true" - {{if and (semverCompare ">=1.13.0-0" .Capabilities.KubeVersion.GitVersion) (semverCompare "<1.14.0-0" .Capabilities.KubeVersion.GitVersion) }} - - "--leader-election-type=configmaps" - {{- end}} - env: - - name: ADDRESS - value: /csi/csi.sock - volumeMounts: - - name: socket-dir - mountPath: /csi - {{- end }} - {{- if semverCompare ">=1.17.0-0" .Capabilities.KubeVersion.GitVersion }} - - name: csi-snapshot-controller - imagePullPolicy: Always - image: {{ template "px.getCSISnapshotControllerImage" . }} - args: - - "--v=3" - - "--leader-election=true" - env: - - name: ADDRESS - value: /csi/csi.sock - securityContext: - privileged: true - volumeMounts: - - name: socket-dir - mountPath: /csi - {{- end }} - {{- if semverCompare ">=1.16.0-0" .Capabilities.KubeVersion.GitVersion }} - - name: csi-resizer - imagePullPolicy: Always - image: k8s.gcr.io/sig-storage/csi-resizer:v1.3.0 - args: - - "--v=3" - - "--csi-address=$(ADDRESS)" - - "--leader-election=true" - env: - - name: ADDRESS - value: /csi/csi.sock - securityContext: - privileged: true - volumeMounts: - - name: socket-dir - mountPath: /csi - {{- end }} - volumes: - - name: socket-dir - hostPath: - path: /var/lib/kubelet/plugins/pxd.portworx.com - type: DirectoryOrCreate -{{- end }} \ No newline at end of file diff --git a/charts/portworx/portworx/templates/portworx-ds.yaml b/charts/portworx/portworx/templates/portworx-ds.yaml deleted file mode 100644 index 89eb4f516..000000000 --- a/charts/portworx/portworx/templates/portworx-ds.yaml +++ /dev/null @@ -1,472 +0,0 @@ -{{/* Setting defaults if they are omitted. */}} -{{- $deployEnvironmentIKS := .Capabilities.KubeVersion.GitVersion | regexMatch "IKS" }} -{{- $usefileSystemDrive := .Values.usefileSystemDrive | default false }} -{{- $usedrivesAndPartitions := .Values.usedrivesAndPartitions | default false }} -{{- $secretType := .Values.secretType | default "k8s" }} -{{- $journalDevice := .Values.journalDevice | default "none" }} -{{- $maxStorageNodes := .Values.maxStorageNodes | default "none" }} -{{- $customRegistryURL := .Values.customRegistryURL | default "none" }} -{{- $registrySecret := .Values.registrySecret | default "none" }} - -{{- $dataInterface := .Values.dataInterface | default "none" }} -{{- $managementInterface := .Values.managementInterface | default "none" }} - -{{- $envVars := .Values.envVars | default "none" }} -{{- $isCoreOS := .Values.isTargetOSCoreOS | default false }} - -{{- $pksInstall := .Values.pksInstall | default false }} -{{- $internalKVDB := .Values.etcdType | default "none" }} -{{- $csi := .Values.csi | default (not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty)) }} - -{{- $etcdCredentials := .Values.etcd.credentials | default "none:none" }} -{{- $etcdCertPath := .Values.etcd.ca | default "none" }} -{{- $etcdCA := .Values.etcd.ca | default "none" }} -{{- $etcdCert := .Values.etcd.cert | default "none" }} -{{- $etcdKey := .Values.etcd.key | default "none" }} -{{- $consulToken := .Values.consul.token | default "none" }} -{{- $misc := .Values.misc | default "" | split " " }} -{{- $etcdEndPoints := .Values.kvdb }} - -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: portworx - namespace: kube-system - labels: - name: portworx -spec: - minReadySeconds: 0 - updateStrategy: - type: RollingUpdate - rollingUpdate: - maxUnavailable: 1 - selector: - matchLabels: - name: portworx - app: portworx - template: - metadata: - labels: - app: portworx - name: portworx - spec: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: px/enabled - operator: NotIn - values: - - "false" - {{- if and (.Values.openshiftInstall) (eq .Values.openshiftInstall true)}} - - key: openshift-infra - operator: DoesNotExist - {{- else if or (not .Values.deployOnMaster) (eq .Values.deployOnMaster false)}} - - key: node-role.kubernetes.io/master - operator: DoesNotExist - {{- end }} - hostNetwork: true - hostPID: true - {{- if not (eq $registrySecret "none") }} - imagePullSecrets: - - name: {{ $registrySecret }} - {{- end }} - containers: - # {{ template "px.getImage"}} - - name: portworx - image: {{ template "px.getImage" . }}:{{ required "A valid Image tag is required in the SemVer format" .Values.imageVersion }} - terminationMessagePath: "/tmp/px-termination-log" - imagePullPolicy: Always - args: - [ - {{ include "px.storage" . | indent 0 }} - {{- with .Values -}} - {{- if eq "Built-in" $internalKVDB }} - "-b", - {{- end -}} - - {{- if ne $journalDevice "none" }} - "-j", "{{ $journalDevice }}", - {{- end -}} - - {{- if $etcdEndPoints -}} - "-k", "{{ regexReplaceAllLiteral "(;)" .kvdb "," }}", - {{- else }} - {{- if ne "Built-in" $internalKVDB }} - {{- if eq "US region" .region }} - "-k", "etcd:http://px-etcd1.portworx.com:2379,etcd:http://px-etcd2.portworx.com:2379,etcd:http://px-etcd3.portworx.com:2379", - {{- else if eq "EU region" .region }} - "-k", "etcd:http://px-eu-etcd1.portworx.com:2379,etcd:http://px-eu-etcd2.portworx.com:2379,etcd:http://px-eu-etcd3.portworx.com:2379", - {{- else }} - "{{ required "A valid kvdb url is required." .kvdb }}" - {{- end -}} - {{- end -}} - {{- end -}} - "-c", "{{ required "Clustername cannot be empty" .clusterName }}", - - {{- if ne $secretType "none" }} - "-secret_type", "{{ $secretType }}", - {{- else }} - {{- if $deployEnvironmentIKS }} - "-secret_type", "ibm-kp", - {{- end -}} - {{- end -}} - - {{- if and (ne $dataInterface "none") (ne $dataInterface "auto")}} - "-d", "{{ $dataInterface }}", - {{- end -}} - - {{- if and (ne $managementInterface "none") (ne $managementInterface "auto") }} - "-m", "{{ $managementInterface }}", - {{- end -}} - - {{- if ne $etcdCredentials "none:none" }} - "-userpwd", "{{ $etcdCredentials }}", - {{- end -}} - - {{- if ne $etcdCA "none" }} - "-ca", "/etc/pwx/etcdcerts/{{ $etcdCA }}", - {{- end -}} - - {{- if ne $etcdCert "none" }} - "-cert", "/etc/pwx/etcdcerts/{{ $etcdCert }}", - {{- end -}} - - {{- if ne $etcdKey "none" }} - "-key", "/etc/pwx/etcdcerts/{{ $etcdKey }}", - {{- end -}} - - {{- if ne $consulToken "none" }} - "-acltoken", "{{ $consulToken }}", - {{- end -}} - - {{- if .misc }} - {{- range $index, $name := $misc }} - "{{ $name }}", - {{- end }} - {{ end -}} - - "-x", "kubernetes" - {{- end -}} - ] - env: - - name: "PX_TEMPLATE_VERSION" - value: "v2" - {{ if not (eq $envVars "none") }} - {{- $vars := $envVars | split ";" }} - {{- range $key, $val := $vars }} - {{- $envVariable := $val | split "=" }} - - name: {{ $envVariable._0 | trim | quote }} - value: {{ $envVariable._1 | trim | quote }} - {{ end }} - {{- end }} - - {{- if not (eq $registrySecret "none") }} - - name: REGISTRY_CONFIG - valueFrom: - secretKeyRef: - {{- if (semverCompare ">=1.9-0" .Capabilities.KubeVersion.GitVersion) or (.Values.openshiftInstall and semverCompare ">=1.8-0" .Capabilities.KubeVersion.GitVersion) }} - key: ".dockerconfigjson" - {{- else }} - key: ".dockercfg" - {{- end }} - name: "{{ $registrySecret }}" - {{- end }} - - {{- if eq $pksInstall true }} - - name: "PRE-EXEC" - value: "if [ ! -x /bin/systemctl ]; then apt-get update; apt-get install -y systemd; fi" - {{- end }} - - {{- if eq $csi true }} - - name: CSI_ENDPOINT - value: unix:///var/lib/kubelet/plugins/pxd.portworx.com/csi.sock - {{- end }} - - livenessProbe: - periodSeconds: 30 - initialDelaySeconds: 840 # allow image pull in slow networks - httpGet: - host: 127.0.0.1 - path: /status - port: 9001 - readinessProbe: - periodSeconds: 10 - httpGet: - host: 127.0.0.1 - {{- if eq (.Values.deploymentType | upper | lower) "oci" }} - path: /health - port: 9015 - {{- else }} - path: /v1/cluster/nodehealth - port: 9001 - {{- end}} - securityContext: - privileged: true - volumeMounts: - {{- if not (eq $etcdCertPath "none") }} - - mountPath: /etc/pwx/etcdcerts - name: etcdcerts - {{- end }} - {{- if not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty) }} - - name: containerd-k3s - mountPath: /run/containerd/containerd.sock - {{- end }} - - name: dockersock - mountPath: /var/run/docker.sock - - name: containerdsock - mountPath: /run/containerd - - name: etcpwx - mountPath: /etc/pwx - - name: cores - mountPath: /var/cores - {{- if eq (.Values.deploymentType | upper | lower) "oci" }} - - name: optpwx - mountPath: /opt/pwx - - name: sysdmount - mountPath: /etc/systemd/system - - name: journalmount1 - mountPath: /var/run/log - readOnly: true - - name: journalmount2 - mountPath: /var/log - readOnly: true - - name: dbusmount - mountPath: /var/run/dbus - - name: hostproc - mountPath: /host_proc - {{- else if eq (.Values.deploymentType | upper | lower) "docker" }} - - name: dev - mountPath: /dev - - name: optpwx - mountPath: /export_bin - - name: dockerplugins - mountPath: /run/docker/plugins - - name: hostproc - mountPath: /hostproc - {{- if semverCompare "< 1.10-0" .Capabilities.KubeVersion.GitVersion }} - - name: libosd - mountPath: /var/lib/osd:shared - {{- if (.Values.openshiftInstall) and (eq .Values.openshiftInstall true)}} - - name: kubelet - mountPath: /var/lib/origin/openshift.local.volumes:shared - {{- else }} - - name: kubelet - mountPath: /var/lib/kubelet:shared - {{- end }} - - {{- else }} - - name: libosd - mountPath: /var/lib/osd - mountPropagation: "Bidirectional" - {{- if (.Values.openshiftInstall) and (eq .Values.openshiftInstall true)}} - - name: kubelet - mountPath: /var/lib/origin/openshift.local.volumes - mountPropagation: "Bidirectional" - {{- else }} - - name: kubelet - mountPath: /var/lib/kubelet - mountPropagation: "Bidirectional" - {{- end }} - - {{- end }} - - {{- if eq $isCoreOS true}} - - name: src - mountPath: /lib/modules - {{- else }} - - name: src - mountPath: /usr/src - {{- end }} - {{- end }} - - {{- if eq $csi true }} - - name: csi-node-driver-registrar - imagePullPolicy: Always - {{- if eq $customRegistryURL "none" }} - image: "k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.1.0" - {{- else }} - image: "{{ $customRegistryURL }}/k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.1.0" - {{- end}} - args: - - "--v=5" - - "--csi-address=$(ADDRESS)" - - "--kubelet-registration-path=/var/lib/kubelet/plugins/pxd.portworx.com/csi.sock" - env: - - name: ADDRESS - value: /csi/csi.sock - - name: KUBE_NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - volumeMounts: - - name: csi-driver-path - mountPath: /csi - - name: registration-dir - mountPath: /registration - {{- end }} - - restartPolicy: Always - {{- if not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty) }} - tolerations: - - key: node-role.kubernetes.io/master - effect: NoSchedule - {{- end }} - serviceAccountName: px-account - volumes: - {{- if ne $etcdCertPath "none" }} - - name: etcdcerts - secret: - secretName: px-etcd-certs - items: - - key: "{{ $etcdCA }}" - path: "{{ $etcdCA }}" - - key: "{{ $etcdCert }}" - path: "{{ $etcdCert }}" - - key: "{{ $etcdKey }}" - path: "{{ $etcdKey }}" - {{- end}} - {{- if not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty) }} - - name: containerd-k3s - hostPath: - path: /run/k3s/containerd/containerd.sock - {{- end }} - - name: dockersock - hostPath: - path: {{if eq $pksInstall true}}/var/vcap/sys/run/docker/docker.sock{{else}}/var/run/docker.sock{{end}} - - name: containerdsock - hostPath: - path: {{if eq $pksInstall true}}/var/vcap/sys/run/containerd{{else}}/run/containerd{{end}} - {{- if eq $csi true}} - - name: csi-driver-path - hostPath: - path: /var/lib/kubelet/plugins/pxd.portworx.com - type: DirectoryOrCreate - - name: registration-dir - hostPath: - path: /var/lib/kubelet/plugins_registry - type: DirectoryOrCreate - {{- end}} - - name: etcpwx - hostPath: - path: /etc/pwx - - name: cores - hostPath: - path: {{if eq $pksInstall true }}/var/vcap/store/cores{{else}}/var/cores{{end}} - {{- if eq (.Values.deploymentType | upper | lower) "oci" }} - - name: optpwx - hostPath: - path: {{if eq $pksInstall true }}/var/vcap/store/opt/pwx{{else}}/opt/pwx{{end}} - - name: sysdmount - hostPath: - path: /etc/systemd/system - - name: journalmount1 - hostPath: - path: /var/run/log - - name: journalmount2 - hostPath: - path: /var/log - - name: dbusmount - hostPath: - path: /var/run/dbus - - name: hostproc - hostPath: - path: /proc - {{- else if eq (.Values.deploymentType | upper | lower) "docker" }} - - name: libosd - hostPath: - path: /var/lib/osd - - name: optpwx - hostPath: - path: /opt/pwx/bin - - name: dev - hostPath: - path: /dev - {{- if (.Values.openshiftInstall) and (eq .Values.openshiftInstall true)}} - - name: kubelet - hostPath: - path: /var/lib/origin/openshift.local.volumes - {{- else }} - - name: kubelet - hostPath: - path: /var/lib/kubelet - {{- end }} - {{- if eq $isCoreOS true}} - - name: src - hostPath: - path: /lib/modules - {{- else }} - - name: src - hostPath: - path: /usr/src - {{- end }} - - name: dockerplugins - hostPath: - path: /run/docker/plugins - - name: hostproc - hostPath: - path: /proc - {{- end }} ---- -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: portworx-api - namespace: kube-system - labels: - name: portworx-api -spec: - selector: - matchLabels: - name: portworx-api - minReadySeconds: 0 - updateStrategy: - type: RollingUpdate - rollingUpdate: - maxUnavailable: 100% - template: - metadata: - labels: - name: portworx-api - spec: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: px/enabled - operator: NotIn - values: - - "false" - {{- if not (.Capabilities.KubeVersion.GitVersion | toString | regexFind "(k3s|rke2)" | empty) }} - - key: node-role.kubernetes.io/master - operator: DoesNotExist - {{- end }} - hostNetwork: true - hostPID: false - containers: - - name: portworx-api - image: "{{ template "px.getPauseImage" . }}/pause:3.1" - imagePullPolicy: Always - readinessProbe: - periodSeconds: 10 - httpGet: - host: 127.0.0.1 - path: /status - port: 9001 - restartPolicy: Always - serviceAccountName: px-account -{{- if eq $csi true }} ---- -apiVersion: storage.k8s.io/v1 -kind: CSIDriver -metadata: - name: "pxd.portworx.com" -spec: - attachRequired: false - podInfoOnMount: true - volumeLifecycleModes: - - Persistent - - Ephemeral -{{- end}} \ No newline at end of file diff --git a/charts/portworx/portworx/templates/portworx-rbac-config.yaml b/charts/portworx/portworx/templates/portworx-rbac-config.yaml deleted file mode 100644 index e426182a8..000000000 --- a/charts/portworx/portworx/templates/portworx-rbac-config.yaml +++ /dev/null @@ -1,95 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: portworx ---- -kind: Role -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: px-role - namespace: portworx -rules: - - apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list", "create", "update", "patch", "delete"] ---- -kind: RoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: px-role-binding - namespace: portworx -subjects: - - kind: ServiceAccount - name: px-account - namespace: kube-system -roleRef: - kind: Role - name: px-role - apiGroup: rbac.authorization.k8s.io ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: px-account - namespace: kube-system ---- - -kind: ClusterRole -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: node-get-put-list-role -rules: -- apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["watch", "get", "update", "list"] -- apiGroups: [""] - resources: ["pods"] - verbs: ["delete", "get", "list", "watch", "update"] -- apiGroups: [""] - resources: ["persistentvolumeclaims", "persistentvolumes"] - verbs: ["get", "list"] -- apiGroups: ["storage.k8s.io"] - resources: ["storageclasses"] - verbs: ["get", "list"] -- apiGroups: [""] - resources: ["configmaps"] - verbs: ["get", "list", "update", "create"] -- apiGroups: [""] - resources: ["services"] - verbs: ["get", "list", "create", "update", "delete"] -- apiGroups: [""] - resources: ["endpoints"] - verbs: ["get", "list", "create", "update", "delete"] -- apiGroups: ["extensions"] - resources: ["podsecuritypolicies"] - resourceNames: ["privileged"] - verbs: ["use"] -- apiGroups: ["portworx.io"] - resources: ["volumeplacementstrategies"] - verbs: ["get", "list"] -- apiGroups: ["stork.libopenstorage.org"] - resources: ["backuplocations"] - verbs: ["get", "list"] -- apiGroups: ["core.libopenstorage.org"] - resources: ["*"] - verbs: ["*"] -- apiGroups: [""] - resources: ["events"] - verbs: ["create"] ---- - -kind: ClusterRoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: node-role-binding -subjects: -- kind: ServiceAccount - name: px-account - namespace: kube-system -roleRef: - kind: ClusterRole - name: node-get-put-list-role - apiGroup: rbac.authorization.k8s.io diff --git a/charts/portworx/portworx/templates/portworx-service.yaml b/charts/portworx/portworx/templates/portworx-service.yaml deleted file mode 100644 index 8d3ac159d..000000000 --- a/charts/portworx/portworx/templates/portworx-service.yaml +++ /dev/null @@ -1,54 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: portworx-service - namespace: kube-system - labels: - name: portworx -spec: - selector: - name: portworx - type: ClusterIP - ports: - - name: px-api - protocol: TCP - port: 9001 - targetPort: 9001 - - name: px-kvdb - protocol: TCP - port: 9019 - targetPort: 9019 - - name: px-sdk - protocol: TCP - port: 9020 - targetPort: 9020 - - name: px-rest-gateway - protocol: TCP - port: 9021 - targetPort: 9021 ---- -kind: Service -apiVersion: v1 -metadata: - name: portworx-api - namespace: kube-system - labels: - name: portworx-api -spec: - selector: - name: portworx-api - type: ClusterIP - ports: - - name: px-api - protocol: TCP - port: 9001 - targetPort: 9001 - - name: px-sdk - protocol: TCP - port: 9020 - targetPort: 9020 - - name: px-rest-gateway - protocol: TCP - port: 9021 - targetPort: 9021 ---- diff --git a/charts/portworx/portworx/templates/portworx-storageclasses.yaml b/charts/portworx/portworx/templates/portworx-storageclasses.yaml deleted file mode 100644 index b430fee8f..000000000 --- a/charts/portworx/portworx/templates/portworx-storageclasses.yaml +++ /dev/null @@ -1,56 +0,0 @@ -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: portworx-db-sc -provisioner: kubernetes.io/portworx-volume -parameters: - repl: "3" - io_profile: "db" ---- -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: portworx-db2-sc -provisioner: kubernetes.io/portworx-volume -parameters: - repl: "3" - block_size: "512b" - io_profile: "db" ---- -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: portworx-shared-sc -provisioner: kubernetes.io/portworx-volume -parameters: - repl: "3" - shared: "true" ---- -# -# NULL StorageClass that documents all possible -# Portworx StorageClass parameters -# -# Please refer to : https://docs.portworx.com/scheduler/kubernetes/dynamic-provisioning.html -# -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: portworx-null-sc - annotations: - params/docs: 'https://docs.portworx.com/scheduler/kubernetes/dynamic-provisioning.html' - params/fs: "Filesystem to be laid out: none|xfs|ext4 " - params/block_size: "Block size" - params/repl: "Replication factor for the volume: 1|2|3" - params/shared: "Flag to create a globally shared namespace volume which can be used by multiple pods : true|false" - params/priority_io: "IO Priority: low|medium|high" - params/io_profile: "IO Profile can be used to override the I/O algorithm Portworx uses for the volumes. Supported values are [db](/maintain/performance/tuning.html#db), [sequential](/maintain/performance/tuning.html#sequential), [random](/maintain/performance/tuning.html#random), [cms](/maintain/performance/tuning.html#cms)" - params/group: "The group a volume should belong too. Portworx will restrict replication sets of volumes of the same group on different nodes. If the force group option 'fg' is set to true, the volume group rule will be strictly enforced. By default, it's not strictly enforced." - params/fg: "This option enforces volume group policy. If a volume belonging to a group cannot find nodes for it's replication sets which don't have other volumes of same group, the volume creation will fail." - params/label: "List of comma-separated name=value pairs to apply to the Portworx volume" - params/nodes: "Comma-separated Portworx Node ID's to use for replication sets of the volume" - params/aggregation_level: "Specifies the number of replication sets the volume can be aggregated from" - params/snap_schedule: "Snapshot schedule. Following are the accepted formats: periodic=_mins_,_snaps-to-keep_ daily=_hh:mm_,_snaps-to-keep_ weekly=_weekday@hh:mm_,_snaps-to-keep_ monthly=_day@hh:mm_,_snaps-to-keep_ _snaps-to-keep_ is optional. Periodic, Daily, Weekly and Monthly keep last 5, 7, 5 and 12 snapshots by default respectively" - params/sticky: "Flag to create sticky volumes that cannot be deleted until the flag is disabled" - params/journal: "Flag to indicate if you want to use journal device for the volume's metadata. This will use the journal device that you used when installing Portworx. As of PX version 1.3, it is recommended to use a journal device to absorb PX metadata writes" -provisioner: kubernetes.io/portworx-volume -parameters: diff --git a/charts/portworx/portworx/templates/portworx-stork.yaml b/charts/portworx/portworx/templates/portworx-stork.yaml deleted file mode 100644 index 77449b394..000000000 --- a/charts/portworx/portworx/templates/portworx-stork.yaml +++ /dev/null @@ -1,645 +0,0 @@ -{{- if and (.Values.stork) (eq .Values.stork true)}} - {{- $isCoreOS := .Values.isTargetOSCoreOS | default false }} - {{- $customRegistryURL := .Values.customRegistryURL | default "none" }} - {{- $registrySecret := .Values.registrySecret | default "none" }} - -apiVersion: v1 -kind: ConfigMap -metadata: - name: stork-config - namespace: kube-system -data: - policy.cfg: |- - { - "kind": "Policy", - "apiVersion": "v1", -{{- if semverCompare "< 1.10-0" .Capabilities.KubeVersion.GitVersion }} - "predicates": [ -{{- if semverCompare "< 1.9-0" .Capabilities.KubeVersion.GitVersion }} - {"name": "NoVolumeNodeConflict"}, -{{- end}} - {"name": "MaxAzureDiskVolumeCount"}, - {"name": "NoVolumeZoneConflict"}, - {"name": "PodToleratesNodeTaints"}, - {"name": "CheckNodeMemoryPressure"}, - {"name": "MaxEBSVolumeCount"}, - {"name": "MaxGCEPDVolumeCount"}, - {"name": "MatchInterPodAffinity"}, - {"name": "NoDiskConflict"}, - {"name": "GeneralPredicates"}, - {"name": "CheckNodeDiskPressure"} - ], - "priorities": [ - {"name": "NodeAffinityPriority", "weight": 1}, - {"name": "TaintTolerationPriority", "weight": 1}, - {"name": "SelectorSpreadPriority", "weight": 1}, - {"name": "InterPodAffinityPriority", "weight": 1}, - {"name": "LeastRequestedPriority", "weight": 1}, - {"name": "BalancedResourceAllocation", "weight": 1}, - {"name": "NodePreferAvoidPodsPriority", "weight": 1} - ], -{{- end}} - "extenders": [ - { - "urlPrefix": "http://stork-service.kube-system:8099", - "apiVersion": "v1beta1", - "filterVerb": "filter", - "prioritizeVerb": "prioritize", - "weight": 5, - "enableHttps": false, - "nodeCacheCapable": false - } - ] - } ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: stork-account - namespace: kube-system ---- -kind: ClusterRole -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: stork-role -rules: - - apiGroups: ["*"] - resources: ["*"] - verbs: ["*"] ---- -kind: ClusterRoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: stork-role-binding -subjects: - - kind: ServiceAccount - name: stork-account - namespace: kube-system -roleRef: - kind: ClusterRole - name: stork-role - apiGroup: rbac.authorization.k8s.io ---- -kind: Service -apiVersion: v1 -metadata: - name: stork-service - namespace: kube-system -spec: - selector: - name: stork - ports: - - name: extender - protocol: TCP - port: 8099 - targetPort: 8099 - - name: webhook - protocol: TCP - port: 443 - targetPort: 443 ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: volumeplacementstrategies.portworx.io -spec: - group: portworx.io - versions: - - name: v1beta2 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - required: - - spec - properties: - spec: - type: object - description: The desired spec of the volume placement strategy - properties: - replicaAffinity: - type: array - description: Allows you to specify a rule which creates an affinity for replicas within a volume - items: - type: object - properties: - affected_replicas: - type: integer - description: The number of volume replicas affected by the replica affinity - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - matchExpressions: - description: Expression to use for the replica affinity rule - type: array - items: - type: object - properties: - key: - type: string - minLength: 1 - operator: - type: string - enum: - - In - - NotIn - - Exists - - DoesNotExist - - Lt - - Gt - description: The logical operator to use for comparing the key and values in the match expression - values: - type: array - items: - type: string - required: - - key - - operator - replicaAntiAffinity: - type: array - description: Allows you to specify a rule that creates an anti-affinity for replicas within a volume - items: - type: object - properties: - affected_replicas: - type: integer - description: The number of volume replicas affected by the replica anti affinity - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - required: - - topologyKey - volumeAffinity: - type: array - description: Allows you to colocate volumes by specifying rules that place replicas of a volume together with those of another volume for which the specified labels match - items: - type: object - properties: - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - matchExpressions: - description: Expression to use for the volume affinity rule - type: array - items: - type: object - properties: - key: - type: string - minLength: 1 - operator: - type: string - enum: - - In - - NotIn - - Exists - - DoesNotExist - - Lt - - Gt - description: The logical operator to use for comparing the key and values in the match expression - values: - type: array - items: - type: string - required: - - key - - operator - required: - - matchExpressions - volumeAntiAffinity: - type: array - description: Allows you to specify dissociation rules between 2 or more volumes that match the given labels - items: - type: object - properties: - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - matchExpressions: - description: Expression to use for the volume anti affinity rule - type: array - items: - type: object - properties: - key: - type: string - minLength: 1 - operator: - type: string - enum: - - In - - NotIn - - Exists - - DoesNotExist - - Lt - - Gt - description: The logical operator to use for comparing the key and values in the match expression - values: - type: array - items: - type: string - required: - - key - - operator - required: - - matchExpressions - - name: v1beta1 - served: false - storage: false - schema: - openAPIV3Schema: - type: object - required: - - spec - properties: - spec: - type: object - description: The desired spec of the volume placement strategy - properties: - replicaAffinity: - type: array - description: Allows you to specify a rule which creates an affinity for replicas within a volume - items: - type: object - properties: - affected_replicas: - type: integer - description: The number of volume replicas affected by the replica affinity - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - matchExpressions: - description: Expression to use for the replica affinity rule - type: array - items: - type: object - properties: - key: - type: string - minLength: 1 - operator: - type: string - enum: - - In - - NotIn - - Exists - - DoesNotExist - - Lt - - Gt - description: The logical operator to use for comparing the key and values in the match expression - values: - type: array - items: - type: string - required: - - key - - operator - replicaAntiAffinity: - type: array - description: Allows you to specify a rule that creates an anti-affinity for replicas within a volume - items: - type: object - properties: - affected_replicas: - type: integer - description: The number of volume replicas affected by the replica anti affinity - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - required: - - topologyKey - volumeAffinity: - type: array - description: Allows you to colocate volumes by specifying rules that place replicas of a volume together with those of another volume for which the specified labels match - items: - type: object - properties: - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - matchExpressions: - description: Expression to use for the volume affinity rule - type: array - items: - type: object - properties: - key: - type: string - minLength: 1 - operator: - type: string - enum: - - In - - NotIn - - Exists - - DoesNotExist - - Lt - - Gt - description: The logical operator to use for comparing the key and values in the match expression - values: - type: array - items: - type: string - required: - - key - - operator - required: - - matchExpressions - volumeAntiAffinity: - type: array - description: Allows you to specify dissociation rules between 2 or more volumes that match the given labels - items: - type: object - properties: - enforcement: - type: string - enum: - - required - - preferred - description: Specifies if the given rule is required (hard) or preferred (soft) - topologyKey: - type: string - minLength: 1 - description: Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. - matchExpressions: - description: Expression to use for the volume anti affinity rule - type: array - items: - type: object - properties: - key: - type: string - minLength: 1 - operator: - type: string - enum: - - In - - NotIn - - Exists - - DoesNotExist - - Lt - - Gt - description: The logical operator to use for comparing the key and values in the match expression - values: - type: array - items: - type: string - required: - - key - - operator - required: - - matchExpressions - scope: Cluster - names: - plural: volumeplacementstrategies - singular: volumeplacementstrategy - kind: VolumePlacementStrategy - shortNames: - - vps - - vp ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: - scheduler.alpha.kubernetes.io/critical-pod: "" - labels: - tier: control-plane - name: stork - namespace: kube-system -spec: - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - replicas: 3 - selector: - matchLabels: - name: stork - tier: control-plane - template: - metadata: - annotations: - scheduler.alpha.kubernetes.io/critical-pod: "" - labels: - name: stork - tier: control-plane - spec: - {{- if not (eq $registrySecret "none") }} - imagePullSecrets: - - name: {{ $registrySecret }} - {{- end }} - containers: - - command: - - /stork - - --driver=pxd - - --verbose - - --leader-elect=true - - --webhook-controller=false - imagePullPolicy: Always - image: {{ template "px.getStorkImage" . }}:{{ required "A valid Image tag is required in the SemVer format" .Values.storkVersion }} - resources: - requests: - cpu: '0.1' - name: stork - hostPID: false - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: "name" - operator: In - values: - - stork - topologyKey: "kubernetes.io/hostname" - serviceAccountName: stork-account ---- -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: stork-snapshot-sc -provisioner: stork-snapshot ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: stork-scheduler-account - namespace: kube-system ---- -kind: ClusterRole -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: stork-scheduler-role -rules: - - apiGroups: [""] - resources: ["endpoints"] - verbs: ["get", "update"] - - apiGroups: [""] - resources: ["configmaps"] - verbs: ["get", "list", "watch"] - - apiGroups: ["", "events.k8s.io"] - resources: ["events"] - verbs: ["create", "patch", "update"] - - apiGroups: [""] - resources: ["endpoints"] - verbs: ["create"] - - apiGroups: [""] - resourceNames: ["kube-scheduler"] - resources: ["endpoints"] - verbs: ["delete", "get", "patch", "update"] - - apiGroups: [""] - resources: ["nodes"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["pods"] - verbs: ["delete", "get", "list", "watch"] - - apiGroups: [""] - resources: ["bindings", "pods/binding"] - verbs: ["create"] - - apiGroups: [""] - resources: ["pods/status"] - verbs: ["patch", "update"] - - apiGroups: [""] - resources: ["replicationcontrollers", "services"] - verbs: ["get", "list", "watch"] - - apiGroups: ["apps", "extensions"] - resources: ["replicasets"] - verbs: ["get", "list", "watch"] - - apiGroups: ["apps"] - resources: ["statefulsets"] - verbs: ["get", "list", "watch"] - - apiGroups: ["policy"] - resources: ["poddisruptionbudgets"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["persistentvolumeclaims", "persistentvolumes"] - verbs: ["get", "list", "watch"] - - apiGroups: ["storage.k8s.io"] - resources: ["storageclasses", "csinodes", "csidrivers", "csistoragecapacities"] - verbs: ["get", "list", "watch"] - - apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["create", "update", "get", "list", "watch"] ---- -kind: ClusterRoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - name: stork-scheduler-role-binding -subjects: - - kind: ServiceAccount - name: stork-scheduler-account - namespace: kube-system -roleRef: - kind: ClusterRole - name: stork-scheduler-role - apiGroup: rbac.authorization.k8s.io ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - component: scheduler - tier: control-plane - name: stork-scheduler - namespace: kube-system -spec: - replicas: 3 - selector: - matchLabels: - component: scheduler - tier: control-plane - template: - metadata: - labels: - component: scheduler - tier: control-plane - name: stork-scheduler - spec: - containers: - - command: - - /usr/local/bin/kube-scheduler - - --address=0.0.0.0 - - --leader-elect=true - - --scheduler-name=stork - - --policy-configmap=stork-config - - --policy-configmap-namespace=kube-system - - --lock-object-name=stork-scheduler - image: "{{ template "px.getk8sImages" . }}/kube-scheduler-amd64:v1.21.4" - livenessProbe: - httpGet: - path: /healthz - port: 10251 - initialDelaySeconds: 15 - name: stork-scheduler - readinessProbe: - httpGet: - path: /healthz - port: 10251 - resources: - requests: - cpu: '0.1' - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: "name" - operator: In - values: - - stork-scheduler - topologyKey: "kubernetes.io/hostname" - hostPID: false - serviceAccountName: stork-scheduler-account - {{- end }} diff --git a/charts/portworx/portworx/templates/serviceaccount-hook.yaml b/charts/portworx/portworx/templates/serviceaccount-hook.yaml deleted file mode 100644 index 758863039..000000000 --- a/charts/portworx/portworx/templates/serviceaccount-hook.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "px.hookServiceAccount" . }} - namespace: kube-system - annotations: - "helm.sh/hook-delete-policy": before-hook-creation - "helm.sh/hook": "post-install,pre-delete,post-delete" - labels: - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{.Release.Service | quote }} - app.kubernetes.io/instance: {{.Release.Name | quote }} - chart: "{{.Chart.Name}}-{{.Chart.Version}}" ---- -kind: ClusterRole -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - annotations: - "helm.sh/hook-delete-policy": before-hook-creation - "helm.sh/hook": "post-install,pre-delete,post-delete" - name: {{ template "px.hookClusterRole" . }} -rules: -- apiGroups: [""] - resources: ["nodes"] - verbs: ["patch", "get", "update", "list"] ---- -kind: ClusterRoleBinding -apiVersion: {{ template "rbac.apiVersion" . }} -metadata: - annotations: - "helm.sh/hook-delete-policy": before-hook-creation - "helm.sh/hook": "post-install,pre-delete,post-delete" - name: {{ template "px.hookClusterRoleBinding" . }} -subjects: -- kind: ServiceAccount - name: {{ template "px.hookServiceAccount" . }} - namespace: kube-system -roleRef: - kind: ClusterRole - name: {{ template "px.hookClusterRole" . }} - apiGroup: rbac.authorization.k8s.io diff --git a/charts/portworx/portworx/values.yaml b/charts/portworx/portworx/values.yaml deleted file mode 100644 index b76e5d40c..000000000 --- a/charts/portworx/portworx/values.yaml +++ /dev/null @@ -1,149 +0,0 @@ -# Please uncomment and specify values for these options as per your requirements. -kvdb: -ownEtcdOption: none -etcdAuth: none -etcdType: none # KVDB type - -etcd: - credentials: none:none # Username and password for ETCD authentication in the form user:password - ca: none # Name of CA file for ETCD authentication. server.ca - cert: none # Name of certificate for ETCD authentication. Should be server.crt - key: none # Name of certificate key for ETCD authentication Should be server.key -consul: - token: none # ACL token value used for Consul authentication. (example: 398073a8-5091-4d9c-871a-bbbeb030d1f6) -region: none # US or EU regions for Portworx hosted etcds - -dataInterface: none # Name of the interface -managementInterface: none # Name of the interface -platformOptions: none # AKS, EKS or GKE platforms - -customRegistryURL: -registrySecret: - -clusterName: mycluster # This is the default. please change it to your cluster name. -secretType: k8s # Defaults to None, but can be AWS / KVDB / Vault. -envVars: none # NOTE: This is a ";" seperated list of environment variables. For eg: MYENV1=myvalue1;MYENV2=myvalue2 -stork: true # Use Stork https://docs.portworx.com/scheduler/kubernetes/stork.html for hyperconvergence. -storkVersion: 2.12.0 - -deployOnMaster: false # For POC only -csi: false # Enable CSI -openshiftInstall: false -AKSorEKSInstall: false -serviceAccount: - hook: - create: true - name: - -deploymentType: oci # accepts "oci" or "docker" -imageType: none # -imageVersion: 2.11.4 # Version of the PX Image. - -result: none -environment: none -onpremStorage: none - -maxStorageNodes: none -journalDevice: none - -usefileSystemDrive: false # true/false Instructs PX to use an unmounted Drive even if it has a filesystem. -usedrivesAndPartitions: false # Use unmounted disks even if they have a partition or filesystem on it. PX will never use a drive or partition that is mounted. (useDrivesAndPartitions) - -provider: none -deviceConfig: none - -drive_1: - aws: - type: none - size: none - iops: none - gc: - type: standard - size: 1000 - -drive_2: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_3: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_4: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_5: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_6: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_7: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_8: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_9: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -drive_10: - aws: - type: none - size: none - iops: none - gc: - type: none - size: none - -existingDisk1: none -existingDisk2: none -existingDisk3: none -existingDisk4: none -existingDisk5: none diff --git a/index.yaml b/index.yaml index a623faded..dcc8dd5d9 100644 --- a/index.yaml +++ b/index.yaml @@ -54209,338 +54209,6 @@ entries: urls: - assets/portshift-operator/portshift-operator-0.1.000.tgz version: 0.1.000 - portworx: - - annotations: - catalog.cattle.io/certified: partner - catalog.cattle.io/display-name: Portworx - catalog.cattle.io/kube-version: '>=1.16.0-0' - catalog.cattle.io/release-name: portworx - apiVersion: v1 - appVersion: 2.11.4 - created: "2022-11-02T15:38:11.94506-04:00" - description: A Helm chart for installing Portworx on Kubernetes. - digest: 7ca56fde1664c1bfdb062a1d1482d93c795efabe21d36702023f39059e50eaf5 - home: https://portworx.com/ - icon: https://raw.githubusercontent.com/portworx/helm/master/doc/media/k8s-porx.png - keywords: - - Storage - - ICP - - persistent disk - - pvc - - cloud native storage - - persistent storage - - portworx - - amd64 - maintainers: - - email: hadesai@purestorage.com - name: harsh-px - - email: onaumov@purestorage.com - name: trierra - - email: tasharma@purestorage.com - name: sharma-tapas - - email: dahuang@purestorage.com - name: dahuang-purestorage - name: portworx - sources: - - https://github.com/portworx/charts-rancher/tree/master/stable - urls: - - assets/portworx/portworx-2.11.4.tgz - version: 2.11.4 - - annotations: - catalog.cattle.io/certified: partner - catalog.cattle.io/display-name: Portworx - catalog.cattle.io/kube-version: '>=1.16.0-0' - catalog.cattle.io/release-name: portworx - apiVersion: v1 - appVersion: 2.10.3 - created: "2022-08-22T20:51:51.539418-04:00" - description: A Helm chart for installing Portworx on Kubernetes. - digest: 972319508ca97f9ece382c1688dbbdd0f69611c883186560e5964c92f8c781ee - home: https://portworx.com/ - icon: https://raw.githubusercontent.com/portworx/helm/master/doc/media/k8s-porx.png - keywords: - - Storage - - ICP - - persistent disk - - pvc - - cloud native storage - - persistent storage - - portworx - - amd64 - maintainers: - - email: hadesai@purestorage.com - name: harsh-px - - email: onaumov@purestorage.com - name: trierra - - email: tasharma@purestorage.com - name: sharma-tapas - - email: dahuang@purestorage.com - name: dahuang-purestorage - name: portworx - sources: - - https://github.com/portworx/charts-rancher/tree/master/stable - urls: - - assets/portworx/portworx-2.10.3.tgz - version: 2.10.3 - - annotations: - catalog.cattle.io/certified: partner - catalog.cattle.io/display-name: Portworx - catalog.cattle.io/release-name: portworx - apiVersion: v1 - appVersion: "2.9" - created: "2022-06-16T14:25:31.633584-04:00" - description: A Helm chart for installing Portworx on Kubernetes. - digest: a44698f46c5b43abf1b69cbf0ba278db7a5f3962e20b0feedec078fef07fbc79 - home: https://portworx.com/ - icon: https://raw.githubusercontent.com/portworx/helm/master/doc/media/k8s-porx.png - keywords: - - Storage - - ICP - - persistent disk - - pvc - - cloud native storage - - persistent storage - - portworx - - amd64 - kubeVersion: '>=1.16.0-0' - maintainers: - - email: hadesai@purestorage.com - name: harsh-px - - email: onaumov@purestorage.com - name: trierra - - email: tasharma@purestorage.com - name: sharma-tapas - - email: dahuang@purestorage.com - name: dahuang-purestorage - name: portworx - sources: - - https://github.com/portworx/charts-rancher/tree/master/stable - urls: - - assets/portworx/portworx-2.9.101.tgz - version: 2.9.101 - - annotations: - catalog.cattle.io/certified: partner - catalog.cattle.io/display-name: Portworx - catalog.cattle.io/release-name: portworx - apiVersion: v1 - appVersion: 2.9.1 - created: "2022-04-12T23:42:58.45929058-06:00" - description: A Helm chart for installing Portworx on Kubernetes. - digest: 139b59da3fcef4600a624effd3f1db9355299ddb18ddd99dfb47a2ba58643c0e - home: https://portworx.com/ - icon: https://raw.githubusercontent.com/portworx/helm/master/doc/media/k8s-porx.png - keywords: - - Storage - - ICP - - persistent disk - - pvc - - cloud native storage - - persistent storage - - portworx - - amd64 - kubeVersion: '>=1.16.0' - maintainers: - - email: hadesai@purestorage.com - name: harsh-px - - email: onaumov@purestorage.com - name: trierra - - email: tasharma@purestorage.com - name: sharma-tapas - - email: dahuang@purestorage.com - name: dahuang-purestorage - name: portworx - sources: - - https://github.com/portworx/charts-rancher/tree/master/stable - urls: - - assets/portworx/portworx-2.9.100.tgz - version: 2.9.100 - - annotations: - catalog.cattle.io/certified: partner - catalog.cattle.io/display-name: Portworx - catalog.cattle.io/release-name: portworx - apiVersion: v1 - appVersion: "2.8" - created: "2021-12-03T16:12:21.938192593-07:00" - description: A Helm chart for installing Portworx on Kubernetes. - digest: fb91976efad7934229cc1bf943bd95c73bff4a843524abddbfc232471d62daf6 - home: https://portworx.com/ - icon: https://raw.githubusercontent.com/portworx/helm/master/doc/media/k8s-porx.png - keywords: - - Storage - - ICP - - persistent disk - - pvc - - cloud native storage - - persistent storage - - portworx - - amd64 - kubeVersion: '>=1.16.0' - maintainers: - - email: hadesai@purestorage.com - name: harsh-px - - email: onaumov@purestorage.com - name: trierra - - email: tasharma@purestorage.com - name: sharma-tapas - - email: dahuang@purestorage.com - name: dahuang-purestorage - name: portworx - sources: - - https://github.com/portworx/charts-rancher/tree/master/stable - urls: - - assets/portworx/portworx-2.8.100.tgz - version: 2.8.100 - - annotations: - catalog.cattle.io/certified: partner - catalog.cattle.io/display-name: Portworx - catalog.cattle.io/release-name: portworx - apiVersion: v1 - appVersion: "2.8" - created: "2021-10-18T16:40:31.81601163-06:00" - description: A Helm chart for installing Portworx on Kubernetes. - digest: 4adfeefffca1f87f88a0003811dbac0d1446370c910c9dc7961de0a1a16f29fa - home: https://portworx.com/ - icon: https://raw.githubusercontent.com/portworx/helm/master/doc/media/k8s-porx.png - keywords: - - Storage - - ICP - - persistent disk - - pvc - - cloud native storage - - persistent storage - - portworx - - amd64 - kubeVersion: '>=1.16.0' - maintainers: - - email: hadesai@purestorage.com - name: harsh-px - - email: onaumov@purestorage.com - name: trierra - - email: tasharma@purestorage.com - name: sharma-tapas - - email: dahuang@purestorage.com - name: dahuang-purestorage - name: portworx - sources: - - https://github.com/portworx/helm - urls: - - assets/portworx/portworx-2.8.0.tgz - version: 2.8.0 - portworx-essentials: - - annotations: - catalog.cattle.io/certified: partner - catalog.cattle.io/display-name: Portworx Essentials - catalog.cattle.io/kube-version: '>=1.16.0-0' - catalog.cattle.io/release-name: portworx-essentials - apiVersion: v1 - appVersion: 2.11.4 - created: "2022-11-02T15:38:11.950909-04:00" - description: A Helm chart for installing Portworx Essentials on Kubernetes. - digest: 69c3db6382d1dd68ce919ebce2c0117cab478c211514a9ebc9b26a6f6dc36a0c - home: https://portworx.com/ - icon: https://raw.githubusercontent.com/portworx/helm/master/doc/media/k8s-porx.png - keywords: - - Storage - - ICP - - persistent disk - - pvc - - cloud native storage - - persistent storage - - portworx - - amd64 - - portworx essentials - - free - maintainers: - - email: hadesai@purestorage.com - name: harsh-px - - email: onaumov@purestorage.com - name: trierra - - email: tasharma@purestorage.com - name: sharma-tapas - - email: dahuang@purestorage.com - name: dahuang-purestorage - name: portworx-essentials - sources: - - https://github.com/portworx/charts-rancher/tree/master/stable - urls: - - assets/portworx/portworx-essentials-2.11.4.tgz - version: 2.11.4 - - annotations: - catalog.cattle.io/certified: partner - catalog.cattle.io/display-name: Portworx Essentials - catalog.cattle.io/kube-version: '>=1.16.0-0' - catalog.cattle.io/release-name: portworx-essentials - apiVersion: v1 - appVersion: 2.10.3 - created: "2022-08-22T20:52:42.575195-04:00" - description: A Helm chart for installing Portworx Essentials on Kubernetes. - digest: 28f1d3f4050b724e55dc04eca426fefce90c52372bee8b203a4b5fd89bf31b7e - home: https://portworx.com/ - icon: https://raw.githubusercontent.com/portworx/helm/master/doc/media/k8s-porx.png - keywords: - - Storage - - ICP - - persistent disk - - pvc - - cloud native storage - - persistent storage - - portworx - - amd64 - - portworx essentials - - free - maintainers: - - email: hadesai@purestorage.com - name: harsh-px - - email: onaumov@purestorage.com - name: trierra - - email: tasharma@purestorage.com - name: sharma-tapas - - email: dahuang@purestorage.com - name: dahuang-purestorage - name: portworx-essentials - sources: - - https://github.com/portworx/charts-rancher/tree/master/stable - urls: - - assets/portworx/portworx-essentials-2.10.3.tgz - version: 2.10.3 - - annotations: - catalog.cattle.io/certified: partner - catalog.cattle.io/display-name: Portworx Essentials - catalog.cattle.io/release-name: portworx-essentials - apiVersion: v1 - appVersion: "2.9" - created: "2022-06-08T18:39:47.60312875-06:00" - description: A Helm chart for installing Portworx Essentials on Kubernetes. - digest: dd8a4cac44e1c5f68f4568abcc76c6e7600a1ecb9a8ec345723f061cbfcbefc6 - home: https://portworx.com/ - icon: https://raw.githubusercontent.com/portworx/helm/master/doc/media/k8s-porx.png - keywords: - - Storage - - ICP - - persistent disk - - pvc - - cloud native storage - - persistent storage - - portworx - - amd64 - - portworx essentials - - free - kubeVersion: '>=1.16.0-0' - maintainers: - - email: hadesai@purestorage.com - name: harsh-px - - email: onaumov@purestorage.com - name: trierra - - email: tasharma@purestorage.com - name: sharma-tapas - - email: dahuang@purestorage.com - name: dahuang-purestorage - name: portworx-essentials - sources: - - https://github.com/portworx/charts-rancher/tree/master/stable - urls: - - assets/portworx/portworx-essentials-2.9.100.tgz - version: 2.9.100 postgresql: - annotations: catalog.cattle.io/certified: partner diff --git a/packages/portworx/portworx-essentials/upstream.yaml b/packages/portworx/portworx-essentials/upstream.yaml deleted file mode 100644 index ec6cc17b5..000000000 --- a/packages/portworx/portworx-essentials/upstream.yaml +++ /dev/null @@ -1,6 +0,0 @@ -HelmRepo: https://raw.githubusercontent.com/portworx/charts-rancher/master/stable -HelmChart: portworx-essentials -Vendor: Portworx -DisplayName: Portworx Essentials -ChartMetadata: - kubeVersion: '>=1.16.0-0' diff --git a/packages/portworx/portworx/upstream.yaml b/packages/portworx/portworx/upstream.yaml deleted file mode 100644 index f919b28f7..000000000 --- a/packages/portworx/portworx/upstream.yaml +++ /dev/null @@ -1,6 +0,0 @@ -HelmRepo: https://raw.githubusercontent.com/portworx/charts-rancher/master/stable -HelmChart: portworx -Vendor: Portworx -DisplayName: Portworx -ChartMetadata: - kubeVersion: '>=1.16.0-0'