Commit 062f2dca authored by Kevin Di Lallo's avatar Kevin Di Lallo
Browse files

Merge branch 'release-1.7.0'

parents 26925858 99179462
Loading
Loading
Loading
Loading
+80 −10
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

version: 1.6.0
version: 1.7.0
repo:
  name: AdvantEDGE

@@ -20,6 +20,13 @@ repo:
  #  Deployment
  #------------------------------
  deployment:
    # permissions
    permissions:
      # user id
      uid: 1000
      # group id
      gid: 1000

    # user supplied resources
    user:
      # user supplied frontend UI located @ .meep/user/frontend
@@ -47,6 +54,11 @@ repo:

    # authentication & authorization config
    auth:
      # enable authentication & authorization
      enabled: true
      # Provider-authenticated users allowed (open) or limited to user database (secure)
      provider-mode: open
      # Session config
      session:
        # session encryption key k8s secret (data: encryption-key)
        key-secret: meep-session
@@ -55,30 +67,51 @@ repo:
      # GitHub OAuth provider config
      github:
        # enable GitHub OAuth
        enabled: true
        enabled: false
        # authorization url
        auth-url: https://github.com/login/oauth/authorize
        # access token url
        token-url: https://github.com/login/oauth/access_token
        # OAuth redirect URI
        redirect-uri: https://my-platform-fqdn/platform-ctrl/v1/authorize
        redirect-uri: https://my-platform-fqdn/auth/v1/authorize
        # OAuth k8s secret (data: client-id, secret)
        secret: meep-oauth-github
      # GitLab OAuth provider config
      gitlab:
        # enable GitLab OAuth
        enabled: true
        enabled: false
        # authorization url
        auth-url: https://gitlab.com/oauth/authorize
        # access token url
        token-url: https://gitlab.com/oauth/token
        # OAuth redirect URI
        redirect-uri: https://my-platform-fqdn/platform-ctrl/v1/authorize
        redirect-uri: https://my-platform-fqdn/auth/v1/authorize
        # GitLab api url
        # api-url: https://gitlab.com
        # OAuth k8s secret (data: client-id, secret)
        secret: meep-oauth-gitlab

    # Default monitoring dashboards
    dashboards:
      network-metrics-point-to-point: dashboards/network-metrics-point-to-point.json
      network-metrics-aggregation: dashboards/network-metrics-aggregation.json
      http-single-log: dashboards/http-log-byId.json
      http-logs-aggregation: dashboards/http-loggers.json
      platform-advantedge: dashboards/platform-advantedge.json
      platform-k8s: dashboards/platform-k8s.json
      runtime-environment-node: dashboards/runtime-environment-node.json
      runtime-environment-k8s-cluster: dashboards/runtime-environment-k8s-cluster.json
      kubelet: dashboards/kubelet.json
      prometheus: dashboards/prometheus.json

  #------------------------------
  #  Resource Prerequisites
  #------------------------------
  resource-prerequisites:
    # k8s Custom Resource Definitions
    crds:
      servicemonitors.monitoring.coreos.com: charts/kube-prometheus-stack/crds/crd-servicemonitors.yaml

  #------------------------------
  #  Core Subsystem
  #------------------------------
@@ -86,6 +119,31 @@ repo:

    # Go Applications
    go-apps:
      meep-auth-svc:
        # location of source code
        src: go-apps/meep-auth-svc
        # location of binary
        bin: bin/meep-auth-svc
        # location of deployment chart
        chart: charts/meep-auth-svc
        # user supplied value file located @ .meep/user/values (use below file name)
        chart-user-values: meep-auth-svc.yaml
        # enable meepctl build
        build: true
        # enable meepctl dockerize
        dockerize: true
        # enable meepctl deploy/delete
        deploy: true
        # supports code coverage measurement when built in codecov mode
        codecov: true
        # supports linting
        lint: true
        # location of API specification
        api: go-apps/meep-auth-svc/api/swagger.yaml
        # AdvantEDGE resources included in Docker container image
        docker-data:
          # location of REST API permissions file
          'permissions.yaml': config/permissions-open.yaml
      meep-ingress-certs:
        # enable meepctl build
        build: false
@@ -135,6 +193,7 @@ repo:
          - meep-open-map-tiles
          - meep-postgis
          - meep-redis
          - meep-prometheus
        # list of platform pods to monitor
        core-pods:
          - meep-mon-engine
