From 27edb2feb72f63b1a387f34787eed379e1a973da Mon Sep 17 00:00:00 2001 From: PatStLouis Date: Fri, 4 Oct 2024 17:52:20 +0000 Subject: [PATCH] fix chart templates Signed-off-by: PatStLouis --- charts/Chart.yaml | 10 +---- charts/charts/Chart.yaml | 26 ------------ charts/my-values.yaml | 16 +++++++ charts/templates/Chart.yaml | 26 ------------ .../templates/postgresql/networkpolicy.yaml | 39 ------------------ charts/templates/server/deployment.yaml | 19 ++++----- charts/templates/server/ingress.yaml | 3 -- charts/templates/server/networkpolicy.yaml | 21 ---------- charts/values.yaml | 5 ++- demo/frontend/app/static/tdw.jpg | Bin 0 -> 9997 bytes server/config.py | 2 +- 11 files changed, 30 insertions(+), 137 deletions(-) delete mode 100644 charts/charts/Chart.yaml create mode 100644 charts/my-values.yaml delete mode 100644 charts/templates/Chart.yaml delete mode 100644 charts/templates/postgresql/networkpolicy.yaml delete mode 100644 charts/templates/server/networkpolicy.yaml create mode 100644 demo/frontend/app/static/tdw.jpg diff --git a/charts/Chart.yaml b/charts/Chart.yaml index 03f7096..eebcacf 100644 --- a/charts/Chart.yaml +++ b/charts/Chart.yaml @@ -1,17 +1,9 @@ apiVersion: v2 name: trustdidweb-server-py +icon: https://identity.foundation/trustdidweb/tdw.jpg description: An api server to register and serve trusted web dids. type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) version: 0.0.2 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. appVersion: "v0.0.2" dependencies: diff --git a/charts/charts/Chart.yaml b/charts/charts/Chart.yaml deleted file mode 100644 index 03f7096..0000000 --- a/charts/charts/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -name: trustdidweb-server-py -description: An api server to register and serve trusted web dids. -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.0.2 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "v0.0.2" - -dependencies: - - name: postgresql - version: 11.9.13 - repository: https://charts.bitnami.com/bitnami/ - condition: postgresql.enabled - - name: common - repository: "https://charts.bitnami.com/bitnami" - tags: - - bitnami-common - version: 2.x.x \ No newline at end of file diff --git a/charts/my-values.yaml b/charts/my-values.yaml new file mode 100644 index 0000000..def58ef --- /dev/null +++ b/charts/my-values.yaml @@ -0,0 +1,16 @@ +--- +server: + image: + tag: 0.0.4 + + host: "tdw.dev.opsec.id" + + environment: + DOMAIN: "tdw.dev.opsec.id" + SECRET_KEY: "fdsfdsfgdsf43tr" + ENDORSER_MULTIKEY: "z6Mkiw1uyDmZ2cX872XhziSNm47Z3WV9EZqgqEH6grrLbSZ6" + + +postgresql: + auth: + postgresPassword: postgres \ No newline at end of file diff --git a/charts/templates/Chart.yaml b/charts/templates/Chart.yaml deleted file mode 100644 index 03f7096..0000000 --- a/charts/templates/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -name: trustdidweb-server-py -description: An api server to register and serve trusted web dids. -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.0.2 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "v0.0.2" - -dependencies: - - name: postgresql - version: 11.9.13 - repository: https://charts.bitnami.com/bitnami/ - condition: postgresql.enabled - - name: common - repository: "https://charts.bitnami.com/bitnami" - tags: - - bitnami-common - version: 2.x.x \ No newline at end of file diff --git a/charts/templates/postgresql/networkpolicy.yaml b/charts/templates/postgresql/networkpolicy.yaml deleted file mode 100644 index 9c80577..0000000 --- a/charts/templates/postgresql/networkpolicy.yaml +++ /dev/null @@ -1,39 +0,0 @@ ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ include "global.postgresql.fullname" . }}-ingress - labels: - {{- include "postgresql.labels" . | nindent 4 }} -spec: - podSelector: - matchLabels: - {{- include "postgresql.selectorLabels" . | nindent 6 }} - ingress: - - from: - - namespaceSelector: - matchLabels: - {{- toYaml .Values.networkPolicy.ingress.namespaceSelector | nindent 14 }} - policyTypes: - - Ingress ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ include "global.postgresql.fullname" . }} - labels: - {{- include "postgresql.labels" . | nindent 4 }} -spec: - podSelector: - matchLabels: - {{- include "postgresql.selectorLabels" . | nindent 6 }} - ingress: - - ports: - - protocol: TCP - port: {{ .Values.postgresql.primary.service.ports.postgresql }} - from: - - podSelector: - matchLabels: - {{- include "server.selectorLabels" . | nindent 14 }} - policyTypes: - - Ingress \ No newline at end of file diff --git a/charts/templates/server/deployment.yaml b/charts/templates/server/deployment.yaml index 2afdb3e..fd57c9e 100644 --- a/charts/templates/server/deployment.yaml +++ b/charts/templates/server/deployment.yaml @@ -27,21 +27,20 @@ spec: {{- toYaml .Values.server.containerSecurityContext | nindent 12 }} image: "{{ .Values.server.image.repository }}:{{ .Values.server.image.tag }}" imagePullPolicy: {{ .Values.server.image.pullPolicy }} - envFrom: - - secretRef: - name: {{ include "server.fullname" . }}-env env: - name: DOMAIN value: {{ .Values.server.host }} - name: ENDORSER_MULTIKEY value: {{ .Values.server.environment.ENDORSER_MULTIKEY }} - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: trustdidweb-server-py-postgresql - key: password - - name: POSTGRES_URI - value: postgres://{{ .Values.postgresql.auth.username }}:$(POSTGRES_PASSWORD)@{{ include "global.postgresql.fullname" . }}:{{ .Values.postgresql.primary.service.ports.postgresql }} + - name: SECRET_KEY + value: {{ .Values.server.environment.SECRET_KEY }} + # - name: POSTGRES_PASSWORD + # valueFrom: + # secretKeyRef: + # name: trustdidweb-server-py-postgresql + # key: password + # - name: POSTGRES_URI + # value: postgres://{{ .Values.postgresql.auth.username }}:$(POSTGRES_PASSWORD)@{{ include "global.postgresql.fullname" . }}:{{ .Values.postgresql.primary.service.ports.postgresql }} ports: - name: api containerPort: {{ .Values.server.service.apiPort }} diff --git a/charts/templates/server/ingress.yaml b/charts/templates/server/ingress.yaml index 560e265..2412a9d 100644 --- a/charts/templates/server/ingress.yaml +++ b/charts/templates/server/ingress.yaml @@ -3,10 +3,7 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: {{ include "server.fullname" . }} - annotations: - {{- toYaml .Values.ingress.annotations | nindent 4 }} labels: - {{- toYaml .Values.ingress.labels | nindent 4 }} {{- include "server.labels" . | nindent 4 }} spec: tls: diff --git a/charts/templates/server/networkpolicy.yaml b/charts/templates/server/networkpolicy.yaml deleted file mode 100644 index 1ddddb1..0000000 --- a/charts/templates/server/networkpolicy.yaml +++ /dev/null @@ -1,21 +0,0 @@ ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ include "server.fullname" . }}-ingress - labels: - {{- include "server.labels" . | nindent 4 }} -spec: - podSelector: - matchLabels: - {{- include "server.selectorLabels" . | nindent 6 }} - ingress: - - from: - - namespaceSelector: - matchLabels: - {{- toYaml .Values.networkPolicy.ingress.namespaceSelector | nindent 14 }} - - podSelector: - matchLabels: - {{- toYaml .Values.server.networkPolicy.ingress.podSelector | nindent 14 }} - policyTypes: - - Ingress \ No newline at end of file diff --git a/charts/values.yaml b/charts/values.yaml index 5332f58..ac39d37 100644 --- a/charts/values.yaml +++ b/charts/values.yaml @@ -7,10 +7,10 @@ selectorLabels: {} server: image: - repository: ghcr.io/OpSecId/trustdidweb-server-py + repository: ghcr.io/decentralized-identity/trustdidweb-server-py pullPolicy: IfNotPresent pullSecrets: [] - tag: 0.1.0 + tag: 0.0.4 host: "" @@ -39,6 +39,7 @@ server: environment: DOMAIN: "" + SECRET_KEY: "" ENDORSER_MULTIKEY: "" postgresql: diff --git a/demo/frontend/app/static/tdw.jpg b/demo/frontend/app/static/tdw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..09a361e2b58072c0492e321464404ea0f517b3d5 GIT binary patch literal 9997 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 nR>uChD)uj&{553%PyK&R