From b40f2d639d45e866bb0745e8e4eccf46cad2cf1e Mon Sep 17 00:00:00 2001 From: Pramod Date: Mon, 26 Aug 2019 13:23:44 -0700 Subject: Helm chart for multicloud-k8s connectivity This patch has ISTIO components required to expose the multicloud-k8s application outside the servicemesh Issue-ID: MULTICLOUD-787 Signed-off-by: Pramod Change-Id: I4805520666ec653e9845432b85afdc1ce0ef1db9 --- .../helm/servicemesh/connectivity/README.md | 43 ++++++++++++++++++++++ .../servicemesh/connectivity/gateways/.helmignore | 22 +++++++++++ .../servicemesh/connectivity/gateways/Chart.yaml | 5 +++ .../connectivity/gateways/templates/_helpers.tpl | 25 +++++++++++++ .../connectivity/gateways/templates/gateway.yaml | 34 +++++++++++++++++ .../servicemesh/connectivity/gateways/values.yaml | 22 +++++++++++ .../connectivity/virtualservices/.helmignore | 22 +++++++++++ .../connectivity/virtualservices/Chart.yaml | 18 +++++++++ .../virtualservices/templates/_helpers.tpl | 25 +++++++++++++ .../virtualservices/templates/virtualservice.yaml | 43 ++++++++++++++++++++++ .../connectivity/virtualservices/values.yaml | 32 ++++++++++++++++ 11 files changed, 291 insertions(+) create mode 100644 deployments/helm/servicemesh/connectivity/README.md create mode 100644 deployments/helm/servicemesh/connectivity/gateways/.helmignore create mode 100644 deployments/helm/servicemesh/connectivity/gateways/Chart.yaml create mode 100644 deployments/helm/servicemesh/connectivity/gateways/templates/_helpers.tpl create mode 100644 deployments/helm/servicemesh/connectivity/gateways/templates/gateway.yaml create mode 100644 deployments/helm/servicemesh/connectivity/gateways/values.yaml create mode 100644 deployments/helm/servicemesh/connectivity/virtualservices/.helmignore create mode 100644 deployments/helm/servicemesh/connectivity/virtualservices/Chart.yaml create mode 100644 deployments/helm/servicemesh/connectivity/virtualservices/templates/_helpers.tpl create mode 100644 deployments/helm/servicemesh/connectivity/virtualservices/templates/virtualservice.yaml create mode 100644 deployments/helm/servicemesh/connectivity/virtualservices/values.yaml diff --git a/deployments/helm/servicemesh/connectivity/README.md b/deployments/helm/servicemesh/connectivity/README.md new file mode 100644 index 00000000..1dd36024 --- /dev/null +++ b/deployments/helm/servicemesh/connectivity/README.md @@ -0,0 +1,43 @@ +# Copyright 2019 Intel Corporation, Inc +# +# 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. + +Installation +============ + +Installing the Chart +-------------------- + +Install the ISTIO Gateway chart for multicloud-k8s application using: + +```bash +$ helm install gateways +``` +Install the ISTIO VirtualService chart for multicloud-k8s application using: + +```bash +$ helm install virtualservices +``` +Verify the connectivity to the application/service as shown below +This is an example for Multicloud-k8s application + +```bash +$ curl -v /multicloud-k8s/healthcheck +``` +The output like below shows that configuration is successful + +```bash +Accept: */* + +HTTP/1.1 200 OK +``` diff --git a/deployments/helm/servicemesh/connectivity/gateways/.helmignore b/deployments/helm/servicemesh/connectivity/gateways/.helmignore new file mode 100644 index 00000000..50af0317 --- /dev/null +++ b/deployments/helm/servicemesh/connectivity/gateways/.helmignore @@ -0,0 +1,22 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deployments/helm/servicemesh/connectivity/gateways/Chart.yaml b/deployments/helm/servicemesh/connectivity/gateways/Chart.yaml new file mode 100644 index 00000000..1e7df9f3 --- /dev/null +++ b/deployments/helm/servicemesh/connectivity/gateways/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +appVersion: "1.0" +description: A Helm chart for Istio gatway +name: gateways +version: 0.1.0 diff --git a/deployments/helm/servicemesh/connectivity/gateways/templates/_helpers.tpl b/deployments/helm/servicemesh/connectivity/gateways/templates/_helpers.tpl new file mode 100644 index 00000000..5516ee45 --- /dev/null +++ b/deployments/helm/servicemesh/connectivity/gateways/templates/_helpers.tpl @@ -0,0 +1,25 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} diff --git a/deployments/helm/servicemesh/connectivity/gateways/templates/gateway.yaml b/deployments/helm/servicemesh/connectivity/gateways/templates/gateway.yaml new file mode 100644 index 00000000..72297350 --- /dev/null +++ b/deployments/helm/servicemesh/connectivity/gateways/templates/gateway.yaml @@ -0,0 +1,34 @@ +{{/* +# Copyright 2019 Intel Corporation, Inc +# # +# # 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: networking.istio.io/v1alpha3 +kind: Gateway +metadata: + name: {{ template "fullname" . }} + labels: + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} +spec: + selector: + istio: ingressgateway + servers: + - port: + number: {{ .Values.port.number }} + name: {{ .Values.port.name }} + protocol: {{ .Values.port.protocol }} + hosts: + {{- range .Values.allowedhosts }} + - {{ . | quote }} + {{- end }} diff --git a/deployments/helm/servicemesh/connectivity/gateways/values.yaml b/deployments/helm/servicemesh/connectivity/gateways/values.yaml new file mode 100644 index 00000000..a90260ae --- /dev/null +++ b/deployments/helm/servicemesh/connectivity/gateways/values.yaml @@ -0,0 +1,22 @@ +# +#{/* +# Copyright 2019 Intel Corporation, Inc +# +# 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. +#*/}} +port: + number: 80 + name: http + protocol: HTTP +allowedhosts: + - "*" diff --git a/deployments/helm/servicemesh/connectivity/virtualservices/.helmignore b/deployments/helm/servicemesh/connectivity/virtualservices/.helmignore new file mode 100644 index 00000000..50af0317 --- /dev/null +++ b/deployments/helm/servicemesh/connectivity/virtualservices/.helmignore @@ -0,0 +1,22 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deployments/helm/servicemesh/connectivity/virtualservices/Chart.yaml b/deployments/helm/servicemesh/connectivity/virtualservices/Chart.yaml new file mode 100644 index 00000000..387fb876 --- /dev/null +++ b/deployments/helm/servicemesh/connectivity/virtualservices/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2019 Intel Corporation +# # +# # 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 +appVersion: "1.0" +description: A Helm chart for Istio virtualservice +name: virtualservices +version: 0.1.0 diff --git a/deployments/helm/servicemesh/connectivity/virtualservices/templates/_helpers.tpl b/deployments/helm/servicemesh/connectivity/virtualservices/templates/_helpers.tpl new file mode 100644 index 00000000..5516ee45 --- /dev/null +++ b/deployments/helm/servicemesh/connectivity/virtualservices/templates/_helpers.tpl @@ -0,0 +1,25 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} diff --git a/deployments/helm/servicemesh/connectivity/virtualservices/templates/virtualservice.yaml b/deployments/helm/servicemesh/connectivity/virtualservices/templates/virtualservice.yaml new file mode 100644 index 00000000..e1cd13b4 --- /dev/null +++ b/deployments/helm/servicemesh/connectivity/virtualservices/templates/virtualservice.yaml @@ -0,0 +1,43 @@ +{{/* +# Copyright 2019 Intel Corporation, Inc +# +# 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: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + name: {{ template "fullname" . }} +spec: + hosts: + {{- range .Values.allowedhosts }} + - {{ . | quote }} + {{- end }} + gateways: + {{- range .Values.gateways }} + - {{ . | quote }} + {{- end }} +{{- if .Values.httprules }} + http: + - match: + - uri: + prefix: {{ .Values.prefixmatchURI }} + rewrite: + uri: {{ .Values.rewriteURI }} + route: + - destination: + host: {{ .Values.destinationhost }} +{{- end }} +{{- if .Values.tcp }} + tcp: +{{ toYaml .Values.tcp | indent 4 }} +{{- end }} diff --git a/deployments/helm/servicemesh/connectivity/virtualservices/values.yaml b/deployments/helm/servicemesh/connectivity/virtualservices/values.yaml new file mode 100644 index 00000000..7153ae55 --- /dev/null +++ b/deployments/helm/servicemesh/connectivity/virtualservices/values.yaml @@ -0,0 +1,32 @@ +# Copyright © 2019 Intel Corporation +# +# 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. +# +# This file is a sample virtualservice format +# for the multicloud-k8s application +allowedhosts: +- "*" +# Input the name of the gateway - TO BE FILLED IN BY USER/ADMIN +gateways: +- +httprules: + enabled: true +# Input the prefixmatchURI - TO BE FILLED IN BY USER/ADMIN +# Example: prefixmatchURI: /multicloud-k8s/ +prefixmatchURI: < Enter Prefixmatch> +# Input the rewrite URI - TO BE FILLED IN BY USER/ADMIN +# Example - rewriteURI: / +rewriteURI: +# Destination host - TO BE FILLED IN BY USER/ADMIN +destinationhost: +port: -- cgit 1.2.3-korg