ensure SCALE for freenas-api-* Probes, better sudo usage, prep v1.7.0
Signed-off-by: Travis Glenn Hansen <travisghansen@yahoo.com>
This commit is contained in:
		
							parent
							
								
									7041b7fe45
								
							
						
					
					
						commit
						bd08538a87
					
				|  | @ -129,8 +129,8 @@ jobs: | ||||||
|       - self-hosted |       - self-hosted | ||||||
|       - Linux |       - Linux | ||||||
|       - X64 |       - X64 | ||||||
|       #- csi-sanity-truenas |       - csi-sanity-truenas | ||||||
|       - csi-sanity-zfs-generic |       #- csi-sanity-zfs-generic | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v2 |       - uses: actions/checkout@v2 | ||||||
|       - uses: actions/download-artifact@v2 |       - uses: actions/download-artifact@v2 | ||||||
|  | @ -163,8 +163,8 @@ jobs: | ||||||
|       - self-hosted |       - self-hosted | ||||||
|       - Linux |       - Linux | ||||||
|       - X64 |       - X64 | ||||||
|       #- csi-sanity-truenas |       - csi-sanity-truenas | ||||||
|       - csi-sanity-zfs-generic |       #- csi-sanity-zfs-generic | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v2 |       - uses: actions/checkout@v2 | ||||||
|       - uses: actions/download-artifact@v2 |       - uses: actions/download-artifact@v2 | ||||||
|  | @ -196,8 +196,8 @@ jobs: | ||||||
|       - self-hosted |       - self-hosted | ||||||
|       - Linux |       - Linux | ||||||
|       - X64 |       - X64 | ||||||
|       #- csi-sanity-truenas |       - csi-sanity-truenas | ||||||
|       - csi-sanity-zfs-generic |       #- csi-sanity-zfs-generic | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v2 |       - uses: actions/checkout@v2 | ||||||
|       - uses: actions/download-artifact@v2 |       - uses: actions/download-artifact@v2 | ||||||
|  |  | ||||||
							
								
								
									
										27
									
								
								CHANGELOG.md
								
								
								
								
							
							
						
						
									
										27
									
								
								CHANGELOG.md
								
								
								
								
							|  | @ -1,3 +1,30 @@ | ||||||
|  | # v1.7.0 | ||||||
|  | 
 | ||||||
|  | Released 2022-06-05 | ||||||
|  | 
 | ||||||
|  | The windows release. | ||||||
|  | 
 | ||||||
|  | - windows smb, iscsi, and local-hostpath support | ||||||
|  | - ntfs, exfat, vfat fs support | ||||||
|  | - zfs-generic-smb driver | ||||||
|  | - synology improvements | ||||||
|  |   - DSM7 support | ||||||
|  |   - synology enhancements to allow templates to be configured at various | ||||||
|  |     'levels' | ||||||
|  | - testing improvements | ||||||
|  |   - support (for testing) generating volume_id from name | ||||||
|  |   - test all the smb variants | ||||||
|  |   - test all nfs/smb client drivers | ||||||
|  | - misc fixes | ||||||
|  |   - wait for chown/chmod jobs to complete (freenas) | ||||||
|  |   - general improvement to smb behavior throughout | ||||||
|  |   - better logging | ||||||
|  |   - better sudo logic throughout | ||||||
|  | - more robust logic for connecting to iscsi devices with partition tables | ||||||
|  | - massive performance improvement for ssh-based drivers (reusing existing | ||||||
|  |   connection instead of new connection per-command) | ||||||
|  | - dep bumps | ||||||
|  | 
 | ||||||
| # v1.6.3 | # v1.6.3 | ||||||
| 
 | 
 | ||||||
| Released 2022-04-08 | Released 2022-04-08 | ||||||
|  |  | ||||||
							
								
								
									
										40
									
								
								README.md
								
								
								
								
							
							
						
						
									
										40
									
								
								README.md
								
								
								
								
							|  | @ -64,6 +64,16 @@ Predominantly 3 things are needed: | ||||||
| 
 | 
 | ||||||
| You should install/configure the requirements for both nfs and iscsi. | You should install/configure the requirements for both nfs and iscsi. | ||||||
| 
 | 
 | ||||||
|  | ### cifs | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | RHEL / CentOS | ||||||
|  | sudo yum install -y cifs-utils | ||||||
|  | 
 | ||||||
