Skip to content
This repository was archived by the owner on Mar 22, 2018. It is now read-only.
Open
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
3 changes: 3 additions & 0 deletions helloapache/Nulecule
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@ graph:
- file://artifacts/kubernetes/hello-apache-pod.json
marathon:
- file://artifacts/marathon/helloapache.json
openshift:
- inherit:
- kubernetes
26 changes: 20 additions & 6 deletions postgresql-centos7-atomicapp/Nulecule
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,29 @@ metadata:
name: PostgreSQL Atomic App
appversion: 1.0.0
description: This is PostgreSQL

params:
- name: db_user
description: Database User
- name: db_pass
description: Database Password
- name: db_name
description: Database Name
- name: service
description: Name of the service
default: posgtres
- name: host_port
desription: Port to bind postgres service in host
default: 5432

graph:
- name: postgresql-atomicapp
params:
- name: db_user
description: Database User
- name: db_pass
description: Database Password
- name: db_name
description: Database Name
db_user: $db_user
db_pass: $db_pass
db_name: $db_name
service: $service
hostPort: $host_port
artifacts:
kubernetes:
- file://artifacts/kubernetes/postgresql-pod.yaml
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
kind: Service
apiVersion: v1
metadata:
name: postgresql
name: $service
labels:
name: postgresql
spec:
ports:
- protocol: TCP
port: 5432
port: $hostPort
targetPort: 5432
nodePort: 0
selector:
Expand Down
24 changes: 19 additions & 5 deletions redis-centos7-atomicapp/Nulecule
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,22 @@ metadata:
name: Redis App
appversion: 0.0.1
description: Redis Atomic App

graph:
- name: redismaster-app
params:
- name: image
description: The redis master part
default: jasonbrooks/redis
default: jasonbrooks/redis

- name: hostport
description: The host TCP port as the external endpoint
default: 6379

- name: service
description: Name of redis master service
default: redis-master

artifacts:
kubernetes:
- file://artifacts/kubernetes/redis-master-controller.json
Expand All @@ -26,12 +33,19 @@ graph:
- name: image
description: The redis slave part
default: jasonbrooks/redis
- name: master_hostport
description: The host TCP port of the redis master
default: 6379

- name: hostport
description: The host TCP port as the external endpoint
default: 6379
default: 6380

- name: service
description: Name of redis slave service
default: redis-slave

# Reference param from a sibling component
- name: master_hostport
link: $redismaster-app.hostport

artifacts:
kubernetes:
- file://artifacts/kubernetes/redis-slave-controller.json
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"kind":"Service",
"apiVersion":"v1",
"metadata":{
"name":"redis-master",
"name":"$service",
"labels":{
"app":"redis",
"role":"master"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"kind":"Service",
"apiVersion":"v1",
"metadata":{
"name":"redis-slave",
"name":"$service",
"labels":{
"app":"redis",
"role":"slave"
Expand Down
9 changes: 9 additions & 0 deletions sentry-atomicapp/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FROM projectatomic/atomicapp:0.1.3

MAINTAINER Ratnadeep Debnath <rtnpro@redhat.com>

LABEL io.projectatomic.nulecule.specversion="0.0.2" \
io.projectatomic.nulecule.providers="kubernetes,docker"

ADD /Nulecule gpl-3.0.txt /application-entity/
ADD /artifacts /application-entity/artifacts
90 changes: 90 additions & 0 deletions sentry-atomicapp/Nulecule
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
specversion: 0.0.2
id: sentry-atomicapp

metadata:
name: sentry Atomic App
appversion: 1.0.0
description: This is sentry

graph:
- name: postgresql
params:
- name: db_user
description: Database user
default: sentry

- name: db_pass
description: Database password
default: password

- name: db_name
description: Database name
default: sentry

- name: postgres_container_name
desciption: Container name for postgresql
default: postgres

- name: postgres_container_image
decription: Container image name for postgresql
default: postgres
params:
name: $postgres_container_name
image: $postgres_container_image
db_name: $db_name
db_user: $db_user
db_pass: $db_pass
service: postgres
source: docker://pa/pg

- name: redis
params:
- name: image_name
default: redis

mapping:
# Dict similar to config data needed by the external application
redismaster-app:
image: $image_name
service: $redis_service_name

# By default mapping extends current config data
# extend false will help in providing only those data
# the external app and it's children needs
# Default value is true.
_inherit: false

source: docker://pa/redis

- name: sentry
params:
- name: sentry_container_name
default: sentry
- name: sentry_image_name
default: rtnpro/sentry
- name: sentry_node_port
default: 30001

# Reference a param from a sibling component
- name: db_user
link: $postgresql.db_user

# Reference a param from a sibling component.
- name: db_pass
link: $postgresql.db_pass

# Hypothetical, but allow mapping config values for local apps
# if needed
mapping:
sentry:
name: $sentry_container_name
image: $sentry_image_name
nodePort: $sentry_node_port

artifacts:
docker:
- file://artifacts/docker/sentry
kubernetes:
- file://artifacts/kubernetes/sentry-pod.yaml
- file://artifacts/kubernetes/sentry-service.yaml
50 changes: 50 additions & 0 deletions sentry-atomicapp/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Build

## Build refactored redis Nulecule app

```
[sudo] docker build -t pa/redis ../redis-centos7-atomicapp/

```

## Build refactored postgresql Nulecule app

```
[sudo] docker build -t pa/pg ../postgresql-centos7-atomicapp/
```

## Build refactored sentry app

```
[sudo] docker build -t projectatomic/sentry .
```

# Run

- Copy ``answers.conf.sample`` to ``answers.conf`` and customize as needed.

```
[sudo] atomicapp run --provider kubernetes projectatomic/sentry
```

## Kubernetes

Run ``kubectl get pods`` to check if the pods for ``redis``, ``postgres``
and ``sentry`` are up and running.

Check info for ``sentry`` service.

```
$ kubectl get services sentry
NAME LABELS SELECTOR IP(S) PORT(S)
sentry name=sentry name=sentry 10.254.131.20 9000/TCP
```

# Usage

## Kubernetes

- Setup sentry: ``kubectl exec -ti sentry sentry upgrade``

- Open ``http://10.254.131.20:9000`` in browser to access Sentry.

13 changes: 13 additions & 0 deletions sentry-atomicapp/answers.conf.sample
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[general]
redis_image_name = redis
postgres_container_name = postgres
db_pass = password
redis_container_name = redis
db_name = sentry
db_user = sentry
sentry_container_name = sentry
sentry_node_port = 30001
postgres_container_image = postgres
sentry_image_name = rtnpro/sentry
namespace = default
provider = docker
1 change: 1 addition & 0 deletions sentry-atomicapp/artifacts/docker/postgres
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
docker run --name sentry_postgres -e POSTGRES_PASSWORD=$db_pass -d $image
1 change: 1 addition & 0 deletions sentry-atomicapp/artifacts/docker/redis
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
docker run --name sentry_redis -d $image
1 change: 1 addition & 0 deletions sentry-atomicapp/artifacts/docker/sentry
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
docker run --name sentry --link sentry_redis:redis --link sentry_postgres:postgres --publish $nodePort:9000 -d $image
18 changes: 18 additions & 0 deletions sentry-atomicapp/artifacts/kubernetes/postgres-pod.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: v1
id: postgres
spec:
containers:
- name: $name
image: $image
env:
- name: POSTGRES_USER
value: $db_user
- name: POSTGRES_PASSWORD
value: $db_pass
ports:
- containerPort: 5432
metadata:
name: postgres
labels:
name: postgres
kind: Pod
19 changes: 19 additions & 0 deletions sentry-atomicapp/artifacts/kubernetes/postgres-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
kind: Service
apiVersion: v1
metadata:
name: $name
labels:
name: postgres
spec:
ports:
- protocol: TCP
port: 5432
targetPort: 5432
nodePort: 0
selector:
name: postgres
portalIP: None
type: ClusterIP
sessionAffinity: None
status:
loadBalancer: {}
13 changes: 13 additions & 0 deletions sentry-atomicapp/artifacts/kubernetes/redis-pod.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: v1
id: redis
spec:
containers:
- name: $name
image: $image
ports:
- containerPort: 6379
metadata:
name: redis
labels:
name: redis
kind: Pod
19 changes: 19 additions & 0 deletions sentry-atomicapp/artifacts/kubernetes/redis-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
kind: Service
apiVersion: v1
metadata:
name: $name
labels:
name: redis
spec:
ports:
- protocol: TCP
port: 6379
targetPort: 6379
nodePort: 0
selector:
name: redis
portalIP: None
type: ClusterIP
sessionAffinity: None
status:
loadBalancer: {}
18 changes: 18 additions & 0 deletions sentry-atomicapp/artifacts/kubernetes/sentry-pod.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: v1
id: sentry
spec:
containers:
- name: sentry
image: rtnpro/sentry
ports:
- containerPort: 9000
env:
- name: POSTGRES_ENV_POSTGRES_USER
value: $db_user
- name: POSTGRES_ENV_POSTGRES_PASSWORD
value: $db_pass
metadata:
name: sentry
labels:
name: sentry
kind: Pod
Loading