This is an automated email from the ASF dual-hosted git repository.

adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new 3a0e3b5364 HDDS-11845. Extract k8s definitions for HttpFS and Recon 
from getting-started example (#7523)
3a0e3b5364 is described below

commit 3a0e3b536426634ed894040c8a760de5299d2cdb
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Wed Dec 18 12:41:58 2024 +0100

    HDDS-11845. Extract k8s definitions for HttpFS and Recon from 
getting-started example (#7523)
---
 .../k8s/regenerate-examples.sh}                    | 21 +++----
 .../src/main/k8s/definitions/ozone/config.yaml     | 18 ++++--
 .../ozone/httpfs-ss-service.yaml}                  | 23 +++----
 .../ozone/httpfs-ss.yaml}                          | 38 ++++++++----
 .../ozone/recon-ss-service.yaml}                   | 23 +++----
 .../ozone/recon-ss.yaml}                           | 61 +++++++++++--------
 hadoop-ozone/dist/src/main/k8s/examples/README.md  | 22 +++++++
 .../examples/getting-started/config-configmap.yaml | 18 +++---
 .../examples/getting-started/kustomization.yaml    | 12 ++--
 .../k8s/examples/minikube/config-configmap.yaml    | 16 +++--
 .../httpfs-public-service.yaml}                    | 22 +++----
 .../httpfs-service.yaml}                           | 22 +++----
 .../k8s/examples/minikube/httpfs-statefulset.yaml  | 55 +++++++++++++++++
 .../main/k8s/examples/minikube/kustomization.yaml  |  6 ++
 .../recon-public-service.yaml}                     | 22 +++----
 .../recon-service.yaml}                            | 22 +++----
 .../k8s/examples/minikube/recon-statefulset.yaml   | 63 +++++++++++++++++++
 .../k8s/examples/ozone-dev/config-configmap.yaml   | 16 +++--
 .../httpfs-public-service.yaml}                    | 22 +++----
 .../httpfs-service.yaml}                           | 22 +++----
 .../k8s/examples/ozone-dev/httpfs-statefulset.yaml | 62 +++++++++++++++++++
 .../main/k8s/examples/ozone-dev/kustomization.yaml |  6 ++
 .../recon-public-service.yaml}                     | 22 +++----
 .../recon-service.yaml}                            | 22 +++----
 .../k8s/examples/ozone-dev/recon-statefulset.yaml  | 69 +++++++++++++++++++++
 .../k8s/examples/ozone-ha/config-configmap.yaml    | 14 +++--
 .../httpfs-service.yaml}                           | 22 +++----
 .../k8s/examples/ozone-ha/httpfs-statefulset.yaml  | 61 +++++++++++++++++++
 .../main/k8s/examples/ozone-ha/kustomization.yaml  |  4 ++
 .../recon-service.yaml}                            | 22 +++----
 .../k8s/examples/ozone-ha/recon-statefulset.yaml   | 70 ++++++++++++++++++++++
 .../main/k8s/examples/ozone/config-configmap.yaml  | 16 +++--
 .../{kustomization.yaml => httpfs-service.yaml}    | 22 +++----
 .../k8s/examples/ozone/httpfs-statefulset.yaml     | 61 +++++++++++++++++++
 .../src/main/k8s/examples/ozone/kustomization.yaml |  4 ++
 .../{kustomization.yaml => recon-service.yaml}     | 22 +++----
 .../main/k8s/examples/ozone/recon-statefulset.yaml | 70 ++++++++++++++++++++++
 37 files changed, 867 insertions(+), 226 deletions(-)

diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dev-support/k8s/regenerate-examples.sh
old mode 100644
new mode 100755
similarity index 74%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to hadoop-ozone/dev-support/k8s/regenerate-examples.sh
index 6b3d553113..ffedaa3b72
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dev-support/k8s/regenerate-examples.sh
@@ -1,3 +1,4 @@
+#!/usr/bin/env bash
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
 # distributed with this work for additional information
@@ -14,13 +15,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+set -u -o pipefail
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+cd "$DIR/../../.." || exit 1
+
+source "hadoop-ozone/dev-support/checks/_lib.sh"
+
+install_flekszible
+
+hadoop-ozone/dist/src/main/k8s/examples/regenerate-all.sh
diff --git a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/config.yaml 
b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/config.yaml
index f451a893eb..8239325dd9 100644
--- a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/config.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/config.yaml
@@ -13,22 +13,28 @@
 # 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.
+
 apiVersion: v1
 kind: ConfigMap
 metadata:
   name: config
 data:
-
+  CORE-SITE.XML_fs.defaultFS: ofs://om/
+  CORE-SITE.XML_fs.trash.interval: "1"
+  HTTPFS-SITE.XML_httpfs.hadoop.config.dir: /opt/hadoop/etc/config
+  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.groups: "*"
+  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.hosts: "*"
+  OZONE-SITE.XML_dfs.datanode.use.datanode.hostname: "true"
   OZONE-SITE.XML_hdds.datanode.dir: "/data/storage"
