IK.AM

@making's tech note


Retrospective用ツールのPostfactoをHelmでインストールする

🗃 {Dev/Retrospectives/Postfacto}
🏷 Postfacto 🏷 Kubernetes 🏷 Helm 
🗓 Updated at 2023-07-23T17:18:18Z  🗓 Created at 2023-07-11T10:10:24Z   🌎 English Page

Retrospective用ツールのPostfactoをHelmでインストールします。

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

また使用されているDocker Imageであるpostfacto/postfactoは既に多くの脆弱性を含むため、使いづらいです。

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

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

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を使用する場合です。

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と連携する例です。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にアクセスしてください。

image

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ユーザーでログインします。

image

Retroの新規作成

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

image

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

Retroへのアクセス

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

image

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

image

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

image

Postfactoのアンインストール

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

✒️️ Edit  ⏰ History  🗑 Delete