Kubernetes
Make sure the prerequisites for Ondat are satisfied before proceeding.
Any Kubernetes managed service such as EKS, AKS, GKE, DO or DockerEE platform can use the following Kubernetes guide to install Ondat. Ensure the use of CSI for these platforms.
Install Ondat on Kubernetes 1.17
Estimated time to complete the installation: 5-10 min
The Ondat Cluster Operator is a Kubernetes native application developed to deploy and configure Ondat clusters, and assist with maintenance operations. We recommend its use for standard installations.
The operator is a Kubernetes controller that watches the StorageOSCluster
CRD. Once the controller is ready, a Ondat cluster definition can be
created. The operator will deploy a Ondat cluster based on the
configuration specified in the cluster definition.
Helm Note: If you want to use Helm to install Ondat, follow the Ondat Operator Helm Chart documentation.
Steps to install Ondat:
- Install Ondat Operator
- Create a Secret for default username and password
- Trigger bootstrap using a CustomResource
- Apply Ondat licence
1. Install Ondat operator
Install the Ondat Cluster Operator using the following yaml manifest.
kubectl create -f https://github.com/storageos/cluster-operator/releases/download/1.5.4/storageos-operator.yaml
Verify the Cluster Operator Pod Status
[root@master03]# kubectl -n storageos-operator get pod
NAME READY STATUS RESTARTS AGE
storageoscluster-operator-68678798ff-f28zw 1/1 Running 0 3m
The READY 1/1 indicates that
storageoscluster
resources can be created.
2. Create a Secret
Before deploying a Ondat cluster, create a Secret defining the Ondat API Username and Password in base64 encoding. The API username and password are used to create the default Ondat admin account which can be used with the Ondat CLI and to login to the Ondat GUI. The account defined in the secret is also used by Kubernetes to authenticate against the Ondat API when installing with the native driver.
apiVersion: v1
kind: Secret
metadata:
name: "storageos-api"
namespace: "storageos-operator"
labels:
app: "storageos"
type: "kubernetes.io/storageos"
data:
# echo -n '<secret>' | base64
apiUsername: c3RvcmFnZW9z
apiPassword: c3RvcmFnZW9z
This example contains a default password, for production installations, use a unique, strong password.
You can define a base64 value by
echo -n "mystring" | base64
.
Make sure that the encoding of the credentials doesn’t have special characters such as ‘\n’. The
echo -n
ensures that a trailing new line is not appended to the string.
If you wish to change the default accounts details post-install please see Managing Users
3 Trigger a Ondat installation
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "upstream"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "eks"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "aks"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "gke"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
Additional
spec
parameters are available on the Cluster Operator configuration page.
You can find more examples such as deployments referencing a external etcd kv store for Ondat in the Cluster Operator examples page.
Verify Ondat Installation
[root@master03]# kubectl -n kube-system get pods -w
NAME READY STATUS RESTARTS AGE
storageos-csi-helper-5cf59b5b4-f5nwr 2/2 Running 0 3m
storageos-daemonset-75f6c 3/3 Running 0 3m
storageos-daemonset-czbqx 3/3 Running 0 3m
storageos-daemonset-zv4tq 3/3 Running 0 3m
storageos-scheduler-6d67b46f67-5c46j 1/1 Running 6 3m
The above command watches the Pods created by the Cluster Definition example. Note that pods typically take approximately 65 seconds to enter the Running Phase.
Install Ondat on Kubernetes 1.16
Estimated time to complete the installation: 5-10 min
The Ondat Cluster Operator is a Kubernetes native application developed to deploy and configure Ondat clusters, and assist with maintenance operations. We recommend its use for standard installations.
The operator is a Kubernetes controller that watches the StorageOSCluster
CRD. Once the controller is ready, a Ondat cluster definition can be
created. The operator will deploy a Ondat cluster based on the
configuration specified in the cluster definition.
Helm Note: If you want to use Helm to install Ondat, follow the Ondat Operator Helm Chart documentation.
Steps to install Ondat:
- Install Ondat Operator
- Create a Secret for default username and password
- Trigger bootstrap using a CustomResource
- Apply Ondat licence
1. Install Ondat operator
Install the Ondat Cluster Operator using the following yaml manifest.
kubectl create -f https://github.com/storageos/cluster-operator/releases/download/1.5.4/storageos-operator.yaml
Verify the Cluster Operator Pod Status
[root@master03]# kubectl -n storageos-operator get pod
NAME READY STATUS RESTARTS AGE
storageoscluster-operator-68678798ff-f28zw 1/1 Running 0 3m
The READY 1/1 indicates that
storageoscluster
resources can be created.
2. Create a Secret
Before deploying a Ondat cluster, create a Secret defining the Ondat API Username and Password in base64 encoding. The API username and password are used to create the default Ondat admin account which can be used with the Ondat CLI and to login to the Ondat GUI. The account defined in the secret is also used by Kubernetes to authenticate against the Ondat API when installing with the native driver.
apiVersion: v1
kind: Secret
metadata:
name: "storageos-api"
namespace: "storageos-operator"
labels:
app: "storageos"
type: "kubernetes.io/storageos"
data:
# echo -n '<secret>' | base64
apiUsername: c3RvcmFnZW9z
apiPassword: c3RvcmFnZW9z
This example contains a default password, for production installations, use a unique, strong password.
You can define a base64 value by
echo -n "mystring" | base64
.
Make sure that the encoding of the credentials doesn’t have special characters such as ‘\n’. The
echo -n
ensures that a trailing new line is not appended to the string.
If you wish to change the default accounts details post-install please see Managing Users
3 Trigger a Ondat installation
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "upstream"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "eks"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "aks"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "gke"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
Additional
spec
parameters are available on the Cluster Operator configuration page.
You can find more examples such as deployments referencing a external etcd kv store for Ondat in the Cluster Operator examples page.
Verify Ondat Installation
[root@master03]# kubectl -n kube-system get pods -w
NAME READY STATUS RESTARTS AGE
storageos-csi-helper-5cf59b5b4-f5nwr 2/2 Running 0 3m
storageos-daemonset-75f6c 3/3 Running 0 3m
storageos-daemonset-czbqx 3/3 Running 0 3m
storageos-daemonset-zv4tq 3/3 Running 0 3m
storageos-scheduler-6d67b46f67-5c46j 1/1 Running 6 3m
The above command watches the Pods created by the Cluster Definition example. Note that pods typically take approximately 65 seconds to enter the Running Phase.
Install Ondat on Kubernetes 1.15
Estimated time to complete the installation: 5-10 min
The Ondat Cluster Operator is a Kubernetes native application developed to deploy and configure Ondat clusters, and assist with maintenance operations. We recommend its use for standard installations.
The operator is a Kubernetes controller that watches the StorageOSCluster
CRD. Once the controller is ready, a Ondat cluster definition can be
created. The operator will deploy a Ondat cluster based on the
configuration specified in the cluster definition.
Helm Note: If you want to use Helm to install Ondat, follow the Ondat Operator Helm Chart documentation.
Steps to install Ondat:
- Install Ondat Operator
- Create a Secret for default username and password
- Trigger bootstrap using a CustomResource
- Apply Ondat licence
1. Install Ondat operator
Install the Ondat Cluster Operator using the following yaml manifest.
kubectl create -f https://github.com/storageos/cluster-operator/releases/download/1.5.4/storageos-operator.yaml
Verify the Cluster Operator Pod Status
[root@master03]# kubectl -n storageos-operator get pod
NAME READY STATUS RESTARTS AGE
storageoscluster-operator-68678798ff-f28zw 1/1 Running 0 3m
The READY 1/1 indicates that
storageoscluster
resources can be created.
2. Create a Secret
Before deploying a Ondat cluster, create a Secret defining the Ondat API Username and Password in base64 encoding. The API username and password are used to create the default Ondat admin account which can be used with the Ondat CLI and to login to the Ondat GUI. The account defined in the secret is also used by Kubernetes to authenticate against the Ondat API when installing with the native driver.
apiVersion: v1
kind: Secret
metadata:
name: "storageos-api"
namespace: "storageos-operator"
labels:
app: "storageos"
type: "kubernetes.io/storageos"
data:
# echo -n '<secret>' | base64
apiUsername: c3RvcmFnZW9z
apiPassword: c3RvcmFnZW9z
This example contains a default password, for production installations, use a unique, strong password.
You can define a base64 value by
echo -n "mystring" | base64
.
Make sure that the encoding of the credentials doesn’t have special characters such as ‘\n’. The
echo -n
ensures that a trailing new line is not appended to the string.
If you wish to change the default accounts details post-install please see Managing Users
3 Trigger a Ondat installation
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "upstream"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "eks"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "aks"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "gke"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
Additional
spec
parameters are available on the Cluster Operator configuration page.
You can find more examples such as deployments referencing a external etcd kv store for Ondat in the Cluster Operator examples page.
Verify Ondat Installation
[root@master03]# kubectl -n kube-system get pods -w
NAME READY STATUS RESTARTS AGE
storageos-csi-helper-5cf59b5b4-f5nwr 2/2 Running 0 3m
storageos-daemonset-75f6c 3/3 Running 0 3m
storageos-daemonset-czbqx 3/3 Running 0 3m
storageos-daemonset-zv4tq 3/3 Running 0 3m
storageos-scheduler-6d67b46f67-5c46j 1/1 Running 6 3m
The above command watches the Pods created by the Cluster Definition example. Note that pods typically take approximately 65 seconds to enter the Running Phase.
Install Ondat on Kubernetes 1.14
Estimated time to complete the installation: 5-10 min
The Ondat Cluster Operator is a Kubernetes native application developed to deploy and configure Ondat clusters, and assist with maintenance operations. We recommend its use for standard installations.
The operator is a Kubernetes controller that watches the StorageOSCluster
CRD. Once the controller is ready, a Ondat cluster definition can be
created. The operator will deploy a Ondat cluster based on the
configuration specified in the cluster definition.
Helm Note: If you want to use Helm to install Ondat, follow the Ondat Operator Helm Chart documentation.
Steps to install Ondat:
- Install Ondat Operator
- Create a Secret for default username and password
- Trigger bootstrap using a CustomResource
- Apply Ondat licence
1. Install Ondat operator
Install the Ondat Cluster Operator using the following yaml manifest.
kubectl create -f https://github.com/storageos/cluster-operator/releases/download/1.5.4/storageos-operator.yaml
Verify the Cluster Operator Pod Status
[root@master03]# kubectl -n storageos-operator get pod
NAME READY STATUS RESTARTS AGE
storageoscluster-operator-68678798ff-f28zw 1/1 Running 0 3m
The READY 1/1 indicates that
storageoscluster
resources can be created.
2. Create a Secret
Before deploying a Ondat cluster, create a Secret defining the Ondat API Username and Password in base64 encoding. The API username and password are used to create the default Ondat admin account which can be used with the Ondat CLI and to login to the Ondat GUI. The account defined in the secret is also used by Kubernetes to authenticate against the Ondat API when installing with the native driver.
apiVersion: v1
kind: Secret
metadata:
name: "storageos-api"
namespace: "storageos-operator"
labels:
app: "storageos"
type: "kubernetes.io/storageos"
data:
# echo -n '<secret>' | base64
apiUsername: c3RvcmFnZW9z
apiPassword: c3RvcmFnZW9z
This example contains a default password, for production installations, use a unique, strong password.
You can define a base64 value by
echo -n "mystring" | base64
.
Make sure that the encoding of the credentials doesn’t have special characters such as ‘\n’. The
echo -n
ensures that a trailing new line is not appended to the string.
If you wish to change the default accounts details post-install please see Managing Users
3 Trigger a Ondat installation
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "upstream"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "eks"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "aks"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "gke"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
Additional
spec
parameters are available on the Cluster Operator configuration page.
You can find more examples such as deployments referencing a external etcd kv store for Ondat in the Cluster Operator examples page.
Verify Ondat Installation
[root@master03]# kubectl -n kube-system get pods -w
NAME READY STATUS RESTARTS AGE
storageos-csi-helper-5cf59b5b4-f5nwr 2/2 Running 0 3m
storageos-daemonset-75f6c 3/3 Running 0 3m
storageos-daemonset-czbqx 3/3 Running 0 3m
storageos-daemonset-zv4tq 3/3 Running 0 3m
storageos-scheduler-6d67b46f67-5c46j 1/1 Running 6 3m
The above command watches the Pods created by the Cluster Definition example. Note that pods typically take approximately 65 seconds to enter the Running Phase.
Install Ondat on Kubernetes 1.13
Estimated time to complete the installation: 5-10 min
The Ondat Cluster Operator is a Kubernetes native application developed to deploy and configure Ondat clusters, and assist with maintenance operations. We recommend its use for standard installations.
The operator is a Kubernetes controller that watches the StorageOSCluster
CRD. Once the controller is ready, a Ondat cluster definition can be
created. The operator will deploy a Ondat cluster based on the
configuration specified in the cluster definition.
Helm Note: If you want to use Helm to install Ondat, follow the Ondat Operator Helm Chart documentation.
Steps to install Ondat:
- Install Ondat Operator
- Create a Secret for default username and password
- Trigger bootstrap using a CustomResource
- Apply Ondat licence
1. Install Ondat operator
Install the Ondat Cluster Operator using the following yaml manifest.
kubectl create -f https://github.com/storageos/cluster-operator/releases/download/1.5.4/storageos-operator.yaml
Verify the Cluster Operator Pod Status
[root@master03]# kubectl -n storageos-operator get pod
NAME READY STATUS RESTARTS AGE
storageoscluster-operator-68678798ff-f28zw 1/1 Running 0 3m
The READY 1/1 indicates that
storageoscluster
resources can be created.
2. Create a Secret
Before deploying a Ondat cluster, create a Secret defining the Ondat API Username and Password in base64 encoding. The API username and password are used to create the default Ondat admin account which can be used with the Ondat CLI and to login to the Ondat GUI. The account defined in the secret is also used by Kubernetes to authenticate against the Ondat API when installing with the native driver.
apiVersion: v1
kind: Secret
metadata:
name: "storageos-api"
namespace: "storageos-operator"
labels:
app: "storageos"
type: "kubernetes.io/storageos"
data:
# echo -n '<secret>' | base64
apiUsername: c3RvcmFnZW9z
apiPassword: c3RvcmFnZW9z
This example contains a default password, for production installations, use a unique, strong password.
You can define a base64 value by
echo -n "mystring" | base64
.
Make sure that the encoding of the credentials doesn’t have special characters such as ‘\n’. The
echo -n
ensures that a trailing new line is not appended to the string.
If you wish to change the default accounts details post-install please see Managing Users
3 Trigger a Ondat installation
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "upstream"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "eks"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "aks"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "gke"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
csi:
enable: true
deploymentStrategy: deployment
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
Additional
spec
parameters are available on the Cluster Operator configuration page.
You can find more examples such as deployments referencing a external etcd kv store for Ondat in the Cluster Operator examples page.
Verify Ondat Installation
[root@master03]# kubectl -n kube-system get pods -w
NAME READY STATUS RESTARTS AGE
storageos-csi-helper-5cf59b5b4-f5nwr 2/2 Running 0 3m
storageos-daemonset-75f6c 3/3 Running 0 3m
storageos-daemonset-czbqx 3/3 Running 0 3m
storageos-daemonset-zv4tq 3/3 Running 0 3m
storageos-scheduler-6d67b46f67-5c46j 1/1 Running 6 3m
The above command watches the Pods created by the Cluster Definition example. Note that pods typically take approximately 65 seconds to enter the Running Phase.
Install Ondat on Kubernetes 1.12
Estimated time to complete the installation: 5-10 min
The Ondat Cluster Operator is a Kubernetes native application developed to deploy and configure Ondat clusters, and assist with maintenance operations. We recommend its use for standard installations.
The operator is a Kubernetes controller that watches the StorageOSCluster
CRD. Once the controller is ready, a Ondat cluster definition can be
created. The operator will deploy a Ondat cluster based on the
configuration specified in the cluster definition.
Helm Note: If you want to use Helm to install Ondat, follow the Ondat Operator Helm Chart documentation.
Steps to install Ondat:
- Install Ondat Operator
- Create a Secret for default username and password
- Trigger bootstrap using a CustomResource
- Apply Ondat licence
1. Install Ondat operator
Install the Ondat Cluster Operator using the following yaml manifest.
kubectl create -f https://github.com/storageos/cluster-operator/releases/download/1.5.4/storageos-operator.yaml
Verify the Cluster Operator Pod Status
[root@master03]# kubectl -n storageos-operator get pod
NAME READY STATUS RESTARTS AGE
storageoscluster-operator-68678798ff-f28zw 1/1 Running 0 3m
The READY 1/1 indicates that
storageoscluster
resources can be created.
2. Create a Secret
Before deploying a Ondat cluster, create a Secret defining the Ondat API Username and Password in base64 encoding. The API username and password are used to create the default Ondat admin account which can be used with the Ondat CLI and to login to the Ondat GUI. The account defined in the secret is also used by Kubernetes to authenticate against the Ondat API when installing with the native driver.
apiVersion: v1
kind: Secret
metadata:
name: "storageos-api"
namespace: "storageos-operator"
labels:
app: "storageos"
type: "kubernetes.io/storageos"
data:
# echo -n '<secret>' | base64
apiUsername: c3RvcmFnZW9z
apiPassword: c3RvcmFnZW9z
This example contains a default password, for production installations, use a unique, strong password.
You can define a base64 value by
echo -n "mystring" | base64
.
Make sure that the encoding of the credentials doesn’t have special characters such as ‘\n’. The
echo -n
ensures that a trailing new line is not appended to the string.
If you wish to change the default accounts details post-install please see Managing Users
3 Trigger a Ondat installation
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "upstream"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "eks"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "aks"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
This is a Cluster Definition example.
apiVersion: "storageos.com/v1"
kind: StorageOSCluster
metadata:
name: "example-ondat"
namespace: "storageos-operator"
spec:
secretRefName: "storageos-api" # Reference from the Secret created in the previous step
secretRefNamespace: "storageos-operator" # Namespace of the Secret
k8sDistro: "gke"
namespace: "kube-system"
images:
nodeContainer: "storageos/node:1.5.4" # Ondat version
resources:
requests:
memory: "512Mi"
# nodeSelectorTerms:
# - matchExpressions:
# - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation
# operator: In
# values:
# - "true"
Additional
spec
parameters are available on the Cluster Operator configuration page.
You can find more examples such as deployments referencing a external etcd kv store for Ondat in the Cluster Operator examples page.
Verify Ondat Installation
[root@master03]# kubectl -n kube-system get pods -w
NAME READY STATUS RESTARTS AGE
storageos-csi-helper-5cf59b5b4-f5nwr 2/2 Running 0 3m
storageos-daemonset-75f6c 3/3 Running 0 3m
storageos-daemonset-czbqx 3/3 Running 0 3m
storageos-daemonset-zv4tq 3/3 Running 0 3m
storageos-scheduler-6d67b46f67-5c46j 1/1 Running 6 3m
The above command watches the Pods created by the Cluster Definition example. Note that pods typically take approximately 65 seconds to enter the Running Phase.
First Ondat volume
If this is your first installation you may wish to follow the Ondat Volume guide for an example of how to mount a Ondat volume in a Pod.