DockerDesktopでmisskeyを動かす

Docker Desktop上でkubernetesを起動して、その上にmisskeyを構築してみます。

バージョン

  • Docker Desktop
    • 4.21.1
  • docker
    • 24.0.2
  • k8s
    • 1.27.2
  • helm
    • 3.10.3

k8sの起動

Docker Desktop Settings -> Kubernetes -> Enable Kubernetes にチェックを入れて有効化しておきます。

適当にPodの起動状態を確認しておきます。

 1kubectl get pod -n kube-system
 2NAME                                     READY   STATUS    RESTARTS        AGE
 3coredns-5d78c9869d-2tn9p                 1/1     Running   2 (4m2s ago)    6d19h
 4coredns-5d78c9869d-647kd                 1/1     Running   2 (4m2s ago)    6d19h
 5etcd-docker-desktop                      1/1     Running   2 (4m2s ago)    6d19h
 6kube-apiserver-docker-desktop            1/1     Running   2 (4m2s ago)    6d19h
 7kube-controller-manager-docker-desktop   1/1     Running   2 (4m2s ago)    6d19h
 8kube-proxy-qdzs4                         1/1     Running   2 (4m2s ago)    6d19h
 9kube-scheduler-docker-desktop            1/1     Running   2 (4m2s ago)    6d19h
10storage-provisioner                      1/1     Running   4 (3m29s ago)   6d19h
11vpnkit-controller                        1/1     Running   2 (4m2s ago)    6d19h

ingressの設定

公式ドキュメントを参考にingressを動作させるのに必要なマニフェストをapplyします。

1kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml

helmを使ってmisskeyを構築

configを書き出します。

1helm inspect values TrueCharts/misskey > misskey-config.yaml

URLをDocker Desktopで使われているものに変更しておきます。

1misskey:
2  # Final accessible URL seen by a user. ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE URL SETTINGS AFTER THAT!
3- url: "https://example.tld/"
4+ url: "http://kubernetes.docker.internal/"
5  # ID generation method. 'aid' recommended.
6  id: "aid"

applyします

1helm install misskey -n misskey -f misskey-config.yaml TrueCharts/misskey

Podの起動状況を確認して起動したことを確認します。

1kubectl get pod -n misskey
2NAME                       READY   STATUS    RESTARTS      AGE
3misskey-77f675c9bb-j5wgg   1/1     Running   1 (32m ago)   29h
4misskey-postgresql-0       1/1     Running   1 (32m ago)   31h
5misskey-redis-0            1/1     Running   1 (32m ago)   29h

ingressの設定

port-forwardで中身を見ても良いですが、せっかくなのでingressで公開します。

 1apiVersion: networking.k8s.io/v1
 2kind: Ingress
 3metadata:
 4  name: misskey-ingress
 5  namespace: misskey
 6  annotations:
 7    nginx.ingress.kubernetes.io/rewrite-target: /
 8spec:
 9  ingressClassName: nginx
10  rules:
11  - host: kubernetes.docker.internal
12    http:
13      paths:
14      - pathType: Prefix
15        path: /
16        backend:
17          service:
18            name: misskey
19            port:
20              number: 3003

applyします。

1kubectl apply -f misskey-ingress.yaml

kubernetes.docker.internalにアクセスして動作することを確認します。

絵文字の登録なども問題なさそうでした。

参考リンク