Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/seaweedfs/seaweedfs-operator
seaweedfs kubernetes operator
https://github.com/seaweedfs/seaweedfs-operator
Last synced: 17 days ago
JSON representation
seaweedfs kubernetes operator
- Host: GitHub
- URL: https://github.com/seaweedfs/seaweedfs-operator
- Owner: seaweedfs
- License: apache-2.0
- Created: 2019-10-23T02:10:06.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-11-08T20:02:06.000Z (about 1 month ago)
- Last Synced: 2024-11-08T21:17:37.946Z (about 1 month ago)
- Language: Go
- Size: 16.8 MB
- Stars: 172
- Watchers: 7
- Forks: 42
- Open Issues: 31
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - seaweedfs/seaweedfs-operator - seaweedfs kubernetes operator (others)
README
[![Build Status](https://travis-ci.com/seaweedfs/seaweedfs-operator.svg?branch=master)](https://travis-ci.com/github/seaweedfs/seaweedfs-operator)
# SeaweedFS Operator
This [Kubernetes Operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) is made to easily deploy SeaweedFS onto your Kubernetes cluster.
The difference to [seaweedfs-csi-driver](https://github.com/seaweedfs/seaweedfs-csi-driver) is that the infrastructure (SeaweedFS) itself runs on Kubernetes as well (Master, Filer, Volume-Servers) and can as such easily scale with it as you need. It is also by far more resilent to failures then a simple systemD service in regards to handling crashing services or accidental deletes.
By using `make deploy` it will deploy a Resource of type 'Seaweed' onto your current kubectl $KUBECONFIG target (the operator itself) which by default will do nothing unless you configurate it (see examples in config/samples/).
Goals:
- [x] Automatically deploy and manage a SeaweedFS cluster
- [x] Ability to be managed by other Operators
- [ ] Compability with [seaweedfs-csi-driver](https://github.com/seaweedfs/seaweedfs-csi-driver)
- [x] Auto rolling upgrade and restart
- [x] Ingress for volume server, filer and S3, to support HDFS, REST filer, S3 API and cross-cluster replication
- [ ] Support all major cloud Kubernetes: AWS, Google, Azure
- [ ] Scheduled backup to cloud storage: S3, Google Cloud Storage , Azure
- [ ] Put warm data to cloud storage tier: S3, Google Cloud Storage , Azure
- [x] Grafana dashboard## Installation
This operator uses `kustomize` for deployment. Please [install kustomize](https://kubectl.docs.kubernetes.io/installation/kustomize/) if you do not have it.
By default, the defaulting and validation webhooks are disabled. We strongly recommend to enable the webhooks.
First clone the repository:
```bash
git clone https://github.com/seaweedfs/seaweedfs-operator --depth=1
```To deploy the operator with webhooks enabled, make sure you have installed the `cert-manager`(Installation docs: ) in your cluster, then follow the instructions in the `config/default/kustomization.yaml` file to uncomment the components you need.
Lastly, change the value of `ENABLE_WEBHOOKS` to `"true"` in `config/manager/manager.yaml`Manager image must be locally built and published into a registry accessible from your k8s cluster:
```bash
export IMG=
make docker-build
make docker-push
```Afterwards fire up to install CRDs:
```bash
make install
```Then run the command to deploy the operator into your cluster using Kustomize or Helm:
```bash
# if using Kustomize
make deploy
# if using Helm
helm install seaweedfs-operator ./deploy/helm
```Verify it was correctly deployed:
```bash
kubectl get pods --all-namespaces
```Which may return:
```bash
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-f9fd979d6-68p4c 1/1 Running 0 34m
kube-system coredns-f9fd979d6-x992t 1/1 Running 0 34m
kube-system etcd-kind-control-plane 1/1 Running 0 34m
kube-system kindnet-rp7wr 1/1 Running 0 34m
kube-system kube-apiserver-kind-control-plane 1/1 Running 0 34m
kube-system kube-controller-manager-kind-control-plane 1/1 Running 0 34m
kube-system kube-proxy-dqfg2 1/1 Running 0 34m
kube-system kube-scheduler-kind-control-plane 1/1 Running 0 34m
local-path-storage local-path-provisioner-78776bfc44-7zvxx 1/1 Running 0 34m
seaweedfs-operator-system seaweedfs-operator-controller-manager-54cc768f4c-cwz2k 2/2 Running 0 34m
```See the next section for example usage - **at this point you only deployed the Operator itself!**
### You need to also deploy a configuration to get it running (see next section)!
## Configuration Examples
- Please send us your use-cases / example configs ... this is currently empty (needs to be written)
- For now see:```yaml
apiVersion: seaweed.seaweedfs.com/v1
kind: Seaweed
metadata:
name: seaweed1
namespace: default
spec:
# Add fields here
image: chrislusf/seaweedfs:latest
volumeServerDiskCount: 1
hostSuffix: seaweed.abcdefg.com
master:
replicas: 3
volumeSizeLimitMB: 1024
volume:
replicas: 1
requests:
storage: 2Gi
filer:
replicas: 2
config: |
[leveldb2]
enabled = true
dir = "/data/filerldb2"
```## Maintenance and Uninstallation
- TBD
## Development
Follow the instructions in
```bash
# install and prepare kind-cluster for development
make kind-prepare# build the operator image and load the image into Kind cluster
make kind-load# deploy operator and CRDs
make deploy# install example of CR
kubectl apply -f config/samples/seaweed_v1_seaweed.yaml
```### Update the Operator
```bash
# rebuild and re-upload image to the kind
make kind-load# redeploy operator and CRDs
make redeploy
```### Develop outside of k8s
```bash
# register the CRD with the Kubernetes cluster
make install# run the operator locally outside the Kubernetes cluster
make run ENABLE_WEBHOOKS=false# From another terminal in the same directory
kubectl apply -f config/samples/seaweed_v1_seaweed.yaml
```