Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenNebula/engineering#156: Lithops Service Template #18

Merged
merged 3 commits into from
Jan 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
name: Lithops Service - Client
version: 6.10.0-2-20241018
publisher: OpenNebula Systems
description: |-
Appliance with preinstalled [Lithops](https://lithops-cloud.github.io/docs/).

See the dedicated [documentation](https://github.com/OpenNebula/marketplace-community/wiki/lithops_intro).
short_description: Appliance with preinstalled Lithops for KVM hosts
tags:
- lithops
- big-data
- analytics
- ubuntu
- service
type: VMTEMPLATE
format: qcow2
creation_time: 1734631373
os-id: Ubuntu
os-release: '22.04 LTS'
os-arch: x86_64
hypervisor: KVM
opennebula_version: 6.8, 6.10
opennebula_template:
context:
fallback_dns: '$FALLBACK_DNS'
fallback_gw: '$FALLBACK_GW'
network: 'YES'
oneapp_lithops_backend: '$ONEAPP_LITHOPS_BACKEND'
oneapp_lithops_standalone: 'NO'
oneapp_lithops_storage: '$ONEAPP_LITHOPS_STORAGE'
oneapp_minio_access_key_id: '$ONEAPP_MINIO_ACCESS_KEY_ID"'
oneapp_minio_bucket: '$ONEAPP_MINIO_BUCKET'
oneapp_minio_endpoint: '$ONEAPP_MINIO_ENDPOINT'
oneapp_minio_endpoint_cert: '$ONEAPP_MINIO_ENDPOINT_CERT'
oneapp_minio_secret_access_key: '$ONEAPP_MINIO_SECRET_ACCESS_KEY'
oneapp_onebe_autoscale: '$ONEAPP_ONEBE_AUTOSCALE'
oneapp_onebe_docker_password: '$ONEAPP_ONEBE_DOCKER_PASSWORD'
oneapp_onebe_docker_user: '$ONEAPP_ONEBE_DOCKER_USER'
oneapp_onebe_jupyter_password: '$ONEAPP_ONEBE_JUPYTER_PASSWORD'
oneapp_onebe_kubecfg_path: '$ONEAPP_ONEBE_KUBECFG_PATH'
oneapp_onebe_runtime_cpu: '$ONEAPP_ONEBE_RUNTIME_CPU'
oneapp_onebe_runtime_memory: '$ONEAPP_ONEBE_RUNTIME_MEMORY'
report_ready: 'YES'
start_script_base64: "bWtkaXIgL21udC9jb250ZXh0Cm1vdW50IC9kZXYvY2Ryb20gL21udC9jb250ZXh0"
ssh_public_key: "$USER[SSH_PUBLIC_KEY]"
token: 'YES'
cpu: '1'
graphics:
listen: 0.0.0.0
type: vnc
inputs_order: >-
ONEAPP_LITHOPS_BACKEND,ONEAPP_LITHOPS_STORAGE,ONEAPP_MINIO_ENDPOINT,ONEAPP_MINIO_ACCESS_KEY_ID,ONEAPP_MINIO_SECRET_ACCESS_KEY,ONEAPP_MINIO_BUCKET,ONEAPP_MINIO_ENDPOINT_CERT,ONEAPP_ONEBE_KUBECFG_PATH,ONEAPP_ONEBE_DOCKER_USER,ONEAPP_ONEBE_DOCKER_PASSWORD,ONEAPP_ONEBE_JUPYTER_PASSWORD,ONEAPP_ONEBE_AUTOSCALE
memory: '768'
os:
arch: x86_64
logo: images/logos/lithops.png
user_inputs:
oneapp_lithops_backend: "O|text|Compute backend| |localhost"
oneapp_lithops_storage: "O|text|Storage backend| |localhost"
oneapp_minio_endpoint: "O|text|MinIO endpoint URL| |"
oneapp_minio_access_key_id: "O|text|MinIO account user access key| |"
oneapp_minio_secret_access_key: "O|text|MinIO account user secret access key| |"
oneapp_minio_bucket: "O|text|MinIO bucket name| |"
oneapp_minio_endpoint_cert: "O|text64|CA certificate for MinIO connection| |"
oneapp_onebe_docker_user: "M|text|Docker user for Lithops||"
oneapp_onebe_docker_password: "M|password|Docker user password for Lithops||"
oneapp_onebe_kubecfg_path: "O|text|Path where kubeconfig file will be stored||"
oneapp_onebe_jupyter_password: "M|password|Password for Jupyter access||"
oneapp_onebe_autoscale: "0|text|Lithops backend autoscale option||all"
logo: lithops.png
disks:
- "Service Lithops"
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
name: Lithops Service - MinIO
version: 6.10.0-2-20241018
publisher: OpenNebula Systems
description: |-
Appliance with preinstalled [MinIO](https://min.io/docs/minio/linux/index.html).

See the dedicated [documentation](https://github.com/OpenNebula/one-apps/wiki/minio_quick).
short_description: Appliance with preinstalled MinIO server for KVM hosts
tags:
- minio
- storage
- ubuntu
- service
format: qcow2
creation_time: 1734631373
os-id: Ubuntu
os-release: 22.04 LTS
os-arch: x86_64
hypervisor: KVM
opennebula_version: 6.4, 6.8, 6.10
opennebula_template:
context:
fallback_gw: "$FALLBACK_GW"
fallback_dns: "$FALLBACK_DNS"
network: 'YES'
oneapp_minio_hostname: "$ONEAPP_MINIO_HOSTNAME"
oneapp_minio_multi: "YES"
oneapp_minio_opts: "$ONEAPP_MINIO_OPTS"
oneapp_minio_root_password: "$ONEAPP_MINIO_ROOT_PASSWORD"
oneapp_minio_root_user: "$ONEAPP_MINIO_ROOT_USER"
oneapp_minio_tls_enabled: "$ONEAPP_MINIO_TLS_ENABLED"
oneapp_minio_tls_cert: "$ONEAPP_MINIO_TLS_CERT"
oneapp_minio_tls_key: "$ONEAPP_MINIO_TLS_KEY"
report_ready: "YES"
ssh_public_key: "$USER[SSH_PUBLIC_KEY]"
cpu: '1'
graphics:
listen: 0.0.0.0
type: vnc
inputs_order: >-
ONEAPP_MINIO_HOSTNAME,ONEAPP_MINIO_ROOT_USER,ONEAPP_MINIO_ROOT_PASSWORD,ONEAPP_MINIO_OPTS,ONEAPP_MINIO_TLS_ENABLED,ONEAPP_MINIO_TLS_CERT,ONEAPP_MINIO_TLS_KEY
memory: '2048'
os:
arch: x86_64
logo: images/logos/minio.png
user_inputs:
oneapp_minio_hostname: >-
O|text|MinIO hostname for TLS certificate| |localhost,minio-*.example.net
oneapp_minio_opts: >-
O|text|Additional commandline options for MinIO server| |--console-address
:9001
oneapp_minio_root_password: O|password|Mv binIO root user password for
MinIO server
oneapp_minio_root_user: O|text|MinIO root user for MinIO server| |myminioadmin
oneapp_minio_tls_enabled: "M|boolean|Enable TLS configuration| |YES"
oneapp_minio_tls_cert: O|text64|MinIO TLS certificate (.crt)| |
oneapp_minio_tls_key: O|text64|MinIO TLS key (.key)| |
logo: minio.png
images:
- name: service_MinIO
url: >-
https://d24fmfybwxpuhu.cloudfront.net/service_MinIO-6.10.0-3-20241018.qcow2
type: OS
dev_prefix: vd
driver: qcow2
size: 2361393152
checksum:
md5: 300fc063bc34bebe682acd9267db5354
sha256: ab9434a7fe55cb7255f450b8e5b754978f5e747859de2e67713eb89b34c0f2fb
233 changes: 233 additions & 0 deletions appliances/LithopsService/651415b2-b890-4339-9ed6-ecd6c595321c.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,233 @@
---
name: Lithops Service Template
version: 6.10.0-2-20241018
publisher: OpenNebula Systems
description: |-
Lithops Service deployment using OneKE as compute backend and MinIO as storage backend, orchestrated by
[OneFlow](https://docs.opennebula.io/stable/management_and_operations/multivm_service_management/appflow_elasticity.html)

Requires
[OneFlow](https://docs.opennebula.io/stable/management_and_operations/multivm_service_management/overview.html)
and
[OneGate](https://docs.opennebula.io/stable/management_and_operations/multivm_service_management/onegate_usage.html)
OpenNebula components.

See the dedicated [documentation](https://github.com/OpenNebula/marketplace-community/wiki/lithops-service).

Based on VM templates
- [Lithops-Service](/appliance/01076f79-94be-4c8f-b57f-dec96d5d15a4)
- [MinIO Multi-Node](32450c33-3e40-41a3-a9df-03a3f0a614c1)
- [OneKE 1.29 VNF](https://marketplace.opennebula.io/appliance/883d974f-f30e-4fc8-aa06-e1af2a020e49)
- [OneKE 1.29](https://marketplace.opennebula.io/appliance/d6278d1b-66a4-4188-acd0-e2628296046e)
short_description: Multi-Node MinIO deployment for KVM hosts, orchestrated by OneFlow
tags:
- lithops
- computing
- big-data
- analytics
- ubuntu
- service
creation_time: 1734631373
os-id: Ubuntu
os-release: '22.04 LTS'
os-arch: x86_64
hypervisor: KVM
opennebula_version: 6.8, 6.10
type: 'SERVICE_TEMPLATE'
roles:
vnf: 'OneKE 1.29 VNF'
master: 'OneKE 1.29'
worker: 'OneKE 1.29'
minio: 'Lithops Service - MinIO'
lithops: 'Lithops Service - Client'
opennebula_template:
name: Service Lithops
deployment: straight
description: ''
roles:
- name: vnf
cardinality: 1
min_vms: 1
vm_template_contents: |
NIC = [
NAME = "NIC0",
NETWORK_ID = "$Public"
]
NIC = [
NAME = "NIC1",
NETWORK_ID = "$Private"
]
ONEAPP_VROUTER_ETH0_VIP0 = "$ONEAPP_VROUTER_ETH0_VIP0"
ONEAPP_VROUTER_ETH1_VIP0 = "$ONEAPP_VROUTER_ETH1_VIP0"
ONEAPP_VNF_HAPROXY_INTERFACES = "$ONEAPP_VNF_HAPROXY_INTERFACES"
ONEAPP_VNF_HAPROXY_REFRESH_RATE = "$ONEAPP_VNF_HAPROXY_REFRESH_RATE"
ONEAPP_VNF_HAPROXY_LB0_IP = "<ETH0_EP0>"
ONEAPP_VNF_HAPROXY_LB0_PORT = "$ONEAPP_VNF_HAPROXY_LB0_PORT"
ONEAPP_VNF_HAPROXY_LB1_IP = "<ETH0_EP0>"
ONEAPP_VNF_HAPROXY_LB1_PORT = "$ONEAPP_VNF_HAPROXY_LB1_PORT"
ONEAPP_VNF_HAPROXY_LB2_IP = "<ETH0_EP0>"
ONEAPP_VNF_HAPROXY_LB2_PORT = "$ONEAPP_VNF_HAPROXY_LB2_PORT"
ONEAPP_VNF_HAPROXY_LB3_IP = "<ETH0_EP0>"
ONEAPP_VNF_HAPROXY_LB3_PORT = "$ONEAPP_VNF_HAPROXY_LB3_PORT"
ONEAPP_VNF_DNS_ENABLED = "$ONEAPP_VNF_DNS_ENABLED"
ONEAPP_VNF_DNS_INTERFACES = "$ONEAPP_VNF_DNS_INTERFACES"
ONEAPP_VNF_DNS_NAMESERVERS = "$ONEAPP_VNF_DNS_NAMESERVERS"
ONEAPP_VNF_NAT4_ENABLED = "$ONEAPP_VNF_NAT4_ENABLED"
ONEAPP_VNF_NAT4_INTERFACES_OUT = "$ONEAPP_VNF_NAT4_INTERFACES_OUT"
ONEAPP_VNF_ROUTER4_ENABLED = "$ONEAPP_VNF_ROUTER4_ENABLED"
ONEAPP_VNF_ROUTER4_INTERFACES = "$ONEAPP_VNF_ROUTER4_INTERFACES""
cooldown: 120
elasticity_policies: []
scheduled_policies: []
- name: master
parents":
- vnf
cardinality: 1
min_vms: 1
vm_template_contents: |
NIC = [
NAME = "NIC0",
NETWORK_ID = "$Private"
]
FALLBACK_GW = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}"
FALLBACK_DNS = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}"
ONEAPP_VROUTER_ETH0_VIP0 = "$ONEAPP_VROUTER_ETH0_VIP0"
ONEAPP_VROUTER_ETH1_VIP0 = "$ONEAPP_VROUTER_ETH1_VIP0"
ONEAPP_RKE2_SUPERVISOR_EP = "$ONEAPP_RKE2_SUPERVISOR_EP"
ONEAPP_K8S_CONTROL_PLANE_EP = "$ONEAPP_K8S_CONTROL_PLANE_EP"
ONEAPP_K8S_EXTRA_SANS = "$ONEAPP_K8S_EXTRA_SANS"
ONEAPP_K8S_MULTUS_ENABLED = "$ONEAPP_K8S_MULTUS_ENABLED"
ONEAPP_K8S_MULTUS_CONFIG = "$ONEAPP_K8S_MULTUS_CONFIG"
ONEAPP_K8S_CNI_PLUGIN = "$ONEAPP_K8S_CNI_PLUGIN"
ONEAPP_K8S_CNI_CONFIG = "$ONEAPP_K8S_CNI_CONFIG"
ONEAPP_K8S_CILIUM_RANGE = "$ONEAPP_K8S_CILIUM_RANGE"
ONEAPP_K8S_LONGHORN_ENABLED = "$ONEAPP_K8S_LONGHORN_ENABLED"
ONEAPP_K8S_METALLB_ENABLED = "$ONEAPP_K8S_METALLB_ENABLED"
ONEAPP_K8S_METALLB_CONFIG = "$ONEAPP_K8S_METALLB_CONFIG"
ONEAPP_K8S_METALLB_RANGE = "$ONEAPP_K8S_METALLB_RANGE"
ONEAPP_K8S_TRAEFIK_ENABLED = "$ONEAPP_K8S_TRAEFIK_ENABLED"
ONEAPP_VNF_HAPROXY_LB0_IP = "<ETH0_EP0>"
ONEAPP_VNF_HAPROXY_LB0_PORT = "$ONEAPP_VNF_HAPROXY_LB0_PORT"
ONEAPP_VNF_HAPROXY_LB1_IP = "<ETH0_EP0>"
ONEAPP_VNF_HAPROXY_LB1_PORT = "$ONEAPP_VNF_HAPROXY_LB1_PORT"
ONEAPP_VNF_DNS_ENABLED = "$ONEAPP_VNF_DNS_ENABLED""
cooldown: 120
elasticity_policies: []
scheduled_policies: []
- name: worker
parents":
- vnf
cardinality: 1
vm_template_contents: |
NIC = [
NAME = "NIC0",
NETWORK_ID = "$Private"
]
FALLBACK_GW = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}"
FALLBACK_DNS = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}"
ONEAPP_VROUTER_ETH0_VIP0 = "$ONEAPP_VROUTER_ETH0_VIP0"
ONEAPP_VROUTER_ETH1_VIP0 = "$ONEAPP_VROUTER_ETH1_VIP0"
ONEAPP_RKE2_SUPERVISOR_EP = "$ONEAPP_RKE2_SUPERVISOR_EP"
ONEAPP_K8S_CONTROL_PLANE_EP = "$ONEAPP_K8S_CONTROL_PLANE_EP"
ONEAPP_K8S_MULTUS_ENABLED = "$ONEAPP_K8S_MULTUS_ENABLED"
ONEAPP_K8S_CNI_PLUGIN = "$ONEAPP_K8S_CNI_PLUGIN"
ONEAPP_K8S_LONGHORN_ENABLED = "$ONEAPP_K8S_LONGHORN_ENABLED"
ONEAPP_K8S_METALLB_ENABLED = "$ONEAPP_K8S_METALLB_ENABLED"
ONEAPP_K8S_TRAEFIK_ENABLED = "$ONEAPP_K8S_TRAEFIK_ENABLED"
ONEAPP_VNF_HAPROXY_LB0_PORT = "$ONEAPP_VNF_HAPROXY_LB0_PORT"
ONEAPP_VNF_HAPROXY_LB1_PORT = "$ONEAPP_VNF_HAPROXY_LB1_PORT"
ONEAPP_VNF_HAPROXY_LB2_IP = "<ETH0_EP0>"
ONEAPP_VNF_HAPROXY_LB2_PORT = "$ONEAPP_VNF_HAPROXY_LB2_PORT"
ONEAPP_VNF_HAPROXY_LB3_IP = "<ETH0_EP0>"
ONEAPP_VNF_HAPROXY_LB3_PORT = "$ONEAPP_VNF_HAPROXY_LB3_PORT"
ONEAPP_VNF_DNS_ENABLED = "$ONEAPP_VNF_DNS_ENABLED""
cooldown: 120
elasticity_policies: []
scheduled_policies: []
- name: minio
parents":
- vnf
cardinality: 1
vm_template_contents: |
NIC = [
NAME = "NIC0",
NETWORK_ID = "$Private"
]
FALLBACK_GW = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}"
FALLBACK_DNS = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}"
ONEAPP_MINIO_ROOT_USER="$ONEAPP_MINIO_ROOT_USER"
ONEAPP_MINIO_ROOT_PASSWORD="$ONEAPP_MINIO_ROOT_PASSWORD"
ONEAPP_MINIO_HOSTNAME="minio.opennebula.local"
ONEAPP_MINIO_TLS_ENABLED="NO""
cooldown: 120
elasticity_policies: []
scheduled_policies: []
- name: lithops
parents":
- vnf
master
minio
cardinality: 1
vm_template_contents: |
NIC = [
NAME = "NIC0",
NETWORK_ID = "$Private"
]
FALLBACK_GW = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}"
FALLBACK_DNS = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}"
ONEAPP_LITHOPS_BACKEND="one"
ONEAPP_LITHOPS_STORAGE="minio"
ONEAPP_MINIO_ENDPOINT="http://${minio.TEMPLATE.CONTEXT.ETH0_IP}:9000"
ONEAPP_MINIO_ACCESS_KEY_ID="$ONEAPP_MINIO_ROOT_USER"
ONEAPP_MINIO_SECRET_ACCESS_KEY="$ONEAPP_MINIO_ROOT_PASSWORD"
ONEAPP_ONEBE_DOCKER_USER="$ONEAPP_ONEBE_DOCKER_USER"
ONEAPP_ONEBE_DOCKER_PASSWORD="$ONEAPP_ONEBE_DOCKER_PASSWORD"
ONEAPP_ONEBE_AUTOSCALE="$ONEAPP_ONEBE_AUTOSCALE"
ONEAPP_ONEBE_RUNTIME_CPU="${worker.TEMPLATE.CPU}"
ONEAPP_ONEBE_RUNTIME_MEMORY="${worker.TEMPLATE.MEMORY}""
cooldown: 120
elasticity_policies: []
scheduled_policies: []
networks:
Public: 'M|network|Public| |id::'
Private: 'M|network|Private| |id::'
custom_attrs:
ONEAPP_VROUTER_ETH0_VIP0: '0|text|Control Plane Endpoint VIP (IPv4)||'
ONEAPP_VROUTER_ETH1_VIP0: '0|text|Default Gateway VIP (IPv4)||'
ONEAPP_RKE2_SUPERVISOR_EP: '0|text|RKE2 Supervisor endpoint||ep0.eth0.vr:9345'
ONEAPP_K8S_CONTROL_PLANE_EP: '0|text|Control Plane endpoint||ep0.eth0.vr:6443'
ONEAPP_K8S_EXTRA_SANS: '0|text|ApiServer extra certificate SANs||localhost,127.0.0.1,ep0.eth0.vr,${vnf.TEMPLATE.CONTEXT.ETH0_IP}'
ONEAPP_K8S_MULTUS_ENABLED: '0|boolean|Enable Multus||NO'
ONEAPP_K8S_MULTUS_CONFIG: '0|text64|Multus custom config (default none)||'
ONEAPP_K8S_CNI_PLUGIN: '0|list|CNI plugin supported by RKE2|canal,calico,cilium|cilium'
ONEAPP_K8S_CNI_CONFIG: '0|text64|CNI custom config (default none)||'
ONEAPP_K8S_CILIUM_RANGE: '0|text|Cilium LB IP CIDR (default none)||'
ONEAPP_K8S_METALLB_ENABLED: '0|boolean|Enable MetalLB||NO'
ONEAPP_K8S_METALLB_RANGE: '0|text|MetalLB IP range (default none)||'
ONEAPP_K8S_METALLB_CONFIG: '0|text64|MetalLB custom config (default none)||'
ONEAPP_K8S_LONGHORN_ENABLED: '0|boolean|Enable Longhorn||NO'
ONEAPP_STORAGE_DEVICE: '0|text|Storage device path||/dev/vdb'
ONEAPP_STORAGE_FILESYSTEM: '0|text|Storage device filesystem||xfs'
ONEAPP_K8S_TRAEFIK_ENABLED: '0|boolean|Enable Traefik||NO'
ONEAPP_VNF_HAPROXY_INTERFACES: '0|text|Interfaces to run Haproxy on||eth0'
ONEAPP_VNF_HAPROXY_REFRESH_RATE: '0|number|Haproxy refresh rate||30'
ONEAPP_VNF_HAPROXY_LB0_PORT: '0|number|HTTPS RKE2 Supervisor port||9345'
ONEAPP_VNF_HAPROXY_LB1_PORT: '0|number|HTTPS API Server port||6443'
ONEAPP_VNF_HAPROXY_LB2_PORT: '0|number|HTTPS ingress port||443'
ONEAPP_VNF_HAPROXY_LB3_PORT: '0|number|HTTP ingress port||80'
ONEAPP_VNF_DNS_ENABLED: '0|boolean|Enable DNS recursor||YES'
ONEAPP_VNF_DNS_INTERFACES: '0|text|DNS - Interfaces||eth1'
ONEAPP_VNF_DNS_NAMESERVERS: '0|text|DNS - Nameservers||1.1.1.1,8.8.8.8'
ONEAPP_VNF_NAT4_ENABLED: '0|boolean|Enable NAT||YES'
ONEAPP_VNF_NAT4_INTERFACES_OUT: '0|text|NAT - Outgoing Interfaces||eth0'
ONEAPP_VNF_ROUTER4_ENABLED: '0|boolean|Enable Router||YES'
ONEAPP_VNF_ROUTER4_INTERFACES: '0|text|Router - Interfaces||eth0,eth1'
ONEAPP_MINIO_ROOT_USER: 'M|text|MinIO Root User||minioadmin'
ONEAPP_MINIO_ROOT_PASSWORD: 'M|password|MinIO Root User Password||'
ONEAPP_ONEBE_DOCKER_USER: 'M|text|Docker user for Lithops||'
ONEAPP_ONEBE_DOCKER_PASSWORD: 'M|password|Docker user password for Lithops||'
ONEAPP_ONEBE_JUPYTER_PASSWORD: 'M|password|Password for Jupyter access||'
ONEAPP_ONEBE_AUTOSCALE: '0|text|Lithops backend autoscale option||all'
ready_status_gate: true
logo: lithops.png
images: []
Loading