|  | Ubuntu / Debian | ||||||
|  | sudo apt-get install -y cifs-utils | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| ### nfs | ### nfs | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
|  | @ -176,6 +186,35 @@ volume is/was provisioned. | ||||||
| The nature of this `driver` also prevents the enforcement of quotas. In short | The nature of this `driver` also prevents the enforcement of quotas. In short | ||||||
| the requested volume size is generally ignored. | the requested volume size is generally ignored. | ||||||
| 
 | 
 | ||||||
|  | ### windows | ||||||
|  | 
 | ||||||
|  | Support for Windows was introduced in `v1.7.0`. Currently support is limited | ||||||
|  | to kubernetes nodes capabale of running `HostProcess` containers. Support was | ||||||
|  | tested against `Windows Server 2019` using `rke2-v1.24`. Currently any of the | ||||||
|  | `-smb` and `-iscsi` drivers will work. Support for `ntfs` was added to the | ||||||
|  | linux nodes as well (using the `ntfs3` driver) so volumes created can be | ||||||
|  | utilized by nodes with either operating system (in the case of `cifs` by both | ||||||
|  | simultaneously). | ||||||
|  | 
 | ||||||
|  | Due to current limits in the kubernetes tooling it is not possible to use the | ||||||
|  | `local-hostpath` driver but support is implemented in this project and will | ||||||
|  | work as soon as kubernetes support is available. | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | # ensure all updates are installed | ||||||
|  | 
 | ||||||
|  | # enable the container feature | ||||||
|  | Enable-WindowsOptionalFeature -Online -FeatureName Containers –All | ||||||
|  | 
 | ||||||
|  | # create symbolic link due to current limitations in the driver-registrar container | ||||||
|  | New-Item -ItemType SymbolicLink -Path "C:\registration\" -Target "C:\var\lib\kubelet\plugins_registry\" | ||||||
|  | 
 | ||||||
|  | # install a HostProcess compatible kubernetes | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | - https://kubernetes.io/blog/2021/08/16/windows-hostprocess-containers/ | ||||||
|  | - https://kubernetes.io/docs/tasks/configure-pod-container/create-hostprocess-pod/ | ||||||
|  | 
 | ||||||
| ## Server Prep | ## Server Prep | ||||||
| 
 | 
 | ||||||
| Server preparation depends slightly on which `driver` you are using. | Server preparation depends slightly on which `driver` you are using. | ||||||
|  | @ -201,6 +240,7 @@ Ensure the following services are configurged and running: | ||||||
| - ensure `zsh`, `bash`, or `sh` is set as the root shell, `csh` gives false errors due to quoting | - ensure `zsh`, `bash`, or `sh` is set as the root shell, `csh` gives false errors due to quoting | ||||||
| - nfs | - nfs | ||||||
| - iscsi | - iscsi | ||||||
|  | 
 | ||||||