-  OZONE-SITE.XML_ozone.scm.datanode.id.dir: "/data/metadata"
+  OZONE-SITE.XML_hdds.scm.safemode.min.datanode: "3"
+  OZONE-SITE.XML_ozone.datanode.pipeline.limit: "1"
   OZONE-SITE.XML_ozone.metadata.dirs: "/data/metadata"
-  OZONE-SITE.XML_ozone.scm.block.client.address: "scm-0.scm"
   OZONE-SITE.XML_ozone.om.address: "om-0.om"
+  OZONE-SITE.XML_ozone.recon.address: "recon-0.recon"
+  OZONE-SITE.XML_ozone.scm.block.client.address: "scm-0.scm"
   OZONE-SITE.XML_ozone.scm.client.address: "scm-0.scm"
+  OZONE-SITE.XML_ozone.scm.datanode.id.dir: "/data/metadata"
   OZONE-SITE.XML_ozone.scm.names: "scm-0.scm"
-  OZONE-SITE.XML_hdds.scm.safemode.min.datanode: "3"
-  OZONE-SITE.XML_ozone.datanode.pipeline.limit: "1"
-  OZONE-SITE.XML_dfs.datanode.use.datanode.hostname: "true"
   LOG4J.PROPERTIES_log4j.rootLogger: "INFO, stdout"
   LOG4J.PROPERTIES_log4j.appender.stdout: "org.apache.log4j.ConsoleAppender"
   LOG4J.PROPERTIES_log4j.appender.stdout.layout: 
"org.apache.log4j.PatternLayout"
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/httpfs-ss-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to hadoop-ozone/dist/src/main/k8s/definitions/ozone/httpfs-ss-service.yaml
index 6b3d553113..0b8f117524 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/httpfs-ss-service.yaml
@@ -13,14 +13,15 @@
 # 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.
-
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: httpfs
+spec:
+  ports:
+  - port: 14000
+    name: rest
+  clusterIP: None
+  selector:
+     app: ozone
+     component: httpfs
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/httpfs-ss.yaml
similarity index 57%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to hadoop-ozone/dist/src/main/k8s/definitions/ozone/httpfs-ss.yaml
index 6b3d553113..1084ca0373 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/httpfs-ss.yaml
@@ -14,13 +14,31 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: httpfs
+  labels:
+    app.kubernetes.io/component: ozone
+spec:
+  selector:
+    matchLabels:
+      app: ozone
+      component: httpfs
+  serviceName: httpfs
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: ozone
+        component: httpfs
+    spec:
+      containers:
+      - name: httpfs
+        image: "@docker.image@"
+        args: ["ozone","httpfs"]
+        livenessProbe:
+          httpGet:
+            path: /webhdfs/v1/?op=LISTSTATUS&user.name=hadoop
+            port: 14000
+          initialDelaySeconds: 30
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/recon-ss-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to hadoop-ozone/dist/src/main/k8s/definitions/ozone/recon-ss-service.yaml
index 6b3d553113..a7994a6b91 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/recon-ss-service.yaml
@@ -13,14 +13,15 @@
 # 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.
-
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: recon
+spec:
+  ports:
+  - port: 9888
+    name: ui
+  clusterIP: None
+  selector:
+     app: ozone
+     component: recon
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/recon-ss.yaml
similarity index 50%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/kustomization.yaml
copy to hadoop-ozone/dist/src/main/k8s/definitions/ozone/recon-ss.yaml
index cf0cbe152d..f06dc54c66 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/recon-ss.yaml
@@ -13,27 +13,40 @@
 # 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.
