---
title: Retrospective用ツールのPostfactoをHelmでインストールする
tags: ["Postfacto", "Kubernetes", "Helm"]
categories: ["Dev", "Retrospectives", "Postfacto"]
date: 2023-07-11T10:10:24Z
updated: 2023-07-23T17:18:18Z
---

Retrospective用ツールの[Postfacto](https://github.com/vmware-archive/postfacto)をHelmでインストールします。

Postfactoは便利なツールなのですが、 https://github.com/vmware-archive/postfacto はアーカイブ化されてしまいました。
このレポジトリで作られいたHelm ChartはIngressのAPIバージョンが古く、K8s 1.22以降では利用できません。

また使用されているDocker Imageである`postfacto/postfacto`は既に多くの脆弱性を含むため、使いづらいです。
<img width="393" src="https://github.com/making/blog.ik.am/assets/106908/02c9537a-f49e-4939-b265-ca4ac00919ee">


そこで、 https://github.com/making/postfacto にフォークして、Helm ChartおよびSub ChartとDockerイメージを更新し、Kubernetesにデプロイできるようにしました。


脆弱性はこのくらいまで減らせました。

<img width="304" src="https://github.com/making/blog.ik.am/assets/106908/0e0be553-4922-4700-9550-2fdd3f1d2860">


### Postfactoのインストール

以下のコマンドはHelm 3.12で試しました。

> もし、ociからchartを直接取得できない場合は、以下のコマンドは
> 
> ```
> wget https://github.com/making/postfacto/releases/download/0.6.0-beta/postfacto-0.6.0-beta.tgz
> helm upgrade postfacto ./postfacto-0.6.0-beta.tgz ...
> ```
> 
> に置き換えてください。

#### Type=LoadBalancerなServiceでPostofactoを公開する場合

```
helm upgrade postfacto oci://ghcr.io/making/helm-charts/postfacto --version 0.6.0-beta \
 -n postfacto \
 --set service.type=LoadBalancer \
 --create-namespace \
 --install
```

PostfactoのExternal IPは`kubectl get svc --namespace postfacto postfacto --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"` で取得できます。

#### IngressでPostofactoを公開する場合

以下の`postfacto.172-19-255-200.sslip.io`は自環境に置き換えてください。PostfactoはWebSocketを使用するため、Ingress Controller毎に必要に応じてアノテーションを設定してください。以下は[Contour](https://projectcontour.io/)を使用する場合です。

```
helm upgrade postfacto oci://ghcr.io/making/helm-charts/postfacto --version 0.6.0-beta \
 -n postfacto \
 --set service.type=ClusterIP \
 --set ingress.enabled=true \
 --set "ingress.hosts[0].host=postfacto.172-19-255-200.sslip.io" \
 --set "ingress.hosts[0].paths[0]=/" \
 --set ingress.annotations."projectcontour\.io/websocket-routes"=/ \
 --create-namespace \
 --install
```

TLSを有効にする場合は次のような設定を追加します。以下は[cert-manager](https://cert-manager.io/)と連携する例です。`selfsigned-cluster-issuer`は自環境に置き換えてください。

```
helm upgrade postfacto oci://ghcr.io/making/helm-charts/postfacto --version 0.6.0-beta \
 -n postfacto \
 --set service.type=ClusterIP \
 --set ingress.enabled=true \
 --set "ingress.hosts[0].host=postfacto.172-19-255-200.sslip.io" \
 --set "ingress.hosts[0].paths[0]=/" \
 --set-string ingress.annotations."ingress\.kubernetes\.io/force-ssl-redirect"=true \
 --set ingress.annotations."cert-manager\.io/cluster-issuer"=selfsigned-cluster-issuer \
 --set ingress.annotations."projectcontour\.io/websocket-routes"=/ \
 --set "ingress.tls[0].secretName=postfacto-tls" \
 --set "ingress.tls[0].hosts[0]=postfacto.172-19-255-200.sslip.io" \
 --create-namespace \
 --install
```

Postfactoにアクセスしてください。


<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/26defcfa-7672-4a6c-8224-a6a40a3c0f66">

### Adminユーザーの登録

Adminユーザーを次のコマンドで登録します。この例ではユーザー名を`admin@example.com`、パスワードを`alwaysbekind`としています。

```
POD_NAME=$(kubectl get pod -n postfacto -l app.kubernetes.io/instance=postfacto,app.kubernetes.io/name!=postgresql,app.kubernetes.io/name!=redis -ojsonpath='{.items[0].metadata.name}')

kubectl exec ${POD_NAME} -n postfacto -- create-admin-user admin@example.com alwaysbekind
```

`/admin`にアクセスして、作成したAdminユーザーでログインします。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/40a9b087-9ac2-4403-aff8-70c9fdccc790">

### Retroの新規作成

"Retro" -> "New Retro"をクリックしてください。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/b7026dc7-b7bd-440b-9084-6de123f4767d">


"Name", "Slug", "Create new Password"を入力し、"Create Retro"をクリックしてください。SlugはRetroのURLに使われます。ここでは全て`test`を入力します。

### Retroへのアクセス

`/retro/{slug}`にアクセスしてください。


<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/0e063c2e-43a3-4fa5-b495-c7787cf10132">


Retro作成時に設定したパスワードを入力してください。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/9e9069bb-c653-494e-a48c-d72f0eec27f4">

これでRetroを開始できます!

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/99d31a56-20de-4b4b-9f75-363d09dd03d9">


### Postfactoのアンインストール

```
helm delete -n postfacto postfacto 
kubectl delete pvc -n postfacto --all
```
