LoginSignup
0
0

[k8s] FluxCDがGitHubにトークンではなくSSHで接続するようにしてみた

Posted at

はじめに

今回は FluxCD が GitHub に対して SSH でアクセスするようにする設定を行います。

手順

公式ドキュメントに SSH を使って接続する方法が記載されているので、それに従います。

以下のコマンドを使って bootstrap すれば SSH で接続できます。

flux bootstrap git \
  --url=ssh://git@github.com/<org>/<repository> \
  --branch=<my-branch> \
  --private-key-file=<path/to/ssh/private.key> \
  --password=<key-passphrase> \
  --path=clusters/my-cluster

以下、ハマったポイントです。

  • SSH の URL はレポジトリの Clone に使う URL を指定してはいけない。ドキュメント通りのフォーマットで指定する
  • private key へのパスは絶対パスで指定する。私は/home/$(whoami)/.ssh/ed25519と指定することでコードをコピペで使い回せるようにしました。

なんで SSH なの?

FluxCD のドキュメントの一番上に書かれているコマンド(↓)に従うと、Flux は GitHub に対してトークンを使って HTTP でアクセスします。

flux bootstrap github \
  --token-auth \
  --owner=my-github-username \
  --repository=my-repository-name \
  --branch=main \
  --path=clusters/my-cluster \
  --personal

実際、生成されるGitRepositoryリソースの定義を見てみると、HTTPS の URL が指定されていることが確認できます。

# This manifest was generated by flux. DO NOT EDIT.
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
  name: flux-system
  namespace: flux-system
spec:
  interval: 1m0s
  ref:
    branch: main
  secretRef:
    name: flux-system
  url: https://github.com/piny940/infra.git

ですが、これには以下の問題があります。

  • トークンを使うと、トークンの有効期限が切れたときに FluxCD が使えなくなる

もちろんTokens (classic)を使えばトークンの有効期限を「無制限」にすることはできますが、セキュリティ的にはあまりよくありません。

そこで、今回は SSH を使って FluxCD が GitHub にアクセスするように設定しました。

最後に

今回は FluxCD が GitHub に対して SSH でアクセスするように設定しました。
次回は Kubernetes の Staging 環境を整えていきたいと思います。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0