diff --git a/sudoscientist-go-backend/.helmignore b/apps/sudoscientist-go-backend/.helmignore similarity index 100% rename from sudoscientist-go-backend/.helmignore rename to apps/sudoscientist-go-backend/.helmignore diff --git a/sudoscientist-go-backend/Chart.lock b/apps/sudoscientist-go-backend/Chart.lock similarity index 100% rename from sudoscientist-go-backend/Chart.lock rename to apps/sudoscientist-go-backend/Chart.lock diff --git a/sudoscientist-go-backend/Chart.yaml b/apps/sudoscientist-go-backend/Chart.yaml similarity index 100% rename from sudoscientist-go-backend/Chart.yaml rename to apps/sudoscientist-go-backend/Chart.yaml diff --git a/apps/sudoscientist-go-backend/charts/common-0.1.0.tgz b/apps/sudoscientist-go-backend/charts/common-0.1.0.tgz new file mode 100644 index 0000000..215ce2f Binary files /dev/null and b/apps/sudoscientist-go-backend/charts/common-0.1.0.tgz differ diff --git a/sudoscientist-go-backend/templates/NOTES.txt b/apps/sudoscientist-go-backend/templates/NOTES.txt similarity index 100% rename from sudoscientist-go-backend/templates/NOTES.txt rename to apps/sudoscientist-go-backend/templates/NOTES.txt diff --git a/sudoscientist-go-backend/templates/_helpers.tpl b/apps/sudoscientist-go-backend/templates/_helpers.tpl similarity index 100% rename from sudoscientist-go-backend/templates/_helpers.tpl rename to apps/sudoscientist-go-backend/templates/_helpers.tpl diff --git a/sudoscientist-go-backend/templates/deployment.yaml b/apps/sudoscientist-go-backend/templates/deployment.yaml similarity index 100% rename from sudoscientist-go-backend/templates/deployment.yaml rename to apps/sudoscientist-go-backend/templates/deployment.yaml diff --git a/apps/sudoscientist-go-backend/templates/external-secrets.yaml b/apps/sudoscientist-go-backend/templates/external-secrets.yaml new file mode 100644 index 0000000..c0cfb91 --- /dev/null +++ b/apps/sudoscientist-go-backend/templates/external-secrets.yaml @@ -0,0 +1 @@ +{{ include "common.external-secrets" . }} diff --git a/apps/sudoscientist-go-backend/templates/istio.yaml b/apps/sudoscientist-go-backend/templates/istio.yaml new file mode 100644 index 0000000..7e551d3 --- /dev/null +++ b/apps/sudoscientist-go-backend/templates/istio.yaml @@ -0,0 +1 @@ +{{ include "common.istio" . }} diff --git a/sudoscientist-go-backend/templates/service.yaml b/apps/sudoscientist-go-backend/templates/service.yaml similarity index 100% rename from sudoscientist-go-backend/templates/service.yaml rename to apps/sudoscientist-go-backend/templates/service.yaml diff --git a/library/common/common-0.1.0.tgz b/library/common/common-0.1.0.tgz deleted file mode 100644 index 1591017..0000000 Binary files a/library/common/common-0.1.0.tgz and /dev/null differ diff --git a/library/common/templates/_deployment.yaml b/library/common/templates/_deployment.yaml index 1910db9..05c453b 100644 --- a/library/common/templates/_deployment.yaml +++ b/library/common/templates/_deployment.yaml @@ -9,14 +9,15 @@ spec: {{- end }} selector: matchLabels: - app.kubernetes.io/name: {{ .Values.common.fullname }} - app.kubernetes.io/instance: {{ .Values.common.fullname }} + {{- include "common.selectorLabels" . | nindent 6 }} template: metadata: {{- with .Values.podAnnotations }} annotations: {{- toYaml . | nindent 8 }} {{- end }} + labels: + {{- include "common.selectorLabels" . | nindent 8 }} spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: @@ -39,14 +40,14 @@ spec: - name: http containerPort: {{ .Values.service.port }} protocol: TCP - livenessProbe: - httpGet: - path: / - port: http - readinessProbe: - httpGet: - path: / - port: http +# livenessProbe: +# httpGet: +# path: / +# port: http +# readinessProbe: +# httpGet: +# path: / +# port: http resources: {{- toYaml .Values.resources | nindent 12 }} {{- with .Values.nodeSelector }} diff --git a/library/common/templates/_external-secrets.yaml b/library/common/templates/_external-secrets.yaml new file mode 100644 index 0000000..db562b8 --- /dev/null +++ b/library/common/templates/_external-secrets.yaml @@ -0,0 +1,83 @@ +{{ define "common.external-secrets" }} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.common.serviceAccountName }} +automountServiceAccountToken: false +... +--- +apiVersion: v1 +kind: Secret +type: kubernetes.io/service-account-token +metadata: + name: serviceaccounttoken + annotations: + kubernetes.io/service-account.name: "{{ .Values.common.serviceAccountName }}" +... +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ .Values.common.serviceAccountName }}-tokenreview-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: system:auth-delegator +subjects: +- kind: ServiceAccount + name: {{ .Values.common.serviceAccountName }} + namespace: {{ .Values.common.namespace }} +... +--- +apiVersion: redhatcop.redhat.io/v1alpha1 +kind: Policy +metadata: + name: {{ .Values.common.serviceAccountName }} + namespace: {{ .Values.common.namespace }} +spec: + authentication: + path: k8s-teapot + role: {{ .Values.common.serviceAccountName }} + policy: |- +{{ .Values.common.vaultPolicy | indent 4 }} +... +--- +apiVersion: external-secrets.io/v1beta1 +kind: SecretStore +metadata: + name: {{ .Values.common.serviceAccountName }} +spec: + provider: + vault: + server: "https://vault.service.masked.name:8200" + path: "kv" + version: "v2" + caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUROVENDQWgyZ0F3SUJBZ0lVWXA4eG81dDJsSkZQM1NpRDFmSmlyZ0dVUUowd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZqRVVNQklHQTFVRUF4TUxiV0Z6YTJWa0xtNWhiV1V3SGhjTk1qQXdPREk1TVRreU16RXlXaGNOTXpBdwpPREkzTVRreU16UXlXakFXTVJRd0VnWURWUVFERXd0dFlYTnJaV1F1Ym1GdFpUQ0NBU0l3RFFZSktvWklodmNOCkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNSTdvUitLSHZ2em5mbmFBWERNTzVxcFNUQ0FZQ3lmakZFb2hZSmYKbE9jbkxPTlhiM2Y2c1A1ZDFlbHRMK1VUcTBSVlU1VVAwYU5XN2hxRFRhNDFNUncwSkNEdEI2OHlLZFlxMmhaZgo5N2dBK2xqM01FSlU2UlRBS0xyZzc1R1JoL0FiTkVJZ3d2UHVIS1c2aE1idHdPeU05REZVLy9XM3hwdXNhbFh5ClJNRnpBSGZTRGo5Y2krVXlnVXQ5SElOV2QvU21NR0cvOFBnaGFSaGZFNDR3UkZNcVllemVsaUl0MkpJczQzQlYKN0hxRzBPZXY5V1BlWG1pYVpVWUtRZXRIaVFxUjE0TXhpdjFJR3pDbXd3Tis5YjR0WnRaVGE1OG9NNWRQWGZiYgpsckVMUUU1T3NQYU50TXRFUjNNZ3hvdkROM1ZTQ0dIL08vR3lhRVdWYW5ZNVVGOENBd0VBQWFON01Ia3dEZ1lEClZSMFBBUUgvQkFRREFnRUdNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQlk4alczZkRWVXAKVVJ0MXByaG1ETWprVmlrZ01COEdBMVVkSXdRWU1CYUFGQlk4alczZkRWVXBVUnQxcHJobURNamtWaWtnTUJZRwpBMVVkRVFRUE1BMkNDMjFoYzJ0bFpDNXVZVzFsTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBV1F6NGQzUXpFClc4TkdBMTZaUGFtbFZ1Yk9MQjVEdFp6MnFyU3JuM0RlT2JMSURTaEluVjNxdFJsRHg5SFlKTFRDQTc1S2V0MEoKTlRzeU1jVHkydHhkNEk4aGdkRjMwWEplRWNpTjl3WjBtS0VlUC9ZS0R3ZThWMlh3V3E0WFlrRGVjaGxXSHBabwpQZldjb0xwckt3VlVJNEh6YXFrTm13Y21NVUk0eEFzQytTTGUxbXJlYnNlS200OW9Pd2RRcy9vUFZMSyswbkVwClJ2RDBhT3ZvaElMSWEvMlp0S2N6dmhCL0wzZm81cGc5RXgvMEpEQmRESEllZE1hYkQzcW44SWRzZStQNURmd2EKSnUyQ3R5YituMVRUUHhSRE14czJjRmJBNWlycisyQVJKZDhqdEdTKzFmeXhvZ2pPV1MxUlI1MjNGK3FJUzNzdQpLaWJHZWwrZ0ZQcHEKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRDB6Q0NBcnVnQXdJQkFnSVVNNTJ1aFhTZVRDaW0xcG16dWNtL2NuSWdOcDh3RFFZSktvWklodmNOQVFFTApCUUF3RmpFVU1CSUdBMVVFQXhNTGJXRnphMlZrTG01aGJXVXdIaGNOTWpBd09ESTVNVGt5TnpBd1doY05NalV3Ck9ESTRNVGt5TnpNd1dqQXRNU3N3S1FZRFZRUURFeUp0WVhOclpXUXVibUZ0WlNCSmJuUmxjbTFsWkdsaGRHVWcKUVhWMGFHOXlhWFI1TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUE4THVHbytBcwpJQ1lXZEpqQkNZMHNuRi9YK2pGMXRkY3JRek5pUktFU0ViNWRzRGl5OTc5YnVnQ2JsUFFEUStnNVdHcVhYNHBqClV5WlpFM1p3aE91ZklTbEdLMG93MWFNanFTK3BGbFE4NUtSRC9qVXRMUFJVSnVRRittMll3SWQvTWc2L0I3UWsKZDE2NnVKa054UytNR1pDaTJPWVhlb2l2bk9ZN1EwS2ovMHZJYmM1VnQza0NSVmcybGpMU1Fob0JkKzg1QUhNUgpqZVJqWk1lWUVZRjJIVFZ3cmc0RHJDL3IwME1WdERjTnFzNitNN1laL3J6bnk3M0d2ZkpXZldvQjFDNHBpWmxnCmZ2VWNTREw1SEFoaml1NWNTZUlSN0RUdVZ4N3Q0UG9LNkFxVWtQeWdEdHExWmFMeWJYVDdYNmQwNzJkUjVBWE8KbldGTFBhYUdKOTc5aXdJREFRQUJvNElCQURDQi9UQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0R3WURWUjBUQVFILwpCQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVJa2hWWUJhSzlDY3ZYRzhGTTJqS1ZaMTZvWkF3SHdZRFZSMGpCQmd3CkZvQVVGanlOYmQ4TlZTbFJHM1dtdUdZTXlPUldLU0F3VVFZSUt3WUJCUVVIQVFFRVJUQkRNRUVHQ0NzR0FRVUYKQnpBQ2hqVm9kSFJ3T2k4dmRtRjFiSFF1WTI5c2RXMWlhV0V1YldGemEyVmtMbTVoYldVNk9ESXdNQzkyTVM5dwphMmxmY205dmRDOWpZVEJIQmdOVkhSOEVRREErTUR5Z09xQTRoalpvZEhSd09pOHZkbUYxYkhRdVkyOXNkVzFpCmFXRXViV0Z6YTJWa0xtNWhiV1U2T0RJd01DOTJNUzl3YTJsZmNtOXZkQzlqY213d0RRWUpLb1pJaHZjTkFRRUwKQlFBRGdnRUJBSzZITWdSK2hwd2paQ21mNU5zekRTSHI3ZFlLWlhQNExyY0hQV3M5NG5MTTMzVVo1NzJ1YkdIcwpkS2pSdzhZRDBjbmNyc3lwc1ltRWdSNTdVK0RIa3lzMzk0d2tiN1VPd3kxWnZkNUlJUlhkUDBjRHlsejBRenFNCkFQblFZTitpc21rb2xqaGs5ZXkwUWJvM0NtUGpNK1VRY0F4dVpRdEE0TStyaUMxK2prdWRlMXVZTDBzekM2WTkKNEtldGZ2Yk5rZWRTYVY1eUphUktDQmhSY0M0L0dqcEJHL29kUS81QWZCUEFGalpxaGNJSldCclZZYlRRVkM3OQpoTUExaXdXSlBtVDlMc2pNU1VmeEZUUHp4Um5OWFFpS0Z6NWtUMk9pUzFucWg4YU9jeVU5WUM5Mjhwa2lmTkpWCktva3VEZXpKRk03aWUzZCtFY0JrMVY5bEh3T1dkdG89Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + auth: + kubernetes: + mountPath: "k8s-teapot" + role: "{{ .Values.common.serviceAccountName }}" + secretRef: + name: "serviceaccounttoken" +... +--- +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: {{ .Values.common.serviceAccountName }} +spec: + secretStoreRef: + name: {{ .Values.common.serviceAccountName }} + kind: SecretStore + data: + {{- range $v := .Values.common.secrets }} + {{- with $v }} + - secretKey: {{ .secretKey }} + remoteRef: + key: {{ .key }} + property: {{ .property }} + {{- end }} + {{- end }} +... +{{- end }} diff --git a/library/common/templates/_helpers.tpl.bak b/library/common/templates/_helpers.tpl similarity index 100% rename from library/common/templates/_helpers.tpl.bak rename to library/common/templates/_helpers.tpl diff --git a/library/common/templates/_istio.yaml b/library/common/templates/_istio.yaml new file mode 100644 index 0000000..0648d56 --- /dev/null +++ b/library/common/templates/_istio.yaml @@ -0,0 +1,63 @@ +{{- define "common.istio" }} +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: {{ .Values.common.fullname }}-cert + namespace: istio-system +spec: + secretName: {{ .Values.common.fullname }}-cert + commonName: {{ first .Values.common.domains }} + dnsNames: + {{- range $d := .Values.common.domains }} + - {{ $d }} + {{- end }} + issuerRef: + name: {{ .Values.common.domainIssuer }} + kind: ClusterIssuer + group: cert-manager.io +... +--- +apiVersion: networking.istio.io/v1beta1 +kind: Gateway +metadata: + name: {{ .Values.common.fullname }}-gateway +spec: + selector: + istio: ingressgateway + servers: + - port: + number: 443 + name: https + protocol: HTTPS + tls: + mode: SIMPLE + credentialName: {{ .Values.common.fullname }}-cert + hosts: + {{- range $d := .Values.common.domains }} + - {{ $d }} + {{- end }} +... +--- +apiVersion: networking.istio.io/v1beta1 +kind: VirtualService +metadata: + name: {{ .Values.common.fullname }}-gateway +spec: + hosts: + {{- range $d := .Values.common.domains }} + - {{ $d }} + {{- end }} + gateways: + - {{ .Values.common.fullname }}-gateway + http: + - match: + - uri: + prefix: / + route: + - destination: + port: + number: 80 + host: {{ .Values.common.fullname }} +... +{{- end }} diff --git a/library/common/templates/_service.yaml b/library/common/templates/_service.yaml index e52a750..6c565a5 100644 --- a/library/common/templates/_service.yaml +++ b/library/common/templates/_service.yaml @@ -4,6 +4,8 @@ kind: Service metadata: name: {{ .Values.common.fullname }} spec: + selector: + {{- include "common.selectorLabels" . | nindent 6 }} type: {{ .Values.service.type }} ports: - port: {{ .Values.service.port }}