-
Notifications
You must be signed in to change notification settings - Fork 2
/
_setup-cluster.sh
executable file
·135 lines (117 loc) · 3.71 KB
/
_setup-cluster.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/bin/bash
# Copyright 2021, 2022 Hewlett Packard Enterprise Development LP
# Other additional copyright holders may be indicated within.
#
# The entirety of this work is licensed under the Apache License,
# Version 2.0 (the "License"); you may not use this file except
# in compliance with the License.
#
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Setup the current cluster with the resources necessary to run a data-movement resource as a stand alone resource.
# This is useful if you want to run data movement outside of any controlling resource, like nnf-sos manager.
if [ $# -eq 0 ]; then
echo "Setup Cluster requires one of 'lustre' or 'xfs'"
exit 1
fi
CMD=$1
# Install the prerequisite CRDs
echo "$(tput bold)Installing prerequisite CRDs $(tput sgr 0)"
kubectl apply -f vendor/github.com/NearNodeFlash/nnf-sos/config/crd/bases/nnf.cray.hpe.com_nnfdatamovements.yaml
kubectl apply -f vendor/github.com/NearNodeFlash/nnf-sos/config/crd/bases/nnf.cray.hpe.com_nnfstorages.yaml
kubectl apply -f vendor/github.com/NearNodeFlash/lustre-fs-operator/config/crd/bases/lus.cray.hpe.com_lustrefilesystems.yaml
# Install the sample resources
# Source is always a global lustre file system
echo "$(tput bold)Installing sample LustreFileSystem $(tput sgr 0)"
cat <<-EOF | kubectl apply -f -
apiVersion: lus.cray.hpe.com/v1alpha1
kind: LustreFileSystem
metadata:
name: lustrefilesystem-sample-maui
namespace: nnf-dm-system
spec:
name: maui
mgsNids: 172.0.0.1@tcp
mountRoot: /lus/maui
namespaces:
default:
modes:
- ReadWriteMany
EOF
if [[ "$CMD" == lustre ]]; then
# For NNFStorage we need to program the mgsNode value which is under the status section; making it unprogrammable by default.
# Edit the CRD definition to remove the status section as a subresource.
echo "$(tput bold)Override NNF subresource $(tput sgr 0)"
kubectl get crd/nnfstorages.nnf.cray.hpe.com -o json | jq 'del(.spec.versions[0].subresources)' | kubectl apply -f -
echo "$(tput bold)Installing sample NnfStorage $(tput sgr 0)"
cat <<-EOF | kubectl apply -f -
apiVersion: nnf.cray.hpe.com/v1alpha1
kind: NnfStorage
metadata:
name: nnfstorage-sample
spec:
fileSystemType: lustre
allocationSets:
- name: mgt
capacity: 1048576
fileSystemName: sample
targetType: MGT
backFs: zfs
nodes:
- name: kind-worker
count: 1
- name: mdt
capacity: 1048576
fileSystemName: sample
targetType: MDT
backFs: zfs
nodes:
- name: kind-worker2
count: 1
- name: ost
capacity: 1048576
fileSystemName: sample
targetType: OST
backFs: zfs
nodes:
- name: kind-worker
count: 1
- name: kind-worker2
count: 1
status:
mgsNode: "127.0.0.1@tcp"
EOF
fi
if [[ "$CMD" == xfs ]]; then
echo "$(tput bold)Installing kind-worker Namespaces $(tput sgr 0)"
cat <<-EOF | kubectl apply -f -
apiVersion: v1
kind: Namespace
metadata:
name: kind-worker
EOF
echo "$(tput bold)Installing sample XFS NnfStorage $(tput sgr 0)"
cat <<-EOF | kubectl apply -f -
apiVersion: nnf.cray.hpe.com/v1alpha1
kind: NnfStorage
metadata:
name: nnfstorage-sample
spec:
fileSystemType: xfs
allocationSets:
- name: xfs
capacity: 1048576
fileSystemName: sample
nodes:
- name: kind-worker
count: 1
EOF
fi
make deploy