Skip to content

Commit

Permalink
Tekstjusteringer og feilfiks
Browse files Browse the repository at this point in the history
  • Loading branch information
turesheim committed Sep 7, 2021
1 parent 170438e commit 4a136f8
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 32 deletions.
15 changes: 9 additions & 6 deletions 01-argocd.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Installasjon av ArgoCD
# Installere ArgoCD

Argo CD er den komponenten i systemet vårt som leser applikasjonsdeklarasjoner fra vårt Git-repo og instansierer applikasjonene i klyngen. Siden vi ønsker å kjøre den i et eget navnerom lager vi dette først. Deretter kan vi installere Argo CD fra en beskrivelse også fra Git.
[Argo CD](https://argoproj.github.io/argo-cd/) er den komponenten i systemet vårt som leser applikasjonsdeklarasjoner fra vårt Git-repo og instansierer applikasjonene i klyngen. Siden vi ønsker å kjøre den i et eget navnerom lager vi dette først. Deretter kan vi installere Argo CD fra en beskrivelse også fra Git.

```Shell
kubectl create namespace argocd
kubectl apply -n argocd -f \
https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
```

Du må også [installere kommandolinjeverktøyet til Argo CD](https://argo-cd.readthedocs.io/en/stable/cli_installation/). Her er tilnærmingen litt forskjellig alt etter hvilket operativsystem man kjører. Dette kan du gjøre mens Argo CD starter opp på klyngen, noe som kan ta litt tid. For å sjekke statusen på poddene kan du utføre
Vi må også [installere kommandolinjeverktøyet til Argo CD](https://argo-cd.readthedocs.io/en/stable/cli_installation/). Her er tilnærmingen litt forskjellig alt etter hvilket operativsystem man kjører. Dette kan du gjøre mens Argo CD starter opp på klyngen, noe som kan ta litt tid. For å sjekke statusen på poddene kan du utføre:

```
kubectl get deploy -w -n argocd
Expand All @@ -24,7 +24,7 @@ argocd-server 1/1 1 1 64s
argocd-dex-server 1/1 1 1 82s
```

Her må vi vente til alle er i tilstanden `Ready` og `Available`.
Vi vente til alle er i tilstanden `Ready` og `Available` før vi kan fortsette.

For å kunne nå Argo CD fra utsiden av Kubernetes-klyngen må vi dirigere noe trafikk. Argo CD kjører med SSL på innsiden over port 443. Denne ønsker vi å ha på port 8080 på utsiden.

Expand All @@ -45,9 +45,12 @@ Vi skal senere i øvelsen benytte oss av kommandolinjeverktøyet til Argo CD for
```Shell
argocd login localhost:8080 --insecure --username admin
```
## Konfigurere GitHub PAT

For at Argo CD skal kunne hente ut data fra private GitHub repo, må den kunne autentisere seg. Dette gjør man med et GitHub *Personal Access Token* som må lages via [**Settings > Developer settings > Personal access tokens**](https://github.com/settings/tokens). Opprett et nytt for din brukerkonto med egenskapene:
Ta vare på passordet hentet ut ovenfor. Vi kommer til å trenge det når vi skal logge inn i brukergrensesnittet til Argo CD.

## Konfigurere tilgang til GitHub

For at Argo CD skal kunne hente ut data fra GitHub, må den kunne autentisere seg. Dette gjør man med et GitHub *Personal Access Token* som må lages via [**Settings > Developer settings > Personal access tokens**](https://github.com/settings/tokens). Opprett et nytt for din brukerkonto med egenskapene:

- `read:packages`
- `repo`
Expand Down
28 changes: 21 additions & 7 deletions 02-isig-prod.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,32 @@

## Deklarering av applikasjonen

I Git-repoet hvor denne øvelsen utvikles ligger en mappe med navn [argocd-applications](./argocd-applications). Den inneholder flere filer som vi ikke vil endre på – men kun gå kort gå i gjennom hva de gjør.
I Git-repoet hvor denne øvelsen utvikles ligger en mappe med navn [argocd-applications](./argocd-applications). Den inneholder flere filer som vi ikke skal endre på – kun gå kort gå i gjennom hva de gjør.

```
. argocd-applications
argocd-applications
├── argocd-notifications
│   ├── _base
│   │   ├── configmap.yaml
│   │   ├── deployment.yaml
│   │   ├── kustomization.yaml
│   │   ├── role.yaml
│   │   ├── rolebinding.yaml
│   │   ├── secret.yaml
│   │   ├── service-account.yaml
│   │   ├── service.yaml
│   │   └── templates.yaml
│   └── minikube
│   ├── configmap.yaml
│   └── kustomization.yaml
└── isig
├── _base
├── kustomization.yaml
└── service.yaml
   ├── kustomization.yaml
   └── service.yaml
├── develop
├── application.yaml
├── deployment.yaml
└── kustomization.yaml
   ├── application.yaml
   ├── deployment.yaml
   └── kustomization.yaml
└── prod
├── application.yaml
├── deployment.yaml
Expand Down
6 changes: 3 additions & 3 deletions 03-isig-develop.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Kontinuerlig produksjonssetting med Argo CD

## Argo CD Image Updater
## Installere Argo CD Image Updater

Nå skal vi lage et opplegg hvor vi produksjonssetter kontinuerlig, altså for hver enkelt endring som kommer inn på `master`-greina til *iSig* eller strengt tatt for hver gang et nytt *image* bygget fra dukker opp fra denne greina. Siden Argo CD normalt vil kun oppdatere en applikasjon om der er endringer i Git-repoet som deklarasjonen til applikasjonen ligger – må vi først legge til en ny tjeneste som kan reagere på endringer i et *Docker Container Registry* og fortelle Argo CD at den må oppdatere; [Argo CD Image Updater](https://argocd-image-updater.readthedocs.io/en/latest/install/start/).
Nå skal vi lage et opplegg hvor vi produksjonssetter kontinuerlig, altså for hver enkelt endring som kommer inn på `master`-greina til *iSig*, eller strengt tatt for hver gang et nytt *image* bygget fra denne greina. Siden Argo CD normalt vil kun oppdatere en applikasjon om der er endringer i Git-repoet som deklarasjonen til applikasjonen ligger – må vi først legge til en ny tjeneste som kan reagere på endringer i et *Docker Container Registry* og fortelle Argo CD at den må oppdatere; [Argo CD Image Updater](https://argocd-image-updater.readthedocs.io/en/latest/install/start/).

```shell
kubectl apply -n argocd -f \
Expand Down Expand Up @@ -103,6 +103,6 @@ For å demonstrere dette kan man kjøre [CI-workflowen til iSig](https://github.

---

Hvis du vil kontrollere at iSig faktisk er oppe og kjører kan du utføre `minikube service isig-service-cd`. Denne kommandoen vil gjøre nødvendig nettverksmagi og åpne nettleseren din på riktig adresse. Dog vil den i alle fall på macOS blokkere terminalen ditt slik at du evt. må åpne en ny instans hvis du skal jobbe videre.
Hvis du vil kontrollere at iSig faktisk er oppe og kjører kan du utføre `minikube service isig-service-cd`. Denne kommandoen vil gjøre nødvendig nettverksmagi og åpne nettleseren din på riktig adresse.

👉 I [neste øvelse](./04-argocd-metrics.md) installerer vi Prometheus og kikker litt på metrikker.
30 changes: 14 additions & 16 deletions 04-argocd-metrics.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
## Overvåkning og metrikker med Prometheus og Grafana
## Overvåkning med Prometheus og Grafana

Denne gangen skal vi bruke et såkalt *Helm Chart* til å installere en relativt kompleks applikasjon, [Prometheus](https://prometheus.io).
Denne gangen skal vi bruke et såkalt *Helm Chart* til å installere en relativt kompleks applikasjon, [Prometheus](https://prometheus.io). Først må vi legge til repoet hvor vi finner "kartet". Dernest installerer vi applikasjonen og eksponerer porten den kjører på.

Først må vi legge til repoet hvor vi finner "kartet". Dernest installerer vi applikasjonen og eksponerer porten den kjører på.

```
```shell
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/prometheus
kubectl expose service prometheus-server --type=NodePort --target-port=9090 --name=prometheus-server-np
```

Prometheus klarer av en eller annen grunn ikke løse DNS innenfor klyngen, så når vi nå skal legge til metrikkene til Argo CD må vi gjøre dette på den vanskelige måten. Først må vi finne IP-adressen til Argo CD Metrics tjenesten:
Prometheus klarer av en eller annen grunn ikke løse DNS innenfor klyngen, så når vi nå skal legge til metrikkene til Argo CD må vi gjøre dette på den vanskelige måten. Først må vi finne IP-adressen til *Argo CD Metrics* tjenesten:

```
```shell
kubectl get service argocd-metrics -n argocd
```
Du skal nå få noe som dette. `CLUSTER-IP` er den adressen vi er ute etter.
Expand All @@ -24,19 +22,19 @@ argocd-metrics ClusterIP 10.107.133.238 <none> 8082/TCP 14m

Vi skal også hente ut data fra *Argo CD Image Updater* da den har sitt eget metrikk-endepunkt. Dette er ikke dog ikke eksponert som en *service*.

```
```shell
kubectl get pod -n argocd -o wide | grep image
argocd-image-updater-6f8cc599b4-mttx6 1/1 Running 0 42m 172.17.0.15 minikube <none> <none>
```

Nå må vi legge til denne informasjonen i Prometheus-konfigurasjonen.

```
```shell
kubectl edit cm prometheus-server -o yaml
```
Finn `data.scrape_configs` og legg denne snutten rett under. Bytt ut IP-adressen med de du faktisk fikk. Du kan like gjerne endre `scrape_interval` med det samme, siden vi ønsker rask tilbakemelding.

```
```yaml
- job_name: argocd
static_configs:
- targets:
Expand All @@ -47,9 +45,9 @@ Finn `data.scrape_configs` og legg denne snutten rett under. Bytt ut IP-adressen
- 172.17.0.15:8081
```
Kjør følgende kode for å tilgjengeliggjøre tjenesten.
Kjør følgende kode for å tilgjengeliggjøre tjenesten:
```
```shell
export POD_NAME=$(kubectl get pods --namespace default -l "app=prometheus,component=server" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace default port-forward $POD_NAME 9090 2>&1 >/dev/null &
```
Expand All @@ -66,22 +64,22 @@ Nå som vi har fått litt data kan vi bruke Prometheus sin spørrefunksjon til

Nå skal vi prøve oss på å visualsere metrikken som *Argo CD Image Updater* eksponerer. Først må vi installere Grafana og eksponere porten tjenesten kjører på.

```
```shell
helm repo add grafana https://grafana.github.io/helm-charts
helm install grafana stable/grafana
kubectl expose service grafana --type=NodePort --target-port=3000 --name=grafana-np
```

Dernest må vi som vanlig lage en *port forward* slik at vi kan nå tjenesten fra arbeidsstasjonen.

```
```shell
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=grafana" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace default port-forward $POD_NAME 3000 2>&1 >/dev/null &
```

Grafana har gjemt passordet sitt som en *secret*.

```
```shell
kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
```

Expand All @@ -93,6 +91,6 @@ Det neste som må gjøres er å legge til den Prometheus-instansen vi nettopp ha

![](./prometheus-data-source.png)

Nå er vi klare til å lage et *dashboard*. Dette gjør vi ved å gå til **+ > Create > Import** og lime inn [denne koden](https://github.com/Itema-as/gitops-in-practice/blob/main/grafana-dashboard.json) i **Import via panel json** (velg **Raw** format). Her man man se hvor ofte et en applikasjon er oppdatert i diagrammet *Image updates (per app)*.
Nå er vi klare til å lage et *dashboard*. Dette gjør vi ved å gå til **+ > Create > Import** og lime inn [denne koden](https://github.com/Itema-as/gitops-in-practice/blob/main/grafana-dashboard.json) i **Import via panel json** (velg **Raw** format). Nå kan man se hvor ofte et en applikasjon er oppdatert i diagrammet *Image updates (per app)*.

![](./argocd-image-updater.png)

0 comments on commit 4a136f8

Please sign in to comment.