7 changed files with 504 additions and 0 deletions
@ -0,0 +1,27 @@ |
|||||
|
apiVersion: v2 |
||||
|
name: eshop |
||||
|
type: application |
||||
|
version: 1.0.0 |
||||
|
appVersion: 2.2.0 |
||||
|
description: A Helm chart to deploy eShopOnWeb |
||||
|
keywords: |
||||
|
- dotnet |
||||
|
sources: |
||||
|
- https://github.com/nmasse-itix/eShopOnWeb-gitops |
||||
|
home: https://github.com/nmasse-itix/eShopOnWeb |
||||
|
maintainers: |
||||
|
- name: Nicolas Massé |
||||
|
email: nmasse@redhat.com |
||||
|
url: https://www.itix.fr/ |
||||
|
- name: Sébastien Lallemand |
||||
|
email: slallemand@redhat.com |
||||
|
annotations: |
||||
|
charts.openshift.io/name: Microsoft eShopOnWeb ASP.NET Core Reference Application |
||||
|
charts.openshift.io/providerType: community |
||||
|
charts.openshift.io/supportedOpenShiftVersions: '>=4.13' |
||||
|
charts.openshift.io/testedOpenShiftVersion: '4.13' |
||||
|
charts.openshift.io/supportURL: https://github.com/nmasse-itix/eShopOnWeb-gitops/issues |
||||
|
charts.openshift.io/provider: Red Hat SSA France |
||||
|
charts.openshift.io/archs: x86_64 |
||||
|
icon: https://raw.githubusercontent.com/dotnet-architecture/eShopOnWeb/main/src/Web/wwwroot/images/brand.png |
||||
|
kubeVersion: '>=1.25' |
||||
@ -0,0 +1,19 @@ |
|||||
|
# eShopOnWeb Helm Chart |
||||
|
|
||||
|
A Helm chart for deploying [eShopOnWeb](https://github.com/nmasse-itix/eShopOnWeb) on OpenShift. |
||||
|
|
||||
|
## Pre-requisites |
||||
|
|
||||
|
None. |
||||
|
|
||||
|
## Values |
||||
|
|
||||
|
Below is a table of each value used to configure this chart. |
||||
|
|
||||
|
| Value | Description | Default | Additional Information | |
||||
|
| ----- | ----------- | ------- | ---------------------- | |
||||
|
| `database.serverHostname` | SQL Server hostname | `sql-server` | | |
||||
|
| `database.name` | Database Name | `eShop` | | |
||||
|
| `database.schema` | Database Schema | `eShop` | | |
||||
|
| `database.username` | Username to access the database | `eShop` | | |
||||
|
| `database.password` | Password to access the database | `R3dH4t1!` | | |
||||
@ -0,0 +1,24 @@ |
|||||
|
apiVersion: v1 |
||||
|
kind: Secret |
||||
|
metadata: |
||||
|
name: eshop-config |
||||
|
type: Opaque |
||||
|
stringData: |
||||
|
appsettings.json: | |
||||
|
{ |
||||
|
"ConnectionStrings": { |
||||
|
"CatalogConnection": "Server={{ .Values.database.serverHostname }},1433;Integrated Security=False;Initial Catalog={{ .Values.database.name }};User Id={{ .Values.database.username }};Password={{ .Values.database.password }};Trusted_Connection=false;Encrypt=false", |
||||
|
"IdentityConnection": "Server={{ .Values.database.serverHostname }},1433;Integrated Security=False;Initial Catalog={{ .Values.database.name }};User Id={{ .Values.database.username }};Password={{ .Values.database.password }};Trusted_Connection=false;Encrypt=false" |
||||
|
}, |
||||
|
"baseUrls": { |
||||
|
"apiBase": "https://{{ .Values.ingress.apiHostname }}/api/", |
||||
|
"webBase": "https://{{ .Values.ingress.webHostname }}/" |
||||
|
}, |
||||
|
"Logging": { |
||||
|
"LogLevel": { |
||||
|
"Default": "Information", |
||||
|
"Microsoft": "Warning", |
||||
|
"Microsoft.Hosting.Lifetime": "Information" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,173 @@ |
|||||
|
apiVersion: image.openshift.io/v1 |
||||
|
kind: ImageStream |
||||
|
metadata: |
||||
|
annotations: |
||||
|
app.openshift.io/vcs-uri: https://github.com/nmasse-itix/eShopOnWeb.git |
||||
|
labels: |
||||
|
app: eshop |
||||
|
app.kubernetes.io/component: eshop-api |
||||
|
app.kubernetes.io/instance: eshop-api |
||||
|
app.kubernetes.io/name: eshop-api |
||||
|
app.kubernetes.io/part-of: eshop |
||||
|
app.openshift.io/runtime: dotnet |
||||
|
app.openshift.io/runtime-version: 7.0-ubi8 |
||||
|
name: eshop-api |
||||
|
spec: |
||||
|
lookupPolicy: |
||||
|
local: false |
||||
|
--- |
||||
|
apiVersion: build.openshift.io/v1 |
||||
|
kind: BuildConfig |
||||
|
metadata: |
||||
|
annotations: |
||||
|
app.openshift.io/connects-to: '[{"apiVersion":"apps/v1","kind":"Deployment","name":"sql-server"}]' |
||||
|
app.openshift.io/vcs-uri: https://github.com/nmasse-itix/eShopOnWeb.git |
||||
|
labels: |
||||
|
app: eshop-api |
||||
|
app.kubernetes.io/component: eshop-api |
||||
|
app.kubernetes.io/instance: eshop-api |
||||
|
app.kubernetes.io/name: eshop-api |
||||
|
app.kubernetes.io/part-of: eshop |
||||
|
app.openshift.io/runtime: dotnet |
||||
|
app.openshift.io/runtime-version: 7.0-ubi8 |
||||
|
name: eshop-api |
||||
|
spec: |
||||
|
failedBuildsHistoryLimit: 5 |
||||
|
nodeSelector: null |
||||
|
output: |
||||
|
to: |
||||
|
kind: ImageStreamTag |
||||
|
name: eshop-api:latest |
||||
|
postCommit: {} |
||||
|
resources: {} |
||||
|
runPolicy: Serial |
||||
|
source: |
||||
|
contextDir: / |
||||
|
git: |
||||
|
uri: https://github.com/nmasse-itix/eShopOnWeb.git |
||||
|
type: Git |
||||
|
strategy: |
||||
|
sourceStrategy: |
||||
|
env: |
||||
|
- name: DOTNET_STARTUP_PROJECT |
||||
|
value: src/PublicApi/PublicApi.csproj |
||||
|
from: |
||||
|
kind: ImageStreamTag |
||||
|
name: dotnet:7.0-ubi8 |
||||
|
namespace: openshift |
||||
|
type: Source |
||||
|
successfulBuildsHistoryLimit: 5 |
||||
|
triggers: |
||||
|
- type: ConfigChange |
||||
|
- imageChange: {} |
||||
|
type: ImageChange |
||||
|
--- |
||||
|
apiVersion: apps/v1 |
||||
|
kind: Deployment |
||||
|
metadata: |
||||
|
annotations: |
||||
|
alpha.image.policy.openshift.io/resolve-names: '*' |
||||
|
app.openshift.io/connects-to: '[{"apiVersion":"apps/v1","kind":"Deployment","name":"sql-server"}]' |
||||
|
app.openshift.io/route-disabled: "false" |
||||
|
app.openshift.io/vcs-uri: https://github.com/nmasse-itix/eShopOnWeb.git |
||||
|
image.openshift.io/triggers: '[{"from":{"kind":"ImageStreamTag","name":"eshop-api:latest"},"fieldPath":"spec.template.spec.containers[?(@.name==\"eshop-api\")].image","pause":"false"}]' |
||||
|
labels: |
||||
|
app: eshop |
||||
|
app.kubernetes.io/component: eshop-api |
||||
|
app.kubernetes.io/instance: eshop-api |
||||
|
app.kubernetes.io/name: eshop-api |
||||
|
app.kubernetes.io/part-of: eshop |
||||
|
app.openshift.io/runtime: dotnet |
||||
|
app.openshift.io/runtime-version: 7.0-ubi8 |
||||
|
name: eshop-api |
||||
|
spec: |
||||
|
progressDeadlineSeconds: 600 |
||||
|
replicas: 1 |
||||
|
revisionHistoryLimit: 10 |
||||
|
selector: |
||||
|
matchLabels: |
||||
|
app: eshop-api |
||||
|
strategy: |
||||
|
rollingUpdate: |
||||
|
maxSurge: 25% |
||||
|
maxUnavailable: 25% |
||||
|
type: RollingUpdate |
||||
|
template: |
||||
|
metadata: |
||||
|
creationTimestamp: null |
||||
|
labels: |
||||
|
app: eshop-api |
||||
|
deployment: eshop-api |
||||
|
spec: |
||||
|
containers: |
||||
|
- image: eshop-api:latest |
||||
|
imagePullPolicy: IfNotPresent |
||||
|
name: eshop-api |
||||
|
ports: |
||||
|
- containerPort: 8080 |
||||
|
protocol: TCP |
||||
|
resources: {} |
||||
|
terminationMessagePath: /dev/termination-log |
||||
|
terminationMessagePolicy: File |
||||
|
volumeMounts: |
||||
|
- mountPath: /opt/app-root/app/appsettings.json |
||||
|
name: config |
||||
|
subPath: appsettings.json |
||||
|
dnsPolicy: ClusterFirst |
||||
|
restartPolicy: Always |
||||
|
schedulerName: default-scheduler |
||||
|
securityContext: {} |
||||
|
terminationGracePeriodSeconds: 30 |
||||
|
volumes: |
||||
|
- name: config |
||||
|
secret: |
||||
|
defaultMode: 420 |
||||
|
secretName: eshop-config |
||||
|
--- |
||||
|
apiVersion: v1 |
||||
|
kind: Service |
||||
|
metadata: |
||||
|
annotations: |
||||
|
app.openshift.io/connects-to: '[{"apiVersion":"apps/v1","kind":"Deployment","name":"sql-server"}]' |
||||
|
labels: |
||||
|
app: eshop |
||||
|
app.kubernetes.io/component: eshop-api |
||||
|
app.kubernetes.io/instance: eshop-api |
||||
|
app.kubernetes.io/name: eshop-api |
||||
|
app.kubernetes.io/part-of: eshop |
||||
|
app.openshift.io/runtime: dotnet |
||||
|
app.openshift.io/runtime-version: 7.0-ubi8 |
||||
|
name: eshop-api |
||||
|
spec: |
||||
|
ports: |
||||
|
- port: 8080 |
||||
|
protocol: TCP |
||||
|
targetPort: 8080 |
||||
|
selector: |
||||
|
app: eshop-api |
||||
|
sessionAffinity: None |
||||
|
type: ClusterIP |
||||
|
--- |
||||
|
apiVersion: route.openshift.io/v1 |
||||
|
kind: Route |
||||
|
metadata: |
||||
|
annotations: |
||||
|
app.openshift.io/connects-to: '[{"apiVersion":"apps/v1","kind":"Deployment","name":"sql-server"}]' |
||||
|
labels: |
||||
|
app: eshop |
||||
|
app.kubernetes.io/component: eshop-api |
||||
|
app.kubernetes.io/instance: eshop-api |
||||
|
app.kubernetes.io/name: eshop-api |
||||
|
app.kubernetes.io/part-of: eshop |
||||
|
app.openshift.io/runtime: dotnet |
||||
|
app.openshift.io/runtime-version: 7.0-ubi8 |
||||
|
name: eshop-api |
||||
|
spec: |
||||
|
host: {{ .Values.ingress.apiHostname | quote }} |
||||
|
tls: |
||||
|
termination: edge |
||||
|
to: |
||||
|
kind: Service |
||||
|
name: eshop-api |
||||
|
weight: 100 |
||||
|
wildcardPolicy: None |
||||
@ -0,0 +1,173 @@ |
|||||
|
apiVersion: image.openshift.io/v1 |
||||
|
kind: ImageStream |
||||
|
metadata: |
||||
|
annotations: |
||||
|
app.openshift.io/vcs-uri: https://github.com/nmasse-itix/eShopOnWeb.git |
||||
|
labels: |
||||
|
app: eshop |
||||
|
app.kubernetes.io/component: eshop-web |
||||
|
app.kubernetes.io/instance: eshop-web |
||||
|
app.kubernetes.io/name: eshop-web |
||||
|
app.kubernetes.io/part-of: eshop |
||||
|
app.openshift.io/runtime: dotnet |
||||
|
app.openshift.io/runtime-version: 7.0-ubi8 |
||||
|
name: eshop-web |
||||
|
spec: |
||||
|
lookupPolicy: |
||||
|
local: false |
||||
|
--- |
||||
|
apiVersion: build.openshift.io/v1 |
||||
|
kind: BuildConfig |
||||
|
metadata: |
||||
|
annotations: |
||||
|
app.openshift.io/connects-to: '[{"apiVersion":"apps/v1","kind":"Deployment","name":"sql-server"}]' |
||||
|
app.openshift.io/vcs-uri: https://github.com/nmasse-itix/eShopOnWeb.git |
||||
|
labels: |
||||
|
app: eshop-web |
||||
|
app.kubernetes.io/component: eshop-web |
||||
|
app.kubernetes.io/instance: eshop-web |
||||
|
app.kubernetes.io/name: eshop-web |
||||
|
app.kubernetes.io/part-of: eshop |
||||
|
app.openshift.io/runtime: dotnet |
||||
|
app.openshift.io/runtime-version: 7.0-ubi8 |
||||
|
name: eshop-web |
||||
|
spec: |
||||
|
failedBuildsHistoryLimit: 5 |
||||
|
nodeSelector: null |
||||
|
output: |
||||
|
to: |
||||
|
kind: ImageStreamTag |
||||
|
name: eshop-web:latest |
||||
|
postCommit: {} |
||||
|
resources: {} |
||||
|
runPolicy: Serial |
||||
|
source: |
||||
|
contextDir: / |
||||
|
git: |
||||
|
uri: https://github.com/nmasse-itix/eShopOnWeb.git |
||||
|
type: Git |
||||
|
strategy: |
||||
|
sourceStrategy: |
||||
|
env: |
||||
|
- name: DOTNET_STARTUP_PROJECT |
||||
|
value: src/Web/Web.csproj |
||||
|
from: |
||||
|
kind: ImageStreamTag |
||||
|
name: dotnet:7.0-ubi8 |
||||
|
namespace: openshift |
||||
|
type: Source |
||||
|
successfulBuildsHistoryLimit: 5 |
||||
|
triggers: |
||||
|
- type: ConfigChange |
||||
|
- imageChange: {} |
||||
|
type: ImageChange |
||||
|
--- |
||||
|
apiVersion: apps/v1 |
||||
|
kind: Deployment |
||||
|
metadata: |
||||
|
annotations: |
||||
|
alpha.image.policy.openshift.io/resolve-names: '*' |
||||
|
app.openshift.io/connects-to: '[{"apiVersion":"apps/v1","kind":"Deployment","name":"sql-server"}]' |
||||
|
app.openshift.io/route-disabled: "false" |
||||
|
app.openshift.io/vcs-uri: https://github.com/nmasse-itix/eShopOnWeb.git |
||||
|
image.openshift.io/triggers: '[{"from":{"kind":"ImageStreamTag","name":"eshop-web:latest"},"fieldPath":"spec.template.spec.containers[?(@.name==\"eshop-web\")].image","pause":"false"}]' |
||||
|
labels: |
||||
|
app: eshop |
||||
|
app.kubernetes.io/component: eshop-web |
||||
|
app.kubernetes.io/instance: eshop-web |
||||
|
app.kubernetes.io/name: eshop-web |
||||
|
app.kubernetes.io/part-of: eshop |
||||
|
app.openshift.io/runtime: dotnet |
||||
|
app.openshift.io/runtime-version: 7.0-ubi8 |
||||
|
name: eshop-web |
||||
|
spec: |
||||
|
progressDeadlineSeconds: 600 |
||||
|
replicas: 1 |
||||
|
revisionHistoryLimit: 10 |
||||
|
selector: |
||||
|
matchLabels: |
||||
|
app: eshop-web |
||||
|
strategy: |
||||
|
rollingUpdate: |
||||
|
maxSurge: 25% |
||||
|
maxUnavailable: 25% |
||||
|
type: RollingUpdate |
||||
|
template: |
||||
|
metadata: |
||||
|
creationTimestamp: null |
||||
|
labels: |
||||
|
app: eshop-web |
||||
|
deployment: eshop-web |
||||
|
spec: |
||||
|
containers: |
||||
|
- image: eshop-web:latest |
||||
|
imagePullPolicy: IfNotPresent |
||||
|
name: eshop-web |
||||
|
ports: |
||||
|
- containerPort: 8080 |
||||
|
protocol: TCP |
||||
|
resources: {} |
||||
|
terminationMessagePath: /dev/termination-log |
||||
|
terminationMessagePolicy: File |
||||
|
volumeMounts: |
||||
|
- mountPath: /opt/app-root/app/appsettings.json |
||||
|
name: config |
||||
|
subPath: appsettings.json |
||||
|
dnsPolicy: ClusterFirst |
||||
|
restartPolicy: Always |
||||
|
schedulerName: default-scheduler |
||||
|
securityContext: {} |
||||
|
terminationGracePeriodSeconds: 30 |
||||
|
volumes: |
||||
|
- name: config |
||||
|
secret: |
||||
|
defaultMode: 420 |
||||
|
secretName: eshop-config |
||||
|
--- |
||||
|
apiVersion: v1 |
||||
|
kind: Service |
||||
|
metadata: |
||||
|
annotations: |
||||
|
app.openshift.io/connects-to: '[{"apiVersion":"apps/v1","kind":"Deployment","name":"sql-server"}]' |
||||
|
labels: |
||||
|
app: eshop |
||||
|
app.kubernetes.io/component: eshop-web |
||||
|
app.kubernetes.io/instance: eshop-web |
||||
|
app.kubernetes.io/name: eshop-web |
||||
|
app.kubernetes.io/part-of: eshop |
||||
|
app.openshift.io/runtime: dotnet |
||||
|
app.openshift.io/runtime-version: 7.0-ubi8 |
||||
|
name: eshop-web |
||||
|
spec: |
||||
|
ports: |
||||
|
- port: 8080 |
||||
|
protocol: TCP |
||||
|
targetPort: 8080 |
||||
|
selector: |
||||
|
app: eshop-web |
||||
|
sessionAffinity: None |
||||
|
type: ClusterIP |
||||
|
--- |
||||
|
apiVersion: route.openshift.io/v1 |
||||
|
kind: Route |
||||
|
metadata: |
||||
|
annotations: |
||||
|
app.openshift.io/connects-to: '[{"apiVersion":"apps/v1","kind":"Deployment","name":"sql-server"}]' |
||||
|
labels: |
||||
|
app: eshop |
||||
|
app.kubernetes.io/component: eshop-web |
||||
|
app.kubernetes.io/instance: eshop-web |
||||
|
app.kubernetes.io/name: eshop-web |
||||
|
app.kubernetes.io/part-of: eshop |
||||
|
app.openshift.io/runtime: dotnet |
||||
|
app.openshift.io/runtime-version: 7.0-ubi8 |
||||
|
name: eshop-web |
||||
|
spec: |
||||
|
host: {{ .Values.ingress.webHostname | quote }} |
||||
|
tls: |
||||
|
termination: edge |
||||
|
to: |
||||
|
kind: Service |
||||
|
name: eshop-web |
||||
|
weight: 100 |
||||
|
wildcardPolicy: None |
||||
@ -0,0 +1,79 @@ |
|||||
|
{ |
||||
|
"$schema": "http://json-schema.org/draft-07/schema", |
||||
|
"type": "object", |
||||
|
"additionalProperties": false, |
||||
|
"properties": { |
||||
|
"database": { |
||||
|
"type": "object", |
||||
|
"additionalProperties": false, |
||||
|
"properties": { |
||||
|
"name": { |
||||
|
"type": "string", |
||||
|
"title": "Database Name", |
||||
|
"description": "Name of the database", |
||||
|
"default": "eShop" |
||||
|
}, |
||||
|
"username": { |
||||
|
"title": "Username", |
||||
|
"description": "Username to access the database", |
||||
|
"type": "string", |
||||
|
"default": "eShop" |
||||
|
}, |
||||
|
"password": { |
||||
|
"title": "Password", |
||||
|
"description": "Password to access the database", |
||||
|
"type": "string", |
||||
|
"default": "R3dH4t1!" |
||||
|
}, |
||||
|
"schema": { |
||||
|
"title": "Schema Name", |
||||
|
"type": "string", |
||||
|
"description": "Name of the schema to create", |
||||
|
"default": "eShop" |
||||
|
}, |
||||
|
"serverHostname": { |
||||
|
"title": "SQL Server hostname", |
||||
|
"type": "string", |
||||
|
"description": "Microsoft SQL Server hostname", |
||||
|
"default": "sql-server" |
||||
|
} |
||||
|
}, |
||||
|
"required": [ |
||||
|
"name", |
||||
|
"password", |
||||
|
"schema", |
||||
|
"serverHostname", |
||||
|
"username" |
||||
|
], |
||||
|
"title": "Database" |
||||
|
}, |
||||
|
"ingress": { |
||||
|
"type": "object", |
||||
|
"additionalProperties": false, |
||||
|
"properties": { |
||||
|
"webHostname": { |
||||
|
"title": "Web Public Hostname", |
||||
|
"type": "string", |
||||
|
"minLength": 3, |
||||
|
"description": "Public hostname on which the Web component will be reachable" |
||||
|
}, |
||||
|
"apiHostname": { |
||||
|
"title": "API Public Hostname", |
||||
|
"type": "string", |
||||
|
"minLength": 3, |
||||
|
"description": "Public hostname on which the Web component will be reachable" |
||||
|
} |
||||
|
}, |
||||
|
"required": [ |
||||
|
"apiHostname", |
||||
|
"webHostname" |
||||
|
], |
||||
|
"title": "Ingress" |
||||
|
} |
||||
|
}, |
||||
|
"required": [ |
||||
|
"database", |
||||
|
"ingress" |
||||
|
], |
||||
|
"title": "eShopOnWeb Application" |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
database: |
||||
|
name: "eShop" |
||||
|
username: "eShop" |
||||
|
password: "R3dH4t1!" |
||||
|
schema: "eShop" |
||||
|
serverHostname: "sql-server" |
||||
|
ingress: |
||||
|
webHostname: "" |
||||
|
apiHostname: "" |
||||
Loading…
Reference in new issue