Skip to content

Commit d0259df

Browse files
ValentinGerlachreshnm
authored andcommitted
Add script to set up a local dev environment
1 parent f640c7d commit d0259df

File tree

1 file changed

+204
-0
lines changed

1 file changed

+204
-0
lines changed

hack/local-dev.sh

Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
1+
kind delete clusters --all
2+
3+
OPENMCP_OPERATOR_VERSION=v0.12.0-dev-1a771c3cc5f8e2f556c08d5027615e8134c3ac70-linux-amd64
4+
OPENMCP_OPERATOR_IMAGE=ghcr.io/openmcp-project/images/openmcp-operator:${OPENMCP_OPERATOR_VERSION}
5+
6+
OPENMCP_CP_KIND_VERSION=v0.0.12-dev-833b7e03cf1205f4405d21eaf1524d9e5bd29373-linux-amd64
7+
OPENMCP_CP_KIND_IMAGE=ghcr.io/openmcp-project/images/cluster-provider-kind:${OPENMCP_CP_KIND_VERSION}
8+
9+
OPENMCP_ENVIRONMENT=debug
10+
11+
# Create platform cluster
12+
kind create cluster --name platform --config - << EOF
13+
apiVersion: kind.x-k8s.io/v1alpha4
14+
kind: Cluster
15+
nodes:
16+
- role: control-plane
17+
extraMounts:
18+
- hostPath: /var/run/docker.sock
19+
containerPath: /var/run/host-docker.sock
20+
EOF
21+
22+
# Load images
23+
kind load docker-image --name platform ${OPENMCP_OPERATOR_IMAGE}
24+
kind load docker-image --name platform ${OPENMCP_CP_KIND_IMAGE}
25+
26+
# Create openmcp-system Namespace
27+
kubectl apply -f - << EOF
28+
apiVersion: v1
29+
kind: Namespace
30+
metadata:
31+
name: openmcp-system
32+
spec: {}
33+
EOF
34+
35+
# Create openmcp-operator ServiceAccount
36+
kubectl apply -f - << EOF
37+
apiVersion: v1
38+
kind: ServiceAccount
39+
metadata:
40+
name: openmcp-operator
41+
namespace: openmcp-system
42+
EOF
43+
44+
# Create ClusterRoleBinding for openmcp-operator
45+
kubectl apply -f - << EOF
46+
apiVersion: rbac.authorization.k8s.io/v1
47+
kind: ClusterRoleBinding
48+
metadata:
49+
name: openmcp-operator
50+
roleRef:
51+
apiGroup: rbac.authorization.k8s.io
52+
kind: ClusterRole
53+
name: cluster-admin
54+
subjects:
55+
- kind: ServiceAccount
56+
name: openmcp-operator
57+
namespace: openmcp-system
58+
EOF
59+
60+
# Create ConfigMap for openmcp-operator
61+
kubectl apply -f - << EOF
62+
apiVersion: v1
63+
kind: ConfigMap
64+
metadata:
65+
name: openmcp-operator
66+
namespace: openmcp-system
67+
data:
68+
config: |
69+
managedControlPlane:
70+
mcpClusterPurpose: mcp
71+
scheduler:
72+
scope: Cluster
73+
purposeMappings:
74+
mcp:
75+
template:
76+
spec:
77+
profile: kind
78+
tenancy: Exclusive
79+
platform:
80+
template:
81+
spec:
82+
profile: kind
83+
tenancy: Shared
84+
onboarding:
85+
template:
86+
spec:
87+
profile: kind
88+
tenancy: Shared
89+
EOF
90+
91+
# Create openmcp-operator Deployment
92+
kubectl apply -f - << EOF
93+
apiVersion: apps/v1
94+
kind: Deployment
95+
metadata:
96+
name: openmcp-operator
97+
namespace: openmcp-system
98+
spec:
99+
replicas: 1
100+
selector:
101+
matchLabels:
102+
app: openmcp-operator
103+
template:
104+
metadata:
105+
labels:
106+
app: openmcp-operator
107+
spec:
108+
serviceAccountName: openmcp-operator
109+
initContainers:
110+
- image: ${OPENMCP_OPERATOR_IMAGE}
111+
name: openmcp-operator-init
112+
resources: {}
113+
args:
114+
- init
115+
- --environment
116+
- ${OPENMCP_ENVIRONMENT}
117+
- --config
118+
- /etc/openmcp-operator/config
119+
env:
120+
- name: POD_NAME
121+
valueFrom:
122+
fieldRef:
123+
apiVersion: v1
124+
fieldPath: metadata.name
125+
- name: POD_NAMESPACE
126+
valueFrom:
127+
fieldRef:
128+
apiVersion: v1
129+
fieldPath: metadata.namespace
130+
- name: POD_IP
131+
valueFrom:
132+
fieldRef:
133+
apiVersion: v1
134+
fieldPath: status.podIP
135+
- name: POD_SERVICE_ACCOUNT_NAME
136+
valueFrom:
137+
fieldRef:
138+
apiVersion: v1
139+
fieldPath: spec.serviceAccountName
140+
volumeMounts:
141+
- name: config
142+
mountPath: /etc/openmcp-operator
143+
readOnly: true
144+
containers:
145+
- image: ${OPENMCP_OPERATOR_IMAGE}
146+
name: openmcp-operator
147+
resources: {}
148+
args:
149+
- run
150+
- --environment
151+
- ${OPENMCP_ENVIRONMENT}
152+
- --config
153+
- /etc/openmcp-operator/config
154+
env:
155+
- name: POD_NAME
156+
valueFrom:
157+
fieldRef:
158+
apiVersion: v1
159+
fieldPath: metadata.name
160+
- name: POD_NAMESPACE
161+
valueFrom:
162+
fieldRef:
163+
apiVersion: v1
164+
fieldPath: metadata.namespace
165+
- name: POD_IP
166+
valueFrom:
167+
fieldRef:
168+
apiVersion: v1
169+
fieldPath: status.podIP
170+
- name: POD_SERVICE_ACCOUNT_NAME
171+
valueFrom:
172+
fieldRef:
173+
apiVersion: v1
174+
fieldPath: spec.serviceAccountName
175+
volumeMounts:
176+
- name: config
177+
mountPath: /etc/openmcp-operator
178+
readOnly: true
179+
volumes:
180+
- name: config
181+
configMap:
182+
name: openmcp-operator
183+
EOF
184+
185+
# Wait for ClusterProvider CRD to be created
186+
kubectl wait --for=create customresourcedefinitions.apiextensions.k8s.io/clusterproviders.openmcp.cloud --timeout=30s
187+
188+
# Install ClusterProvider for kind
189+
kubectl apply -f - << EOF
190+
apiVersion: openmcp.cloud/v1alpha1
191+
kind: ClusterProvider
192+
metadata:
193+
name: kind
194+
spec:
195+
image: ${OPENMCP_CP_KIND_IMAGE}
196+
extraVolumes:
197+
- name: docker-socket
198+
hostPath:
199+
path: /var/run/host-docker.sock
200+
type: Socket
201+
extraVolumeMounts:
202+
- name: docker-socket
203+
mountPath: /var/run/docker.sock
204+
EOF

0 commit comments

Comments
 (0)