@@ -178,8 +237,6 @@ repo:
          swagger: bin/meep-platform-swagger-ui
          # location of AdvantEDGE frontend
          frontend: bin/meep-frontend
          # location of REST API permissions file
          'permissions.yaml': config/permissions.yaml
      meep-virt-engine:
        # location of source code
        src: go-apps/meep-virt-engine
@@ -269,6 +326,7 @@ repo:
          meep-sandbox-ctrl-api: js-packages/meep-sandbox-ctrl-client
          meep-mon-engine-api: js-packages/meep-mon-engine-client
          meep-gis-engine-api: js-packages/meep-gis-engine-client
          meep-auth-svc-client: js-packages/meep-auth-svc-client
      meep-platform-swagger-ui:
        # location of source code
        src: js-apps/meep-swagger-ui
@@ -284,6 +342,7 @@ repo:
        lint: false
        # list of platform level swagger specs
        api-bundle:
          - core.go-apps.meep-auth-svc
          - core.go-apps.meep-platform-ctrl
          - core.go-apps.meep-mon-engine
      meep-sandbox-swagger-ui:
@@ -593,7 +652,7 @@ repo:
      # enable meepctl deploy/delete
      deploy: true
      # location of deployment chart
      chart: charts/nginx-ingress
      chart: charts/ingress-nginx
      # user supplied value file located @ .meep/user/values (use below file name)
      chart-user-values: meep-ingress.yaml
    meep-redis:
@@ -629,6 +688,17 @@ repo:
      chart: charts/postgis
      # user supplied value file located @ .meep/user/values (use below file name)
      chart-user-values: meep-postgis.yaml
    meep-prometheus:
      # enable meepctl build -> deps are never built
      build: false
      # enable meepctl dockerize -> deps are never dockerized
      dockerize: false
      # enable meepctl deploy/delete
      deploy: true
      # location of deployment chart
      chart: charts/kube-prometheus-stack
      # user supplied value file located @ .meep/user/values (use below file name)
      chart-user-values: meep-prometheus.yaml

  #------------------------------
  #  Packages
@@ -677,9 +747,9 @@ repo:
        src: go-packages/meep-logger
        # supports linting
        lint: true
      meep-metric-store:
      meep-metrics:
        # location of source code
        src: go-packages/meep-metric-store
        src: go-packages/meep-metrics
        # supports linting
        lint: true
      meep-metrics-engine-notification-client:
+27 −15
Original line number Diff line number Diff line
@@ -2,15 +2,24 @@

------

