Skip to content

Commit b5b5570

Browse files
committed
Add deployment instructions and supporting manifest files
Deployment instructions and supporting manifest files to configure: - managed-services - monitoring-stack - ceph-rook - openstack-helm
1 parent 6d7cb50 commit b5b5570

File tree

415 files changed

+70685
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

415 files changed

+70685
-1
lines changed

.gitignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
charts
2+
sealed-secret-tls.*
3+
!*encrypted*
4+
!values.yaml
5+
!sealed-secret-tls.crt

.gitmodules

+6
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,9 @@
44
[submodule "rke2/kube-ovn"]
55
path = rke2/kube-ovn
66
url = https://github.com/kubeovn/kube-ovn.git
7+
[submodule "osh/openstack-helm"]
8+
path = osh/openstack-helm
9+
url = https://github.com/openstack/openstack-helm.git
10+
[submodule "osh/openstack-helm-infra"]
11+
path = osh/openstack-helm-infra
12+
url = https://github.com/openstack/openstack-helm-infra.git

README.md

+66-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,66 @@
1-
# trinity
1+
# trinity
2+
3+
The goal of this repository is to simplify the deployment of OpenStack-Helm with ArgoCD, adopting a GitOps approach. The repository offers detailed instructions to deploy following projects:
4+
- RKE2 Kubernetes Cluster
5+
- Managed services:
6+
- Cert-manager
7+
- Sealed-secrets
8+
- Ingress-controller
9+
- Metallb
10+
- ArgoCD
11+
- Ceph Rook
12+
- OpenStack Helm
13+
14+
The manifests for Ceph-Rook and OpenStack-Helm are sourced from the [Genstack Project](https://github.com/cloudnull/genestack.git), serving as a reference for your deployments.
15+
16+
**Note:** You can use the processes and manifest files from this repository as a reference. Please update the details according to your requirements.
17+
18+
---
19+
## Prerequsites:
20+
Before getting started, make sure you have the following tools installed:
21+
- [kustomize CLI](https://kubectl.docs.kubernetes.io/installation/kustomize/)
22+
- [kubeseal CLI](https://github.com/bitnami-labs/sealed-secrets?tab=readme-ov-file#kubeseal)
23+
- Additionally, ensure that your hardware setup is sufficient to deploy OpenStack and Ceph. In our example, we utilized a total of 8 nodes, each serving a specific role:
24+
- 3 nodes as OpenStack Controllers
25+
- 2 nodes as OpenStack Computes
26+
- 3 nodes for Ceph (ceph-mon, ceph-osd, ceph-mds, ceph-rgw)
27+
---
28+
29+
## Getting started
30+
```bash
31+
git clone --recurse-submodules https://github.com/pratik705/trinity.git
32+
```
33+
The `--recurse-submodules` option is used to clone the repository along with its submodules.
34+
35+
---
36+
37+
## Installation
38+
To start fresh, please proceed in the following order. If you already have an existing Kubernetes cluster and only want to install specific services, you can jump to the respective section.
39+
40+
### RKE2
41+
Follow the detailed installation instructions [here](https://github.com/pratik705/trinity/blob/main/rke2/README.md).
42+
43+
---
44+
45+
### managed-services
46+
Follow the detailed installation instructions [here](https://github.com/pratik705/trinity/blob/main/managed-services/README.md).
47+
48+
---
49+
50+
### ceph-rook
51+
Follow the detailed installation instructions [here](https://github.com/pratik705/trinity/blob/main/ceph-rook/README.md).
52+
53+
---
54+
55+
### kube-prometheus-stack
56+
Follow the detailed installation instructions [here](https://github.com/pratik705/trinity/blob/main/monitoring/kube-prometheus-stack/README.md).
57+
58+
---
59+
60+
### openstack-helm
61+
Follow the detailed installation instructions [here](https://github.com/pratik705/trinity/blob/main/osh/README.md).
62+
63+
---
64+
65+
These steps will guide you through setting up a Kubernetes environment and deploying ceph-rook, OpenStack-Helm with the necessary supporting services. You can refer the [Genstack Project](https://github.com/cloudnull/genestack.git) for additional insights and resources.
66+

ceph-rook/README.md

+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# CEPH-ROOK: Ceph Integration for Kubernetes
2+
Make Ceph storage work seamlessly with your Kubernetes setup using CEPH-ROOK. It lets Kubernetes nodes use Ceph effortlessly, connecting with both ceph-csi and openstack-helm.
3+
4+
## Pre-installation Checks:
5+
Before proceeding with the Ceph-ROOK installation, ensure the following prerequisites:
6+
7+
- Ensure that Kubernetes nodes are correctly labeled to designate their roles and Ceph components.
8+
```
9+
role: storage-node
10+
ceph-rgw: enabled
11+
ceph-mds: enabled
12+
```
13+
- OSD disks are formatted
14+
- ArgoCD is up and running as expected.
15+
- Git repository is connected to the ArgoCD. Refer to [\[1\]](https://argo-cd.readthedocs.io/en/stable/user-guide/private-repositories/)[\[2\]](https://argo-cd.readthedocs.io/en/latest/user-guide/commands/argocd_repo_add/)
16+
17+
## Installation:
18+
To install CEPH according as per your requirement, navigate to the CEPH directory, make the necessary modifications to Kubernetes manifest/values.yaml, and deploy it using ArgoCD. You can kickstart your setup by copying the provided examples from this repository.
19+
20+
**Note:** You can use the manifests from this repository as an example and update the details according to your requirements.
21+
22+
- Clone this repository and navigate to the ceph-rook directory:
23+
```bash
24+
git clone --recurse-submodules https://github.com/pratik705/trinity.git
25+
cd trinity/ceph-rook/
26+
```
27+
Note: The `--recurse-submodules` option is used to clone the repository along with its submodules.
28+
- Once you have made your changes, commit and push them to your Git repository.
29+
```bash
30+
git add .
31+
git commit -m "Describe your changes"
32+
git push origin main
33+
```
34+
- Proceed with applying ArgoCD manifests:
35+
### Deploy namespace for CEPH installation:
36+
```bash
37+
kubectl apply -f ceph-rook/argoCD/00-ceph-namespace-argo.yaml
38+
```
39+
---
40+
41+
### Deploy ceph-operator:
42+
```bash
43+
kubectl apply -f ceph-rook/argoCD/01-ceph-operator-argo.yaml
44+
```
45+
---
46+
47+
### Deploy CEPH:
48+
```bash
49+
kubectl apply -f ceph-rook/argoCD/02-ceph-argo.yaml
50+
```
51+
- Sets up a storage class(`general`) for creating rbd volumes.
52+
- Creates an rbd client and pool for openstack-helm.
53+
---
54+
55+
### Deploy ceph-rgw:
56+
```bash
57+
kubectl apply -f ceph-rook/argoCD/03-ceph-rgw-argo.yaml
58+
```
59+
---
60+
61+
### Deploy ceph-mds:
62+
```bash
63+
kubectl apply -f ceph-rook/argoCD/04-ceph-mds-argo.yaml
64+
```
65+
- Adds a storage class(`rook-cephfs`) for creating `rwx` volumes.
66+
---
67+
68+
### Deploy toolbox to interact with CEPH:
69+
```bash
70+
kubectl apply -f ceph-rook/argoCD/05-toolbox-argo.yaml
71+
```
72+
---
73+
74+
## Validation:
75+
```bash
76+
kubectl get pods -n rook-ceph
77+
kubectl exec -it rook-ceph-tools-xxxxx -n rook-ceph -- ceph -s
78+
kubectl exec -it rook-ceph-tools-xxxxx -n rook-ceph -- ceph osd tree
79+
```
80+
81+
ArgoCD continuously monitors the configured Git repository for changes and automatically applies them to the Kubernetes cluster. Once the changes are pushed to the repository, ArgoCD will detect the update and synchronize with the latest version.
82+
83+
Check the ArgoCD UI to track the synchronization progress and ensure that the modifications are successfully applied to the cluster.
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
apiVersion: argoproj.io/v1alpha1
2+
kind: Application
3+
metadata:
4+
name: ceph-namespace
5+
namespace: rackspace-system
6+
spec:
7+
destination:
8+
name: ''
9+
namespace: ''
10+
server: 'https://kubernetes.default.svc'
11+
source:
12+
path: ceph-rook/namespace
13+
repoURL: 'https://github.com/pratik705/trinity.git'
14+
targetRevision: HEAD
15+
syncPolicy:
16+
syncOptions:
17+
- ServerSideApply=true
18+
automated:
19+
selfHeal: true
20+
prune: false
21+
sources: []
22+
project: default
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
apiVersion: argoproj.io/v1alpha1
2+
kind: Application
3+
metadata:
4+
name: ceph-operator
5+
namespace: rackspace-system
6+
spec:
7+
destination:
8+
name: ''
9+
namespace: ''
10+
server: 'https://kubernetes.default.svc'
11+
source:
12+
path: ceph-rook/ceph-operator
13+
repoURL: 'https://github.com/pratik705/trinity.git'
14+
targetRevision: HEAD
15+
syncPolicy:
16+
syncOptions:
17+
- ServerSideApply=true
18+
automated:
19+
selfHeal: true
20+
prune: false
21+
sources: []
22+
project: default

ceph-rook/argoCD/02-ceph-argo.yaml

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
apiVersion: argoproj.io/v1alpha1
2+
kind: Application
3+
metadata:
4+
name: ceph
5+
namespace: rackspace-system
6+
spec:
7+
destination:
8+
name: ''
9+
namespace: ''
10+
server: 'https://kubernetes.default.svc'
11+
source:
12+
path: ceph-rook/ceph
13+
repoURL: 'https://github.com/pratik705/trinity.git'
14+
targetRevision: HEAD
15+
syncPolicy:
16+
syncOptions:
17+
- ServerSideApply=true
18+
automated:
19+
selfHeal: true
20+
prune: false
21+
sources: []
22+
project: default
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
apiVersion: argoproj.io/v1alpha1
2+
kind: Application
3+
metadata:
4+
name: ceph-rgw
5+
namespace: rackspace-system
6+
spec:
7+
destination:
8+
name: ''
9+
namespace: ''
10+
server: 'https://kubernetes.default.svc'
11+
source:
12+
path: ceph-rook/ceph-rgw
13+
repoURL: 'https://github.com/pratik705/trinity.git'
14+
targetRevision: HEAD
15+
syncPolicy:
16+
syncOptions:
17+
- ServerSideApply=true
18+
automated:
19+
selfHeal: true
20+
prune: false
21+
sources: []
22+
project: default
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
apiVersion: argoproj.io/v1alpha1
2+
kind: Application
3+
metadata:
4+
name: ceph-mds
5+
namespace: rackspace-system
6+
spec:
7+
destination:
8+
name: ''
9+
namespace: ''
10+
server: 'https://kubernetes.default.svc'
11+
source:
12+
path: ceph-rook/ceph-mds
13+
repoURL: 'https://github.com/pratik705/trinity.git'
14+
targetRevision: HEAD
15+
syncPolicy:
16+
syncOptions:
17+
- ServerSideApply=true
18+
automated:
19+
selfHeal: true
20+
prune: false
21+
sources: []
22+
project: default

ceph-rook/argoCD/05-toolbox-argo.yaml

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
apiVersion: argoproj.io/v1alpha1
2+
kind: Application
3+
metadata:
4+
name: ceph-toolbox
5+
namespace: rackspace-system
6+
spec:
7+
destination:
8+
name: ''
9+
namespace: ''
10+
server: 'https://kubernetes.default.svc'
11+
source:
12+
path: ceph-rook/toolbox
13+
repoURL: 'https://github.com/pratik705/trinity.git'
14+
targetRevision: HEAD
15+
syncPolicy:
16+
syncOptions:
17+
- ServerSideApply=true
18+
automated:
19+
selfHeal: true
20+
prune: false
21+
sources: []
22+
project: default

0 commit comments

Comments
 (0)