Init repo and 1.0.0 release

Change-Id: I48bb169075cb46db7733fe3357c217c736cb019c
diff --git a/sdfabric/Chart.yaml b/sdfabric/Chart.yaml
new file mode 100644
index 0000000..0c7d0c1
--- /dev/null
+++ b/sdfabric/Chart.yaml
@@ -0,0 +1,25 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: sdfabric
+description: A chart to deploy all SD-Fabric components
+kubeVersion: ">=1.18.0"
+type: application
+version: 1.0.0
+keywords:
+  - aether
+  - sdn
+  - sdfabric
+home: https://opennetworking.org/sd-fabric/
+maintainers:
+  - name: Aether Ops team
+    email: support@opennetworking.org
+dependencies:
+  - name: onos-classic
+    repository: https://charts.onosproject.org
+    version: 0.1.23
+  - name: stratum
+    repository: https://charts.stratumproject.org/
+    version: 0.1.13
diff --git a/sdfabric/README.md b/sdfabric/README.md
new file mode 100644
index 0000000..a7398d7
--- /dev/null
+++ b/sdfabric/README.md
@@ -0,0 +1,33 @@
+<!--
+SPDX-FileCopyrightText: 2020 Open Networking Foundation <info@opennetworking.org>
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+-->
+
+# SD-Fabric chart
+
+## Prerequest
+
+See [SD-Fabric deployment guide](https://docs.sd-fabric.org/master/deployment.html) and
+deploy all necessary components like Kubernetes and switch.
+
+## Configuration
+
+| Name | Description |
+|------|-------------|
+| .Values.image.credential.secretName | Name for the Kubernetes secret to store the credential |
+| .Values.image.credential.registry | The container registry |
+| .Values.image.credential.username | The username to login the container registry |
+| .Values.image.credential.password | The password to login the container registry |
+| .Values.onos-classic | See <https://github.com/onosproject/onos-helm-charts/tree/master/onos-classic> |
+| .Values.stratum | See <https://github.com/stratum/stratum-helm-charts/tree/master/stratum> |
+
+## Installation
+
+Modify values.yaml according to the explanations above, then run the following command:
+
+```bash
+helm upgrade --install -f my-values.yaml sdfabric .
+```
+
+This command will deploy the SD-Fabric helm chart with release name `sdfabric` in the current context.
diff --git a/sdfabric/templates/secret-registry.yaml b/sdfabric/templates/secret-registry.yaml
new file mode 100644
index 0000000..7121fdc
--- /dev/null
+++ b/sdfabric/templates/secret-registry.yaml
@@ -0,0 +1,18 @@
+{{/*
+# Copyright 2020-present Open Networking Foundation
+
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+*/}}
+
+{{- if .Values.image.credential }}
+---
+kind: Secret
+apiVersion: v1
+metadata:
+  name: "{{ .Values.image.credential.secretName }}"
+  labels:
+    release: {{ .Release.Name }}
+type: kubernetes.io/dockerconfigjson
+data:
+  .dockerconfigjson: {{ printf `{"auths":{%s:{"auth":"%s"}}}` (.Values.image.credential.registry | quote) (printf "%s:%s" .Values.image.credential.username .Values.image.credential.password | b64enc) | b64enc | quote }}
+{{- end }}
diff --git a/sdfabric/values.yaml b/sdfabric/values.yaml
new file mode 100644
index 0000000..74ba821
--- /dev/null
+++ b/sdfabric/values.yaml
@@ -0,0 +1,110 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+image:
+  credential:
+    secretName: &image-secret-name registry-credential
+    registry: registry.aetherproject.org
+    username: changeit
+    password: changeit
+
+onos-classic:
+  image:
+    repository: registry.aetherproject.org/tost/tost
+    tag: master-2021-10-01
+    pullSecrets:
+      - *image-secret-name
+
+  replicas: 3
+
+  ports:
+    - name: up4
+      port: 51001
+    - name: east-west
+      port: 9876
+    - name: cli
+      port: 8101
+    - name: ui
+      port: 8181
+
+  apps:
+    - org.onosproject.lldpprovider
+    - org.onosproject.hostprovider
+    - org.onosproject.netcfghostprovider
+    - org.onosproject.gui
+    - org.onosproject.drivers.barefoot
+    - org.onosproject.segmentrouting
+    - org.onosproject.t3
+    - org.omecproject.up4
+    - org.stratumproject.fabric-tna
+    - org.onosproject.dhcprelay
+    - org.onosproject.hostprobingprovider
+
+  logging:
+    karafVersion: 4.2.9
+    config: |
+      # Common pattern layout for appenders
+      log4j2.stdout.pattern = %d{RFC3339} %-5level [%c{1}] %msg%n%throwable
+
+      # Root logger
+      log4j2.rootLogger.level = INFO
+
+      # OSGi appender
+      log4j2.rootLogger.appenderRef.PaxOsgi.ref = PaxOsgi
+      log4j2.appender.osgi.type = PaxOsgi
+      log4j2.appender.osgi.name = PaxOsgi
+      log4j2.appender.osgi.filter = *
+
+      # stdout appender
+      log4j2.rootLogger.appenderRef.Console.ref = Console
+      log4j2.appender.console.type = Console
+      log4j2.appender.console.name = Console
+      log4j2.appender.console.layout.type = PatternLayout
+      log4j2.appender.console.layout.pattern = ${log4j2.stdout.pattern}
+
+      # SSHD logger
+      log4j2.logger.sshd.name = org.apache.sshd
+      log4j2.logger.sshd.level = INFO
+
+      # Spifly logger
+      log4j2.logger.spifly.name = org.apache.aries.spifly
+      log4j2.logger.spifly.level = WARN
+
+  annotations:
+    fluentbit.io/parser: onos
+
+  atomix:
+    replicas: 3
+    persistence:
+      enabled: false
+
+  config:
+    netcfg: >
+      {}
+    componentConfig: {}
+
+stratum:
+  image:
+    registry: docker.io
+    repository: stratumproject/stratum-bfrt
+    tag: 21.09.24-9.5.0
+    pullPolicy: IfNotPresent
+    pullSecrets:
+      - *image-secret-name
+
+  annotations:
+    fluentbit.io/parser: stratum
+
+  # Specify nodeSelector to pin Stratum to switches only
+  #
+  # nodeSelector:
+  #   node-role.aetherproject.org: switch
+
+  # Override NoSchedule for Stratum to be scheduled on switches
+  #
+  # tolerations:
+  #   - key: node-role.aetherproject.org
+  #     value: switch
+  #     effect: NoSchedule
+  config: false