Skip to content
This repository has been archived by the owner on Sep 21, 2022. It is now read-only.

Commit

Permalink
Refaktorering av dokumentasjon (påbegynt) (#28)
Browse files Browse the repository at this point in the history
* Refaktorering av dokumentasjon (påbegynt)

Co-authored-by: Andreas Hage Storlien <[email protected]>
  • Loading branch information
andrstor and andreasstorlien authored Jun 20, 2022
1 parent 344390e commit 862e43f
Show file tree
Hide file tree
Showing 11 changed files with 228 additions and 86 deletions.
87 changes: 81 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,87 @@
# helsenorge-helm-charts
Helm-charts skrevet for å deploy Helsenorge til kubernetes.

### Generer dokumentasjon ###
Inneholder følgende charts
- [helsenorge-application](charts/helsenorge-application/README.md) - chart for å deploye en helsenorge-applikasjon (api, webapp, batchjobb etc).
- [helsenorge-job](charts/helsenorge-job/README.md) - chart for å deploye en helsenorge-engangsjobb (databasemigrering, console-app etc).
- [helsenorge-common](charts/helsenorge-common/READNE.md) - [library-chart](https://helm.sh/docs/topics/library_charts/) de ovenstående chartene har en avhengighet til. Felles templates osv.

## Installasjon av repo
For å få tilgang til repoet lokalt, kjøre følgende kommando:
```console
$ helm repo add helsenorge http://helsenorge.github.io/helm-charts
```
## Ta i bruk i løsningsområde
Chartene i dette repoet skal benyttes som endel av et umbrella-chart for å installere et helsenorge-løsningsområde.

### Opprette chart for løsningsområde

Stå i helsenorge-repoet du ønsker å deploye til kubernetes. Hvis losningsområdet ditt heter "okonomi"

Opprett nytt helm-chart under folder ```/charts```
```console
mkdir charts
helm create okonomi
```
Vi skal bare lage et umbrella chart der vi inkluderer allerede eksisterende helm-charts, så du trenger ikke den templatingen ```helm create``` gir by default.
```console
rm -rf okonomi/templates/*
```
Du sitter nå igjen med en ```Chart.yml```, en ```.helmignore``` og en ```values.yaml``` under /charts i ditt repo.

### Konfigurere chart
```chart.yaml``` beskriver metadata om chartet vi akkurat har laget. Les mer om ```chart.yaml``` og hva den bør inneholde [her](https://helm.sh/docs/topics/charts/#the-chartyaml-file). Minimum så bør den ha en kort beskrivelse, en versjon og en peker til hvem som er ansvarlige. ```Values.yaml``` inneholder konfigurasjonen som benyttes når chartet deployes til kubernetes. Her overkriver vi alle default-verdiene som gjør vår deployment unik for løsningsområdet. ```.helmignore``` brukes for å ignorere filer når vi senere skal kjøre bygging av helm-chart til en pakke.

#### chart.yaml

```yaml
apiVersion: v2
name: okonomi
description: Et umbrella chart som beskriver deployment av løsningsområde 'okonomi' til et helsenorge kubernetes miljø
type: application
version: 0.1.0

maintainers:
- name: Plattform
```
I tillegg så må chart ```chart.yaml``` inneholde èn dependency per applikasjon, migrering eller console som løsningsområde inneholder. Les mer om helm-dependencies [her](https://helm.sh/docs/helm/helm_dependency/)

Hvis løsningsområdet inneholder 2 apier og 1 migrering så kunne det sett ut som under. Legg merke til bruken av alias. Dette gir oss mulighetene til å gjenbruke samme chart mange ganger, og samtidig konfigurere de ulikt.

```yaml
dependencies:
- name: helsenorge-applikasjon
version: "~0.0.1"
repository: "https://helsenorge.github.io/helm-charts/"
alias: externalapi
- name: helsenorge-applikasjon
version: "~0.0.1"
repository: "https://helsenorge.github.io/helm-charts/"
alias: internalapi
- name: helsenorge-job
version: "~0.0.1"
repository: "https://helsenorge.github.io/helm-charts/"
alias: database
```

#### Values.yaml
```values.yaml``` brukes for å konfigurere et helm-chart. ```values.yaml``` filen er en av flere måter å gjøre dette på, men den mest vanlige. Les mer om dette [her](https://helm.sh/docs/chart_template_guide/values_files/)

Todo...


#### Extensions
Hvis felles-chartene ikke dekker dine behov, kan du extende dette...

Todo...

## Generer dokumentasjon
Benytter oss av [helm-docs](https://github.com/norwoodj/helm-docs) for å auto-generere helm-chart dokumentasjon.

1. Ha docker-desktop kjørende
1. Ha docker kjørende
2. Stå på rot i repoet
3. Kjør i powershell terminal:
3. Kjør i terminal:

```powershell
docker run --rm --volume "$(pwd):/helm-docs" jnorwood/helm-docs:latest
```
```console
docker run --rm --volume "$(pwd):/src" jnorwood/helm-docs:latest --chart-search-root=/src/. --template-files=/src/charts/_templates.gotmpl --template-files=README.md.gotmpl
```
12 changes: 12 additions & 0 deletions charts/_templates.gotmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{{ define "common.fellesInstall" -}}

## Installasjon

Dette chartet er ment for å inkluderes i et [umbrella chart](https://helm.sh/docs/howto/charts_tips_and_tricks/#complex-charts-with-many-dependencies) for å deploye et helsenorge-løsningsområde, men kan også installeres enkeltvis. Les mer om dette her.

For å installere chartet med navnet "my-release"
```console
$ helm repo add helsenorge http://helsenorge.github.io/helm-charts
$ helm install my-release helsenorge/{{ template "chart.name" . }}
```
{{- end }}
8 changes: 3 additions & 5 deletions charts/helsenorge-application/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
apiVersion: v2
name: helsenorge-applikasjon
description: Helm chart for installere en helsenorge-applikasjon på kuberntes. En helsenorge-applikasjon dekker typene API, WebApp, Service, Batch. Dvs, applikasjoner som utfører arbeid kontinuerlig.
description: Helm chart for installere en helsenorge-applikasjon på kubernetes. En helsenorge-applikasjon dekker typene API, WebApp, Service, Batch. Dvs, applikasjoner som utfører arbeid kontinuerlig.

type: application
maintainers:
- name: Team Plattform
email: "[email protected]"
url: "https://www.nhn.no/"
- name: Plattform

version: 0.0.31
version: 0.0.32

dependencies:
- name: helsenorge-common
Expand Down
68 changes: 39 additions & 29 deletions charts/helsenorge-application/README.md
Original file line number Diff line number Diff line change
@@ -1,67 +1,67 @@
# helsenorge-applikasjon

![Version: 0.0.31](https://img.shields.io/badge/Version-0.0.31-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
# helsenorge-applikasjon

Helm chart for installere en helsenorge-applikasjon på kuberntes. En helsenorge-applikasjon dekker typene API, WebApp, Service, Batch. Dvs, applikasjoner som utfører arbeid kontinuerlig.
Helm chart for installere en helsenorge-applikasjon på kubernetes. En helsenorge-applikasjon dekker typene API, WebApp, Service, Batch. Dvs, applikasjoner som utfører arbeid kontinuerlig.

## Maintainers
![Version: 0.0.32](https://img.shields.io/badge/Version-0.0.32-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)

| Name | Email | Url |
| ---- | ------ | --- |
| Team Plattform | [email protected] | https://www.nhn.no/ |
## Installasjon

## Requirements
Dette chartet er ment for å inkluderes i et [umbrella chart](https://helm.sh/docs/howto/charts_tips_and_tricks/#complex-charts-with-many-dependencies) for å deploye et helsenorge-løsningsområde, men kan også installeres enkeltvis. Les mer om dette her.

| Repository | Name | Version |
|------------|------|---------|
| https://helsenorge.github.io/helm-charts/ | helsenorge-common | ~0.0.1 |
For å installere chartet med navnet "my-release"
```console
$ helm repo add helsenorge http://helsenorge.github.io/helm-charts
$ helm install my-release helsenorge/helsenorge-applikasjon
```

## Values

| Key | Type | Default | Description |
|-----|------|---------|-------------|
| args | string | `nil` | Ovveride default container args - Les mer om Command and Arguments for kontainere [her](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/). |
| args | list | `[]` | Ovveride default container args - Les mer om Command and Arguments for kontainere [her](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/). Les mer under ```command```. |
| certificateStore | string | `"root/.dotnet/corefx/cryptography/x509stores/my"` | Path til certificate-store som sertifikater installeres til ved bruk av [certificate tool](https://github.com/gsoft-inc/dotnet-certificate-tool). Fallback plassering for [CurrentUser\My](https://docs.microsoft.com/nb-no/dotnet/standard/security/cross-platform-cryptography#the-my-store) på linux. |
| clientId | string | `""` | ClientId for applikasjonen |
| clientSecret | string | `""` | Tilhørende secret |
| command | string | `nil` | Ovveride default container command - defaulter til "dotnet" - Les mer om Command and Arguments for kontainere [her](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/). |
| debug | object | `{"configShare":"/config-share/","debugConfigMap":"debug-environment"}` | Debugmodus - Settings for debugmodus |
| command | list | `[]` | Ovveride default container command - defaulter til "dotnet" - Les mer om Command and Arguments for kontainere [her](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/). Eks for å kjøre en dotnet applikasjon ```dotnet myassembly.dll``` bruk command: ``` command: ["dotnet"] ``` og args ``` args: ["myassembly.dll"] ``` |
| debug | object | {} | Debugmodus - Settings for debugmodus |
| debug.configShare | string | `"/config-share/"` | Path til hvor debug-fil mountes i pod'en. |
| debug.debugConfigMap | string | `"debug-environment"` | Navn på config-map som inneholder debug-dll. Denne må eksistere i namespace fra før. |
| dnsZone | string | `"aks-helsenorge.utvikling"` | Dns-sonen til miljøet. |
| enableTokenValidation | bool | `true` | Muligjor tokenvalidering i applikasjonen ved å tilgjengeliggjøre sertifikatet i podden. |
| extraEnvVars | string | `nil` | Environment variabler som tilgjengeliggjøres podden - Brukes for å overstyre config-settings Skrives på formen key: value Husk å bruke prefix HN_ for at environment-variabelen skal leses inn av config-systemet HN_ConfigurationSettings_Connectionstring: "Server=sql;Database=databasename;User Id=user;Password=password;" Kan også overstyres globalt: global: extraEnvVars: HN_ConfigurationSettings_Connectionstring: "Server=sql;Database=databasename;User Id=user;Password=password;" |
| extraEnvVarsCM | string | `nil` | |
| extraEnvVarsSecret | string | `nil` | Navn på eksisterende secret som inneholder extra env-vars - må skrives på formen for en gyldig secretRef og secret må eksistere fra før. Hvis du legger til flere, husk å bevare eventuelle defaults ved å ekplisitt definere i tillegg i din values-fil. - secretRef: name: mysecret |
| extraVolumeMounts | string | `nil` | Definisjon på extra volume mount som skal mountes til podden |
| extraVolumes | string | `nil` | Definisjon på extra volume som skal tilgjengeliggjøres til deploymenten |
| extraEnvVars | list | `[]` | List av environment variabler som tilgjengeliggjøres podden - Brukes for å overstyre config-settings Skrives på formen key: value Husk å bruke prefix HN_ for at environment-variabelen skal leses inn av config-systemet ```HN_ConfigurationSettings_Connectionstring: "Server=sql;Database=databasename;User Id=user;Password=password;"``` Kan også overstyres globalt: ```global: extraEnvVars: HN_ConfigurationSettings_Connectionstring: "Server=sql;Database=databasename;User Id=user;Password=password;"``` |
| extraEnvVarsCM | list | `[]` | |
| extraEnvVarsSecret | list | `[]` | Navn på eksisterende secret som inneholder extra env-vars. Må skrives på yaml-formen for et gyldig envFrom secret referanse. |
| extraVolumeMounts | list | `[]` | Liste over extra volume mounts som skal mountes til podden. Må skrives på yaml-formen for et gyldig volume mount. |
| extraVolumes | list | `[]` | Liste over extra volumes som skal tilgjengeliggjøres til deploymenten. Må skrives på yaml-formen for et gyldig volume. |
| fullnameOverride | string | `""` | Overrider navn på chart. |
| helsenorgeUtilImage | string | `"helsenorge.azurecr.io/utils/certificate-tool:0.1"` | Image som inneholder diverse utils. Benyttes for installasjon av sertifikater. |
| image | object | Se verdier under | Beskriver imaget til applikasjonen |
| image | object | {} | Beskriver imaget til applikasjonen |
| image.pullPolicy | string | `"IfNotPresent"` | Kubernetes image pull-policy. Les mer om image pull policy [her](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy). |
| image.registry | string | `"helsenorge.azurecr.io"` | Fra hvilket container registry skal imaget hentes. |
| image.repository | string | `""` | Navn på imaget som skal deployes. Hvis ikke definert, settes til det samme som navnet på applikasjonen basert på releaename+applikasjonsnavn, eg configuration-internalapi. TODO: gjøre det mulig å overstyre repository |
| image.repository | string | `""` | Navn på imaget som skal deployes. Hvis ikke definert, settes til det samme som navnet på applikasjonen basert på releaename-applikasjonsnavn, eg configuration-internalapi. |
| image.tag | string | `""` | tag identifiserer versjonen på imaget som skal deployes |
| imagePullSecrets | list | `[]` | Referanse til secret som inneholder nøkler for å få kontakt med private container registry (hvis dette er i bruk) |
| ingress | object | Se verdier under | Beskriver hvordan komponenten skal eksponeres ut av clustert, slik at komponenten kan konsumeres av ressurser utenfor clusteret. Les mer [her](https://kubernetes.io/docs/concepts/services-networking/ingress/). |
| ingress.create | bool | `true` | Bestemmer om en ingress skal opprettes eller ikke, false betyr at ingen ingress opprettes og komponenten kan ikke nås utenfra clusteret. |
| ingress.hostname | string | kalkuleres basert på apinavn og miljo | Bestemmer hvilket hostname ingress skal lytte på. Eks configuration-internalapi-mas01.helsenorge.utvikling. Trenger ikke overstyres med mindre man skal teste noe spesielt |
| isDebugEnvironment | bool | `false` | Debugmodus - Skrur på debug-modus i miljøet. Krever at debug.dll config-map er tilgjengelig i miljøet. |
| livenessProbe.path | string | `"/api/ping"` | [Liveness probe](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#types-of-probe) indikerer om containeren kjører ved å gjøre et http kall mot gitt path. |
| logging | object | `{"areaOvveride":""}` | Logging |
| logging.areaOvveride | string | `""` | |
| logging.sourceType | string | `"kube:Helsenorge"` | Setter SourceType på loggene i splunk |
| nameOverride | string | `""` | Overrider navn på chart. Beholder release-navnet |
| rabbitmq | object | `{"clusterName":"rabbitmq","createUser":true,"encryptMessages":true,"password":"","port":5671,"useSsl":true,"user":"","virtualHost":"internal.messaging.helsenorge.no"}` | Rabbitmq-settings |
| rabbitmq | object | {...} | Rabbitmq-settings |
| rabbitmq.clusterName | string | `"rabbitmq"` | Navn på cluster, brukes til å sette opp adressen til rabbitmq, så må være det samme som hostnavnet |
| rabbitmq.createUser | bool | `true` | Hvis 'true' så opprettes det en rabbitmq-bruker for applikasjonene. Fungerer kun i miljøer der rabbitmq styres av [rabbitmq-topology-operator](https://www.rabbitmq.com/kubernetes/operator/using-topology-operator.html#non-operator). Hvis satt til false så må 'user' og 'password' settes. |
| rabbitmq.encryptMessages | bool | `true` | Skal meldinger som går mellom client og rabbitmq krypteres |
| rabbitmq.password | string | `""` | Passord - Brukes kun hvis generate user er satt til 'false' |
| rabbitmq.port | int | `5671` | Port til amqp-endepunktet til rabbitmq |
| rabbitmq.useSsl | bool | `true` | Kommunikasjon mellom client og rabbitmq går over ssl |
| rabbitmq.user | string | `""` | Bruker - Settes default til det samme som applikasjonen, overstyr det navnet ved å angi en verdi. Eks: configuration-internalapi |
| rabbitmq.user | string | `""` | Bruker - Kun angi hvis du ønsker å overskrive at brukernavn blir satt til det samme som applikasjonsnavnet Eks: configuration-internalapi |
| rabbitmq.virtualHost | string | `"internal.messaging.helsenorge.no"` | Navn på virtual host |
| readinessProbe.path | string | `"/health"` | [Readiness probe](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#types-of-probe) indikerer om containeren er klar for å motta requests ved å gjøre et http kall mot gitt path |
| replicaCount | int | `1` | Antall containere som kjører apiet. Disse lastbalanseres automatisk, men flere containere krever mer ressurser av clusteret. Bør overstyrers i høyere miljøer. |
| resources | object | Se verdier under | Beskriver hvor mye ressurser en pod som kjører koden skal få tilgang til. Les mer om konseptene [her](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits). |
| resources | object | {} | Beskriver hvor mye ressurser en pod som kjører koden skal få tilgang til. Les mer om konseptene [her](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits). |
| resources.limits | object | Se verdier under | Hvor mye ressurser er poden begrenset til. |
| resources.limits.cpu | string | `"200m"` | [Limits and requests for CPU resources are measured in cpu units. One cpu, in Kubernetes, is equivalent to 1 vCPU/Core for cloud providers and 1 hyperthread on bare-metal Intel processors](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu). |
| resources.limits.memory | string | `"128Mi"` | [Limits and requests for memory are measured in bytes.](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory). |
Expand All @@ -74,14 +74,24 @@ Helm chart for installere en helsenorge-applikasjon på kuberntes. En helsenorge
| serviceAccount | object | `{"annotations":{},"create":true}` | Kubernetes service-konto for losningsomraade. Les mer [her](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/). Navn settes til det samme som applikasjon. |
| serviceAccount.annotations | object | `{}` | Spesifikke annoteringer som skal legges til servicekontoen (todo). |
| serviceAccount.create | bool | `true` | Spesifiserer om en service-konto skal opprettes. |
| splunk | object | `{"sourceType":"kube:Helsenorge"}` | Splunk |
| splunk.sourceType | string | `"kube:Helsenorge"` | Setter SourceType på loggene i splunk |
| team | string | `""` | Ansvarlig team for losningsomraade - eks "Plattform". - Kan overstyres globalt global: team: "" |
| tokenValidation | object | `{"filename":"helsenorge_sikkerhet_public.pem","secretName":"certificate.helsenorge-sikkerhet.public","volumeMount":"/tokevalidation-cert"}` | Informasjon om tokenvalideringssertifikatet i miljoet. |
| tokenValidation | object | {} | Informasjon om tokenvalideringssertifikatet i miljoet. |
| tokenValidation.filename | string | `"helsenorge_sikkerhet_public.pem"` | Navn på filen som inneholder sertifikatet |
| tokenValidation.secretName | string | `"certificate.helsenorge-sikkerhet.public"` | Navn på secret som inneholder sertifikatet. Denne må eksistere i namespace fra før. |
| tokenValidation.volumeMount | string | `"/tokevalidation-cert"` | Path til hvor sertifikatet mountes i pod'en |
| useSharedConfig | bool | `true` | Gir pod'en tilgang til felles-config allerede definert i namespacet. Dette er typisk config som kreves av felles-pakkene. |

## Maintainers

| Name | Email | Url |
| ---- | ------ | --- |
| Plattform | | |

## Requirements

| Repository | Name | Version |
|------------|------|---------|
| https://helsenorge.github.io/helm-charts/ | helsenorge-common | ~0.0.1 |

----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.6.0](https://github.com/norwoodj/helm-docs/releases/v1.6.0)
Autogenerated from chart metadata using [helm-docs v1.6.0](https://github.com/norwoodj/helm-docs/releases/v1.6.0)
17 changes: 17 additions & 0 deletions charts/helsenorge-application/README.md.gotmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@

{{ template "chart.header" . }}
{{ template "chart.description" . }}

{{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}

{{ template "common.fellesInstall" . }}

{{ template "chart.valuesSection" . }}

{{ template "chart.maintainersSection" . }}

{{ template "chart.sourcesList" . }}

{{ template "chart.requirementsSection" . }}

{{ template "helm-docs.versionFooter" . }}
Loading

0 comments on commit 862e43f

Please sign in to comment.