Install - Server on OpenShift Online
Installation Steps
Take the following steps to install the vFunction Server in a OpenShift Cluster via the OperatorHub:
- Ensure Prerequisites are met
- Log into the OpenShift Console
- Select Operators > OperatorHub from the left-hand sidebar
- Search for vfunction in the center pane’s search bar
- Select the vFunction Operator. If two options are presented, select the Certified version
- A dialog box will be displayed with an introduction to the vFunction platform as well as an overview of the configurable settings
- On the left-hand side of the dialog box, use the dropdowns to select Channel: stable and select the newest available Version. Then click the blue Install button
- On the next page, define the Installed Namespace and set Update approval to Manual. Then click the blue Install button
- Once the Operator has finished installing, you will be taken to a page for the installed vFunction Operator under Operators > Installed Operators
- In the center pane, click Create instance below where it says “VS vFunction Represents an instance of vFunction running on your cluster.”
- On the Create VfunctionServer page, toggle between Form View and YAML view based on your preference
- Set the required Configuration Settings
### Sample Yaml with Required Configurable Settings
### The Required sections of this Yaml to review are:
### 1. Server.host, server.org_name, server.admin section for the URL and first-user login
### 2. Route. By default, this creates an Route Object
### 3. Storage. By default, this automatically creates two Volumes of 50gb each using the "default" StorageClass
server:
host: https://vfunction.mycompany.com
org_name: MyCompany
admin:
email: peter@mycompany.com
name: Peter
password: Password1!
upgrade: "Never"
measurements:
min_number_of_services: "2"
max_number_of_services: "10"
max_pod_memory_capacity: "16G"
max_pod_cpu_capacity: "1"
pod_ephemeral_storage: "2500M"
quality_of_service_class: "Burstable"
S3:
bucket: ""
key: ""
secret: ""
region: ""
authentication:
authority: ""
client_id: ""
client_secret: ""
jwks_url: ""
issuer: ""
ca_root_crt:
tls:
use_letsencrypt: "No"
crt:
key:
nginx:
force_http: "No"
ipv6_disabled: "No"
service_type: ""
route:
use_route: "Yes"
tls_termination: "edge"
use_tls_certificate: "No"
mysql:
external_mysql_ip: ""
external_mysql_user: ""
external_mysql_password: ""
max_pod_memory_capacity: "4G"
max_pod_cpu_capacity: "1"
pod_ephemeral_storage: "1G"
quality_of_service_class: "Burstable"
storage:
storage_class: ""
mysql_persistent_volume: ""
mysql_persistent_volume_claim: ""
mysql_persistent_volume_claim_access_mode: "ReadWriteOnce"
storage_persistent_volume: ""
storage_persistent_volume_claim: ""
storage_persistent_volume_claim_access_mode: "ReadWriteOnce"
lets_encrypt_persistent_volume: ""
lets_encrypt_persistent_volume_claim: ""
lets_encrypt_persistent_volume_claim_access_mode: "ReadWriteOnce"
logs_persistent_volume: ""
logs_persistent_volume_claim: ""
logs_pvc_access_mode: "ReadWriteOnce"
logging:
use_fluentd: "No"
distributed:
otlp:
min_number_of_services: "1"
max_number_of_services: "10"
max_pod_memory_capacity: "8G"
max_pod_cpu_capacity: "1"
pod_ephemeral_storage: "1G"
max_folder_size_in_mb: "200"
quality_of_service_class: "Burstable"
dm:
min_number_of_services: "1"
max_number_of_services: "10"
max_pod_memory_capacity: "8G"
max_pod_cpu_capacity: "1"
pod_ephemeral_storage: "1G"
quality_of_service_class: "Burstable"
backup:
mysql:
restore_during_installation: "No"
S3:
bucket: ""
key: ""
secret: ""
region: ""
affinity:
node_affinity:
node_selectors:
additional_labels:
additional_annotations:
resources:
set_pod_resources: "Yes"
set_pod_memory_capacity_resource: "Yes"
default_pod_memory_capacity: "1G"
set_pod_cpu_capacity_resource: "Yes"
default_pod_cpu_capacity: "1"
set_pod_ephemeral_storage_resource: "Yes"
default_pod_ephemeral_storage: "1G"
quality_of_service_class: "Burstable"
security:
image_pull_policy: ""
force_hashed_images: "No"
use_network_policies: "No"
proxy:
http_proxy: ""
https_proxy: ""
additional_no_proxy: ""
use_rate_limiting: "No"
requests_per_second: "10"
- If needed, configure optional Configurable Settings. It is recommended to review the following optional sections and size the Pods according to the size of your biggest application to be analyzed:
- server.authentication: if planning to use OIDC for authentication
- server.measurements: for larger (8k+ Classes) Monolithic Applications
- server.mysql: for larger Monolithic or Distributed Applications
- server.otlp: for larger (20+ Services) Distributed Applications
As next steps:
- If using vFunction for a Monolithic Application, install the vFunction Runtime Agent
- If using vFunction for a Distributed Application, install the OpenTelemetry Agent