Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions addons/hdfs-operator/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Kubedoop Operator for Apache Hadoop

This is a Kubernetes operator to manage Apache Hadoop HDFS clusters.

It's part of the kubedoop Data Platform, a modular open source data platform built on Kubernetes that provides Kubernetes native deployment
and management of popular open source data apps like Apache Kafka, Apache Doris, Apache Kyuubi, Trino or Apache Spark, all working
together seamlessly. Based on Kubernetes, it runs everywhere – on prem or in the cloud.
16 changes: 16 additions & 0 deletions addons/hdfs-operator/metadata.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: hdfs-operator
version: 0.1.0
description: Apache Hadoop HDFS operator for the Kubedoop.
icon: https://github.com/zncdatadev/kubedoop/raw/main/docs/assets/icon_kubedoop.png
url: https://github.com/zncdatadev/hdfs-operator

tags:
- kubedoop

dependencies:
- name: commons-operator
- name: listener-operator
- name: secret-operator

system:
vela: ">=v1.9.0"
10 changes: 10 additions & 0 deletions addons/hdfs-operator/parameter.cue
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
parameter: {
// +usage=Specify if upgrade the CRDs when upgrading ingress-nginx or not
upgradeCRD: *false | bool
//+usage=Deploy to specified clusters. Leave empty to deploy to all clusters.
clusters?: [...string]
//+usage=Namespace to deploy to, defaults to kubedoop-system
namespace: *"kubedoop-system" | string
//+usage=Number of replicas
replicas: *1 | int
}
19 changes: 19 additions & 0 deletions addons/hdfs-operator/resources/hdfs-operator.cue
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package main

hdfsOperator: {
name: "hdfs-operator"
type: "helm"
dependsOn: ["hdfs-operator-ns"]
properties: {
repoType: "helm"
url: "https://zncdatadev.github.io/kubedoop-helm-charts"
chart: "hdfs-operator"
releaseName: "hdfs-operator"
targetNamespace: parameter.namespace
version: context.metadata.version
upgradeCRD: parameter.upgradeCRD
values: {
replicaCount: parameter.replicas
}
}
}
32 changes: 32 additions & 0 deletions addons/hdfs-operator/resources/topology.cue
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package main

import "encoding/json"

resourceTopology: {
apiVersion: "v1"
kind: "ConfigMap"
metadata: {
name: "hdfs-operator-topology"
namespace: "vela-system"
labels: {
"rules.oam.dev/resources": "true"
"rules.oam.dev/resource-format": "json"
}
}
data: rules: json.Marshal([{
parentResourceType: {
group: "hdfs.kubedoop.dev"
kind: "HdfsCluster"
}
childrenResourceType: [
{
apiVersion: "apps/v1"
kind: "StatefulSet"
},
{
apiVersion: "v1"
kind: "Service"
},
]
}])
}
46 changes: 46 additions & 0 deletions addons/hdfs-operator/template.cue
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package main

_targetNamespace: parameter.namespace

output: {
apiVersion: "core.oam.dev/v1beta1"
kind: "Application"
spec: {
components: [
{
type: "k8s-objects"
name: "hdfs-operator-ns"
properties: objects: [{
apiVersion: "v1"
kind: "Namespace"
metadata: name: _targetNamespace
}]
},
hdfsOperator
]
policies: [
{
type: "shared-resource"
name: "hdfs-operator-ns"
properties: rules: [{
selector: resourceTypes: ["Namespace"]
}]
},
{
type: "topology"
name: "deploy-topology"
properties: {
namespace: _targetNamespace
if parameter.clusters != _|_ {
clusters: parameter.clusters
}
if parameter.clusters == _|_ {
clusterLabelSelector: {}
}
}
},
]
}
}

outputs: topology: resourceTopology
42 changes: 42 additions & 0 deletions examples/hdfs-operator/hdfs-cluster.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: hdfs-cluster
spec:
components:
- name: "hdfs-cluster"
type: "k8s-objects"
properties:
objects:
- apiVersion: hdfs.kubedoop.dev/v1alpha1
kind: HdfsCluster
metadata:
name: simple-hdfs
spec:
image:
productVersion: 3.4.0
clusterConfig:
zookeeperConfigMapName: simple-hdfs-znode
dfsReplication: 1
nameNodes:
config:
listenerClass: external-stable
roleGroups:
default:
replicas: 2
dataNodes:
config:
listenerClass: external-unstable
roleGroups:
default:
replicas: 1
journalNodes:
roleGroups:
default:
replicas: 1
policies:
- name: topology-demo
type: topology
properties:
clusters: ['local']
namespace: demo
34 changes: 34 additions & 0 deletions examples/hdfs-operator/zookeeper-cluster.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: zookeeper-cluster
spec:
components:
- name: "zookeeper-cluster"
type: "k8s-objects"
properties:
objects:
- apiVersion: zookeeper.kubedoop.dev/v1alpha1
kind: ZookeeperCluster
metadata:
name: simple-zk
spec:
image:
productVersion: 3.9.2
servers:
roleGroups:
default:
replicas: 1
- apiVersion: zookeeper.kubedoop.dev/v1alpha1
kind: ZookeeperZnode
metadata:
name: simple-hdfs-znode
spec:
clusterRef:
name: simple-zk
policies:
- name: topology-demo
type: topology
properties:
clusters: ['local']
namespace: demo