> **_NEW!_**  --  Reaching out to the team is now easier than ever:  -- just initiate a [discussion](https://github.com/InterDigitalInc/AdvantEDGE/discussions)
**_What's New!_** 

:zap: **v1.7.0 cool features :sunglasses: :point_right: [**process lifecycle API**](https://github.com/InterDigitalInc/AdvantEDGE/wiki/overview-features#process-lifecyle) and [**cellular connectivity API**](https://github.com/InterDigitalInc/AdvantEDGE/wiki/overview-features#cellular-connectivity-control) - open-up new edge experiments**

:zap:  **Wiki refresh was overdue :shamrock: Hope the :sparkles: new structure & [**Sitemap**](https://github.com/InterDigitalInc/AdvantEDGE/wiki/project-sitemap) :sparkles: make it easier to navigate**

:zap: **"_Old New_" :wink: you can still easily reach out to the team by initiating [:octocat: **Discussion**](https://github.com/InterDigitalInc/AdvantEDGE/discussions)**

------

## What is AdvantEDGE?

AdvantEDGE is a Mobile Edge Emulation Platform (MEEP) that runs on Docker & Kubernetes.

AdvantEDGE provides an emulation environment, enabling experimentation with Edge Computing Technologies, Applications, and Services.  The platform facilitates exploring edge / fog deployment models and their impact on applications and services in short and agile iterations.

## Motivation

#### Motivation

- [x] **Accelerate Mobile Edge Computing adoption**
- [x] **Help Discover new edge application use cases & services**
@@ -19,27 +28,30 @@ AdvantEDGE provides an emulation environment, enabling experimentation with Edge
  - How do network characteristics (such as latency, jitter, and packet loss) impact my application or service?
  - How will my application behave when the user moves within and across access networks?

## Getting Started
#### Intended Users

Complete AdvantEDGE documentation is available in the [AdvantEDGE Wiki](https://github.com/InterDigitalInc/AdvantEDGE/wiki)
- [x] **Edge Application Developers**
- [x] **Edge Network and Service Designers**
- [x] **Edge Researchers**
- [x] **Technologists that are simply interested learning how the Edge works**

To get started using AdvantEDGE, the following steps are needed:
- Set up runtime environment (Ubuntu/Dockers/Kubernetes/Helm)
- Clone AdvantEDGE repo
- Install & Configure meepctl tool
- Deploy AdvantEDGE micro-services
## Getting started

Step-by-step details are available in the [Wiki](https://github.com/InterDigitalInc/AdvantEDGE/wiki#getting-started)
[:one: :heavy_minus_sign: **Familiarize with Architecture and Features**](https://github.com/InterDigitalInc/AdvantEDGE/wiki/overview-architecture)

## How to Contribute
As of June 2020, we can accept contributions to the project.
[:two: :heavy_minus_sign: **Setup environment**](https://github.com/InterDigitalInc/AdvantEDGE/wiki/env-hw)

[:three: :heavy_minus_sign: **Deploy platform**](https://github.com/InterDigitalInc/AdvantEDGE/wiki/mgmt-workflow)

If you like this project and would like to participate in its evolution, you can find information on contributing [here](https://github.com/InterDigitalInc/AdvantEDGE/blob/master/CONTRIBUTING.md)
[:four: :heavy_minus_sign: **Start using AdvantEDGE**](https://github.com/InterDigitalInc/AdvantEDGE/wiki/usage-workflow)

## How to Contribute
If you like this project and would like to participate in its evolution, you can find information on contributing [**here**](https://github.com/InterDigitalInc/AdvantEDGE/blob/master/CONTRIBUTING.md)

We welcome questions, feedback and improvement suggestions via [Git Discussions](https://github.com/InterDigitalInc/AdvantEDGE/discussions) and bugs reporting via [Git Issues](https://github.com/InterDigitalInc/AdvantEDGE/issues)
We welcome questions, feedback and improvement suggestions via [:octocat:**Discussion**](https://github.com/InterDigitalInc/AdvantEDGE/discussions) and bugs reporting via [:octocat: **Issues**](https://github.com/InterDigitalInc/AdvantEDGE/issues)

Hope to hear from you...

## Licensing

AdvantEDGE is licensed under under the [Apache License, Version 2.0](https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE)
AdvantEDGE is licensed under under the [**Apache License, Version 2.0**](https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE)
+1 −1
Original line number Diff line number Diff line
@@ -141,7 +141,7 @@ ingressShim: {}
prometheus:
  enabled: true
  servicemonitor:
    enabled: false
    enabled: true
    prometheusInstance: default
    targetPort: 9402
    path: /metrics
+10 −4
Original line number Diff line number Diff line
appVersion: 2.1.1
apiVersion: v2
appVersion: 3.1.0
description: A database featuring seamless multi-master sync, that scales from big
  data to mobile, with an intuitive HTTP/JSON API and designed for reliability.
home: https://couchdb.apache.org/
icon: http://couchdb.apache.org/CouchDB-visual-identity/logo/CouchDB-couch-symbol.svg
keywords:
- couchdb
- database
- nosql
maintainers:
- email: kocolosk@apache.org
  name: kocolosk
- email: willholley@apache.org
  name: willholley
name: couchdb
sources:
- https://github.com/apache/couchdb
- https://github.com/kocolosk/couchdb-statefulset-assembler
version: 0.1.6
- https://github.com/apache/couchdb-docker
version: 3.3.4
+163 −28
Original line number Diff line number Diff line
@@ -14,20 +14,35 @@ storage volumes to each Pod in the Deployment.
## TL;DR

```bash
$ helm install incubator/couchdb --set allowAdminParty=true
$ helm repo add couchdb https://apache.github.io/couchdb-helm
$ helm install couchdb/couchdb \
  --set allowAdminParty=true \
  --set couchdbConfig.couchdb.uuid=$(curl https://www.uuidgenerator.net/api/version4 2>/dev/null | tr -d -)
```

## Prerequisites

- Kubernetes 1.8+ with Beta APIs enabled
- Kubernetes 1.9+ with Beta APIs enabled
- Ingress requires Kubernetes 1.14+

## Installing the Chart

To install the chart with the release name `my-release`:

Add the CouchDB Helm repository:

```bash
$ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
$ helm install --name my-release incubator/couchdb
$ helm repo add couchdb https://apache.github.io/couchdb-helm
```

Afterwards install the chart replacing the UUID
`decafbaddecafbaddecafbaddecafbad` with a custom one:

```bash
$ helm install \
  --name my-release \
  --set couchdbConfig.couchdb.uuid=decafbaddecafbaddecafbaddecafbad \
  couchdb/couchdb
```

This will create a Secret containing the admin credentials for the cluster.
@@ -44,10 +59,31 @@ Secret containing `adminUsername`, `adminPassword` and `cookieAuthSecret` keys:
$  kubectl create secret generic my-release-couchdb --from-literal=adminUsername=foo --from-literal=adminPassword=bar --from-literal=cookieAuthSecret=baz
```

If you want to set the `adminHash` directly to achieve consistent salts between 
different nodes you need to addionally add the key `password.ini` to the secret:

```bash
$  kubectl create secret generic my-release-couchdb \
   --from-literal=adminUsername=foo \
   --from-literal=cookieAuthSecret=baz \
   --from-file=./my-password.ini 
```

With the following contents in `my-password.ini`:

```
[admins]
foo = <pbkdf2-hash>
```

and then install the chart while overriding the `createAdminSecret` setting:

```bash
$ helm install --name my-release --set createAdminSecret=false incubator/couchdb
$ helm install \
  --name my-release \
  --set createAdminSecret=false \
  --set couchdbConfig.couchdb.uuid=decafbaddecafbaddecafbaddecafbad \
  couchdb/couchdb
```

This Helm chart deploys CouchDB on the Kubernetes cluster in a default
@@ -67,6 +103,34 @@ $ helm delete my-release
The command removes all the Kubernetes components associated with the chart and
deletes the release.

## Upgrading an existing Release to a new major version

A major chart version change (like v0.2.3 -> v1.0.0) indicates that there is an
incompatible breaking change needing manual actions.

### Upgrade to 3.0.0

Since version 3.0.0 setting the CouchDB server instance UUID is mandatory.
Therefore you need to generate a UUID and supply it as a value during the
upgrade as follows:

```bash
$ helm upgrade <release-name> \
  --reuse-values \
  --set couchdbConfig.couchdb.uuid=<UUID> \
  couchdb/couchdb
```

## Migrating from stable/couchdb

This chart replaces the `stable/couchdb` chart previously hosted by Helm and continues the
version semantics. You can upgrade directly from `stable/couchdb` to this chart using:

```bash
$ helm repo add couchdb https://apache.github.io/couchdb-helm
$ helm upgrade my-release couchdb/couchdb
```

## Configuration

The following table lists the most commonly configured parameters of the
@@ -75,35 +139,106 @@ CouchDB chart and their default values:
|           Parameter             |             Description                               |                Default                 |
|---------------------------------|-------------------------------------------------------|----------------------------------------|
| `clusterSize`                   | The initial number of nodes in the CouchDB cluster    | 3                                      |
| `couchdbConfig`                 | Map allowing override elements of server .ini config  | {}                                     |
| `couchdbConfig`                 | Map allowing override elements of server .ini config  | *See below*                            |
| `allowAdminParty`               | If enabled, start cluster without admin account       | false (requires creating a Secret)     |
| `createAdminSecret`             | If enabled, create an admin account and cookie secret | true                                   |
| `schedulerName`                 | Name of the k8s scheduler (other than default)        | `nil`                                  |
| `erlangFlags`                   | Map of flags supplied to the underlying Erlang VM     | name: couchdb, setcookie: monster
| `persistentVolume.enabled`      | Boolean determining whether to attach a PV to each node | false
| `persistentVolume.size`         | If enabled, the size of the persistent volume to attach                          | 10Gi
| `enableSearch`                  | Adds a sidecar for Lucene-powered text search         | false                                  |

You can set the values of the `couchdbConfig` map according to the
[official configuration][4]. The following shows the map's default values and
required options to set:

|           Parameter             |             Description                                            |                Default                 |
|---------------------------------|--------------------------------------------------------------------|----------------------------------------|
| `couchdb.uuid`                  | UUID for this CouchDB server instance ([Required in a cluster][5]) |                                        |
| `chttpd.bind_address`           | listens on all interfaces when set to any                          | any                                    |
| `chttpd.require_valid_user`     | disables all the anonymous requests to the port 5984 when true     | false                                  |

A variety of other parameters are also configurable. See the comments in the
`values.yaml` file for further details:

|           Parameter                  |                Default                 |
|---------------------------------|----------------------------------------|
|--------------------------------------|----------------------------------------|
| `adminUsername`                      | admin                                  |
| `adminPassword`                      | auto-generated                         |
| `adminHash`                          |                                        |
| `cookieAuthSecret`                   | auto-generated                         |
| `helperImage.repository`        | kocolosk/couchdb-statefulset-assembler |
| `helperImage.tag`               | 0.1.0                                  |
| `helperImage.pullPolicy`        | IfNotPresent                           |
| `image.repository`                   | couchdb                                |
| `image.tag`                     | 2.1.1                                  |
| `image.tag`                          | 3.1.0                                  |
| `image.pullPolicy`                   | IfNotPresent                           |
| `searchImage.repository`             | kocolosk/couchdb-search                |
| `searchImage.tag`                    | 0.1.0                                  |
| `searchImage.pullPolicy`             | IfNotPresent                           |
| `initImage.repository`               | busybox                                |
| `initImage.tag`                      | latest                                 |
| `initImage.pullPolicy`               | Always                                 |
| `ingress.enabled`                    | false                                  |
| `ingress.hosts`                      | chart-example.local                    |
| `ingress.annotations`                |                                        |
| `ingress.path`                       | /                                      |
| `ingress.tls`                        |                                        |
| `persistentVolume.accessModes`       | ReadWriteOnce                          |
| `persistentVolume.storageClass`      | Default for the Kube cluster           |
| `podManagementPolicy`                | Parallel                               |
| `affinity`                           |                                        |
| `annotations`                        |                                        |
| `tolerations`                        |                                        |
| `resources`                          |                                        |
| `service.annotations`                |                                        |
| `service.enabled`                    | true                                   |
| `service.type`                       | ClusterIP                              |
| `service.externalPort`               | 5984                                   |
| `dns.clusterDomainSuffix`            | cluster.local                          |
| `networkPolicy.enabled`              | true                                   |
| `serviceAccount.enabled`             | true                                   |
| `serviceAccount.create`              | true                                   |
| `serviceAccount.imagePullSecrets`    |                                        |
| `sidecars`                           | {}                                     |
| `livenessProbe.enabled`              | true                                   |
| `livenessProbe.failureThreshold`     | 3                                      |
| `livenessProbe.initialDelaySeconds`  | 0                                      |
| `livenessProbe.periodSeconds`        | 10                                     |
| `livenessProbe.successThreshold`     | 1                                      |
| `livenessProbe.timeoutSeconds`       | 1                                      |
| `readinessProbe.enabled`             | true                                   |
| `readinessProbe.failureThreshold`    | 3                                      |
| `readinessProbe.initialDelaySeconds` | 0                                      |
| `readinessProbe.periodSeconds`       | 10                                     |
| `readinessProbe.successThreshold`    | 1                                      |
| `readinessProbe.timeoutSeconds`      | 1                                      |

## Feedback, Issues, Contributing

General feedback is welcome at our [user][1] or [developer][2] mailing lists.

Apache CouchDB has a [CONTRIBUTING][3] file with details on how to get started
with issue reporting or contributing to the upkeep of this project. In short,
use GitHub Issues, do not report anything on Docker's website.

## Non-Apache CouchDB Development Team Contributors

- [@natarajaya](https://github.com/natarajaya)
- [@satchpx](https://github.com/satchpx)
- [@spanato](https://github.com/spanato)
- [@jpds](https://github.com/jpds)
- [@sebastien-prudhomme](https://github.com/sebastien-prudhomme)
- [@stepanstipl](https://github.com/sebastien-stepanstipl)
- [@amatas](https://github.com/amatas)
- [@Chimney42](https://github.com/Chimney42)
- [@mattjmcnaughton](https://github.com/mattjmcnaughton)
- [@mainephd](https://github.com/mainephd)
- [@AdamDang](https://github.com/AdamDang)
- [@mrtyler](https://github.com/mrtyler)
- [@kevinwlau](https://github.com/kevinwlau)
- [@jeyenzo](https://github.com/jeyenzo)
- [@Pinpin31.](https://github.com/Pinpin31)

[1]: http://mail-archives.apache.org/mod_mbox/couchdb-user/
[2]: http://mail-archives.apache.org/mod_mbox/couchdb-dev/
[3]: https://github.com/apache/couchdb/blob/master/CONTRIBUTING.md
[4]: https://docs.couchdb.org/en/stable/config/index.html
[5]: https://docs.couchdb.org/en/latest/setup/cluster.html#preparing-couchdb-nodes-to-be-joined-into-a-cluster
Loading