-
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
-- prometheusconf-configmap.yaml
-- prometheus-deployment.yaml
-- prometheus-clusterrole.yaml
-- prometheus-operator-clusterrolebinding.yaml
-- prometheus-operator-serviceaccount.yaml
-- prometheus-service.yaml
-- jaeger-service.yaml
-- jaeger-statefulset.yaml
-- datanode-public-service.yaml
-- om-public-service.yaml
-- s3g-public-service.yaml
-- scm-public-service.yaml
-- jaeger-public-service.yaml
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: recon
+  labels:
+    app.kubernetes.io/component: ozone
+spec:
+  selector:
+    matchLabels:
+      app: ozone
+      component: recon
+  serviceName: recon
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: ozone
+        component: recon
+      annotations:
+        prometheus.io/scrape: "true"
+        prometheus.io/port: "9888"
+        prometheus.io/path: "/prom"
+    spec:
+      securityContext:
+        fsGroup: 1000
+      containers:
+      - name: recon
+        image: "@docker.image@"
+        args: ["ozone","recon"]
+        env:
+        - name: WAITFOR
+          value: scm-0.scm:9876
+        livenessProbe:
+          tcpSocket:
+            port: 9891
+          initialDelaySeconds: 30
+      volumes: []
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/README.md 
b/hadoop-ozone/dist/src/main/k8s/examples/README.md
new file mode 100644
index 0000000000..574efc6704
--- /dev/null
+++ b/hadoop-ozone/dist/src/main/k8s/examples/README.md
@@ -0,0 +1,22 @@
+<!---
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.
+--->
+
+# Ozone examples for Kubernetes
+
+This directory contains example resources for running Ozone in Kubernetes.
+
+Note that the files are generated based on the [definitions](../definitions) 
using [Flekszible](https://github.com/elek/flekszible).  If you would like to 
modify them permanently, edit the definition and regenerate the examples by 
running `regenerate-all.sh` after installing Flekszible.  As a developer, you 
can run `hadoop-ozone/dev-support/k8s/regenerate-examples.sh`, which will also 
install Flekszible.
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/getting-started/config-configmap.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/config-configmap.yaml
index bb0608dac8..4e503b7bd0 100644
--- 
a/hadoop-ozone/dist/src/main/k8s/examples/getting-started/config-configmap.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/config-configmap.yaml
@@ -19,22 +19,22 @@ kind: ConfigMap
 metadata:
   name: config
 data:
-  HTTPFS-SITE.XML_httpfs.hadoop.config.dir: /opt/hadoop/etc/config
   CORE-SITE.XML_fs.defaultFS: ofs://om/
   CORE-SITE.XML_fs.trash.interval: "1"
-  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.hosts: "*"
-  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.groups: "*"
+  HTTPFS-SITE.XML_httpfs.hadoop.config.dir: /opt/hadoop/etc/config
+  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.groups: '*'
+  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.hosts: '*'
+  OZONE-SITE.XML_dfs.datanode.use.datanode.hostname: "true"
   OZONE-SITE.XML_hdds.datanode.dir: /data/storage
-  OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data/metadata
+  OZONE-SITE.XML_hdds.scm.safemode.min.datanode: "3"
+  OZONE-SITE.XML_ozone.datanode.pipeline.limit: "1"
   OZONE-SITE.XML_ozone.metadata.dirs: /data/metadata
-  OZONE-SITE.XML_ozone.scm.block.client.address: scm-0.scm
   OZONE-SITE.XML_ozone.om.address: om-0.om
+  OZONE-SITE.XML_ozone.recon.address: recon-0.recon
+  OZONE-SITE.XML_ozone.scm.block.client.address: scm-0.scm
   OZONE-SITE.XML_ozone.scm.client.address: scm-0.scm
+  OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data/metadata
   OZONE-SITE.XML_ozone.scm.names: scm-0.scm
-  OZONE-SITE.XML_ozone.recon.address: recon-0.recon
-  OZONE-SITE.XML_hdds.scm.safemode.min.datanode: "3"
-  OZONE-SITE.XML_ozone.datanode.pipeline.limit: "1"
-  OZONE-SITE.XML_dfs.datanode.use.datanode.hostname: "true"
   LOG4J.PROPERTIES_log4j.rootLogger: INFO, stdout
   LOG4J.PROPERTIES_log4j.appender.stdout: org.apache.log4j.ConsoleAppender
   LOG4J.PROPERTIES_log4j.appender.stdout.layout: org.apache.log4j.PatternLayout
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/getting-started/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/kustomization.yaml
index 4f60be1787..427c654d54 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/getting-started/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/kustomization.yaml
@@ -18,19 +18,19 @@ resources:
 - config-configmap.yaml
 - datanode-service.yaml
 - datanode-statefulset.yaml
+- httpfs-service.yaml
+- httpfs-statefulset.yaml
 - om-service.yaml
 - om-statefulset.yaml
+- recon-service.yaml
+- recon-statefulset.yaml
 - s3g-service.yaml
 - s3g-statefulset.yaml
 - scm-service.yaml
 - scm-statefulset.yaml
-- httpfs-service.yaml
-- httpfs-statefulset.yaml
-- recon-service.yaml
-- recon-statefulset.yaml
 - datanode-public-service.yaml
+- httpfs-public-service.yaml
 - om-public-service.yaml
+- recon-public-service.yaml
 - s3g-public-service.yaml
 - scm-public-service.yaml
-- httpfs-public-service.yaml
-- recon-public-service.yaml
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/config-configmap.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/config-configmap.yaml
index 2a0cf869a5..4e503b7bd0 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/config-configmap.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/config-configmap.yaml
@@ -19,16 +19,22 @@ kind: ConfigMap
 metadata:
   name: config
 data:
+  CORE-SITE.XML_fs.defaultFS: ofs://om/
+  CORE-SITE.XML_fs.trash.interval: "1"
+  HTTPFS-SITE.XML_httpfs.hadoop.config.dir: /opt/hadoop/etc/config
+  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.groups: '*'
+  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.hosts: '*'
+  OZONE-SITE.XML_dfs.datanode.use.datanode.hostname: "true"
   OZONE-SITE.XML_hdds.datanode.dir: /data/storage
-  OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data/metadata
+  OZONE-SITE.XML_hdds.scm.safemode.min.datanode: "3"
+  OZONE-SITE.XML_ozone.datanode.pipeline.limit: "1"
   OZONE-SITE.XML_ozone.metadata.dirs: /data/metadata
-  OZONE-SITE.XML_ozone.scm.block.client.address: scm-0.scm
   OZONE-SITE.XML_ozone.om.address: om-0.om
+  OZONE-SITE.XML_ozone.recon.address: recon-0.recon
+  OZONE-SITE.XML_ozone.scm.block.client.address: scm-0.scm
   OZONE-SITE.XML_ozone.scm.client.address: scm-0.scm
+  OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data/metadata
   OZONE-SITE.XML_ozone.scm.names: scm-0.scm
-  OZONE-SITE.XML_hdds.scm.safemode.min.datanode: "3"
-  OZONE-SITE.XML_ozone.datanode.pipeline.limit: "1"
-  OZONE-SITE.XML_dfs.datanode.use.datanode.hostname: "true"
   LOG4J.PROPERTIES_log4j.rootLogger: INFO, stdout
   LOG4J.PROPERTIES_log4j.appender.stdout: org.apache.log4j.ConsoleAppender
   LOG4J.PROPERTIES_log4j.appender.stdout.layout: org.apache.log4j.PatternLayout
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/httpfs-public-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/minikube/httpfs-public-service.yaml
index 6b3d553113..d858625055 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/httpfs-public-service.yaml
@@ -14,13 +14,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: httpfs-public
+spec:
+  ports:
+  - port: 14000
+    name: rest
+  selector:
+    app: ozone
+    component: httpfs
+  type: NodePort
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/httpfs-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/minikube/httpfs-service.yaml
index 6b3d553113..0ab49c2d72 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/httpfs-service.yaml
@@ -14,13 +14,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: httpfs
+spec:
+  ports:
+  - port: 14000
+    name: rest
+  clusterIP: None
+  selector:
+    app: ozone
+    component: httpfs
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/httpfs-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/httpfs-statefulset.yaml
new file mode 100644
index 0000000000..7bca21585c
--- /dev/null
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/httpfs-statefulset.yaml
@@ -0,0 +1,55 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: httpfs
+  labels:
+    app.kubernetes.io/component: ozone
+spec:
+  selector:
+    matchLabels:
+      app: ozone
+      component: httpfs
+  serviceName: httpfs
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: ozone
+        component: httpfs
+    spec:
+      containers:
+      - name: httpfs
+        image: '@docker.image@'
+        args:
+        - ozone
+        - httpfs
+        livenessProbe:
+          httpGet:
+            path: /webhdfs/v1/?op=LISTSTATUS&user.name=hadoop
+            port: 14000
+          initialDelaySeconds: 30
+        envFrom:
+        - configMapRef:
+            name: config
+        volumeMounts:
+        - name: data
+          mountPath: /data
+      volumes:
+      - name: data
+        emptyDir: {}
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/kustomization.yaml
index 3059b9c801..427c654d54 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/kustomization.yaml
@@ -18,13 +18,19 @@ resources:
 - config-configmap.yaml
 - datanode-service.yaml
 - datanode-statefulset.yaml
+- httpfs-service.yaml
+- httpfs-statefulset.yaml
 - om-service.yaml
 - om-statefulset.yaml
+- recon-service.yaml
+- recon-statefulset.yaml
 - s3g-service.yaml
 - s3g-statefulset.yaml
 - scm-service.yaml
 - scm-statefulset.yaml
 - datanode-public-service.yaml
+- httpfs-public-service.yaml
 - om-public-service.yaml
+- recon-public-service.yaml
 - s3g-public-service.yaml
 - scm-public-service.yaml
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/recon-public-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/minikube/recon-public-service.yaml
index 6b3d553113..c737a02f44 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/recon-public-service.yaml
@@ -14,13 +14,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: recon-public
+spec:
+  ports:
+  - port: 9888
+    name: ui
+  selector:
+    app: ozone
+    component: recon
+  type: NodePort
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/recon-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/minikube/recon-service.yaml
index 6b3d553113..9c52d393d5 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/recon-service.yaml
@@ -14,13 +14,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: recon
+spec:
+  ports:
+  - port: 9888
+    name: ui
+  clusterIP: None
+  selector:
+    app: ozone
+    component: recon
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/recon-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/recon-statefulset.yaml
new file mode 100644
index 0000000000..8b9ee191d0
--- /dev/null
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/recon-statefulset.yaml
@@ -0,0 +1,63 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: recon
+  labels:
+    app.kubernetes.io/component: ozone
+spec:
+  selector:
+    matchLabels:
+      app: ozone
+      component: recon
+  serviceName: recon
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: ozone
+        component: recon
+      annotations:
+        prometheus.io/scrape: "true"
+        prometheus.io/port: "9888"
+        prometheus.io/path: /prom
+    spec:
+      securityContext:
+        fsGroup: 1000
+      containers:
+      - name: recon
+        image: '@docker.image@'
+        args:
+        - ozone
+        - recon
+        env:
+        - name: WAITFOR
+          value: scm-0.scm:9876
+        livenessProbe:
+          tcpSocket:
+            port: 9891
+          initialDelaySeconds: 30
+        envFrom:
+        - configMapRef:
+            name: config
+        volumeMounts:
+        - name: data
+          mountPath: /data
+      volumes:
+      - name: data
+        emptyDir: {}
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/config-configmap.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/config-configmap.yaml
index 1d85fe91f5..7a96695736 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/config-configmap.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/config-configmap.yaml
@@ -19,16 +19,22 @@ kind: ConfigMap
 metadata:
   name: config
 data:
+  CORE-SITE.XML_fs.defaultFS: ofs://om/
+  CORE-SITE.XML_fs.trash.interval: "1"
+  HTTPFS-SITE.XML_httpfs.hadoop.config.dir: /opt/hadoop/etc/config
+  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.groups: '*'
+  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.hosts: '*'
+  OZONE-SITE.XML_dfs.datanode.use.datanode.hostname: "true"
   OZONE-SITE.XML_hdds.datanode.dir: /data/storage
-  OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data/metadata
+  OZONE-SITE.XML_hdds.scm.safemode.min.datanode: "3"
+  OZONE-SITE.XML_ozone.datanode.pipeline.limit: "1"
   OZONE-SITE.XML_ozone.metadata.dirs: /data/metadata
-  OZONE-SITE.XML_ozone.scm.block.client.address: scm-0.scm
   OZONE-SITE.XML_ozone.om.address: om-0.om
+  OZONE-SITE.XML_ozone.recon.address: recon-0.recon
+  OZONE-SITE.XML_ozone.scm.block.client.address: scm-0.scm
   OZONE-SITE.XML_ozone.scm.client.address: scm-0.scm
+  OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data/metadata
   OZONE-SITE.XML_ozone.scm.names: scm-0.scm
-  OZONE-SITE.XML_hdds.scm.safemode.min.datanode: "3"
-  OZONE-SITE.XML_ozone.datanode.pipeline.limit: "1"
-  OZONE-SITE.XML_dfs.datanode.use.datanode.hostname: "true"
   LOG4J.PROPERTIES_log4j.rootLogger: INFO, stdout
   LOG4J.PROPERTIES_log4j.appender.stdout: org.apache.log4j.ConsoleAppender
   LOG4J.PROPERTIES_log4j.appender.stdout.layout: org.apache.log4j.PatternLayout
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/httpfs-public-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/httpfs-public-service.yaml
index 6b3d553113..d858625055 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/httpfs-public-service.yaml
@@ -14,13 +14,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: httpfs-public
+spec:
+  ports:
+  - port: 14000
+    name: rest
+  selector:
+    app: ozone
+    component: httpfs
+  type: NodePort
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/httpfs-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/httpfs-service.yaml
index 6b3d553113..0ab49c2d72 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/httpfs-service.yaml
@@ -14,13 +14,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: httpfs
+spec:
+  ports:
+  - port: 14000
+    name: rest
+  clusterIP: None
+  selector:
+    app: ozone
+    component: httpfs
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/httpfs-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/httpfs-statefulset.yaml
new file mode 100644
index 0000000000..59abe8547f
--- /dev/null
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/httpfs-statefulset.yaml
@@ -0,0 +1,62 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: httpfs
+  labels:
+    app.kubernetes.io/component: ozone
+spec:
+  selector:
+    matchLabels:
+      app: ozone
+      component: httpfs
+  serviceName: httpfs
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: ozone
+        component: httpfs
+    spec:
+      containers:
+      - name: httpfs
+        image: '@docker.image@'
+        args:
+        - ozone
+        - httpfs
+        livenessProbe:
+          httpGet:
+            path: /webhdfs/v1/?op=LISTSTATUS&user.name=hadoop
+            port: 14000
+          initialDelaySeconds: 30
+        envFrom:
+        - configMapRef:
+            name: config
+        env:
+        - name: JAEGER_SAMPLER_TYPE
+          value: probabilistic
+        - name: JAEGER_SAMPLER_PARAM
+          value: "0.01"
+        - name: JAEGER_AGENT_HOST
+          value: jaeger-0.jaeger
+        volumeMounts:
+        - name: data
+          mountPath: /data
+      volumes:
+      - name: data
+        emptyDir: {}
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/kustomization.yaml
index cf0cbe152d..f654f6f510 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/kustomization.yaml
@@ -18,8 +18,12 @@ resources:
 - config-configmap.yaml
 - datanode-service.yaml
 - datanode-statefulset.yaml
+- httpfs-service.yaml
+- httpfs-statefulset.yaml
 - om-service.yaml
 - om-statefulset.yaml
+- recon-service.yaml
+- recon-statefulset.yaml
 - s3g-service.yaml
 - s3g-statefulset.yaml
 - scm-service.yaml
@@ -33,7 +37,9 @@ resources:
 - jaeger-service.yaml
 - jaeger-statefulset.yaml
 - datanode-public-service.yaml
+- httpfs-public-service.yaml
 - om-public-service.yaml
+- recon-public-service.yaml
 - s3g-public-service.yaml
 - scm-public-service.yaml
 - jaeger-public-service.yaml
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/recon-public-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/recon-public-service.yaml
index 6b3d553113..c737a02f44 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/recon-public-service.yaml
@@ -14,13 +14,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: recon-public
+spec:
+  ports:
+  - port: 9888
+    name: ui
+  selector:
+    app: ozone
+    component: recon
+  type: NodePort
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/recon-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/recon-service.yaml
index 6b3d553113..9c52d393d5 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/recon-service.yaml
@@ -14,13 +14,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: recon
+spec:
+  ports:
+  - port: 9888
+    name: ui
+  clusterIP: None
+  selector:
+    app: ozone
+    component: recon
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/recon-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/recon-statefulset.yaml
new file mode 100644
index 0000000000..6466c29595
--- /dev/null
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/recon-statefulset.yaml
@@ -0,0 +1,69 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: recon
+  labels:
+    app.kubernetes.io/component: ozone
+spec:
+  selector:
+    matchLabels:
+      app: ozone
+      component: recon
+  serviceName: recon
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: ozone
+        component: recon
+      annotations:
+        prometheus.io/scrape: "true"
+        prometheus.io/port: "9888"
+        prometheus.io/path: /prom
+    spec:
+      securityContext:
+        fsGroup: 1000
+      containers:
+      - name: recon
+        image: '@docker.image@'
+        args:
+        - ozone
+        - recon
+        env:
+        - name: WAITFOR
+          value: scm-0.scm:9876
+        - name: JAEGER_SAMPLER_TYPE
+          value: probabilistic
+        - name: JAEGER_SAMPLER_PARAM
+          value: "0.01"
+        - name: JAEGER_AGENT_HOST
+          value: jaeger-0.jaeger
+        livenessProbe:
+          tcpSocket:
+            port: 9891
+          initialDelaySeconds: 30
+        envFrom:
+        - configMapRef:
+            name: config
+        volumeMounts:
+        - name: data
+          mountPath: /data
+      volumes:
+      - name: data
+        emptyDir: {}
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/config-configmap.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/config-configmap.yaml
index 193a0618ab..a9315eb210 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/config-configmap.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/config-configmap.yaml
@@ -19,13 +19,19 @@ kind: ConfigMap
 metadata:
   name: config
 data:
+  CORE-SITE.XML_fs.defaultFS: ofs://om/
+  CORE-SITE.XML_fs.trash.interval: "1"
+  HTTPFS-SITE.XML_httpfs.hadoop.config.dir: /opt/hadoop/etc/config
+  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.groups: '*'
+  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.hosts: '*'
+  OZONE-SITE.XML_dfs.datanode.use.datanode.hostname: "true"
   OZONE-SITE.XML_hdds.datanode.dir: /data/storage
-  OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data/metadata
-  OZONE-SITE.XML_ozone.metadata.dirs: /data/metadata
-  OZONE-SITE.XML_ozone.om.address: om-0.om
   OZONE-SITE.XML_hdds.scm.safemode.min.datanode: "3"
   OZONE-SITE.XML_ozone.datanode.pipeline.limit: "1"
-  OZONE-SITE.XML_dfs.datanode.use.datanode.hostname: "true"
+  OZONE-SITE.XML_ozone.metadata.dirs: /data/metadata
+  OZONE-SITE.XML_ozone.om.address: om-0.om
+  OZONE-SITE.XML_ozone.recon.address: recon-0.recon
+  OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data/metadata
   LOG4J.PROPERTIES_log4j.rootLogger: INFO, stdout
   LOG4J.PROPERTIES_log4j.appender.stdout: org.apache.log4j.ConsoleAppender
   LOG4J.PROPERTIES_log4j.appender.stdout.layout: org.apache.log4j.PatternLayout
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/httpfs-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/httpfs-service.yaml
index 6b3d553113..0ab49c2d72 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/httpfs-service.yaml
@@ -14,13 +14,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: httpfs
+spec:
+  ports:
+  - port: 14000
+    name: rest
+  clusterIP: None
+  selector:
+    app: ozone
+    component: httpfs
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/httpfs-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/httpfs-statefulset.yaml
new file mode 100644
index 0000000000..2c076ae8fc
--- /dev/null
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/httpfs-statefulset.yaml
@@ -0,0 +1,61 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: httpfs
+  labels:
+    app.kubernetes.io/component: ozone
+spec:
+  selector:
+    matchLabels:
+      app: ozone
+      component: httpfs
+  serviceName: httpfs
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: ozone
+        component: httpfs
+    spec:
+      containers:
+      - name: httpfs
+        image: '@docker.image@'
+        args:
+        - ozone
+        - httpfs
+        livenessProbe:
+          httpGet:
+            path: /webhdfs/v1/?op=LISTSTATUS&user.name=hadoop
+            port: 14000
+          initialDelaySeconds: 30
+        envFrom:
+        - configMapRef:
+            name: config
+        volumeMounts:
+        - name: data
+          mountPath: /data
+  volumeClaimTemplates:
+  - metadata:
+      name: data
+    spec:
+      accessModes:
+      - ReadWriteOnce
+      resources:
+        requests:
+          storage: 20Gi
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/kustomization.yaml
index 6b3d553113..49b6b6e260 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/kustomization.yaml
@@ -18,8 +18,12 @@ resources:
 - config-configmap.yaml
 - datanode-service.yaml
 - datanode-statefulset.yaml
+- httpfs-service.yaml
+- httpfs-statefulset.yaml
 - om-service.yaml
 - om-statefulset.yaml
+- recon-service.yaml
+- recon-statefulset.yaml
 - s3g-service.yaml
 - s3g-statefulset.yaml
 - scm-service.yaml
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/recon-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/recon-service.yaml
index 6b3d553113..9c52d393d5 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/recon-service.yaml
@@ -14,13 +14,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: recon
+spec:
+  ports:
+  - port: 9888
+    name: ui
+  clusterIP: None
+  selector:
+    app: ozone
+    component: recon
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/recon-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/recon-statefulset.yaml
new file mode 100644
index 0000000000..445c2e222d
--- /dev/null
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/recon-statefulset.yaml
@@ -0,0 +1,70 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: recon
+  labels:
+    app.kubernetes.io/component: ozone
+spec:
+  selector:
+    matchLabels:
+      app: ozone
+      component: recon
+  serviceName: recon
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: ozone
+        component: recon
+      annotations:
+        prometheus.io/scrape: "true"
+        prometheus.io/port: "9888"
+        prometheus.io/path: /prom
+    spec:
+      securityContext:
+        fsGroup: 1000
+      containers:
+      - name: recon
+        image: '@docker.image@'
+        args:
+        - ozone
+        - recon
+        env:
+        - name: WAITFOR
+          value: scm-0.scm:9876
+        livenessProbe:
+          tcpSocket:
+            port: 9891
+          initialDelaySeconds: 30
+        envFrom:
+        - configMapRef:
+            name: config
+        volumeMounts:
+        - name: data
+          mountPath: /data
+      volumes: []
+  volumeClaimTemplates:
+  - metadata:
+      name: data
+    spec:
+      accessModes:
+      - ReadWriteOnce
+      resources:
+        requests:
+          storage: 20Gi
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone/config-configmap.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/config-configmap.yaml
index 8593073105..0825afc37b 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/config-configmap.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/config-configmap.yaml
@@ -19,16 +19,22 @@ kind: ConfigMap
 metadata:
   name: config
 data:
+  CORE-SITE.XML_fs.defaultFS: ofs://om/
+  CORE-SITE.XML_fs.trash.interval: "1"
+  HTTPFS-SITE.XML_httpfs.hadoop.config.dir: /opt/hadoop/etc/config
+  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.groups: '*'
+  HTTPFS-SITE.XML_httpfs.proxyuser.hadoop.hosts: '*'
+  OZONE-SITE.XML_dfs.datanode.use.datanode.hostname: "true"
   OZONE-SITE.XML_hdds.datanode.dir: /data/storage
-  OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data/metadata
+  OZONE-SITE.XML_hdds.scm.safemode.min.datanode: "3"
+  OZONE-SITE.XML_ozone.datanode.pipeline.limit: "1"
   OZONE-SITE.XML_ozone.metadata.dirs: /data/metadata
-  OZONE-SITE.XML_ozone.scm.block.client.address: scm-0.scm
   OZONE-SITE.XML_ozone.om.address: om-0.om
+  OZONE-SITE.XML_ozone.recon.address: recon-0.recon
+  OZONE-SITE.XML_ozone.scm.block.client.address: scm-0.scm
   OZONE-SITE.XML_ozone.scm.client.address: scm-0.scm
+  OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data/metadata
   OZONE-SITE.XML_ozone.scm.names: scm-0.scm
-  OZONE-SITE.XML_hdds.scm.safemode.min.datanode: "3"
-  OZONE-SITE.XML_ozone.datanode.pipeline.limit: "1"
-  OZONE-SITE.XML_dfs.datanode.use.datanode.hostname: "true"
   LOG4J.PROPERTIES_log4j.rootLogger: INFO, stdout
   LOG4J.PROPERTIES_log4j.appender.stdout: org.apache.log4j.ConsoleAppender
   LOG4J.PROPERTIES_log4j.appender.stdout.layout: org.apache.log4j.PatternLayout
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/httpfs-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/ozone/httpfs-service.yaml
index 6b3d553113..0ab49c2d72 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/httpfs-service.yaml
@@ -14,13 +14,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: httpfs
+spec:
+  ports:
+  - port: 14000
+    name: rest
+  clusterIP: None
+  selector:
+    app: ozone
+    component: httpfs
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone/httpfs-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/httpfs-statefulset.yaml
new file mode 100644
index 0000000000..2c076ae8fc
--- /dev/null
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/httpfs-statefulset.yaml
@@ -0,0 +1,61 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: httpfs
+  labels:
+    app.kubernetes.io/component: ozone
+spec:
+  selector:
+    matchLabels:
+      app: ozone
+      component: httpfs
+  serviceName: httpfs
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: ozone
+        component: httpfs
+    spec:
+      containers:
+      - name: httpfs
+        image: '@docker.image@'
+        args:
+        - ozone
+        - httpfs
+        livenessProbe:
+          httpGet:
+            path: /webhdfs/v1/?op=LISTSTATUS&user.name=hadoop
+            port: 14000
+          initialDelaySeconds: 30
+        envFrom:
+        - configMapRef:
+            name: config
+        volumeMounts:
+        - name: data
+          mountPath: /data
+  volumeClaimTemplates:
+  - metadata:
+      name: data
+    spec:
+      accessModes:
+      - ReadWriteOnce
+      resources:
+        requests:
+          storage: 20Gi
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
index 6b3d553113..49b6b6e260 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
@@ -18,8 +18,12 @@ resources:
 - config-configmap.yaml
 - datanode-service.yaml
 - datanode-statefulset.yaml
+- httpfs-service.yaml
+- httpfs-statefulset.yaml
 - om-service.yaml
 - om-statefulset.yaml
+- recon-service.yaml
+- recon-statefulset.yaml
 - s3g-service.yaml
 - s3g-statefulset.yaml
 - scm-service.yaml
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/recon-service.yaml
similarity index 78%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/ozone/recon-service.yaml
index 6b3d553113..9c52d393d5 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/kustomization.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/recon-service.yaml
@@ -14,13 +14,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-resources:
-- config-configmap.yaml
-- datanode-service.yaml
-- datanode-statefulset.yaml
-- om-service.yaml
-- om-statefulset.yaml
-- s3g-service.yaml
-- s3g-statefulset.yaml
-- scm-service.yaml
-- scm-statefulset.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: recon
+spec:
+  ports:
+  - port: 9888
+    name: ui
+  clusterIP: None
+  selector:
+    app: ozone
+    component: recon
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone/recon-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/recon-statefulset.yaml
new file mode 100644
index 0000000000..445c2e222d
--- /dev/null
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/recon-statefulset.yaml
@@ -0,0 +1,70 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: recon
+  labels:
+    app.kubernetes.io/component: ozone
+spec:
+  selector:
+    matchLabels:
+      app: ozone
+      component: recon
+  serviceName: recon
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: ozone
+        component: recon
+      annotations:
+        prometheus.io/scrape: "true"
+        prometheus.io/port: "9888"
+        prometheus.io/path: /prom
+    spec:
+      securityContext:
+        fsGroup: 1000
+      containers:
+      - name: recon
+        image: '@docker.image@'
+        args:
+        - ozone
+        - recon
+        env:
+        - name: WAITFOR
+          value: scm-0.scm:9876
+        livenessProbe:
+          tcpSocket:
+            port: 9891
+          initialDelaySeconds: 30
+        envFrom:
+        - configMapRef:
+            name: config
+        volumeMounts:
+        - name: data
+          mountPath: /data
+      volumes: []
+  volumeClaimTemplates:
+  - metadata:
+      name: data
+    spec:
+      accessModes:
+      - ReadWriteOnce
+      resources:
+        requests:
+          storage: 20Gi


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to