|   - (fixed in 12.0-U2+) when using the FreeNAS API concurrently the |   - (fixed in 12.0-U2+) when using the FreeNAS API concurrently the | ||||||
|     `/etc/ctl.conf` file on the server can become invalid, some sample scripts |     `/etc/ctl.conf` file on the server can become invalid, some sample scripts | ||||||
|     are provided in the `contrib` directory to clean things up ie: copy the |     are provided in the `contrib` directory to clean things up ie: copy the | ||||||
|  |  | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -2107,6 +2107,7 @@ class FreeNASApiDriver extends CsiBaseDriver { | ||||||
|    */ |    */ | ||||||
|   async Probe(call) { |   async Probe(call) { | ||||||
|     const driver = this; |     const driver = this; | ||||||
|  |     const httpApiClient = await driver.getTrueNASHttpApiClient(); | ||||||
| 
 | 
 | ||||||
|     if (driver.ctx.args.csiMode.includes("controller")) { |     if (driver.ctx.args.csiMode.includes("controller")) { | ||||||
|       let datasetParentName = this.getVolumeParentDatasetName() + "/"; |       let datasetParentName = this.getVolumeParentDatasetName() + "/"; | ||||||
|  | @ -2121,6 +2122,14 @@ class FreeNASApiDriver extends CsiBaseDriver { | ||||||
|           `datasetParentName and detachedSnapshotsDatasetParentName must not overlap` |           `datasetParentName and detachedSnapshotsDatasetParentName must not overlap` | ||||||
|         ); |         ); | ||||||
|       } |       } | ||||||
|  | 
 | ||||||
|  |       if (!(await httpApiClient.getIsScale())) { | ||||||
|  |         throw new GrpcError( | ||||||
|  |           grpc.status.FAILED_PRECONDITION, | ||||||
|  |           `driver is only availalbe with TrueNAS SCALE` | ||||||
|  |         ); | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|       return { ready: { value: true } }; |       return { ready: { value: true } }; | ||||||
|     } else { |     } else { | ||||||
|       return { ready: { value: true } }; |       return { ready: { value: true } }; | ||||||
|  |  | ||||||
|  | @ -1147,14 +1147,23 @@ class Zetabyte { | ||||||
|         if (arguments.length < 4) throw Error("Invalid arguments"); |         if (arguments.length < 4) throw Error("Invalid arguments"); | ||||||
| 
 | 
 | ||||||
|         return new Promise((resolve, reject) => { |         return new Promise((resolve, reject) => { | ||||||
|  |           // specially handle sudo here to avoid the need for using sudo on the whole script
 | ||||||
|  |           // but rather limit sudo access to only the zfs command
 | ||||||
|  |           let use_sudo = zb.options.sudo; | ||||||
|           let args = ["-c"]; |           let args = ["-c"]; | ||||||
|           let command = []; |           let command = []; | ||||||
|  |           if (use_sudo) { | ||||||
|  |             command = command.concat(zb.options.paths.sudo); | ||||||
|  |           } | ||||||
|           command = command.concat(["zfs", "send"]); |           command = command.concat(["zfs", "send"]); | ||||||
|           command = command.concat(send_options); |           command = command.concat(send_options); | ||||||
|           command.push(source); |           command.push(source); | ||||||
| 
 | 
 | ||||||
|           command.push("|"); |           command.push("|"); | ||||||
| 
 | 
 | ||||||
|  |           if (use_sudo) { | ||||||
|  |             command = command.concat(zb.options.paths.sudo); | ||||||
|  |           } | ||||||
|           command = command.concat(["zfs", "receive"]); |           command = command.concat(["zfs", "receive"]); | ||||||
|           command = command.concat(receive_options); |           command = command.concat(receive_options); | ||||||
|           command.push(target); |           command.push(target); | ||||||
|  | @ -1164,7 +1173,7 @@ class Zetabyte { | ||||||
|           zb.exec( |           zb.exec( | ||||||
|             "/bin/sh", |             "/bin/sh", | ||||||
|             args, |             args, | ||||||
|             { timeout: zb.options.timeout }, |             { timeout: zb.options.timeout, sudo: false }, | ||||||
|             function (error, stdout, stderr) { |             function (error, stdout, stderr) { | ||||||
|               if (error) return reject(zb.helpers.zfsError(error, stderr)); |               if (error) return reject(zb.helpers.zfsError(error, stderr)); | ||||||
|               return resolve(stdout); |               return resolve(stdout); | ||||||
|  | @ -1550,7 +1559,12 @@ class Zetabyte { | ||||||
|       command = zb.options.paths.chroot; |       command = zb.options.paths.chroot; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (zb.options.sudo) { |     let use_sudo = zb.options.sudo; | ||||||
|  |     if (options && options.hasOwnProperty("sudo")) { | ||||||
|  |       use_sudo = options.sudo; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (use_sudo) { | ||||||
|       args = args || []; |       args = args || []; | ||||||
|       args.unshift(command); |       args.unshift(command); | ||||||
|       command = zb.options.paths.sudo; |       command = zb.options.paths.sudo; | ||||||
|  | @ -1558,11 +1572,13 @@ class Zetabyte { | ||||||
| 
 | 
 | ||||||
|     if (zb.options.log_commands) { |     if (zb.options.log_commands) { | ||||||
|       if (typeof zb.options.logger.verbose != "function") { |       if (typeof zb.options.logger.verbose != "function") { | ||||||
|         zb.options.logger.verbose = function() { |         zb.options.logger.verbose = function () { | ||||||
|           console.debug(...arguments); |           console.debug(...arguments); | ||||||
|  |         }; | ||||||
|       } |       } | ||||||
|       } |       zb.options.logger.verbose( | ||||||
|       zb.options.logger.verbose(`executing zfs command: ${command} ${args.join(" ")}`); |         `executing zfs command: ${command} ${args.join(" ")}` | ||||||
|  |       ); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     const child = zb.options.executor.spawn(command, args, options); |     const child = zb.options.executor.spawn(command, args, options); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue