vvp -- VNF Validation Platform

Issue-ID: OOM-1173

Change-Id: I11251d5729c057ebc2211c60ac973343c0aa01f3
Signed-off-by: jasmineWen <jasmine.wen@amdocs.com>
Signed-off-by: stark, steven <ss820f@att.com>
diff --git a/kubernetes/vvp/charts/vvp-int-haproxy/Chart.yaml b/kubernetes/vvp/charts/vvp-int-haproxy/Chart.yaml
new file mode 100644
index 0000000..b2a1de8
--- /dev/null
+++ b/kubernetes/vvp/charts/vvp-int-haproxy/Chart.yaml
@@ -0,0 +1,18 @@
+# Copyright © 2018 Amdocs, AT&T, Bell Canada
+#
+# Licensed 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: v1
+description: load balancer for internal (container to container) transport
+name: vvp-int-haproxy
+version: 3.0.0
diff --git a/kubernetes/vvp/charts/vvp-int-haproxy/resources/config/int-haproxy-cfg/file b/kubernetes/vvp/charts/vvp-int-haproxy/resources/config/int-haproxy-cfg/file
new file mode 100644
index 0000000..d497ba4
--- /dev/null
+++ b/kubernetes/vvp/charts/vvp-int-haproxy/resources/config/int-haproxy-cfg/file
@@ -0,0 +1,88 @@
+# Copyright © 2018 Amdocs, AT&T, Bell Canada
+#
+# Licensed 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.
+
+resolvers dns
+    nameserver pod_dns "10.3.0.10:53"
+    resolve_retries    3
+    timeout retry      1s
+    hold valid         30s
+
+defaults
+    mode http
+    timeout connect 5000ms
+    timeout client 50000ms
+    timeout server 50000ms
+    option httpclose
+    option redispatch
+    option abortonclose
+    option httplog
+    option dontlognull
+    default-server init-addr last,libc,none
+
+backend gitlab_web_backend
+    mode http
+    server gitlab_web_1 vvp-gitlab:80 resolvers dns
+
+frontend gitlab_web
+    mode http
+    bind 0.0.0.0:80
+
+    acl is_scanner  path_beg /imagescanner
+    acl is_em_admin hdr_beg(host) em.  staging-em.  dev-em.
+    acl is_cms      hdr_beg(host) cms. staging-cms. dev-cms.
+    acl is_ci_admin hdr_beg(host)      staging-ci.  dev-ci.
+    acl is_s3       hdr_beg(host) s3.  staging-s3.  dev-s3.
+
+    use_backend imagescanner if is_em_admin is_scanner
+    use_backend cms if is_cms
+    use_backend api if is_em_admin
+    use_backend ci  if is_ci_admin
+    use_backend s3  if is_s3
+
+    default_backend gitlab_web_backend
+
+backend s3
+    mode http
+    balance roundrobin
+    server ceph-01 10.252.0.21:8080
+
+backend cms
+  mode http
+  server cms_server vvp-cms-uwsgi:80 resolvers dns
+
+backend api
+    mode http
+    server engagement_manager vvp-em-uwsgi:80 resolvers dns
+
+backend ci
+    mode http
+    server ci_test vvp-ci-uwsgi:8282 resolvers dns
+
+listen jenkins
+    bind 0.0.0.0:8080
+    server jenkins vvp-jenkins:8080 resolvers dns
+
+backend imagescanner
+    mode http
+    server imagescanner vvp-imagescanner:80 resolvers dns
+
+listen stats
+    bind 0.0.0.0:9000
+    mode http
+    stats enable  # Enable stats page
+    stats realm Haproxy\ Statistics
+    stats uri /haproxy_stats
+    stats auth "${HAPROXY_USER}:${HAPROXY_PASS}"
+    acl network_allowed src 10.252.0.0/16 127.0.0.1/32 10.2.0.0/16
+    block if !network_allowed
diff --git a/kubernetes/vvp/charts/vvp-int-haproxy/templates/configmap.yaml b/kubernetes/vvp/charts/vvp-int-haproxy/templates/configmap.yaml
new file mode 100644
index 0000000..255f8f9
--- /dev/null
+++ b/kubernetes/vvp/charts/vvp-int-haproxy/templates/configmap.yaml
@@ -0,0 +1,21 @@
+# Copyright © 2018 Amdocs, AT&T, Bell Canada
+#
+# Licensed 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: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-cfg 
+  namespace: {{ include "common.namespace" . }}
+data:
+{{ tpl (.Files.Glob "resources/config/int-haproxy-cfg/*").AsConfig . | indent 2 }}
diff --git a/kubernetes/vvp/charts/vvp-int-haproxy/templates/deployment.yaml b/kubernetes/vvp/charts/vvp-int-haproxy/templates/deployment.yaml
new file mode 100644
index 0000000..4344df3
--- /dev/null
+++ b/kubernetes/vvp/charts/vvp-int-haproxy/templates/deployment.yaml
@@ -0,0 +1,60 @@
+# Copyright © 2018 Amdocs, AT&T, Bell Canada
+#
+# Licensed 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: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+      name: {{ .Release.Name }}
+    spec:
+      imagePullSecrets:
+      - name: onapkey
+      containers:
+      - name: {{ include "common.name" . }}
+        image: "{{ include "common.repository" . }}/{{ .Values.image }}"
+        imagePullPolicy: {{ .Values.pullPolicy | default .Values.global.pullPolicy }}
+        ports:
+        - containerPort: 80
+        - containerPort: 8080
+        - containerPort: 9000
+        env:
+        - name: HAPROXY_USER
+          valueFrom:
+            secretKeyRef:
+              name: haproxy-auth
+              key: user
+        - name: HAPROXY_PASS
+          valueFrom:
+            secretKeyRef:
+              name: haproxy-auth
+              key: pass
+        volumeMounts:
+        - mountPath: /usr/local/etc/haproxy/
+          name: int-haproxy-cfg
+      volumes:
+      - name: int-haproxy-cfg
+        configMap:
+          name: {{ include "common.fullname" . }}-cfg
+          items:
+          - key: file
+            path: haproxy.cfg
diff --git a/kubernetes/vvp/charts/vvp-int-haproxy/templates/service.yaml b/kubernetes/vvp/charts/vvp-int-haproxy/templates/service.yaml
new file mode 100644
index 0000000..1f8fa2c
--- /dev/null
+++ b/kubernetes/vvp/charts/vvp-int-haproxy/templates/service.yaml
@@ -0,0 +1,32 @@
+# Copyright © 2018 Amdocs, AT&T, Bell Canada
+#
+# Licensed 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: v1
+kind: Service
+metadata:
+  name: {{ include "common.servicename" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    - port: {{ .Values.service.internalPort1 }}
+      name: {{ .Values.service.portName1 }}
+    - port: {{ .Values.service.internalPort2 }}
+      name: {{ .Values.service.portName2 }}
+    - port: {{ .Values.service.internalPort3 }}
+      name: {{ .Values.service.portName3 }}
+  selector:
+    app: {{ include "common.name" . }}
diff --git a/kubernetes/vvp/charts/vvp-int-haproxy/values.yaml b/kubernetes/vvp/charts/vvp-int-haproxy/values.yaml
new file mode 100644
index 0000000..8a304b4
--- /dev/null
+++ b/kubernetes/vvp/charts/vvp-int-haproxy/values.yaml
@@ -0,0 +1,61 @@
+# Copyright © 2018 Amdocs, AT&T, Bell Canada
+#
+# Licensed 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.
+
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  nodePortPrefix: 302
+  repository: nexus3.onap.org:10001
+
+#################################################################
+# Application configuration defaults.
+#################################################################
+# application image
+repository: docker.io
+image: haproxy:1.7.2-alpine
+pullPolicy: Always
+
+# flag to enable debugging - application support required
+debugEnabled: false
+
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+
+service:
+  type: NodePort
+  portName1: web
+  internalPort1: 80
+  portName2: jenkins
+  internalPort2: 8080
+  portName3: stats
+  internalPort3: 9000
+
+ingress:
+  enabled: false