LinkerdをHelmでインストールする

# TL;DR
下記のドキュメントを参考にして自前のRKE2クラスタにLinkerdをHelmでインストールしました．
[Installing Linkerd with Helm](https://linkerd.io/2.12/tasks/install-helm/)
# Linkerdとは
Kubernetesネイティブなオープンソースのサービスメッシュです．サービスメッシュを導入することによってマイクロサービスにおけるサービス間通信の管理・可視化が実現できます．巷では同じくサービスメッシュのIstioがよく使われていますが，2021年時点でのベンチマークテストではLinkerdがIstioより軽量かつ高速であるという結果も出ています．
[Benchmarking Linkerd and Istio](https://linkerd.io/2021/05/27/linkerd-vs-istio-benchmarks/?_gl=1*gs739c*_ga*MTE4MDc5MTMzNi4xNjY3Nzc4NDIx*_ga_TV358ZPK6D*MTY2Nzc3ODQyMS4xLjEuMTY2Nzc3ODU2Ny4wLjAuMA..#_ga=2.8979570.654813230.1667778422-1180791336.1667778421)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690612/9522dce1-ab95-29bc-d4ba-4de643ab890f.png)
# Linkerdをインストールする
## 実装環境
- Ubuntu 22.04.1 LTS
- RKE2 v1.24.7（Kubernetes環境）
- Helm v3.10.1
- kubectl v1.25.3
- Linkerd v2.12
## インストール準備
### CLIのインストール
`linkerd`コマンドで操作するためにCLIをインストールする必要があります．
下記のコマンドでインストールできます．
```
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh
```
インストールしたらパスの追加を忘れずにしましょう．
```
export PATH=$PATH:/home/<USER_NAME>/.linkerd2/bin
```
### 実装環境の検証
先ほどインストールした`linkerd`コマンドを使って検証できます．
以降のインストール前に確認しておくとよいでしょう．
```
linkerd check --pre
```
### mTLSの証明書の発行
Helmでインストールする場合には自分で生成する必要があります．
ここでは`step`コマンドを使用して証明書を生成します．
### `step`のインストール
`step`がインストールされていない場合，下記を参考にインストールする必要があります．
https://smallstep.com/docs/step-cli/installation
Debian系のLinuxであれば以下のコマンドでインストールできます．
```
wget https://dl.step.sm/gh-release/cli/docs-cli-install/v0.21.0/step-cli_0.21.0_amd64.deb
sudo dpkg -i step-cli_0.21.0_amd64.deb
```
### 証明書の生成
`step`コマンドで秘密鍵からルート証明書を生成します．
```
step certificate create root.linkerd.cluster.local ca.crt ca.key \
--profile root-ca --no-password --insecure
```
続いて中間証明書とキーペアを生成します．
```
step certificate create identity.linkerd.cluster.local issuer.crt issuer.key \
--profile intermediate-ca --not-after 8760h --no-password --insecure \
--ca ca.crt --ca-key ca.key
```
これでインストールの準備は完了です．
下記の通りファイルが生成されているかを確認してください．
```shell
$ ls
ca.crt  ca.key  issuer.crt  issuer.key
```
## インストール
### Linkerdリポジトリの追加
以下のコマンドから安定板のLinkerdリポジトリを追加できます．
```
helm repo add linkerd https://helm.linkerd.io/stable
```
### チャートのインストール
linker-crdsとlinker-control-planeの２つをインストールする必要があります．
linker-control-planeは先ほど生成した証明書ファイルがあるディレクトリで実行してください．
#### linker-crd
```
helm install linkerd-crds linkerd/linkerd-crds \
  -n linkerd --create-namespace
```
#### linker-control-plane
```
helm install linkerd-control-plane \
  -n linkerd \
  --set-file identityTrustAnchorsPEM=ca.crt \
  --set-file identity.issuer.tls.crtPEM=issuer.crt \
  --set-file identity.issuer.tls.keyPEM=issuer.key \
  linkerd/linkerd-control-plane
```
これでLinkerdがインストール出来ました！
ネームスペースがlinkerdであることに注意して`helm list`で確認してみてください．
```
$ helm list -n linkerd
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
linkerd-control-plane   linkerd         1               2022-11-07 10:35:02.364075526 +0900 JST deployed        linkerd-control-plane-1.9.4     stable-2.12.2
linkerd-crds            linkerd         1               2022-11-07 10:34:28.202658852 +0900 JST deployed        linkerd-crds-1.4.0
```