Skip to content

Commit

Permalink
add minio enterprise
Browse files Browse the repository at this point in the history
  • Loading branch information
stavros-k committed May 14, 2024
1 parent 8cc6e2c commit f8fa081
Show file tree
Hide file tree
Showing 9 changed files with 773 additions and 0 deletions.
17 changes: 17 additions & 0 deletions ix-dev/enterprise/minio/app.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: minio
train: enterprise
lib_version: 1.0.0
version: 1.0.0

title: MinIO
description: High Performance, Kubernetes Native Object Storage
containerVersion: "2023-12-07"
home: https://min.io
icon: https://media.sys.truenas.net/apps/minio/icons/icon.png
sources:
- https://github.com/minio/minio
keywords:
- object storage
- minio
- cloud
- s3
338 changes: 338 additions & 0 deletions ix-dev/enterprise/minio/questions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,338 @@
# groups:
# - name: MinIO Credentials
# description: Configure Credentials for MinIO
# - name: User and Group Configuration
# description: Configure User and Group for MinIO
# - name: Network Configuration
# description: Configure Network for MinIO
# - name: Storage Configuration
# description: Configure Storage for MinIO
# - name: MultiMode Configuration
# description: Configure MultiMode for MinIO
# - name: MinIO Logging
# description: Configure Logging for MinIO
# - name: Resources Configuration
# description: Configure Resources for MinIO

questions:
- variable: minio
label: ""
group: MinIO Configuration
schema:
type: dict
attrs:
- variable: access_key
label: Access Key
description: The access key for the root user.
schema:
type: string
min_length: 5
required: true
private: true
- variable: secret_key
label: Secret Key
description: The secret key for the root user.
schema:
type: string
min_length: 8
required: true
private: true
- variable: user
label: User ID
description: The user id that MinIO will run as.
schema:
type: int
min: 568
default: 568
required: true
- variable: group
label: Group ID
description: The group id that MinIO will run as.
schema:
type: int
min: 568
default: 568
required: true
- variable: logging
label: Logging
description: Logging configuration
schema:
type: dict
attrs:
- variable: quiet
label: Quiet
description: Disables startup information.
schema:
type: boolean
default: false
- variable: anonymous
label: Anonymous
description: Hides sensitive information from logging.
schema:
type: boolean
default: false

- variable: network
label: ""
group: Network Configuration
schema:
type: dict
attrs:
- variable: api_port
label: API Port
description: The port for the MinIO API.
schema:
type: int
default: 30000
min: 9000
max: 65535
required: true
- variable: console_port
label: Console Port (Web UI)
description: The port for the MinIO Web UI.
schema:
type: int
default: 30001
min: 9000
max: 65535
required: true
- variable: server_url
label: Server URL
description: |
The URL that console will use to reach API</br>
For example https://minio1.example.com.</br></br>
schema:
type: string
required: true
- variable: console_url
label: Console URL
description: |
The URL that console will provide as a redirect URL</br>
For example https://console.example.com.</br></br>
schema:
type: string
required: true
- variable: certificate_id
label: Certificate
description: The certificate to use for MinIO
schema:
type: int
"null": true
$ref:
- "definitions/certificate"

- variable: logsearch
label: LogSearch Configuration
description: LogSearch Configuration
schema:
type: dict
attrs:
- variable: enabled
label: Enabled
description: Enable LogSearch
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: disk_capacity_gb
label: Disk Capacity
description: The disk capacity for LogSearch
schema:
type: int
default: 10
min: 1
- variable: postgres_password
label: Postgres Password
description: The password for Postgres
schema:
type: string
min_length: 8
required: true
private: true
- variable: postgres_data
label: Postgres Data
description: Postgres Data Configuration
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
default: host_path
enum:
- value: host_path
description: Host Path (Path that already exists on the system)
- value: ix_volume
description: ixVolume (Dataset created automatically by the system)
# TODO: Add knob(s) for auto-fixing permissions and ACLs
- variable: host_path_config
label: Host Path Configuration
schema:
type: dict
show_if: [["type", "=", "host_path"]]
attrs:
- variable: path
label: Path
description: Path on the host
schema:
type: hostpath
required: true
- variable: ix_volume_config
label: iX Volume Configuration
schema:
type: dict
show_if: [["type", "=", "ix_volume"]]
attrs:
- variable: dataset_name
label: Dataset Name
schema:
type: string
required: true
hidden: true
immutable: true
default: "postgres-data"
$ref:
- "normalize/ixVolume"

- variable: multi_mode
label: Multi Mode (SNMD or MNMD) Configuration
group: MultiMode Configuration
description: |
For Single Node Multi Drive (SNMD), the entry will look like this:</br>
Example Entry - /data{1...4}</br></br>
For Multi Node Multi Drive (MNMD), the entry will look like this:</br>
Example Entry - https://minio{1...3}.example.com:30000/data{1...4}</br></br>
Note that each host must use the same port number and the same number of storage items.</br>
In both cases /data{1...4} is the directories to be used for MinIO.
You have to add additional storage for each data entry.
schema:
type: dict
attrs:
- variable: enabled
label: Enabled
description: Enable Multi Mode
schema:
type: boolean
default: false
- variable: items
label: Multi Mode (SNMD or MNMD) Entries
schema:
type: list
show_if: [["enabled", "=", true]]
default: []
items:
- variable: item
label: ""
schema:
type: string
required: true

- variable: storage
label: ""
group: Storage Configuration
schema:
type: list
default:
[
{
"type": "ix_volume",
"mount_path": "/data1",
"dataset_name": "data1",
},
]
empty: false
required: true
items:
- variable: item
label: ""
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
default: host_path
enum:
- value: host_path
description: Host Path (Path that already exists on the system)
- value: ix_volume
description: ixVolume (Dataset created automatically by the system)
- variable: mount_path
label: Mount Path
description: The path inside the container to mount the storage.
schema:
type: path
required: true
immutable: true
default: /data1
# TODO: Add knob(s) for auto-fixing permissions and ACLs
- variable: host_path_config
label: Host Path Configuration
schema:
type: dict
show_if: [["type", "=", "host_path"]]
attrs:
- variable: path
label: Path
description: Path on the host
schema:
type: hostpath
required: true
- variable: ix_volume_config
label: iX Volume Configuration
schema:
type: dict
show_if: [["type", "=", "ix_volume"]]
attrs:
- variable: dataset_name
label: Dataset Name
schema:
type: string
required: true
immutable: true
default: "data1"
$ref:
- "normalize/ixVolume"

- variable: resources
label: ""
group: Resources Configuration
schema:
type: dict
attrs:
- variable: limits
label: Limits
schema:
type: dict
attrs:
- variable: cpus
label: CPUs
description: CPUs limit for MinIO.
schema:
type: int
default: 2
required: true
- variable: memory
label: Memory
description: Memory limit for MinIO.
schema:
type: string
max_length: 12
valid_chars: "^[1-9][0-9]*(([GMK]B?)|([gmk]b?))$"
valid_chars_error: |
Valid Memory limit formats are</br>
- Suffixed with G/M/K or g/m/k - eg. 1G or 1g</br>
- Suffixed with G/M/K or g/m/k and ended with B/b - eg. 1gb or 1GB</br>
default: "4gb"
required: true
Loading

0 comments on commit f8fa081

Please sign in to comment.