diff --git a/docusaurus.config.js b/docusaurus.config.js index 9f07df0f1..82621782e 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -30,7 +30,7 @@ module.exports = { ], i18n: { defaultLocale: "en", - locales: ["en", "zh", "kr"], + locales: ["en", "zh", "kr", "ja"], localeConfigs: { en: { label: "English", @@ -41,6 +41,9 @@ module.exports = { kr: { label: "한국어", }, + ja: { + label: "日本語" + } }, }, themeConfig: { diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/advanced.md b/i18n/ja/docusaurus-plugin-content-docs/current/advanced.md new file mode 100644 index 000000000..e821598bc --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/advanced.md @@ -0,0 +1,464 @@ +--- +title: "高度なオプション / 設定" +--- + +このセクションには、K3sを実行および管理するさまざまな方法や、K3sの使用に向けてホストOSを準備するために必要な手順についての高度な情報が含まれています。 + +## 証明書管理 + +### 証明書認証局 (CA) 証明書 + +K3sは、最初のサーバーノードの起動時に自己署名の証明書認証局 (CA) 証明書を生成します。これらのCA証明書は10年間有効であり、自動的に更新されません。 + +カスタムCA証明書の使用や自己署名CA証明書の更新についての情報は、[`k3s certificate rotate-ca` コマンドのドキュメント](./cli/certificate.md#certificate-authority-ca-certificates)を参照してください。 + +### クライアントおよびサーバー証明書 + +K3sのクライアントおよびサーバー証明書は、発行日から365日間有効です。期限が切れているか、期限が切れるまで90日以内の証明書は、K3sが起動するたびに自動的に更新されます。 + +クライアントおよびサーバー証明書を手動で回転させる方法については、[`k3s certificate rotate` コマンドのドキュメント](./cli/certificate.md#client-and-server-certificates)を参照してください。 + +## トークン管理 + +デフォルトでは、K3sはサーバーとエージェントの両方に対して単一の静的トークンを使用します。このトークンはクラスターが作成された後に変更することはできません。 +エージェントの参加にのみ使用できる2番目の静的トークンを有効にするか、自動的に期限切れになる一時的な `kubeadm` スタイルの参加トークンを作成することが可能です。 +詳細については、[`k3s token` コマンドのドキュメント](./cli/token.md)を参照してください。 + +## HTTPプロキシの設定 + +K3sをHTTPプロキシを介してのみ外部接続が可能な環境で実行している場合、K3sのsystemdサービスでプロキシ設定を構成できます。これらのプロキシ設定はK3sで使用され、埋め込まれたcontainerdおよびkubeletに渡されます。 + +K3sのインストールスクリプトは、現在のシェルに存在する場合、`HTTP_PROXY`、`HTTPS_PROXY`、`NO_PROXY`、および `CONTAINERD_HTTP_PROXY`、`CONTAINERD_HTTPS_PROXY`、`CONTAINERD_NO_PROXY` 変数を自動的に取得し、通常は次の環境ファイルに書き込みます: + +- `/etc/systemd/system/k3s.service.env` +- `/etc/systemd/system/k3s-agent.service.env` + +もちろん、これらのファイルを編集してプロキシを設定することもできます。 + +K3sはクラスター内部のPodおよびサービスIP範囲とクラスターDNSドメインを `NO_PROXY` エントリのリストに自動的に追加します。Kubernetesノード自体が使用するIPアドレス範囲(つまり、ノードのパブリックおよびプライベートIP)が `NO_PROXY` リストに含まれているか、ノードがプロキシを介して到達可能であることを確認する必要があります。 + +``` +HTTP_PROXY=http://your-proxy.example.com:8888 +HTTPS_PROXY=http://your-proxy.example.com:8888 +NO_PROXY=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 +``` + +containerdのプロキシ設定をK3sおよびKubeletに影響を与えずに構成したい場合は、変数に `CONTAINERD_` をプレフィックスとして付けることができます: + +``` +CONTAINERD_HTTP_PROXY=http://your-proxy.example.com:8888 +CONTAINERD_HTTPS_PROXY=http://your-proxy.example.com:8888 +CONTAINERD_NO_PROXY=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 +``` + +## Dockerをコンテナランタイムとして使用する + +K3sには業界標準のコンテナランタイムである[containerd](https://containerd.io/)が含まれており、デフォルトで使用されます。 +Kubernetes 1.24以降、Kubeletにはdockershimが含まれておらず、Kubeletがdockerdと通信するためのコンポーネントがありません。 +K3s 1.24以降には[cri-dockerd](https://github.com/Mirantis/cri-dockerd)が含まれており、Dockerコンテナランタイムを引き続き使用しながら、以前のリリースからシームレスにアップグレードできます。 + +Dockerをcontainerdの代わりに使用するには: + +1. K3sノードにDockerをインストールします。Rancherの[Dockerインストールスクリプト](https://github.com/rancher/install-docker)の1つを使用してDockerをインストールできます: + + ```bash + curl https://releases.rancher.com/install-docker/20.10.sh | sh + ``` + +2. `--docker` オプションを使用してK3sをインストールします: + + ```bash + curl -sfL https://get.k3s.io | sh -s - --docker + ``` + +3. クラスターが利用可能であることを確認します: + + ```bash + $ sudo k3s kubectl get pods --all-namespaces + NAMESPACE NAME READY STATUS RESTARTS AGE + kube-system local-path-provisioner-6d59f47c7-lncxn 1/1 Running 0 51s + kube-system metrics-server-7566d596c8-9tnck 1/1 Running 0 51s + kube-system helm-install-traefik-mbkn9 0/1 Completed 1 51s + kube-system coredns-8655855d6-rtbnb 1/1 Running 0 51s + kube-system svclb-traefik-jbmvl 2/2 Running 0 43s + kube-system traefik-758cd5fc85-2wz97 1/1 Running 0 43s + ``` + +4. Dockerコンテナが実行中であることを確認します: + + ```bash + $ sudo docker ps + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + 3e4d34729602 897ce3c5fc8f "entry" About a minute ago Up About a minute k8s_lb-port-443_svclb-traefik-jbmvl_kube-system_d46f10c6-073f-4c7e-8d7a-8e7ac18f9cb0_0 + bffdc9d7a65f rancher/klipper-lb "entry" About a minute ago Up About a minute k8s_lb-port-80_svclb-traefik-jbmvl_kube-system_d46f10c6-073f-4c7e-8d7a-8e7ac18f9cb0_0 + 436b85c5e38d rancher/library-traefik "/traefik --configfi…" About a minute ago Up About a minute k8s_traefik_traefik-758cd5fc85-2wz97_kube-system_07abe831-ffd6-4206-bfa1-7c9ca4fb39e7_0 + de8fded06188 rancher/pause:3.1 "/pause" About a minute ago Up About a minute k8s_POD_svclb-traefik-jbmvl_kube-system_d46f10c6-073f-4c7e-8d7a-8e7ac18f9cb0_0 + 7c6a30aeeb2f rancher/pause:3.1 "/pause" About a minute ago Up About a minute k8s_POD_traefik-758cd5fc85-2wz97_kube-system_07abe831-ffd6-4206-bfa1-7c9ca4fb39e7_0 + ae6c58cab4a7 9d12f9848b99 "local-path-provisio…" About a minute ago Up About a minute k8s_local-path-provisioner_local-path-provisioner-6d59f47c7-lncxn_kube-system_2dbd22bf-6ad9-4bea-a73d-620c90a6c1c1_0 + be1450e1a11e 9dd718864ce6 "/metrics-server" About a minute ago Up About a minute k8s_metrics-server_metrics-server-7566d596c8-9tnck_kube-system_031e74b5-e9ef-47ef-a88d-fbf3f726cbc6_0 + 4454d14e4d3f c4d3d16fe508 "/coredns -conf /etc…" About a minute ago Up About a minute k8s_coredns_coredns-8655855d6-rtbnb_kube-system_d05725df-4fb1-410a-8e82-2b1c8278a6a1_0 + c3675b87f96c rancher/pause:3.1 "/pause" About a minute ago Up About a minute k8s_POD_coredns-8655855d6-rtbnb_kube-system_d05725df-4fb1-410a-8e82-2b1c8278a6a1_0 + 4b1fddbe6ca6 rancher/pause:3.1 "/pause" About a minute ago Up About a minute k8s_POD_local-path-provisioner-6d59f47c7-lncxn_kube-system_2dbd22bf-6ad9-4bea-a73d-620c90a6c1c1_0 + 64d3517d4a95 rancher/pause:3.1 "/pause" + ``` + +## etcdctlの使用 + +etcdctlは、etcdサーバーと対話するためのCLIを提供します。K3sにはetcdctlはバンドルされていません。 + +K3sの埋め込みetcdと対話するためにetcdctlを使用したい場合は、[公式ドキュメント](https://etcd.io/docs/latest/install/)を使用してetcdctlをインストールしてください。 + +```bash +ETCD_VERSION="v3.5.5" +ETCD_URL="https://github.com/etcd-io/etcd/releases/download/${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz" +curl -sL ${ETCD_URL} | sudo tar -zxv --strip-components=1 -C /usr/local/bin +``` + +次に、K3s管理の証明書とキーを認証に使用するようにetcdctlを構成して使用できます: + +```bash +sudo etcdctl version \ + --cacert=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt \ + --cert=/var/lib/rancher/k3s/server/tls/etcd/client.crt \ + --key=/var/lib/rancher/k3s/server/tls/etcd/client.key +``` + +## containerdの設定 + +K3sは、containerdのconfig.tomlを `/var/lib/rancher/k3s/agent/etc/containerd/config.toml` に生成します。 + +このファイルの高度なカスタマイズを行うには、同じディレクトリに `config.toml.tmpl` という別のファイルを作成し、それが代わりに使用されます。 + +`config.toml.tmpl` はGoテンプレートファイルとして扱われ、`config.Node` 構造体がテンプレートに渡されます。この構造体を使用して設定ファイルをカスタマイズする方法については、[このフォルダ](https://github.com/k3s-io/k3s/blob/master/pkg/agent/templates)のLinuxおよびWindowsの例を参照してください。 +config.Node golang構造体は[こちら](https://github.com/k3s-io/k3s/blob/master/pkg/daemons/config/types.go#L37)で定義されています。 + +### ベーステンプレート + +:::info バージョンゲート +2023年9月のリリースから利用可能:v1.24.17+k3s1、v1.25.13+k3s1、v1.26.8+k3s1、v1.27.5+k3s1、v1.28.1+k3s1 +::: + +K3sのベーステンプレートを拡張して、K3sのソースコードから完全な標準テンプレートをコピー&ペーストする代わりに使用できます。これは、既存の設定に基づいて構築し、最後にいくつかの行を追加する必要がある場合に便利です。 + +```toml +#/var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl + +{{ template "base" . }} + +[plugins."io.containerd.grpc.v1.cri".containerd.runtimes."custom"] + runtime_type = "io.containerd.runc.v2" +[plugins."io.containerd.grpc.v1.cri".containerd.runtimes."custom".options] + BinaryName = "/usr/bin/custom-container-runtime" + +``` +## NVIDIAコンテナランタイムのサポート + +K3sは、起動時にNVIDIAコンテナランタイムが存在する場合、自動的に検出して構成します。 + +1. ノードにnvidia-containerパッケージリポジトリをインストールします。手順は以下を参照してください: + https://nvidia.github.io/libnvidia-container/ +1. nvidiaコンテナランタイムパッケージをインストールします。例えば: + `apt install -y nvidia-container-runtime cuda-drivers-fabricmanager-515 nvidia-headless-515-server` +1. K3sをインストールするか、既にインストールされている場合は再起動します: + `curl -ksL get.k3s.io | sh -` +1. K3sがnvidiaコンテナランタイムを検出したことを確認します: + + `grep nvidia /var/lib/rancher/k3s/agent/etc/containerd/config.toml` + +これにより、見つかったランタイム実行ファイルに応じて、`nvidia` および/または `nvidia-experimental` ランタイムが自動的に containerd の設定に追加されます。 +クラスターに RuntimeClass 定義を追加し、Pod スペックで `runtimeClassName: nvidia` を設定して適切なランタイムを明示的に要求する Pod をデプロイする必要があります: +```yaml +apiVersion: node.k8s.io/v1 +kind: RuntimeClass +metadata: + name: nvidia +handler: nvidia +--- +apiVersion: v1 +kind: Pod +metadata: + name: nbody-gpu-benchmark + namespace: default +spec: + restartPolicy: OnFailure + runtimeClassName: nvidia + containers: + - name: cuda-container + image: nvcr.io/nvidia/k8s/cuda-sample:nbody + args: ["nbody", "-gpu", "-benchmark"] + resources: + limits: + nvidia.com/gpu: 1 + env: + - name: NVIDIA_VISIBLE_DEVICES + value: all + - name: NVIDIA_DRIVER_CAPABILITIES + value: all +``` + +NVIDIA Container Runtime は [NVIDIA Device Plugin](https://github.com/NVIDIA/k8s-device-plugin/) と頻繁に使用され、上記のように pod スペックに `runtimeClassName: nvidia` を含めるように変更されることが多いことに注意してください。 + +## エージェントレスサーバーの実行 (実験的機能) +> **警告:** この機能は実験的です。 + +`--disable-agent` フラグを使用して開始すると、サーバーは kubelet、コンテナランタイム、または CNI を実行しません。クラスターに Node リソースを登録せず、`kubectl get nodes` の出力には表示されません。 +kubelet をホストしないため、Pod を実行したり、クラスターのノードを列挙するオペレーター(埋め込みの etcd コントローラーやシステムアップグレードコントローラーを含む)によって管理されたりすることはできません。 + +エージェントレスサーバーを実行することは、エージェントやワークロードからコントロールプレーンノードを発見されないようにする場合に有利ですが、クラスターオペレーターのサポートがないため管理の負担が増加します。 + +デフォルトでは、エージェントレスサーバーの apiserver はクラスター内で実行されているアドミッションウェブフックや集約 API サービスへの外向き接続を行うことができません。これを解決するには、`--egress-selector-mode` サーバーフラグを `pod` または `cluster` に設定します。既存のクラスターでこのフラグを変更する場合、オプションが有効になるためにはクラスター内のすべてのノードを再起動する必要があります。 + +## ルートレスサーバーの実行 (実験的機能) +> **警告:** この機能は実験的です。 + +ルートレスモードでは、K3s サーバーを特権のないユーザーとして実行できるため、ホストの実際の root を潜在的なコンテナブレークアウト攻撃から保護できます。 + +ルートレス Kubernetes について詳しくは https://rootlesscontaine.rs/ を参照してください。 + +### ルートレスモードの既知の問題 + +* **ポート** + + ルートレスで実行すると、新しいネットワーク名前空間が作成されます。これは、K3s インスタンスがホストからかなり分離されたネットワークで実行されることを意味します。 + ホストから K3s で実行されているサービスにアクセスする唯一の方法は、K3s ネットワーク名前空間へのポートフォワードを設定することです。 + ルートレス K3s には、6443 および 1024 未満のサービスポートをホストにオフセット 10000 で自動的にバインドするコントローラーが含まれています。 + + 例えば、ポート 80 のサービスはホスト上で 10080 になりますが、8080 はオフセットなしで 8080 になります。現在、自動的にバインドされるのは LoadBalancer サービスのみです。 + +* **Cgroups** + + Cgroup v1 およびハイブリッド v1/v2 はサポートされていません。純粋な Cgroup v2 のみがサポートされています。ルートレスで実行中に K3s が cgroups の欠如により起動に失敗する場合、ノードがハイブリッドモードになっており、「欠落している」cgroups が v1 コントローラーにまだバインドされている可能性があります。 + +* **マルチノード/マルチプロセスクラスター** + + マルチノードのルートレスクラスターや同じノード上での複数のルートレス k3s プロセスは現在サポートされていません。詳細については [#6488](https://github.com/k3s-io/k3s/issues/6488#issuecomment-1314998091) を参照してください。 + +### ルートレスサーバーの開始 +* cgroup v2 デリゲーションを有効にします。詳細は https://rootlesscontaine.rs/getting-started/common/cgroup2/ を参照してください。 + このステップは必須です。適切な cgroups がデリゲートされていないと、ルートレス kubelet は起動に失敗します。 + +* [`https://github.com/k3s-io/k3s/blob//k3s-rootless.service`](https://github.com/k3s-io/k3s/blob/master/k3s-rootless.service) から `k3s-rootless.service` をダウンロードします。 + `k3s-rootless.service` と `k3s` のバージョンが同じであることを確認してください。 + +* `k3s-rootless.service` を `~/.config/systemd/user/k3s-rootless.service` にインストールします。 + このファイルをシステム全体のサービス (`/etc/systemd/...`) としてインストールすることはサポートされていません。 + `k3s` バイナリのパスに応じて、ファイルの `ExecStart=/usr/local/bin/k3s ...` 行を変更する必要があるかもしれません。 + +* `systemctl --user daemon-reload` を実行します。 + +* `systemctl --user enable --now k3s-rootless` を実行します。 + +* `KUBECONFIG=~/.kube/k3s.yaml kubectl get pods -A` を実行し、Pod が実行されていることを確認します。 + +> **注意:** ターミナルで `k3s server --rootless` を実行しようとしないでください。ターミナルセッションでは cgroup v2 デリゲーションが許可されていません。 +> どうしてもターミナルで試す必要がある場合は、`systemd-run --user -p Delegate=yes --tty k3s server --rootless` を使用して systemd スコープでラップしてください。 + +### 高度なルートレス設定 + +ルートレス K3s は、ホストとユーザーネットワーク名前空間間の通信に [rootlesskit](https://github.com/rootless-containers/rootlesskit) と [slirp4netns](https://github.com/rootless-containers/slirp4netns) を使用します。 +rootlesskit と slirp4netns によって使用される一部の設定は環境変数で設定できます。これらを設定する最良の方法は、k3s-rootless systemd ユニットの `Environment` フィールドに追加することです。 + +| 変数名 | デフォルト値 | 説明 +|--------------------------------------|--------------|------------ +| `K3S_ROOTLESS_MTU` | 1500 | slirp4netns 仮想インターフェースの MTU を設定します。 +| `K3S_ROOTLESS_CIDR` | 10.41.0.0/16 | slirp4netns 仮想インターフェースで使用される CIDR を設定します。 +| `K3S_ROOTLESS_ENABLE_IPV6` | 自動検出 | slirp4netns の IPv6 サポートを有効にします。指定されていない場合、K3s がデュアルスタック操作に設定されている場合に自動的に有効になります。 +| `K3S_ROOTLESS_PORT_DRIVER` | builtin | ルートレスポートドライバーを選択します。`builtin` または `slirp4netns` のいずれかです。builtin は高速ですが、受信パケットの元の送信元アドレスを偽装します。 +| `K3S_ROOTLESS_DISABLE_HOST_LOOPBACK` | true | ゲートウェイインターフェースを介してホストのループバックアドレスへのアクセスを有効にするかどうかを制御します。セキュリティ上の理由から、これを変更しないことをお勧めします。 + +### ルートレスのトラブルシューティング + +* `systemctl --user status k3s-rootless` を実行してデーモンのステータスを確認します。 +* `journalctl --user -f -u k3s-rootless` を実行してデーモンログを確認します。 +* 詳細は https://rootlesscontaine.rs/ を参照してください。 + +## ノードラベルとテイント + +K3s エージェントは、kubelet にラベルとテイントを追加するオプション `--node-label` および `--node-taint` で構成できます。これらのオプションは [登録時](./cli/agent.md#node-labels-and-taints-for-agents) にのみラベルおよび/またはテイントを追加するため、ノードがクラスターに最初に参加する際にのみ設定できます。 + +現在のすべての Kubernetes バージョンでは、`kubernetes.io` および `k8s.io` プレフィックスを持つほとんどのラベルでノードの登録が制限されています。特に `kubernetes.io/role` ラベルが含まれます。許可されていないラベルでノードを起動しようとすると、K3s は起動に失敗します。Kubernetes の著者によると: + +> ノードは自分自身の役割ラベルを主張することは許可されていません。ノードの役割は通常、特権またはコントロールプレーンタイプのノードを識別するために使用され、ノードが自分自身をそのプールにラベル付けすることを許可すると、侵害されたノードが高い特権の資格情報にアクセスするワークロード(コントロールプレーンデーモンセットなど)を簡単に引き付けることができます。 + +詳細については [SIG-Auth KEP 279](https://github.com/kubernetes/enhancements/blob/master/keps/sig-auth/279-limit-node-access/README.md#proposal) を参照してください。 + +ノードの登録後にノードラベルとテイントを変更したり、予約済みラベルを追加したりする場合は、`kubectl` を使用する必要があります。テイントの追加方法については公式の Kubernetes ドキュメントを参照してください。[テイント](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/) および [ノードラベル](https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes/#add-a-label-to-a-node) の詳細を参照してください。 + +## インストールスクリプトでサービスを開始する + +インストールスクリプトは、OS が systemd または openrc を使用しているかを自動検出し、インストールプロセスの一環としてサービスを有効化および開始します。 +* openrc で実行する場合、ログは `/var/log/k3s.log` に作成されます。 +* systemd で実行する場合、ログは `/var/log/syslog` に作成され、`journalctl -u k3s`(エージェントの場合は `journalctl -u k3s-agent`)を使用して表示されます。 + +インストールスクリプトで自動起動およびサービスの有効化を無効にする例: + +```bash +curl -sfL https://get.k3s.io | INSTALL_K3S_SKIP_START=true INSTALL_K3S_SKIP_ENABLE=true sh - +``` + +## Docker で K3s を実行する + +Docker で K3s を実行する方法はいくつかあります: + + + + +[k3d](https://github.com/k3d-io/k3d) は、Docker でマルチノード K3s クラスターを簡単に実行するために設計されたユーティリティです。 + +k3d を使用すると、ローカルでの Kubernetes 開発のために、Docker でシングルノードおよびマルチノードの k3s クラスターを非常に簡単に作成できます。 + +インストール方法や k3d の使用方法については、[インストール](https://k3d.io/#installation) ドキュメントを参照してください。 + + + + +Docker を使用するには、K3s サーバーおよびエージェントを実行するための `rancher/k3s` イメージも利用可能です。 +`docker run` コマンドを使用して: + +```bash +sudo docker run \ + --privileged \ + --name k3s-server-1 \ + --hostname k3s-server-1 \ + -p 6443:6443 \ + -d rancher/k3s:v1.24.10-k3s1 \ + server +``` +:::note +有効な K3s バージョンをタグとして指定する必要があります。`latest` タグは維持されていません。 +Docker イメージではタグに `+` 記号を使用できないため、代わりに `-` を使用してください。 +::: + +K3s が起動して実行されると、管理用 kubeconfig を Docker コンテナからコピーして使用できます: +```bash +sudo docker cp k3s-server-1:/etc/rancher/k3s/k3s.yaml ~/.kube/config +``` + + + + +## SELinux サポート + +:::info バージョンゲート + +v1.19.4+k3s1 から利用可能 + +::: + +SELinux がデフォルトで有効になっているシステム(CentOS など)に K3s をインストールする場合、適切な SELinux ポリシーがインストールされていることを確認する必要があります。 + + + + + +[インストールスクリプト](./installation/configuration.md#configuration-with-install-script)は、エアギャップインストールを行わない限り、互換性のあるシステムであればRancher RPMリポジトリからSELinux RPMを自動的にインストールします。自動インストールをスキップするには、`INSTALL_K3S_SKIP_SELINUX_RPM=true`を設定します。 + + + + + +必要なポリシーは以下のコマンドでインストールできます: +```bash +yum install -y container-selinux selinux-policy-base +yum install -y https://rpm.rancher.io/k3s/latest/common/centos/7/noarch/k3s-selinux-1.4-1.el7.noarch.rpm +``` + +インストールスクリプトが失敗するのではなく警告をログに記録するように強制するには、以下の環境変数を設定します: `INSTALL_K3S_SELINUX_WARN=true`。 + + + +### SELinuxの強制モードを有効にする + +SELinuxを活用するには、K3sサーバーおよびエージェントを起動する際に`--selinux`フラグを指定します。 + +このオプションはK3sの[設定ファイル](./installation/configuration.md#configuration-file)にも指定できます。 + +``` +selinux: true +``` + +SELinuxの下でカスタムの`--data-dir`を使用することはサポートされていません。カスタマイズするには、おそらく独自のカスタムポリシーを書く必要があります。ガイダンスについては、コンテナランタイムのSELinuxポリシーファイルを含む[containers/container-selinux](https://github.com/containers/container-selinux)リポジトリおよびK3sのSELinuxポリシーを含む[k3s-io/k3s-selinux](https://github.com/k3s-io/k3s-selinux)リポジトリを参照してください。 + +## eStargzのレイジープルを有効にする(実験的機能) + +### レイジープルとeStargzとは? + +イメージのプルはコンテナライフサイクルの中で時間のかかるステップの一つとして知られています。 +[Harter, et al.](https://www.usenix.org/conference/fast16/technical-sessions/presentation/harter)によると、 + +> パッケージのプルはコンテナ起動時間の76%を占めるが、そのデータのうち読み取られるのはわずか6.4%である + +この問題に対処するために、k3sはイメージコンテンツの*レイジープル*を実験的にサポートしています。 +これにより、k3sはイメージ全体がプルされる前にコンテナを起動することができます。 +代わりに、必要なコンテンツのチャンク(例:個々のファイル)がオンデマンドで取得されます。 +特に大きなイメージの場合、この技術はコンテナの起動遅延を短縮することができます。 + +レイジープルを有効にするには、ターゲットイメージを[*eStargz*](https://github.com/containerd/stargz-snapshotter/blob/main/docs/stargz-estargz.md)としてフォーマットする必要があります。 +これはOCIの代替ですが、100% OCI互換のイメージフォーマットで、レイジープルに対応しています。 +互換性があるため、eStargzは標準のコンテナレジストリ(例:ghcr.io)にプッシュでき、eStargz非対応のランタイムでも*実行可能*です。 + +eStargzは[Google CRFSプロジェクトによって提案されたstargzフォーマット](https://github.com/google/crfs)に基づいて開発されましたが、コンテンツの検証やパフォーマンスの最適化などの実用的な機能が追加されています。 +レイジープルとeStargzの詳細については、[Stargz Snapshotterプロジェクトリポジトリ](https://github.com/containerd/stargz-snapshotter)を参照してください。 + +### eStargzのレイジープルのためのk3sの設定 + +以下のように、k3sサーバーおよびエージェントに`--snapshotter=stargz`オプションが必要です。 + +```bash +k3s server --snapshotter=stargz +``` + +この設定により、eStargz形式のイメージのレイジープルを実行できます。 +以下の例のPodマニフェストは、eStargz形式の`node:13.13.0`イメージ(`ghcr.io/stargz-containers/node:13.13.0-esgz`)を使用しています。 +stargzスナップショッタが有効になっている場合、K3sはこのイメージのレイジープルを実行します。 + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: nodejs +spec: + containers: + - name: nodejs-estargz + image: ghcr.io/stargz-containers/node:13.13.0-esgz + command: ["node"] + args: + - -e + - var http = require('http'); + http.createServer(function(req, res) { + res.writeHead(200); + res.end('Hello World!\n'); + }).listen(80); + ports: + - containerPort: 80 +``` + +## 追加のログソース + +K3s用の[Rancherロギング](https://rancher.com/docs/rancher/v2.6/en/logging/helm-chart-options/)は、Rancherを使用せずにインストールできます。以下の手順を実行してください: + +```bash +helm repo add rancher-charts https://charts.rancher.io +helm repo update +helm install --create-namespace -n cattle-logging-system rancher-logging-crd rancher-charts/rancher-logging-crd +helm install --create-namespace -n cattle-logging-system rancher-logging --set additionalLoggingSources.k3s.enabled=true rancher-charts/rancher-logging +``` + +## 追加のネットワークポリシーロギング + +ネットワークポリシーによってドロップされたパケットをログに記録できます。パケットはiptablesのNFLOGアクションに送信され、パケットの詳細(ネットワークポリシーを含む)が表示されます。 + +トラフィックが多い場合、ログメッセージの数が非常に多くなる可能性があります。ポリシーごとにログのレートを制御するには、対象のネットワークポリシーに以下のアノテーションを追加して、`limit`および`limit-burst`のiptablesパラメータを設定します: +* `kube-router.io/netpol-nflog-limit=` +* `kube-router.io/netpol-nflog-limit-burst=` + +デフォルト値は`limit=10/minute`および`limit-burst=10`です。これらのフィールドの形式および可能な値については、[iptablesマニュアル](https://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-7.html#:~:text=restrict%20the%20rate%20of%20matches)を参照してください。 + +NFLOGパケットをログエントリに変換するには、ulogd2をインストールし、`[log1]`を`group=100`で読み取るように設定します。その後、ulogd2サービスを再起動して新しい設定を反映させます。 +ネットワークポリシールールによってパケットがブロックされると、`/var/log/ulog/syslogemu.log`にログメッセージが表示されます。 + +NFLOGネットリンクソケットに送信されたパケットは、tcpdumpやtsharkなどのコマンドラインツールを使用して読み取ることもできます: +```bash +tcpdump -ni nflog:100 +``` +tcpdumpはより手軽に利用できますが、パケットをブロックしたネットワークポリシーの名前は表示されません。ネットワークポリシー名を含む完全なNFLOGパケットヘッダーを表示するには、wiresharkのtsharkコマンドを使用してください。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/architecture.md b/i18n/ja/docusaurus-plugin-content-docs/current/architecture.md new file mode 100644 index 000000000..480827056 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/architecture.md @@ -0,0 +1,85 @@ +--- +title: アーキテクチャ +--- + +import ThemedImage from '@theme/ThemedImage'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + +### サーバーとエージェント + +* サーバーノードは、`k3s server` コマンドを実行しているホストとして定義され、K3sによって管理されるコントロールプレーンとデータストアコンポーネントを持ちます。 +* エージェントノードは、`k3s agent` コマンドを実行しているホストとして定義され、データストアやコントロールプレーンコンポーネントは持ちません。 +* サーバーとエージェントの両方がkubelet、コンテナランタイム、およびCNIを実行します。エージェントレスサーバーの実行に関する詳細は、[高度なオプション](./advanced.md#running-agentless-servers-experimental)のドキュメントを参照してください。 + +![](/img/how-it-works-k3s-revised.svg) + +### 埋め込みDBを使用したシングルサーバーセットアップ + +以下の図は、埋め込みSQLiteデータベースを持つシングルノードK3sサーバーを含むクラスターの例を示しています。 + +この構成では、各エージェントノードは同じサーバーノードに登録されます。K3sユーザーは、サーバーノード上のK3s APIを呼び出すことでKubernetesリソースを操作できます。 + + + +### 高可用性K3s + +シングルサーバークラスターはさまざまなユースケースに対応できますが、Kubernetesコントロールプレーンの稼働時間が重要な環境では、K3sをHA構成で実行できます。HA K3sクラスターは以下を含みます: + + + + +* Kubernetes APIを提供し、他のコントロールプレーンサービスを実行する**3つ以上のサーバーノード** +* シングルサーバーセットアップで使用される埋め込みSQLiteデータストアとは対照的に、**埋め込みetcdデータストア** + + + + + + +* Kubernetes APIを提供し、他のコントロールプレーンサービスを実行する**2つ以上のサーバーノード** +* **外部データストア**(MySQL、PostgreSQL、またはetcdなど) + + + + + + +### エージェントノードの固定登録アドレス + +高可用性サーバー構成では、各ノードは以下の図に示すように、固定登録アドレスを使用してKubernetes APIに登録することもできます。 + +登録後、エージェントノードはサーバーノードの1つに直接接続を確立します。 + + + +### エージェントノードの登録方法 + +エージェントノードは、`k3s agent` プロセスによって開始されるWebSocket接続で登録され、その接続はエージェントプロセスの一部として実行されるクライアントサイドのロードバランサーによって維持されます。最初に、エージェントはポート6443のローカルロードバランサーを介してスーパーバイザー(およびkube-apiserver)に接続します。ロードバランサーは接続可能なエンドポイントのリストを維持します。デフォルト(および最初の)エンドポイントは、`--server` アドレスからのホスト名によってシードされます。クラスターに接続すると、エージェントはデフォルトのネームスペース内のKubernetesサービスエンドポイントリストからkube-apiserverアドレスのリストを取得します。これらのエンドポイントはロードバランサーに追加され、クラスター内のすべてのサーバーに安定した接続を維持し、個々のサーバーの停止に耐えるkube-apiserverへの接続を提供します。 + +エージェントは、ノードクラスターシークレットと、`/etc/rancher/node/password` に保存されるランダムに生成されたパスワードを使用してサーバーに登録されます。サーバーは個々のノードのパスワードをKubernetesシークレットとして保存し、後続の試行では同じパスワードを使用する必要があります。ノードパスワードシークレットは、`.node-password.k3s` テンプレートを使用した名前で`kube-system`ネームスペースに保存されます。これはノードIDの整合性を保護するために行われます。 + +エージェントの`/etc/rancher/node`ディレクトリが削除された場合、または既存の名前を使用してノードを再参加させたい場合は、クラスターからノードを削除する必要があります。これにより、古いノードエントリとノードパスワードシークレットの両方がクリーンアップされ、ノードがクラスターに再参加できるようになります。 + +ホスト名を頻繁に再利用するが、ノードパスワードシークレットを削除できない場合は、`--with-node-id` フラグを使用してK3sサーバーまたはエージェントを起動することで、ホスト名に一意のノードIDを自動的に追加できます。有効にすると、ノードIDも`/etc/rancher/node/`に保存されます。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/cli/agent.md b/i18n/ja/docusaurus-plugin-content-docs/current/cli/agent.md new file mode 100644 index 000000000..11c4c99ae --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/cli/agent.md @@ -0,0 +1,152 @@ +--- +title: エージェント +--- + +# k3s エージェント + +このセクションでは、K3sエージェントの設定方法を学びます。 + +サーバーもエージェントを実行するため、このページに記載されているすべてのフラグはサーバーでも使用可能です。 + +オプションはCLIフラグとしてこのページに記載されていますが、設定ファイルオプションとしても渡すことができます。YAML設定ファイルの使用方法については、[設定ファイル](../installation/configuration.md#configuration-file)のドキュメントを参照してください。 + +### ロギング + +| フラグ | デフォルト | 説明 | +| ----------------------- | ------- | -------------------------------------------------------------------- | +| `-v` 値 | 0 | ログレベルの冗長度の数値 | +| `--vmodule` 値 | N/A | ファイルフィルタリングされたログのためのFILE_PATTERN=LOG_LEVEL設定のカンマ区切りリスト | +| `--log 値, -l` 値 | N/A | ファイルにログを記録 | +| `--alsologtostderr` | N/A | ファイルに設定されている場合、標準エラーにもログを記録 | + +### クラスターオプション + +| フラグ | 環境変数 | 説明 | +| -------------------------- | -------------------- | ------------------------------------ | +| `--token 値, -t` 値 | `K3S_TOKEN` | 認証に使用するトークン | +| `--token-file` 値 | `K3S_TOKEN_FILE` | 認証に使用するトークンファイル | +| `--server 値, -s` 値 | `K3S_URL` | 接続するサーバー | + +### データ + +| フラグ | デフォルト | 説明 | +| ---------------------------- | ---------------------- | -------------------- | +| `--data-dir 値, -d` 値 | "/var/lib/rancher/k3s" | 状態を保持するフォルダー | + +### ノード + +| フラグ | 環境変数 | 説明 | +| --------------------------- | -------------------- | --------------------------------------------------------------------------------------------- | +| `--node-name` 値 | `K3S_NODE_NAME` | ノード名 | +| `--with-node-id` | N/A | ノード名にIDを追加 | +| `--node-label` 値 | N/A | ラベルのセットでkubeletを登録および開始 | +| `--node-taint` 値 | N/A | taintsのセットでkubeletを登録 | +| `--protect-kernel-defaults` | N/A | カーネルのチューニング動作。設定されている場合、カーネルのチューナブルがkubeletのデフォルトと異なる場合にエラーを発生させます。 | +| `--selinux` | `K3S_SELINUX` | containerdでSELinuxを有効にする | +| `--lb-server-port` 値 | `K3S_LB_SERVER_PORT` | スーパーバイザークライアントのロードバランサーのローカルポート。スーパーバイザーとapiserverが同じ場所にない場合、このポートの1つ少ない追加ポートもapiserverクライアントのロードバランサーに使用されます。(デフォルト: 6444) | + +### ランタイム + +| フラグ | デフォルト | 説明 | +| ------------------------------------ | ---------------------------------- | ------------------------------------------------------------------ | +| `--container-runtime-endpoint` 値 | N/A | 組み込みのcontainerdを無効にし、指定されたパスのCRIソケットを使用します。--dockerと一緒に使用する場合、cri-dockerソケットパスを設定します | +| `--pause-image` 値 | "docker.io/rancher/pause:3.1" | containerdまたはdockerサンドボックス用のカスタマイズされたpauseイメージ | +| `--private-registry` 値 | "/etc/rancher/k3s/registries.yaml" | プライベートレジストリの設定ファイル | + +### ネットワーキング + +| フラグ | 環境変数 | 説明 | +| --------------------------- | -------------------- | ----------------------------------------- | +| `--node-ip 値, -i` 値 | N/A | ノードの広告用IPアドレス | +| `--node-external-ip` 値 | N/A | ノードの広告用外部IPアドレス | +| `--resolv-conf` 値 | `K3S_RESOLV_CONF` | Kubeletのresolv.confファイル | +| `--flannel-iface` 値 | N/A | デフォルトのflannelインターフェースを上書き | +| `--flannel-conf` 値 | N/A | デフォルトのflannel設定ファイルを上書き | +| `--flannel-cni-conf` 値 | N/A | デフォルトのflannel cni設定ファイルを上書き | + +### カスタマイズされたフラグ + +| フラグ | 説明 | +| ------------------------ | -------------------------------------- | +| `--kubelet-arg` 値 | kubeletプロセス用のカスタマイズされたフラグ | +| `--kube-proxy-arg` 値 | kube-proxyプロセス用のカスタマイズされたフラグ | + +### 実験的 + +| フラグ | 説明 | +| ------------ | ------------------------------------- | +| `--rootless` | ルートレスで実行 | +| `--docker` | containerdの代わりにcri-dockerdを使用 | +| `--prefer-bundled-bin` | ホストバイナリよりもバンドルされたユーザースペースバイナリを優先 | +| `--disable-default-registry-endpoint` | "[デフォルトエンドポイントフォールバック](../installation/private-registry.md#default-endpoint-fallback)"を参照 | + +### 廃止予定 + +| フラグ | 環境変数 | 説明 | +| ------------------------ | -------------------- | ---------------------------- | +| `--no-flannel` | N/A | `--flannel-backend=none`を使用 | +| `--cluster-secret` 値 | `K3S_CLUSTER_SECRET` | `--token`を使用 | + +### エージェントのノードラベルとtaints + +K3sエージェントは、`--node-label`および`--node-taint`オプションを使用して設定でき、これによりkubeletにラベルとtaintが追加されます。これらのオプションは登録時にのみラベルおよび/またはtaintを追加するため、一度だけ追加され、その後K3sコマンドを実行しても変更できません。 + +以下は、ラベルとtaintを追加する方法を示す例です: + +```bash + --node-label foo=bar \ + --node-label hello=world \ + --node-taint key1=value1:NoExecute +``` + +ノード登録後にノードラベルとtaintを変更したい場合は、`kubectl`を使用する必要があります。taintsの追加方法については公式のKubernetesドキュメントを参照してください。[taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)および[ノードラベル](https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes/#add-a-label-to-a-node)の追加方法についての詳細を参照してください。 + +### K3sエージェントCLIヘルプ + +> 以下にオプションが角括弧で表示されている場合、例えば`[$K3S_URL]`、そのオプションはその名前の環境変数として渡すことができることを意味します。 + +```bash +NAME: + k3s agent - ノードエージェントを実行 + +USAGE: + k3s agent [OPTIONS] + +OPTIONS: + --config FILE, -c FILE (config) FILEから設定を読み込む (デフォルト: "/etc/rancher/k3s/config.yaml") [$K3S_CONFIG_FILE] + --debug (logging) デバッグログを有効にする [$K3S_DEBUG] + -v 値 (logging) ログレベルの冗長度の数値 (デフォルト: 0) + --vmodule 値 (logging) ファイルフィルタリングされたログのためのFILE_PATTERN=LOG_LEVEL設定のカンマ区切りリスト + --log 値, -l 値 (logging) ファイルにログを記録 + --alsologtostderr (logging) ファイルに設定されている場合、標準エラーにもログを記録 + --token 値, -t 値 (cluster) 認証に使用するトークン [$K3S_TOKEN] + --token-file 値 (cluster) 認証に使用するトークンファイル [$K3S_TOKEN_FILE] + --server 値, -s 値 (cluster) 接続するサーバー [$K3S_URL] + --data-dir 値, -d 値 (agent/data) 状態を保持するフォルダー (デフォルト: "/var/lib/rancher/k3s") + --node-name 値 (agent/node) ノード名 [$K3S_NODE_NAME] + --with-node-id (agent/node) ノード名にIDを追加 + --node-label 値 (agent/node) ラベルのセットでkubeletを登録および開始 + --node-taint 値 (agent/node) taintsのセットでkubeletを登録 + --image-credential-provider-bin-dir 値 (agent/node) クレデンシャルプロバイダープラグインバイナリが配置されているディレクトリのパス (デフォルト: "/var/lib/rancher/credentialprovider/bin") + --image-credential-provider-config 値 (agent/node) クレデンシャルプロバイダープラグイン設定ファイルのパス (デフォルト: "/var/lib/rancher/credentialprovider/config.yaml") + --selinux (agent/node) containerdでSELinuxを有効にする [$K3S_SELINUX] + --lb-server-port 値 (agent/node) スーパーバイザークライアントのロードバランサーのローカルポート。スーパーバイザーとapiserverが同じ場所にない場合、このポートの1つ少ない追加ポートもapiserverクライアントのロードバランサーに使用されます。(デフォルト: 6444) [$K3S_LB_SERVER_PORT] + --protect-kernel-defaults (agent/node) カーネルのチューニング動作。設定されている場合、カーネルのチューナブルがkubeletのデフォルトと異なる場合にエラーを発生させます。 + --container-runtime-endpoint 値 (agent/runtime) 組み込みのcontainerdを無効にし、指定されたパスのCRIソケットを使用します。--dockerと一緒に使用する場合、dockerソケットパスを設定します + --pause-image 値 (agent/runtime) containerdまたはdockerサンドボックス用のカスタマイズされたpauseイメージ (デフォルト: "rancher/mirrored-pause:3.6") + --snapshotter 値 (agent/runtime) デフォルトのcontainerdスナップショッターを上書き (デフォルト: "overlayfs") + --private-registry 値 (agent/runtime) プライベートレジストリの設定ファイル (デフォルト: "/etc/rancher/k3s/registries.yaml") + --node-ip 値, -i 値 (agent/networking) ノードの広告用IPv4/IPv6アドレス +``` +```markdown + --node-external-ip value (agent/networking) ノードの広告用IPv4/IPv6外部IPアドレス + --resolv-conf value (agent/networking) Kubeletのresolv.confファイル [$K3S_RESOLV_CONF] + --flannel-iface value (agent/networking) デフォルトのflannelインターフェースを上書き + --flannel-conf value (agent/networking) デフォルトのflannel設定ファイルを上書き + --flannel-cni-conf value (agent/networking) デフォルトのflannel cni設定ファイルを上書き + --kubelet-arg value (agent/flags) kubeletプロセスのカスタマイズフラグ + --kube-proxy-arg value (agent/flags) kube-proxyプロセスのカスタマイズフラグ + --rootless (experimental) ルートレスで実行 + --prefer-bundled-bin (experimental) ホストのバイナリよりもバンドルされたユーザースペースバイナリを優先 + --docker (agent/runtime) (experimental) containerdの代わりにcri-dockerdを使用 +``` \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/cli/certificate.md b/i18n/ja/docusaurus-plugin-content-docs/current/cli/certificate.md new file mode 100644 index 000000000..29e052f6e --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/cli/certificate.md @@ -0,0 +1,322 @@ +--- +title: 証明書 +--- + +# k3s 証明書 + +## クライアントおよびサーバー証明書 + +K3sのクライアントおよびサーバー証明書は、発行日から365日間有効です。期限切れの証明書や、期限切れまで90日以内の証明書は、K3sが起動するたびに自動的に更新されます。 + +### クライアントおよびサーバー証明書のローテーション + +クライアントおよびサーバー証明書を手動でローテーションするには、`k3s certificate rotate`サブコマンドを使用します: + +```bash +# K3sを停止 +systemctl stop k3s + +# 証明書をローテーション +k3s certificate rotate + +# K3sを起動 +systemctl start k3s +``` + +証明書の名前を指定することで、個別またはリストの証明書をローテーションできます: + +```bash +k3s certificate rotate --service , +``` + +以下の証明書がローテーション可能です:`admin`, `api-server`, `controller-manager`, `scheduler`, `k3s-controller`, `k3s-server`, `cloud-controller`, `etcd`, `auth-proxy`, `kubelet`, `kube-proxy`。 + +## 証明書認証局 (CA) 証明書 + +Kubernetesの適切な動作には、いくつかのCA証明書が必要です。KubernetesがCA証明書をどのように使用するかについての詳細は、Kubernetesの[PKI証明書と要件](https://kubernetes.io/docs/setup/best-practices/certificates/#all-certificates)ドキュメントを参照してください。 + +デフォルトでは、K3sは最初のサーバーノードの起動時に自己署名のCA証明書を生成します。これらのCA証明書は発行日から10年間有効で、自動的に更新されません。 + +権威あるCA証明書とキーは、データストアのブートストラップキー内に保存され、[サーバートークン](token.md#server)をPBKDF2パスフレーズとして使用してAES256-GCMおよびHMAC-SHA1で暗号化されます。 +CA証明書とキーのコピーは、K3sサーバーの起動時にディスクに抽出されます。 +任意のサーバーは、クラスターに参加するノードのリーフ証明書を生成でき、Kubernetesの[証明書API](https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/)コントローラーはランタイムで追加の証明書を発行することができます。 + +CA証明書とキーをローテーションするには、`k3s certificate rotate-ca`コマンドを使用します。 +このコマンドは、更新された証明書とキーが使用可能であることを確認するための整合性チェックを実行します。 +更新されたデータが受け入れ可能であれば、データストアの暗号化されたブートストラップキーが更新され、次回K3sが起動する際に新しい証明書とキーが使用されます。 +証明書とキーの検証中に問題が発生した場合、システムログにエラーが報告され、操作は変更なしでキャンセルされます。 + +:::info バージョンゲート +`k3s certificate rotate-ca`コマンドのサポートおよび外部CAによって署名されたCA証明書の使用は、2023-02リリース(v1.26.2+k3s1、v1.25.7+k3s1、v1.24.11+k3s1、v1.23.17+k3s1)から利用可能です。 +::: + +### カスタムCA証明書の使用 + +クラスターの最初のサーバーの初回起動時に正しい場所にCA証明書とキーが見つかった場合、CA証明書の自動生成はバイパスされます。 + +適切な証明書とキーを事前に作成するためのサンプルスクリプトは、[K3sリポジトリの`contrib/util/generate-custom-ca-certs.sh`](https://github.com/k3s-io/k3s/blob/master/contrib/util/generate-custom-ca-certs.sh)にあります。 +このスクリプトは、K3sを初めて起動する前に実行する必要があり、共通のルートおよび中間CA証明書によって署名された完全なリーフCA証明書セットを作成します。 +既存のルートまたは中間CAがある場合、このスクリプトを使用して(または開始点として使用して)既存の権限にルート化されたPKIを持つK3sクラスターをプロビジョニングするための正しいCA証明書を作成できます。 + +カスタム証明書認証局ファイルは`/var/lib/rancher/k3s/server/tls`に配置する必要があります。以下のファイルが必要です: +* `server-ca.crt` +* `server-ca.key` +* `client-ca.crt` +* `client-ca.key` +* `request-header-ca.crt` +* `request-header-ca.key` + *// 注:etcdファイルは、埋め込みetcdが使用されていない場合でも必要です。* +* `etcd/peer-ca.crt` +* `etcd/peer-ca.key` +* `etcd/server-ca.crt` +* `etcd/server-ca.key` + *// 注:これはサービスアカウントトークンに署名するために使用される秘密鍵です。対応する証明書はありません。* +* `service.key` + +#### カスタムCAトポロジー + +カスタムCA証明書は、以下のトポロジーに従う必要があります: + +```mermaid +graph TD + root("ルートCA") + intermediate("中間CA") + server-ca("サーバーCA") + client-ca("クライアントCA") + request-header-ca("API集約CA") + etcd-peer-ca("etcdピアCA") + etcd-server-ca("etcdサーバーCA") + + root-hash>"ジョイントークンCAハッシュ"] + + kube-server-certs[["Kubernetesサーバー
(コントロールプレーンおよびkubeletリスナー)"]] + kube-client-certs[["Kubernetesクライアント
(apiserverおよびkubeletクライアント)"]] + request-header-certs[["Kubernetes API集約
(apiserverプロキシクライアント)"]] + etcd-peer-certs[["etcdピアクライアント/サーバー
(etcdレプリケーション)"]] + etcd-server-certs[["etcdクライアント/サーバー証明書
(Kubernetes <-> etcd)"]] + + root -.-|SHA256| root-hash + root ---> intermediate + intermediate --> server-ca ==> kube-server-certs + intermediate --> client-ca ==> kube-client-certs + intermediate --> request-header-ca ==> request-header-certs + intermediate --> etcd-peer-ca ==> etcd-peer-certs + intermediate --> etcd-server-ca ==> etcd-server-certs +``` + +#### サンプルスクリプトの使用 + +:::info 重要 +サンプルスクリプトを使用して既存のルートCAでクラスターCA証明書に署名する場合、スクリプトを実行する前にターゲットディレクトリにルートおよび中間ファイルを配置する必要があります。 +ファイルが存在しない場合、スクリプトは新しいルートおよび中間CA証明書を作成します。 +::: + +既存のルートCA証明書のみを使用する場合、以下のファイルを提供してください: +* `root-ca.pem` +* `root-ca.key` + +既存のルートおよび中間CA証明書を使用する場合、以下のファイルを提供してください: +* `root-ca.pem` +* `intermediate-ca.pem` +* `intermediate-ca.key` + +K3sを起動する前にカスタム証明書とキーを生成するためにサンプルスクリプトを使用するには、以下のコマンドを実行します: +```bash +# 証明書生成のためのターゲットディレクトリを作成 +mkdir -p /var/lib/rancher/k3s/server/tls + +# ルートCA証明書と中間CA証明書+キーをスクリプトの正しい場所にコピー +# この例では、既存のルートおよび中間CAファイルが/etc/sslにあると仮定します。 +# 既存のルートおよび/または中間CAがない場合、スクリプトはそれらを生成します。 +cp /etc/ssl/certs/root-ca.pem /etc/ssl/certs/intermediate-ca.pem /etc/ssl/private/intermediate-ca.key /var/lib/rancher/k3s/server/tls + +# カスタムCA証明書とキーを生成 +curl -sL https://github.com/k3s-io/k3s/raw/master/contrib/util/generate-custom-ca-certs.sh | bash - +``` + +コマンドが正常に完了した場合、K3sを初めてインストールおよび/または起動できます。 +スクリプトがルートおよび/または中間CAファイルを生成した場合、これらのファイルをバックアップして、後でCA証明書をローテーションする必要がある場合に再利用できるようにしてください。 + +### カスタムCA証明書のローテーション + +カスタムCA証明書をローテーションするには、`k3s certificate rotate-ca`サブコマンドを使用します。 +更新されたファイルは一時ディレクトリにステージングされ、データストアにロードされ、更新された証明書を使用するためにすべてのノードでk3sを再起動する必要があります。 + +:::warning +現在使用中のデータを`/var/lib/rancher/k3s/server/tls`に上書きしてはいけません。 +更新された証明書とキーを別のディレクトリにステージングしてください。 +::: + +カスタムCA証明書で起動されたクラスターは、同じルートCAを使用する限り、CA証明書とキーを非破壊的に更新またはローテーションできます。 + +新しいルートCAが必要な場合、ローテーションは破壊的になります。`k3s certificate rotate-ca --force`オプションを使用する必要があり、[セキュアトークン](token.md#secure)で参加したすべてのノード(サーバーを含む)は、新しいトークン値を使用するように再構成する必要があり、ポッドは新しいルートCAを信頼するために再起動する必要があります。 + +#### サンプルスクリプトの使用 + +上記のサンプル`generate-custom-ca-certs.sh`スクリプトは、ファイルを正しい場所にコピーし、`DATA_DIR`環境変数を設定することで、新しい一時ディレクトリで更新された証明書を生成するためにも使用できます。 +更新された証明書とキーを生成するためにサンプルスクリプトを使用するには、以下のコマンドを実行します: +```bash +# 証明書生成のための一時ディレクトリを作成 +mkdir -p /opt/k3s/server/tls + +# ルートCA証明書と中間CA証明書+キーをスクリプトの正しい場所にコピー +# 非破壊的なローテーションには、元の証明書を生成したルートCAが必要です。 +# 元のファイルがデータディレクトリにまだある場合、次のコマンドを実行できます: +cp /var/lib/rancher/k3s/server/tls/root-ca.* /var/lib/rancher/k3s/server/tls/intermediate-ca.* /opt/k3s/server/tls + +# 現在のサービスアカウント署名キーをコピーし、既存のサービスアカウントトークンが無効にならないようにします。 +cp /var/lib/rancher/k3s/server/tls/service.key /opt/k3s/server/tls + +# 更新されたカスタムCA証明書とキーを生成 +curl -sL https://github.com/k3s-io/k3s/raw/master/contrib/util/generate-custom-ca-certs.sh | DATA_DIR=/opt/k3s bash - + +# 更新されたCA証明書とキーをデータストアにロード +k3s certificate rotate-ca --path=/opt/k3s/server +``` + +`rotate-ca`コマンドがエラーを返した場合、サービスログでエラーを確認してください。 +コマンドが正常に完了した場合、クラスター内のすべてのノードでK3sを再起動します - まずサーバー、次にエージェント。 + +`--force`オプションを使用した場合やルートCAを変更した場合、[セキュアトークン](token.md#secure)で参加したノードが再起動される前に、新しいトークン値を使用するように再構成されていることを確認してください。 +トークンは、.envファイル、systemdユニット、またはconfig.yamlに保存されている場合があります。これは、初回インストール時にノードがどのように構成されたかによります。 + +### 自己署名CA証明書のローテーション + +K3sが生成した自己署名CA証明書をローテーションするには、`k3s certificate rotate-ca`サブコマンドを使用します。 +更新されたファイルは一時ディレクトリにステージングされ、データストアにロードされ、更新された証明書を使用するためにすべてのノードでk3sを再起動する必要があります。 + +:::warning +現在使用中のデータを`/var/lib/rancher/k3s/server/tls`に上書きしてはいけません。 +更新された証明書とキーを別のディレクトリにステージングしてください。 +::: + + +クラスタがデフォルトの自己署名CA証明書で開始された場合、ローテーションは中断を引き起こします。[セキュアトークン](token.md#secure)で参加したすべてのノードは、新しいCAハッシュを信頼するように再構成する必要があります。 +新しいCA証明書が古いCA証明書によってクロス署名されていない場合、整合性チェックをバイパスするために`--force`オプションを使用する必要があり、ポッドは新しいルートCAを信頼するために再起動する必要があります。 + +#### デフォルトCAトポロジー +デフォルトの自己署名CA証明書は以下のトポロジーを持っています: + +```mermaid +graph TD + server-ca("Server CA") + client-ca("Client CA") + request-header-ca("API Aggregation CA") + etcd-peer-ca("etcd Peer CA") + etcd-server-ca("etcd Server CA") + + root-hash>"Join token CA hash"] + + kube-server-certs[["Kubernetes servers
(control-plane and kubelet listeners)"]] + kube-client-certs[["Kubernetes clients
(apiserver and kubelet clients)"]] + request-header-certs[["Kubernetes API aggregation
(apiserver proxy client)"]] + etcd-peer-certs[["etcd peer client/server
(etcd replication)"]] + etcd-server-certs[["etcd client/server certificates
(Kubernetes <-> etcd)"]] + + server-ca -.-|SHA256| root-hash + server-ca ===> kube-server-certs + client-ca ===> kube-client-certs + request-header-ca ===> request-header-certs + etcd-peer-ca ===> etcd-peer-certs + etcd-server-ca ===> etcd-server-certs +``` + +デフォルトの自己署名CAをローテーションする際には、中間CAと古いCAによってクロス署名された新しいルートCAを使用する修正された証明書トポロジーを使用することで、古いCAと新しいCAの間に連続した信頼のチェーンを確保できます: +```mermaid +graph TD + server-ca-old("Server CA
(old)") + client-ca-old("Client CA
(old)") + request-header-ca-old("API Aggregation CA
(old)") + etcd-peer-ca-old("etcd Peer CA
(old)") + etcd-server-ca-old("etcd Server CA
(old)") + + root-hash>"Join token CA hash"] + + server-ca-xsigned("Server CA
(cross-signed)") + client-ca-xsigned("Client CA
(cross-signed)") + request-header-ca-xsigned("API Aggregation CA
(cross-signed)") + etcd-peer-ca-xsigned("etcd Peer CA
(cross-signed)") + etcd-server-ca-xsigned("etcd Server CA
(cross-signed)") + + server-ca-ssigned("Server CA
(self-signed)") + client-ca-ssigned("Client CA
(self-signed)") + request-header-ca-ssigned("API Aggregation CA
(self-signed)") + etcd-peer-ca-ssigned("etcd Peer CA
(self-signed)") + etcd-server-ca-ssigned("etcd Server CA
(self-signed)") + + server-ca("Intermediate
Server CA") + client-ca("Intermediate
Client CA") + request-header-ca("Intermediate
API Aggregation CA") + etcd-peer-ca("Intermediate
etcd Peer CA") + etcd-server-ca("Intermediate
etcd Server CA") + + kube-server-certs[["Kubernetes servers
(control-plane and kubelet listeners)"]] + kube-client-certs[["Kubernetes clients
(apiserver and kubelet clients)"]] + request-header-certs[["Kubernetes API aggregation
(apiserver proxy client)"]] + etcd-peer-certs[["etcd peer client/server
(etcd replication)"]] + etcd-server-certs[["etcd client/server certificates
(Kubernetes <-> etcd)"]] + + server-ca-ssigned -.-|SHA256| root-hash + server-ca-ssigned --> server-ca ==> kube-server-certs + server-ca-old --> server-ca-xsigned --> server-ca + client-ca-ssigned --> client-ca ==> kube-client-certs + client-ca-old --> client-ca-xsigned --> client-ca + request-header-ca-ssigned --> request-header-ca ==> request-header-certs + request-header-ca-old --> request-header-ca-xsigned --> request-header-ca + etcd-peer-ca-ssigned --> etcd-peer-ca ==> etcd-peer-certs + etcd-peer-ca-old --> etcd-peer-ca-xsigned --> etcd-peer-ca + etcd-server-ca-ssigned --> etcd-server-ca ==> etcd-server-certs + etcd-server-ca-old --> etcd-server-ca-xsigned --> etcd-server-ca +``` + +#### サンプルスクリプトの使用 + +既存のCAによってクロス署名された更新されたCA証明書とキーを作成するためのサンプルスクリプトは、[K3sリポジトリの`contrib/util/rotate-default-ca-certs.sh`](https://github.com/k3s-io/k3s/blob/master/contrib/util/rotate-default-ca-certs.sh)にあります。 + +既存のCAによってクロス署名された更新された自己署名証明書を生成するためにサンプルスクリプトを使用するには、以下のコマンドを実行します: +```bash +# 現在のCAによってクロス署名された更新されたCA証明書とキーを作成します。 +# このスクリプトは更新された証明書を含む新しい一時ディレクトリを作成し、新しいトークン値を出力します。 +curl -sL https://github.com/k3s-io/k3s/raw/master/contrib/util/rotate-default-ca-certs.sh | bash - + +# 更新された証明書をデータストアにロードします。スクリプトの出力で更新されたトークン値を確認してください。 +k3s certificate rotate-ca --path=/var/lib/rancher/k3s/server/rotate-ca +``` + +`rotate-ca`コマンドがエラーを返した場合、サービスログでエラーを確認してください。 +コマンドが正常に完了した場合、クラスタ内のすべてのノードでK3sを再起動します - まずサーバー、次にエージェント。 + +[セキュアトークン](token.md#secure)で参加した他のサーバーノードを含むすべてのノードが、新しいトークン値を使用するように再構成されてから再起動されることを確認してください。 +トークンは、初期インストール時のノードの構成方法に応じて、`.env`ファイル、systemdユニット、またはconfig.yamlに保存されている場合があります。 + +## サービスアカウント発行者キーのローテーション + +サービスアカウント発行者キーは、サービスアカウントトークンに署名するために使用されるRSA秘密鍵です。 +サービスアカウント発行者キーをローテーションする際には、既存のサービスアカウントトークンが無効にならないように、少なくとも1つの古いキーをファイルに保持する必要があります。 +`k3s certificate rotate-ca`を使用して、新しい`service.key`ファイルをインストールすることで、クラスタCAとは独立してローテーションできます。 + +:::warning +`/var/lib/rancher/k3s/server/tls`の現在使用中のデータを上書きしてはいけません。 +更新されたキーを別のディレクトリにステージングしてください。 +::: + +例えば、サービスアカウント発行者キーのみをローテーションするには、以下のコマンドを実行します: +```bash +# 証明書生成のための一時ディレクトリを作成 +mkdir -p /opt/k3s/server/tls + +# OpenSSLバージョンを確認 +openssl version | grep -qF 'OpenSSL 3' && OPENSSL_GENRSA_FLAGS=-traditional + +# 新しいキーを生成 +openssl genrsa ${OPENSSL_GENRSA_FLAGS:-} -out /opt/k3s/server/tls/service.key 2048 + +# 現在のトークンを無効にしないように既存のキーを追加 +cat /var/lib/rancher/k3s/server/tls/service.key >> /opt/k3s/server/tls/service.key + +# 更新されたキーをデータストアにロード +k3s certificate rotate-ca --path=/opt/k3s/server +``` + +更新されていないファイルに対する警告が表示されるのは正常です。`rotate-ca`コマンドがエラーを返した場合、サービスログでエラーを確認してください。 +コマンドが正常に完了した場合、クラスタ内のすべてのサーバーでK3sを再起動します。エージェントやポッドを再起動する必要はありません。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/cli/cli.md b/i18n/ja/docusaurus-plugin-content-docs/current/cli/cli.md new file mode 100644 index 000000000..feac0ddd4 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/cli/cli.md @@ -0,0 +1,19 @@ +--- +title: CLIツール +--- + +K3sバイナリには、クラスターを管理するための追加ツールが多数含まれています。 + +コマンド | 説明 +--------|------------------ +`k3s server`| K3sサーバーノードを実行し、Kubernetesの`apiserver`、`scheduler`、`controller-manager`、および`cloud-controller-manager`コンポーネントに加えて、データストアとエージェントコンポーネントを起動します。詳細は[`k3s server`コマンドのドキュメント](server.md)を参照してください。 +`k3s agent`| K3sエージェントノードを実行し、`containerd`、`flannel`、`kube-router`ネットワークポリシーコントローラー、およびKubernetesの`kubelet`と`kube-proxy`コンポーネントを起動します。詳細は[`k3s agent`コマンドのドキュメント](agent.md)を参照してください。 +`k3s kubectl`| 組み込みの[`kubectl`コマンド](https://kubernetes.io/docs/reference/kubectl)を実行します。これはKubernetesのapiserverと対話するためのCLIです。`KUBECONFIG`環境変数が設定されていない場合、自動的に`/etc/rancher/k3s/k3s.yaml`のkubeconfigを使用しようとします。 +`k3s crictl`| 組み込みの[`crictl`コマンド](https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md)を実行します。これはKubernetesのコンテナランタイムインターフェース(CRI)と対話するためのCLIです。デバッグに便利です。 +`k3s ctr`| 組み込みの[`ctr`コマンド](https://github.com/projectatomic/containerd/blob/master/docs/cli.md)を実行します。これはK3sで使用されるコンテナデーモンであるcontainerdのCLIです。デバッグに便利です。 +`k3s token` | ブートストラップトークンを管理します。詳細は[`k3s token`コマンドのドキュメント](token.md)を参照してください。 +`k3s etcd-snapshot` | K3sクラスターのデータのオンデマンドバックアップを実行し、S3にアップロードします。詳細は[`k3s etcd-snapshot`コマンドのドキュメント](etcd-snapshot.md)を参照してください。 +`k3s secrets-encrypt` | K3sを構成して、クラスターに保存する際にシークレットを暗号化します。詳細は[`k3s secrets-encrypt`コマンドのドキュメント](secrets-encrypt.md)を参照してください。 +`k3s certificate` | K3s証明書を管理します。詳細は[`k3s certificate`コマンドのドキュメント](certificate.md)を参照してください。 +`k3s completion` | k3sのシェル補完スクリプトを生成します。 +`k3s help`| コマンドのリストまたは1つのコマンドのヘルプを表示します。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/cli/etcd-snapshot.md b/i18n/ja/docusaurus-plugin-content-docs/current/cli/etcd-snapshot.md new file mode 100644 index 000000000..bd5edda5b --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/cli/etcd-snapshot.md @@ -0,0 +1,170 @@ +--- +title: etcd-snapshot +--- + +# k3s etcd-snapshot + +:::info Version Gate + +[v1.19.1+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.19.1%2Bk3s1)から利用可能 + +::: + +このセクションでは、K3sの組み込みetcdデータストアのバックアップを作成し、バックアップからクラスターを復元する方法を学びます。 + +#### スナップショットの作成 + +スナップショットはデフォルトで有効になっており、システム時間の00:00と12:00に実行され、5つのスナップショットが保持されます。スナップショットの間隔や保持するスナップショットの数を設定するには、[オプション](#options)を参照してください。 + +スナップショットディレクトリのデフォルトは`${data-dir}/server/db/snapshots`です。data-dirの値はデフォルトで`/var/lib/rancher/k3s`に設定されており、`--data-dir`フラグを設定することで変更できます。 + +#### スナップショットからクラスターを復元する + +K3sがバックアップから復元されると、古いデータディレクトリは`${data-dir}/server/db/etcd-old/`に移動されます。その後、K3sは新しいデータディレクトリを作成し、新しいK3sクラスターを1つのetcdメンバーで開始してスナップショットを復元しようとします。 + +バックアップからクラスターを復元するには: + + + + +`--cluster-reset`オプションと`--cluster-reset-restore-path`を指定してK3sを実行します: + +```bash +k3s server \ + --cluster-reset \ + --cluster-reset-restore-path= +``` + +**結果:** ログにK3sをフラグなしで再起動できるというメッセージが表示されます。再度k3sを開始すると、指定されたスナップショットから正常に実行され、復元されます。 + + + + + +この例では、3つのサーバー`S1`、`S2`、および`S3`があります。スナップショットは`S1`にあります。 + +1. `S1`で、`--cluster-reset`オプションと`--cluster-reset-restore-path`を指定してK3sを開始します: + + ```bash + k3s server \ + --cluster-reset \ + --cluster-reset-restore-path= + ``` + + **結果:** ログにK3sをフラグなしで再起動できるというメッセージが表示されます。 + +2. `S2`と`S3`で、K3sを停止します。その後、データディレクトリ`/var/lib/rancher/k3s/server/db/`を削除します: + + ```bash + systemctl stop k3s + rm -rf /var/lib/rancher/k3s/server/db/ + ``` + +3. `S1`で、再度K3sを開始します: + + ```bash + systemctl start k3s + ``` + +4. `S2`と`S3`で、再度K3sを開始して復元されたクラスターに参加します: + + ```bash + systemctl start k3s + ``` + + + + +#### オプション + +これらのオプションはコマンドラインで渡すことも、[設定ファイル](../installation/configuration.md#configuration-file)で使用することもできます。 + +| オプション | 説明 | +| ----------- | --------------- | +| `--etcd-disable-snapshots` | 自動etcdスナップショットを無効にする | +| `--etcd-snapshot-schedule-cron` 値 | スナップショット間隔のcron形式。例:5時間ごと `0 */5 * * *`(デフォルト:`0 */12 * * *`) | +| `--etcd-snapshot-retention` 値 | 保持するスナップショットの数(デフォルト:5) | +| `--etcd-snapshot-dir` 値 | DBスナップショットを保存するディレクトリ。(デフォルトの場所:`${data-dir}/db/snapshots`) | +| `--cluster-reset` | すべてのピアを忘れて新しいクラスターの唯一のメンバーになる。環境変数`[$K3S_CLUSTER_RESET]`でも設定可能。 | +| `--cluster-reset-restore-path` 値 | 復元するスナップショットファイルのパス | + +#### S3互換APIサポート + +K3sは、S3互換APIを持つシステムにetcdスナップショットを保存および復元することをサポートしています。S3サポートは、オンデマンドおよびスケジュールされたスナップショットの両方で利用可能です。 + +以下の引数は`server`サブコマンドに追加されています。これらのフラグは`etcd-snapshot`サブコマンドにも存在しますが、冗長性を避けるために`--etcd-s3`部分は削除されています。 + +| オプション | 説明 | +| ----------- | --------------- | +| `--etcd-s3` | S3へのバックアップを有効にする | +| `--etcd-s3-endpoint` | S3エンドポイントURL | +| `--etcd-s3-endpoint-ca` | S3エンドポイントに接続するためのカスタムCA証明書 | +| `--etcd-s3-skip-ssl-verify` | S3 SSL証明書の検証を無効にする | +| `--etcd-s3-access-key` | S3アクセスキー | +| `--etcd-s3-secret-key` | S3シークレットキー | +| `--etcd-s3-bucket` | S3バケット名 | +| `--etcd-s3-region` | S3リージョン/バケットの場所(オプション)。デフォルトはus-east-1 | +| `--etcd-s3-folder` | S3フォルダー | + +オンデマンドでetcdスナップショットを作成し、S3に保存するには: + +```bash +k3s etcd-snapshot save \ + --s3 \ + --s3-bucket= \ + --s3-access-key= \ + --s3-secret-key= +``` + +オンデマンドでS3からetcdスナップショットを復元するには、まずK3sが実行されていないことを確認します。その後、以下のコマンドを実行します: + +```bash +k3s server \ + --cluster-init \ + --cluster-reset \ + --etcd-s3 \ + --cluster-reset-restore-path= \ + --etcd-s3-bucket= \ + --etcd-s3-access-key= \ + --etcd-s3-secret-key= +``` + +#### Etcdスナップショットと復元のサブコマンド + +k3sは、etcdスナップショットを操作するための一連のサブコマンドをサポートしています。 + +| サブコマンド | 説明 | +| ----------- | --------------- | +| delete | 指定されたスナップショットを削除 | +| ls, list, l | スナップショットの一覧表示 | +| prune | 設定された保持数を超えるスナップショットを削除 | +| save | 即時のetcdスナップショットをトリガー | + +:::note +`save`サブコマンドは`k3s etcd-snapshot`と同じです。後者は最終的に前者に置き換えられる予定です。 +::: + +これらのコマンドは、etcdスナップショットがローカルに保存されている場合でも、S3互換のオブジェクトストアに保存されている場合でも、期待通りに動作します。 + +etcdスナップショットのサブコマンドに関する追加情報は、`k3s etcd-snapshot`を実行して確認してください。 + +S3からスナップショットを削除します。 + +```bash +k3s etcd-snapshot delete \ + --s3 \ + --s3-bucket= \ + --s3-access-key= \ + --s3-secret-key= \ + +``` + +デフォルトの保持ポリシー(5)でローカルスナップショットを削除します。`prune`サブコマンドには、デフォルトの保持ポリシーを上書きするための追加フラグ`--snapshot-retention`があります。 + +```bash +k3s etcd-snapshot prune +``` + +```bash +k3s etcd-snapshot prune --snapshot-retention 10 +``` \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/cli/secrets-encrypt.md b/i18n/ja/docusaurus-plugin-content-docs/current/cli/secrets-encrypt.md new file mode 100644 index 000000000..3b07273b7 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/cli/secrets-encrypt.md @@ -0,0 +1,330 @@ +--- +title: secrets-encrypt +--- + +# k3s secrets-encrypt + +K3sは、保存時のシークレット暗号化を有効にすることをサポートしています。詳細については、[Secrets Encryption](../security/secrets-encryption.md)を参照してください。 + +## シークレット暗号化ツール + +:::info バージョンゲート +[v1.21.8+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.21.8%2Bk3s1)から利用可能 +::: + +K3sには、以下の自動制御を可能にするCLIツール`secrets-encrypt`が含まれています: + +- シークレット暗号化の無効化/有効化 +- 新しい暗号化キーの追加 +- 暗号化キーのローテーションと削除 +- シークレットの再暗号化 + +:::warning +暗号化キーのローテーションの適切な手順に従わないと、クラスターが永久に破損する可能性があります。慎重に進めてください。 +::: + +### 新しい暗号化キーのローテーション(実験的) + +:::info バージョンゲート +[v1.28.1+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.28.1%2Bk3s1)から利用可能。この新しいバージョンのツールは、現在ベータ版のK8s [自動設定リロード](https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/#configure-automatic-reloading)を利用しています。GAはv1.29.0で予定されています。 + +古いリリースについては、[Encryption Key Rotation Classic](#encryption-key-rotation-classic)を参照してください。 +::: + + + +シングルサーバークラスターでシークレット暗号化キーをローテーションするには: + +1. フラグ`--secrets-encryption`を使用してK3sサーバーを起動します。 + + :::note + 暗号化なしでK3sを起動し、後で有効にすることは現在サポートされていません。 + ::: + +2. シークレット暗号化キーをローテーションします。 + ``` + k3s secrets-encrypt rotate-keys + ``` + +3. 再暗号化が完了するのを待ちます。サーバーログを監視するか、以下を待ちます: + ```bash + $ k3s secrets-encrypt status + Encryption Status: Enabled + Current Rotation Stage: reencrypt_finished + ``` + + + + +HAセットアップでシークレット暗号化キーをローテーションするには: + +1. すべてのK3sサーバーを`--secrets-encryption`フラグで起動します。簡略化のため、サーバーをS1、S2、S3と呼びます。 + + :::note + 暗号化なしでK3sを起動し、後で有効にすることは現在サポートされていません。 + ::: + +2. S1でシークレット暗号化キーをローテーションします。 + + ```bash + k3s secrets-encrypt rotate-keys + ``` + +3. 再暗号化が完了するのを待ちます。サーバーログを監視するか、以下を待ちます: + ```bash + $ k3s secrets-encrypt status + Encryption Status: Enabled + Current Rotation Stage: reencrypt_finished + ``` + :::info + K3sは1秒あたり約5つのシークレットを再暗号化します。シークレットの数が多いクラスターでは、再暗号化に数分かかることがあります。サーバーログで進行状況を確認できます。 + ::: + +4. 同じ引数でS1のK3sを再起動します。K3sをサービスとして実行している場合: + ```bash + # systemdを使用している場合 + systemctl restart k3s + # openrcを使用している場合 + rc-service k3s restart + ``` + +5. S1が起動したら、S2とS3のK3sを再起動します。 + + + + +### 暗号化キーのローテーションクラシック + + + + +シングルサーバークラスターでシークレット暗号化キーをローテーションするには: + +1. フラグ`--secrets-encryption`を使用してK3sサーバーを起動します。 + + :::note + 暗号化なしでK3sを起動し、後で有効にすることは現在サポートされていません。 + ::: + +2. 準備します。 + + ```bash + k3s secrets-encrypt prepare + ``` + +3. 同じ引数でK3sサーバーを再起動します。K3sをサービスとして実行している場合: + ```bash + # systemdを使用している場合 + systemctl restart k3s + # openrcを使用している場合 + rc-service k3s restart + ``` + +4. ローテーションします。 + + ```bash + k3s secrets-encrypt rotate + ``` + +5. 同じ引数でK3sサーバーを再起動します。 +6. 再暗号化します。 + :::info + K3sは1秒あたり約5つのシークレットを再暗号化します。 + シークレットの数が多いクラスターでは、再暗号化に数分かかることがあります。 + ::: + ```bash + k3s secrets-encrypt reencrypt + ``` + + + + +埋め込みDBと外部DBクラスターの両方で手順は同じです。 + +HAセットアップでシークレット暗号化キーをローテーションするには: + +1. すべてのK3sサーバーを`--secrets-encryption`フラグで起動します。簡略化のため、サーバーをS1、S2、S3と呼びます。 + :::note Notes + - 暗号化なしでK3sを起動し、後で有効にすることは現在サポートされていません。 + - 必須ではありませんが、`secrets-encrypt`コマンドを実行するサーバーノードを1つ選ぶことをお勧めします。 + ::: + +2. S1で準備します。 + + ```bash + k3s secrets-encrypt prepare + ``` + +3. 同じ引数でS1を再起動します。K3sをサービスとして実行している場合: + ```bash + # systemdを使用している場合 + systemctl restart k3s + # openrcを使用している場合 + rc-service k3s restart + ``` + +4. S1が起動したら、S2とS3を再起動します。 + +5. S1でローテーションします。 + + ```bash + k3s secrets-encrypt rotate + ``` + +6. 同じ引数でS1を再起動します。 +7. S1が起動したら、S2とS3を再起動します。 + +8. S1で再暗号化します。 + :::info + K3sは1秒あたり約5つのシークレットを再暗号化します。 + シークレットの数が多いクラスターでは、再暗号化に数分かかることがあります。 + ::: + ```bash + k3s secrets-encrypt reencrypt + ``` + +9. 同じ引数でS1を再起動します。 +10. S1が起動したら、S2とS3を再起動します。 + + + + +### シークレット暗号化の無効化/再有効化 + + + +`--secrets-encryption`フラグを使用してサーバーを起動した後、シークレット暗号化を無効にすることができます。 + +シングルノードクラスターでシークレット暗号化を無効にするには: + +1. 無効化します。 + + ```bash + k3s secrets-encrypt disable + ``` + +2. 同じ引数でK3sサーバーを再起動します。K3sをサービスとして実行している場合: + ```bash + # systemdを使用している場合 + systemctl restart k3s + # openrcを使用している場合 + rc-service k3s restart + ``` + +3. フラグを使用して再暗号化します。 + + ```bash + k3s secrets-encrypt reencrypt --force --skip + ``` + +シングルノードクラスターでシークレット暗号化を再有効化するには: + +1. 有効化します。 + + ```bash + k3s secrets-encrypt enable + ``` + +2. 同じ引数でK3sサーバーを再起動します。 + +3. フラグを使用して再暗号化します。 + + ```bash + k3s secrets-encrypt reencrypt --force --skip + ``` + + + + +`--secrets-encryption`フラグを使用してHAクラスターを起動した後、シークレット暗号化を無効にすることができます。 + +:::note +必須ではありませんが、`secrets-encrypt`コマンドを実行するサーバーノードを1つ選ぶことをお勧めします。 +::: + +簡略化のため、このガイドで使用する3つのサーバーをS1、S2、S3と呼びます。 + +HAクラスターでシークレット暗号化を無効にするには: + +1. S1で無効化します。 + + ```bash + k3s secrets-encrypt disable + ``` + +2. 同じ引数でS1を再起動します。K3sをサービスとして実行している場合: + ```bash + # systemdを使用している場合 + systemctl restart k3s + # openrcを使用している場合 + rc-service k3s restart + ``` + +3. S1が起動したら、S2とS3を再起動します。 + +4. S1でフラグを使用して再暗号化します。 + + ```bash + k3s secrets-encrypt reencrypt --force --skip + ``` + +HAクラスターでシークレット暗号化を再有効化するには: + +1. S1で有効化します。 + + ```bash + k3s secrets-encrypt enable + ``` + +2. 同じ引数でS1を再起動します。 +3. S1が起動したら、S2とS3を再起動します。 + +4. S1でフラグを使用して再暗号化します。 + + ```bash + k3s secrets-encrypt reencrypt --force --skip + ``` + + + + +### シークレット暗号化のステータス +secrets-encryptツールには、ノード上のシークレット暗号化の現在のステータスに関する情報を表示する`status`コマンドが含まれています。 + +シングルサーバーノードでのコマンドの例: +```bash +$ k3s secrets-encrypt status +Encryption Status: Enabled +Current Rotation Stage: start +Server Encryption Hashes: All hashes match + +Active Key Type Name +------ -------- ---- + * AES-CBC aescbckey + +``` + +HAクラスターでの別の例、キーをローテーションした後、サーバーを再起動する前: +```bash +$ k3s secrets-encrypt status +Encryption Status: Enabled +Current Rotation Stage: rotate +Server Encryption Hashes: hash does not match between node-1 and node-2 + +Active Key Type Name +------ -------- ---- + * AES-CBC aescbckey-2021-12-10T22:54:38Z + AES-CBC aescbckey + +``` + +各セクションの詳細は以下の通りです: + +- __Encryption Status__: ノード上でシークレット暗号化が無効か有効かを表示します。 +- __Current Rotation Stage__: ノード上の現在のローテーションステージを示します。 + ステージは:`start`、`prepare`、`rotate`、`reencrypt_request`、`reencrypt_active`、`reencrypt_finished`です。 +- __Server Encryption Hashes__: HAクラスターに役立ちます。これは、すべてのサーバーがローカルファイルと同じステージにあるかどうかを示します。次のステージに進む前にサーバーの再起動が必要かどうかを確認するために使用できます。上記のHAの例では、node-1とnode-2のハッシュが異なり、現在同じ暗号化設定を持っていないことを示しています。サーバーを再起動すると、設定が同期されます。 +- __Key Table__: ノード上で見つかったシークレット暗号化キーに関する情報を要約します。 + * __Active__: "*"は、現在シークレット暗号化に使用されているキーを示します。アクティブなキーは、Kubernetesが新しいシークレットを暗号化するために使用します。 + * __Key Type__: このツールを使用するすべてのキーは`AES-CBC`タイプです。詳細は[こちら](https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/#providers)を参照してください。 + * __Name__: 暗号化キーの名前。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/cli/server.md b/i18n/ja/docusaurus-plugin-content-docs/current/cli/server.md new file mode 100644 index 000000000..55e93f328 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/cli/server.md @@ -0,0 +1,291 @@ +--- +title: server +--- + +# k3s サーバー + +このセクションでは、K3s サーバーの設定方法を学びます。 + +サーバーはエージェントも実行するため、[`k3s エージェント` ドキュメント](agent.md)に記載されているすべての設定オプションはサーバーでもサポートされています。 + +オプションは CLI フラグとしてこのページに記載されていますが、設定ファイルオプションとしても渡すことができます。YAML 設定ファイルの使用については、[設定ファイル](../installation/configuration.md#configuration-file)のドキュメントを参照してください。 + +## 重要な設定値 + +以下のオプションは、クラスタ内のすべてのサーバーで同じ値に設定する必要があります。これを行わないと、埋め込み etcd を使用している場合は新しいサーバーがクラスタに参加できなくなり、外部データストアを使用している場合はクラスタの動作が不正確になります。 + +* `--agent-token` +* `--cluster-cidr` +* `--cluster-dns` +* `--cluster-domain` +* `--disable-cloud-controller` +* `--disable-helm-controller` +* `--disable-network-policy` +* `--disable=servicelb` *注: 他のパッケージ化されたコンポーネントはサーバーごとに無効にすることができます* +* `--egress-selector-mode` +* `--embedded-registry` +* `--flannel-backend` +* `--flannel-external-ip` +* `--flannel-ipv6-masq` +* `--secrets-encryption` +* `--service-cidr` + +## よく使用されるオプション + +### データベース + +| フラグ | 環境変数 | デフォルト | 説明 | +|---------------------------------------|--------------------------|------------------------------------|-------------------------------------------------------------------------------| +| `--datastore-endpoint` 値 | `K3S_DATASTORE_ENDPOINT` | | etcd、Mysql、Postgres、または Sqlite のデータソース名を指定 | +| `--datastore-cafile` 値 | `K3S_DATASTORE_CAFILE` | | データストアバックエンド通信を保護するために使用される TLS 証明書ファイル | +| `--datastore-certfile` 値 | `K3S_DATASTORE_CERTFILE` | | データストアバックエンド通信を保護するために使用される TLS 認証ファイル | +| `--datastore-keyfile` 値 | `K3S_DATASTORE_KEYFILE` | | データストアバックエンド通信を保護するために使用される TLS キーファイル | +| `--etcd-expose-metrics` | | false | クライアントインターフェースに etcd メトリクスを公開 | +| `--etcd-disable-snapshots` | | false | 自動 etcd スナップショットを無効にする | +| `--etcd-snapshot-name` 値 | | "etcd-snapshot-<unix-timestamp>" | etcd スナップショットのベース名を設定 | +| `--etcd-snapshot-schedule-cron` 値 | | "0 */12 \* \* \*" | cron 仕様でのスナップショット間隔時間。例: 5 時間ごと '0 */5 _ \* _' | +| `--etcd-snapshot-retention` 値 | | 5 | 保持するスナップショットの数 | +| `--etcd-snapshot-dir` 値 | | $\{data-dir\}/db/snapshots | DB スナップショットを保存するディレクトリ | +| `--etcd-s3` | | | S3 へのバックアップを有効にする | +| `--etcd-s3-endpoint` 値 | | "s3.amazonaws.com" | S3 エンドポイント URL | +| `--etcd-s3-endpoint-ca` 値 | | | S3 エンドポイントに接続するためのカスタム CA 証明書 | +| `--etcd-s3-skip-ssl-verify` | | | S3 SSL 証明書の検証を無効にする | +| `--etcd-s3-access-key` 値 | `AWS_ACCESS_KEY_ID` | | S3 アクセスキー | +| `--etcd-s3-secret-key` 値 | `AWS_SECRET_ACCESS_KEY` | | S3 シークレットキー | +| `--etcd-s3-bucket` 値 | | | S3 バケット名 | +| `--etcd-s3-region` 値 | | "us-east-1" | S3 リージョン / バケットの場所 (オプション) | +| `--etcd-s3-folder` 値 | | | S3 フォルダー | +| `--etcd-s3-insecure` | | | HTTPS 経由の S3 を無効にする | +| `--etcd-s3-timeout` 値 | | 5m0s | S3 タイムアウト (デフォルト: 5m0s) | + +### クラスタオプション + +| フラグ | 環境変数 | 説明 | +| ------------------------- | -------------------- | --------------------------------------------------------- | +| `--token` 値, `-t` 値 | `K3S_TOKEN` | サーバーまたはエージェントをクラスタに参加させるために使用される共有シークレット | +| `--token-file` 値 | `K3S_TOKEN_FILE` | クラスタシークレット/トークンを含むファイル | +| `--agent-token` 値 |`K3S_AGENT_TOKEN` | エージェントをクラスタに参加させるために使用される共有シークレット (サーバーには使用されません) +| `--agent-token-file` 値 |`K3S_AGENT_TOKEN_FILE` | エージェントシークレットを含むファイル +| `--server` 値 | `K3S_URL` | クラスタに参加するために接続するサーバー +| `--cluster-init` | `K3S_CLUSTER_INIT` | 埋め込み Etcd を使用して新しいクラスタを初期化 +| `--cluster-reset` | `K3S_CLUSTER_RESET` | すべてのピアを忘れて新しいクラスタの唯一のメンバーになる + +### 管理用 Kubeconfig オプション + +| フラグ | 環境変数 | 説明 | +|------|----------------------|-------------| +| `--write-kubeconfig` 値, `-o` 値 | `K3S_KUBECONFIG_OUTPUT` | 管理クライアントの kubeconfig をこのファイルに書き込む | +| `--write-kubeconfig-mode` 値 | `K3S_KUBECONFIG_MODE` | この[モード](https://en.wikipedia.org/wiki/Chmod)で kubeconfig を書き込む。kubeconfig ファイルは root によって所有され、デフォルトモード 600 で書き込まれます。モードを 644 に変更すると、ホスト上の他の特権のないユーザーが読み取れるようになります。 | + +## 高度なオプション + +### ロギング + +| フラグ | デフォルト | 説明 | +| ----------------------- | ------- | --------------------------------------------------------------------------------- | +| `--debug` | N/A | デバッグログをオンにする | +| `-v` 値 | 0 | ログレベルの詳細度の数値 | +| `--vmodule` 値 | N/A | ファイルフィルタリングログの FILE_PATTERN=LOG_LEVEL 設定のカンマ区切りリスト | +| `--log` 値, `-l` 値 | N/A | ファイルにログを記録 | +| `--alsologtostderr` | N/A | ファイル (設定されている場合) と標準エラーにログを記録 | + +### リスナー + +| フラグ | デフォルト | 説明 | +| --------------------------- | ------------------------ | -------------------------------------------------------------------------------------------- | +| `--bind-address` 値 | 0.0.0.0 | k3s バインドアドレス | +| `--https-listen-port` 値 | 6443 | HTTPS リッスンポート | +| `--advertise-address` 値 | node-external-ip/node-ip | apiserver がサービスエンドポイントとして広告する IPv4/IPv6 アドレス
注: プライマリ `service-cidr` IP 範囲は広告されるアドレスと同じアドレスファミリである必要があります | +| `--advertise-port` 値 | listen-port/0 | apiserver がクラスタのメンバーに広告するために使用するポート | +| `--tls-san` 値 | N/A | TLS 証明書のサブジェクト代替名として追加のホスト名または IPv4/IPv6 アドレスを追加 | + +### データ + +| フラグ | デフォルト | 説明 | +| ---------------------------- | ------------------------------------------------------------ | -------------------- | +| `--data-dir` 値, `-d` 値 | `/var/lib/rancher/k3s` または root でない場合は `${HOME}/.rancher/k3s` | 状態を保持するフォルダー | + +### シークレット暗号化 + +| フラグ | デフォルト | 説明 | +| ---------------------- | ------- | -------------------------------- | +| `--secrets-encryption` | false | シークレットの静止時の暗号化を有効にする | + + +### ネットワーキング + +| フラグ | デフォルト | 説明 | +| --------------------------------- | --------------- | ------------------------------------------------------------------------------------------ | +| `--cluster-cidr` value | "10.42.0.0/16" | Pod IPに使用するIPv4/IPv6ネットワークCIDR | +| `--service-cidr` value | "10.43.0.0/16" | サービスIPに使用するIPv4/IPv6ネットワークCIDR | +| `--service-node-port-range` value | "30000-32767" | NodePort可視性を持つサービスのために予約するポート範囲 | +| `--cluster-dns` value | "10.43.0.10" | corednsサービスのためのIPv4クラスターIP。service-cidr範囲内である必要があります | +| `--cluster-domain` value | "cluster.local" | クラスタードメイン | +| `--flannel-backend` value | "vxlan" | 'none', 'vxlan', 'ipsec'(非推奨), 'host-gw', 'wireguard-native', または 'wireguard'(非推奨) のいずれか | +| `--flannel-ipv6-masq` | "N/A" | PodのためのIPv6マスカレードを有効にする | +| `--flannel-external-ip` | "N/A" | Flannelトラフィックのためにノードの外部IPアドレスを使用 | +| `--servicelb-namespace` value | "kube-system" | servicelbコンポーネントのPodのネームスペース | +| `--egress-selector-mode` value | "agent" | 次のいずれかでなければなりません:
  • disabled: apiserverはノードと通信するためにエージェントトンネルを使用しません。サーバーがエージェントを実行し、kubeletに直接接続できる必要があります。そうでないと、apiserverはサービスエンドポイントにアクセスしたり、kubectl execやkubectl logsを実行できません。
  • agent: apiserverはノードと通信するためにエージェントトンネルを使用します。ノードはループバックアドレスからのトンネル接続を許可します。サーバーもエージェントを実行する必要があります。そうでないと、apiserverはサービスエンドポイントにアクセスできません。k3sの歴史的なデフォルトです。
  • pod: apiserverはノードとサービスエンドポイントと通信するためにエージェントトンネルを使用し、ノードを監視して正しいエージェントにエンドポイント接続をルーティングします。ノードはループバックアドレスまたはノードに割り当てられたCIDRからのトンネル接続を許可します。
  • cluster: apiserverはノードとサービスエンドポイントと通信するためにエージェントトンネルを使用し、エンドポイントを監視して正しいエージェントにエンドポイント接続をルーティングします。ノードはループバックアドレスまたは設定されたクラスタCIDR範囲からのトンネル接続を許可します。
| + + +### ストレージクラス + +| フラグ | 説明 | +| ------------------------------------ | -------------------------------------------------------------- | +| `--default-local-storage-path` value | ローカルプロビジョナーストレージクラスのデフォルトローカルストレージパス | + +### Kubernetesコンポーネント + +| フラグ | 説明 | +| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `--disable` value | "[`--disable`フラグの使用](../installation/packaged-components.md#using-the---disable-flag)" を参照 | +| `--disable-scheduler` | Kubernetesデフォルトスケジューラを無効にする | +| `--disable-cloud-controller` | k3sデフォルトクラウドコントローラーマネージャーを無効にする | +| `--disable-kube-proxy` | kube-proxyの実行を無効にする | +| `--disable-network-policy` | k3sデフォルトネットワークポリシーコントローラーを無効にする | +| `--disable-helm-controller` | Helmコントローラーを無効にする | + + +### Kubernetesプロセスのカスタマイズフラグ + +| フラグ | 説明 | +| ------------------------------------------- | --------------------------------------------------------- | +| `--etcd-arg` value | etcdプロセスのカスタマイズフラグ | +| `--kube-apiserver-arg` value | kube-apiserverプロセスのカスタマイズフラグ | +| `--kube-scheduler-arg` value | kube-schedulerプロセスのカスタマイズフラグ | +| `--kube-controller-manager-arg` value | kube-controller-managerプロセスのカスタマイズフラグ | +| `--kube-cloud-controller-manager-arg` value | kube-cloud-controller-managerプロセスのカスタマイズフラグ | +| `--kubelet-arg` value | kubeletプロセスのカスタマイズフラグ | +| `--kube-proxy-arg` value | kube-proxyプロセスのカスタマイズフラグ | + +### 実験的オプション + +| フラグ | 説明 | +| ---------------------- | ---------------------------------------- | +| `--rootless` | ルートレスで実行 | +| `--enable-pprof` | スーパーバイザーポートでpprofエンドポイントを有効にする | +| `--docker` | containerdの代わりにcri-dockerdを使用 | +| `--prefer-bundled-bin` | ホストバイナリよりもバンドルされたユーザースペースバイナリを優先 | +| `--disable-agent` | "[エージェントレスサーバーの実行(実験的)](../advanced.md#running-agentless-servers-experimental)" を参照 | +| `--embedded-registry` | "[埋め込みレジストリミラー](../installation/registry-mirror.md)" を参照 | + + +### 非推奨オプション + +| フラグ | 環境変数 | 説明 | +| --------------------------------------- | -------------------- | ----------------------------------------------------------------------------------------------------------- | +| `--no-flannel` | N/A | `--flannel-backend=none` を使用 | +| `--no-deploy` value | N/A | `--disable` を使用 | +| `--cluster-secret` value | `K3S_CLUSTER_SECRET` | `--token` を使用 | +| `--flannel-backend` wireguard | N/A | `--flannel-backend=wireguard-native` を使用 | +| `--flannel-backend` value=option1=value | N/A | バックエンド構成でflannel構成ファイルを指定するには `--flannel-conf` を使用 | + + +## K3sサーバーCLIヘルプ + +> 以下に角括弧で表示されるオプション(例:`[$K3S_TOKEN]`)は、その名前の環境変数として渡すことができることを意味します。 + +```bash +NAME: + k3s server - 管理サーバーを実行 + +USAGE: + k3s server [OPTIONS] + +OPTIONS: + --config FILE, -c FILE (config) FILEから設定を読み込む(デフォルト: "/etc/rancher/k3s/config.yaml") [$K3S_CONFIG_FILE] + --debug (logging) デバッグログを有効にする [$K3S_DEBUG] + -v value (logging) ログレベルの詳細度の数値(デフォルト: 0) + --vmodule value (logging) ファイルフィルタリングログのためのFILE_PATTERN=LOG_LEVEL設定のカンマ区切りリスト + --log value, -l value (logging) ファイルにログを記録 + --alsologtostderr (logging) ファイルに加えて標準エラーにもログを記録(設定されている場合) + --bind-address value (listener) k3sバインドアドレス(デフォルト: 0.0.0.0) + --https-listen-port value (listener) HTTPSリッスンポート(デフォルト: 6443) + --advertise-address value (listener) クラスターのメンバーに広告するためにapiserverが使用するIPv4アドレス(デフォルト: node-external-ip/node-ip) + --advertise-port value (listener) クラスターのメンバーに広告するためにapiserverが使用するポート(デフォルト: listen-port) (デフォルト: 0) + --tls-san value (listener) サーバーTLS証明書のサブジェクト代替名として追加のホスト名またはIPv4/IPv6アドレスを追加 + --data-dir value, -d value (data) 状態を保持するフォルダー(デフォルト: /var/lib/rancher/k3s または ルートでない場合は ${HOME}/.rancher/k3s) + --cluster-cidr value (networking) Pod IPに使用するIPv4/IPv6ネットワークCIDR(デフォルト: 10.42.0.0/16) + --service-cidr value (networking) サービスIPに使用するIPv4/IPv6ネットワークCIDR(デフォルト: 10.43.0.0/16) + --service-node-port-range value (networking) NodePort可視性を持つサービスのために予約するポート範囲(デフォルト: "30000-32767") + --cluster-dns value (networking) corednsサービスのためのIPv4クラスターIP。service-cidr範囲内である必要があります(デフォルト: 10.43.0.10) + --cluster-domain value (networking) クラスタードメイン(デフォルト: "cluster.local") + --flannel-backend value (networking) backend<=option1=val1,option2=val2> ここでbackendは 'none', 'vxlan', 'ipsec' (非推奨), 'host-gw', 'wireguard-native', 'wireguard' (非推奨) のいずれか(デフォルト: "vxlan") + --flannel-ipv6-masq (networking) PodのためのIPv6マスカレードを有効にする + --flannel-external-ip (networking) Flannelトラフィックのためにノードの外部IPアドレスを使用 + --egress-selector-mode value (networking) 'agent', 'cluster', 'pod', 'disabled' のいずれか(デフォルト: "agent") + --servicelb-namespace value (networking) servicelbコンポーネントのPodのネームスペース(デフォルト: "kube-system") + --write-kubeconfig value, -o value (client) 管理クライアントのためのkubeconfigを書き込むファイル [$K3S_KUBECONFIG_OUTPUT] + --write-kubeconfig-mode value (client) このモードでkubeconfigを書き込む [$K3S_KUBECONFIG_MODE] + --token value, -t value (cluster) サーバーまたはエージェントをクラスターに参加させるために使用される共有シークレット [$K3S_TOKEN] + --token-file value (cluster) トークンを含むファイル [$K3S_TOKEN_FILE] +``` +```markdown + --agent-token value (cluster) エージェントをクラスターに参加させるための共有シークレット。ただしサーバーには使用しない [$K3S_AGENT_TOKEN] + --agent-token-file value (cluster) エージェントシークレットを含むファイル [$K3S_AGENT_TOKEN_FILE] + --server value, -s value (cluster) クラスターに参加するために接続するサーバー [$K3S_URL] + --cluster-init (cluster) 組み込みのEtcdを使用して新しいクラスターを初期化する [$K3S_CLUSTER_INIT] + --cluster-reset (cluster) すべてのピアを忘れ、新しいクラスターの唯一のメンバーになる [$K3S_CLUSTER_RESET] + --cluster-reset-restore-path value (db) 復元するスナップショットファイルのパス + --kube-apiserver-arg value (flags) kube-apiserverプロセスのカスタマイズフラグ + --etcd-arg value (flags) etcdプロセスのカスタマイズフラグ + --kube-controller-manager-arg value (flags) kube-controller-managerプロセスのカスタマイズフラグ + --kube-scheduler-arg value (flags) kube-schedulerプロセスのカスタマイズフラグ + --kube-cloud-controller-manager-arg value (flags) kube-cloud-controller-managerプロセスのカスタマイズフラグ + --datastore-endpoint value (db) etcd、Mysql、Postgres、またはSqlite(デフォルト)のデータソース名を指定する [$K3S_DATASTORE_ENDPOINT] + --datastore-cafile value (db) データストアバックエンド通信を保護するために使用されるTLS認証局ファイル [$K3S_DATASTORE_CAFILE] + --datastore-certfile value (db) データストアバックエンド通信を保護するために使用されるTLS認証ファイル [$K3S_DATASTORE_CERTFILE] + --datastore-keyfile value (db) データストアバックエンド通信を保護するために使用されるTLSキー ファイル [$K3S_DATASTORE_KEYFILE] + --etcd-expose-metrics (db) クライアントインターフェースにetcdメトリクスを公開する (デフォルト: false) + --etcd-disable-snapshots (db) 自動etcdスナップショットを無効にする + --etcd-snapshot-name value (db) etcdスナップショットの基本名を設定する (デフォルト: etcd-snapshot-) (デフォルト: "etcd-snapshot") + --etcd-snapshot-schedule-cron value (db) cron仕様でのスナップショット間隔時間。例: 5時間ごと '* */5 * * *' (デフォルト: "0 */12 * * *") + --etcd-snapshot-retention value (db) 保持するスナップショットの数 (デフォルト: 5) + --etcd-snapshot-dir value (db) データベーススナップショットを保存するディレクトリ (デフォルト: ${data-dir}/db/snapshots) + --etcd-snapshot-compress (db) etcdスナップショットを圧縮する + --etcd-s3 (db) S3へのバックアップを有効にする + --etcd-s3-endpoint value (db) S3エンドポイントURL (デフォルト: "s3.amazonaws.com") + --etcd-s3-endpoint-ca value (db) S3エンドポイントに接続するためのカスタムCA証明書 + --etcd-s3-skip-ssl-verify (db) S3 SSL証明書の検証を無効にする + --etcd-s3-access-key value (db) S3アクセスキー [$AWS_ACCESS_KEY_ID] + --etcd-s3-secret-key value (db) S3シークレットキー [$AWS_SECRET_ACCESS_KEY] + --etcd-s3-bucket value (db) S3バケット名 + --etcd-s3-region value (db) S3リージョン/バケットの場所 (オプション) (デフォルト: "us-east-1") + --etcd-s3-folder value (db) S3フォルダー + --etcd-s3-insecure (db) HTTPSを使用しないS3を無効にする + --etcd-s3-timeout value (db) S3タイムアウト (デフォルト: 5m0s) + --default-local-storage-path value (storage) ローカルプロビジョナーストレージクラスのデフォルトローカルストレージパス + --disable value (components) パッケージ化されたコンポーネントをデプロイせず、デプロイされたコンポーネントを削除する (有効な項目: coredns, servicelb, traefik, local-storage, metrics-server) + --disable-scheduler (components) Kubernetesのデフォルトスケジューラーを無効にする + --disable-cloud-controller (components) k3sのデフォルトクラウドコントローラーマネージャーを無効にする + --disable-kube-proxy (components) kube-proxyの実行を無効にする + --disable-network-policy (components) k3sのデフォルトネットワークポリシーコントローラーを無効にする + --disable-helm-controller (components) Helmコントローラーを無効にする + --node-name value (agent/node) ノード名 [$K3S_NODE_NAME] + --with-node-id (agent/node) ノード名にIDを追加する + --node-label value (agent/node) ラベルのセットでkubeletを登録および開始する + --node-taint value (agent/node) taintsのセットでkubeletを登録する + --image-credential-provider-bin-dir value (agent/node) クレデンシャルプロバイダープラグインバイナリが配置されているディレクトリのパス (デフォルト: "/var/lib/rancher/credentialprovider/bin") + --image-credential-provider-config value (agent/node) クレデンシャルプロバイダープラグインの設定ファイルのパス (デフォルト: "/var/lib/rancher/credentialprovider/config.yaml") + --docker (agent/runtime) (実験的) containerdの代わりにcri-dockerdを使用する + --container-runtime-endpoint value (agent/runtime) 組み込みのcontainerdを無効にし、指定されたパスのCRIソケットを使用する; --dockerと一緒に使用する場合、これはdockerソケットパスを設定する + --pause-image value (agent/runtime) containerdまたはdockerサンドボックス用のカスタマイズされたpauseイメージ (デフォルト: "rancher/mirrored-pause:3.6") + --snapshotter value (agent/runtime) デフォルトのcontainerdスナップショッターを上書きする (デフォルト: "overlayfs") + --private-registry value (agent/runtime) プライベートレジストリ設定ファイル (デフォルト: "/etc/rancher/k3s/registries.yaml") + --system-default-registry value (agent/runtime) すべてのシステムイメージに使用されるプライベートレジストリ [$K3S_SYSTEM_DEFAULT_REGISTRY] + --node-ip value, -i value (agent/networking) ノードの広告用IPv4/IPv6アドレス + --node-external-ip value (agent/networking) ノードの広告用外部IPv4/IPv6アドレス + --resolv-conf value (agent/networking) Kubeletのresolv.confファイル [$K3S_RESOLV_CONF] + --flannel-iface value (agent/networking) デフォルトのflannelインターフェースを上書きする + --flannel-conf value (agent/networking) デフォルトのflannel設定ファイルを上書きする + --flannel-cni-conf value (agent/networking) デフォルトのflannel cni設定ファイルを上書きする + --kubelet-arg value (agent/flags) kubeletプロセスのカスタマイズフラグ + --kube-proxy-arg value (agent/flags) kube-proxyプロセスのカスタマイズフラグ + --protect-kernel-defaults (agent/node) カーネルのチューニング動作。設定されている場合、カーネルのチューナブルがkubeletのデフォルトと異なる場合にエラーを発生させる。 + --secrets-encryption 保存時のシークレット暗号化を有効にする + --enable-pprof (実験的) スーパーバイザーポートでpprofエンドポイントを有効にする + --rootless (実験的) ルートレスで実行する + --prefer-bundled-bin (実験的) ホストバイナリよりもバンドルされたユーザースペースバイナリを優先する + --selinux (agent/node) containerdでSELinuxを有効にする [$K3S_SELINUX] + --lb-server-port value (agent/node) スーパーバイザークライアントロードバランサーのローカルポート。スーパーバイザーとapiserverが同じ場所にない場合、このポートより1つ少ない追加ポートもapiserverクライアントロードバランサーに使用される (デフォルト: 6444) [$K3S_LB_SERVER_PORT] +``` \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/cli/token.md b/i18n/ja/docusaurus-plugin-content-docs/current/cli/token.md new file mode 100644 index 000000000..0010a924e --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/cli/token.md @@ -0,0 +1,162 @@ +--- +title: token +--- + +# k3s トークン + +K3s はトークンを使用してノードの参加プロセスを保護します。トークンはクラスターを参加ノードに認証し、ノードをクラスターに認証します。 + +## トークン形式 + +K3s トークンはセキュア形式またはショート形式で指定できます。セキュア形式が推奨されます。これは、クライアントが資格情報を送信する前に参加するクラスターのアイデンティティを認証できるためです。 + +### セキュア + +セキュアトークン形式(「フル」トークンとも呼ばれることがあります)は、以下の部分で構成されます: + +`::` + +* `prefix`: トークン形式を識別する固定の `K10` プレフィックス +* `cluster CA hash`: 参加ノードにサーバーを認証するために使用されるクラスターのサーバー CA 証明書のハッシュ。 + * 自己署名 CA 証明書の場合、これはディスクに保存されている PEM 形式の証明書の SHA256 サムです。 + * カスタム CA 証明書の場合、これはルート証明書の DER エンコーディングの SHA256 サムです。一般に証明書のフィンガープリントとして知られています。 +* `credentials`: クラスターに参加するノードを認証するために使用されるユーザー名とパスワード、またはベアラートークン。 + +#### TLS ブートストラッピング + +セキュアトークンが指定されている場合、参加ノードは資格情報を送信する前に接続したサーバーのアイデンティティを検証するために以下の手順を実行します: +1. TLS 検証を無効にして、参加するサーバーの `/cacerts` から CA バンドルをダウンロードします。 +2. 上記の説明に従って CA 証明書の SHA256 ハッシュを計算します。 +3. 計算された SHA256 ハッシュをトークンのハッシュと比較します。 +4. ハッシュが一致する場合、サーバーが提示する証明書がサーバーの CA バンドルによって検証できることを確認します。 +5. サーバー証明書が有効である場合、トークンの種類に応じて基本認証またはベアラートークン認証を使用してクラスターに参加するための資格情報を提示します。 + +### ショート + +ショートトークン形式には、クラスターに参加するノードを認証するために使用されるパスワードまたはベアラートークンのみが含まれます。 + +ショートトークンが使用される場合、参加ノードはサーバーが提示する CA バンドルを暗黙的に信頼します。TLS ブートストラッピングプロセスのステップ 2-4 はスキップされます。初回接続は[中間者攻撃](https://en.wikipedia.org/wiki/Man-in-the-middle_attack)に対して脆弱である可能性があります。 + +## トークンの種類 + +K3s は 3 種類のトークンをサポートします。デフォルトではサーバートークンのみが利用可能で、追加のトークンタイプは管理者によって設定または作成される必要があります。 + +種類 | CLI オプション | 環境変数 +--------- | --------------- | -------------------- +サーバー | `--token` | `K3S_TOKEN` +エージェント | `--agent-token` | `K3S_AGENT_TOKEN` +ブートストラップ | `n/a` | `n/a` + +### サーバー + +クラスターの最初のサーバーを起動する際にトークンが提供されない場合、ランダムなパスワードでトークンが作成されます。サーバートークンは常にセキュア形式で `/var/lib/rancher/k3s/server/token` に書き込まれます。 + +サーバートークンは、サーバーノードとエージェントノードの両方をクラスターに参加させるために使用できます。一度クラスターが作成されると変更できず、サーバートークンにアクセスできる人はクラスターに対して完全な管理者アクセスを持つことになります。このトークンは慎重に保護する必要があります。 + +サーバートークンは、データストアに永続化される機密情報(シークレット暗号化設定、ワイヤーガードキー、クラスター CA 証明書およびサービスアカウントトークンの秘密鍵など)を暗号化するために使用されるキーの [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) パスフレーズとしても使用されます。このため、トークンはクラスターのデータストアと一緒にバックアップする必要があります。 + +:::warning +カスタム CA 証明書が使用されていない限り、クラスターの最初のサーバーを起動する際にはショート(パスワードのみ)トークン形式のみが使用できます。これは、サーバーが自己署名のクラスター CA 証明書を生成するまでクラスター CA ハッシュがわからないためです。 +::: + +カスタム CA 証明書の使用に関する詳細は、[`k3s certificate` ドキュメント](./certificate.md)を参照してください。 +クラスターのバックアップに関する詳細は、[バックアップとリストア](../datastore/backup-restore.md)ドキュメントを参照してください。 + +### エージェント + +デフォルトでは、エージェントトークンはサーバートークンと同じです。エージェントトークンは、クラスターが開始された後でも、すべてのサーバーの CLI オプションまたは環境変数を変更することで設定できます。エージェントトークンはサーバートークンと同様に静的に構成され、期限切れにはなりません。 + +エージェントトークンはセキュア形式で `/var/lib/rancher/k3s/server/agent-token` に書き込まれます。エージェントトークンが指定されていない場合、このファイルはサーバートークンへのリンクです。 + +### ブートストラップ + +:::info バージョンゲート +`k3s token` コマンドのサポートとブートストラップトークンを使用してノードに参加する機能は、2023-02 リリース(v1.26.2+k3s1、v1.25.7+k3s1、v1.24.11+k3s1、v1.23.17+k3s1)から利用可能です。 +::: + +K3s は動的に生成され、自動的に期限切れになるエージェントブートストラップトークンをサポートします。ブートストラップトークンはエージェントの参加にのみ使用できます。 + +## k3s トークン + +K3s ブートストラップトークンは `kubeadm token` ブートストラップトークンと同じ生成および検証コードを使用し、`k3s token` CLI も類似しています。 + +``` +NAME: + k3s token - ブートストラップトークンを管理する + +USAGE: + k3s token command [command options] [arguments...] + +COMMANDS: + create サーバー上でブートストラップトークンを作成する + delete サーバー上のブートストラップトークンを削除する + generate ブートストラップトークンを生成して表示するが、サーバー上には作成しない + list サーバー上のブートストラップトークンを一覧表示する + rotate 元のサーバートークンを新しいブートストラップトークンにローテートする + +OPTIONS: + --help, -h ヘルプを表示する +``` + +#### `k3s token create [token]` + +新しいトークンを作成します。`[token]` は `k3s token generate` によって生成された実際のトークンです。トークンが指定されていない場合、ランダムなトークンが生成されます。 + +クラスター CA ハッシュを含むセキュア形式のトークンが標準出力に書き込まれます。このコマンドの出力は保存する必要があります。トークンの秘密部分は再度表示できません。 + +フラグ | 説明 +---- | ---- +`--data-dir` 値 | 状態を保持するフォルダー(デフォルト: /var/lib/rancher/k3s または root でない場合は $\{HOME\}/.rancher/k3s) +`--kubeconfig` 値 | 接続するサーバー [$KUBECONFIG] +`--description` 値 | このトークンの使用方法に関する人間に優しい説明 +`--groups` 値 | 認証に使用されるときにこのトークンが認証する追加のグループ。(デフォルト: "system:bootstrappers:k3s:default-node-token") +`--ttl` 値 | トークンが自動的に削除されるまでの期間(例: 1s, 2m, 3h)。'0' に設定すると、トークンは期限切れになりません(デフォルト: 24h0m0s) +`--usages` 値 | このトークンが使用できる方法を説明します。(デフォルト: "signing,authentication") + +#### `k3s token delete` + +1 つ以上のトークンを削除します。完全なトークンまたはトークン ID のみを提供できます。 + +フラグ | 説明 +---- | ---- +`--data-dir` 値 | 状態を保持するフォルダー(デフォルト: /var/lib/rancher/k3s または root でない場合は $\{HOME\}/.rancher/k3s) +`--kubeconfig` 値 | 接続するサーバー [$KUBECONFIG] + +#### `k3s token generate` + +ランダムに生成されたブートストラップトークンを生成します。 + +トークンを生成するためにこのコマンドを使用する必要はありません。トークン ID が "[a-z0-9]{6}.[a-z0-9]{16}" の形式であり、最初の部分がトークン ID、2 番目の部分が秘密である限り、自分で生成することもできます。 + +フラグ | 説明 +---- | ---- +`--data-dir` 値 | 状態を保持するフォルダー(デフォルト: /var/lib/rancher/k3s または root でない場合は $\{HOME\}/.rancher/k3s) +`--kubeconfig` 値 | 接続するサーバー [$KUBECONFIG] + +#### `k3s token list` + +ブートストラップトークンを一覧表示し、その ID、説明、および残りの有効期間を表示します。 + +フラグ | 説明 +---- | ---- +`--data-dir` 値 | 状態を保持するフォルダー(デフォルト: /var/lib/rancher/k3s または root でない場合は $\{HOME\}/.rancher/k3s) +`--kubeconfig` 値 | 接続するサーバー [$KUBECONFIG] +`--output` 値 | 出力形式。 有効なオプション: text, json(デフォルト: "text") + +#### `k3s token rotate` + +:::info バージョンゲート +2023-10 リリース(v1.28.2+k3s1、v1.27.7+k3s1、v1.26.10+k3s1、v1.25.15+k3s1)から利用可能です。 +::: + +元のサーバートークンを新しいブートストラップトークンにローテートします。このコマンドを実行した後、すべてのサーバーおよび元のトークンで参加したエージェントは新しいトークンで再起動する必要があります。 + +新しいトークンを指定しない場合、1 つが生成されます。 + + フラグ | 説明 + ---- | ---- +`--data-dir` 値 | 状態を保持するフォルダー(デフォルト: /var/lib/rancher/k3s または root でない場合は $\{HOME\}/.rancher/k3s) +`--kubeconfig` 値 | 接続するサーバー [$KUBECONFIG] +`--server` 値 | 接続するサーバー(デフォルト: "https://127.0.0.1:6443") [$K3S_URL] +`--token` 値 | サーバーまたはエージェントをクラスターに参加させるために使用される既存のトークン [$K3S_TOKEN] +`--new-token` 値 | 既存のトークンを置き換える新しいトークン \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/cluster-access.md b/i18n/ja/docusaurus-plugin-content-docs/current/cluster-access.md new file mode 100644 index 000000000..fc9798d6a --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/cluster-access.md @@ -0,0 +1,24 @@ +--- +title: クラスターアクセス +--- + +`/etc/rancher/k3s/k3s.yaml` に保存されている kubeconfig ファイルは、Kubernetes クラスターへのアクセスを構成するために使用されます。kubectl や helm などの上流の Kubernetes コマンドラインツールをインストールしている場合は、正しい kubeconfig パスでそれらを構成する必要があります。これは、`KUBECONFIG` 環境変数をエクスポートするか、`--kubeconfig` コマンドラインフラグを使用して行うことができます。詳細は以下の例を参照してください。 + +KUBECONFIG 環境変数を利用する方法: + +```bash +export KUBECONFIG=/etc/rancher/k3s/k3s.yaml +kubectl get pods --all-namespaces +helm ls --all-namespaces +``` + +または、コマンドで kubeconfig ファイルの場所を指定する方法: + +```bash +kubectl --kubeconfig /etc/rancher/k3s/k3s.yaml get pods --all-namespaces +helm --kubeconfig /etc/rancher/k3s/k3s.yaml ls --all-namespaces +``` + +### kubectl を使用して外部からクラスターにアクセスする + +クラスター外にあるマシンに `/etc/rancher/k3s/k3s.yaml` を `~/.kube/config` としてコピーします。その後、`server` フィールドの値を K3s サーバーの IP または名前に置き換えます。これで `kubectl` は K3s クラスターを管理できるようになります。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/datastore/backup-restore.md b/i18n/ja/docusaurus-plugin-content-docs/current/datastore/backup-restore.md new file mode 100644 index 000000000..e26b79166 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/datastore/backup-restore.md @@ -0,0 +1,34 @@ +--- +title: バックアップとリストア +--- + +K3sのバックアップとリストアの方法は、使用するデータストアの種類によって異なります。 + +:::warning +データストア自体のバックアップに加えて、サーバートークンファイルを`/var/lib/rancher/k3s/server/token`にバックアップする必要があります。 +バックアップからリストアする際には、このファイルをリストアするか、その値を`--token`オプションに渡す必要があります。 +リストア時に同じトークン値を使用しない場合、スナップショットは使用できません。トークンはデータストア内の機密データを暗号化するために使用されるからです。 +::: + +## SQLiteでのバックアップとリストア + +SQLiteデータストアのバックアップやリストアには特別なコマンドは必要ありません。 + +* SQLiteデータストアをバックアップするには、`/var/lib/rancher/k3s/server/db/`のコピーを取ります。 +* SQLiteデータストアをリストアするには、`/var/lib/rancher/k3s/server/db`の内容(および上記のトークン)をリストアします。 + +## 外部データストアでのバックアップとリストア + +外部データストアが使用されている場合、バックアップとリストアの操作はK3sの外部で行われます。データベース管理者は外部データベースをバックアップするか、スナップショットやダンプからリストアする必要があります。 + +データベースが定期的にスナップショットを取るように設定することをお勧めします。 + +データベースのスナップショットを取る方法やそれらからデータベースをリストアする方法については、公式のデータベースドキュメントを参照してください: + +- [公式MySQLドキュメント](https://dev.mysql.com/doc/refman/8.0/en/replication-snapshot-method.html) +- [公式PostgreSQLドキュメント](https://www.postgresql.org/docs/8.3/backup-dump.html) +- [公式etcdドキュメント](https://etcd.io/docs/latest/op-guide/recovery/) + +## 組み込みetcdデータストアでのバックアップとリストア + +組み込みetcdデータストアのバックアップとリストア操作については、[`k3s etcd-snapshot`コマンドのドキュメント](../cli/etcd-snapshot.md)を参照してください。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/datastore/cluster-loadbalancer.md b/i18n/ja/docusaurus-plugin-content-docs/current/datastore/cluster-loadbalancer.md new file mode 100644 index 000000000..f57072c59 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/datastore/cluster-loadbalancer.md @@ -0,0 +1,190 @@ +--- +title: クラスター・ロードバランサー +--- + +このセクションでは、外部ロードバランサーを高可用性(HA)K3sクラスターのサーバーノードの前にインストールする方法について説明します。NginxとHAProxyの2つの例が提供されています。 + +:::tip +外部ロードバランサーは、Kubernetes LoadBalancerサービスをサードパーティのロードバランサーコントローラーをデプロイせずに使用できるようにする組み込みコントローラーであるServiceLBと混同しないでください。詳細については、[Service Load Balancer](../networking/networking-services.md#service-load-balancer)を参照してください。 + +外部ロードバランサーは、ノードの登録用の固定登録アドレスを提供したり、Kubernetes APIサーバーへの外部アクセスを提供するために使用できます。LoadBalancerサービスを公開するために、外部ロードバランサーはServiceLBと一緒に、または代わりに使用できますが、ほとんどの場合、MetalLBやKube-VIPなどの代替ロードバランサーコントローラーの方が良い選択です。 +::: + +## 前提条件 + +この例のすべてのノードはUbuntu 20.04を実行しています。 + +両方の例では、[組み込みetcdを使用したHA K3sクラスター](../datastore/ha-embedded.md)が3つのノードにインストールされていると仮定します。 + +各k3sサーバーは次のように構成されています: +```yaml +# /etc/rancher/k3s/config.yaml +token: lb-cluster-gd +tls-san: 10.10.10.100 +``` + +ノードのホスト名とIPは次の通りです: +* server-1: `10.10.10.50` +* server-2: `10.10.10.51` +* server-3: `10.10.10.52` + +ロードバランシング用に追加の2つのノードがホスト名とIPで構成されています: +* lb-1: `10.10.10.98` +* lb-2: `10.10.10.99` + +追加の3つのノードがホスト名とIPで存在します: +* agent-1: `10.10.10.101` +* agent-2: `10.10.10.102` +* agent-3: `10.10.10.103` + +## ロードバランサーのセットアップ + + + +[HAProxy](http://www.haproxy.org/)は、TCPロードバランサーを提供するオープンソースのオプションです。また、ロードバランサー自体のHAをサポートし、すべてのレベルで冗長性を確保します。詳細については、[HAProxy Documentation](http://docs.haproxy.org/2.8/intro.html)を参照してください。 + +さらに、クラスターにアクセスするために使用される仮想IP(VIP)を生成するためにKeepAlivedを使用します。詳細については、[KeepAlived Documentation](https://www.keepalived.org/manpage.html)を参照してください。 + +1) HAProxyとKeepAlivedをインストールします: + +```bash +sudo apt-get install haproxy keepalived +``` + +2) lb-1とlb-2の`/etc/haproxy/haproxy.cfg`に次の内容を追加します: + +``` +frontend k3s-frontend + bind *:6443 + mode tcp + option tcplog + default_backend k3s-backend + +backend k3s-backend + mode tcp + option tcp-check + balance roundrobin + default-server inter 10s downinter 5s + server server-1 10.10.10.50:6443 check + server server-2 10.10.10.51:6443 check + server server-3 10.10.10.52:6443 check +``` + +3) lb-1とlb-2の`/etc/keepalived/keepalived.conf`に次の内容を追加します: + +``` +vrrp_script chk_haproxy { + script 'killall -0 haproxy' # pidofよりも高速 + interval 2 +} + +vrrp_instance haproxy-vip { + interface eth1 + state # lb-1ではMASTER、lb-2ではBACKUP + priority # lb-1では200、lb-2では100 + + virtual_router_id 51 + + virtual_ipaddress { + 10.10.10.100/24 + } + + track_script { + chk_haproxy + } +} +``` + +4) lb-1とlb-2でHAProxyとKeepAlivedを再起動します: + +```bash +systemctl restart haproxy +systemctl restart keepalived +``` + +5) agent-1、agent-2、およびagent-3で次のコマンドを実行してk3sをインストールし、クラスターに参加します: + +```bash +curl -sfL https://get.k3s.io | K3S_TOKEN=lb-cluster-gd sh -s - agent --server https://10.10.10.100:6443 +``` + +サーバーノードから`kubectl`を使用してクラスターと対話できます。 +```bash +root@server-1 $ k3s kubectl get nodes -A +NAME STATUS ROLES AGE VERSION +agent-1 Ready 32s v1.27.3+k3s1 +agent-2 Ready 20s v1.27.3+k3s1 +agent-3 Ready 9s v1.27.3+k3s1 +server-1 Ready control-plane,etcd,master 4m22s v1.27.3+k3s1 +server-2 Ready control-plane,etcd,master 3m58s v1.27.3+k3s1 +server-3 Ready control-plane,etcd,master 3m12s v1.27.3+k3s1 +``` + + + + + +## Nginxロードバランサー + +:::danger +Nginxはネイティブに高可用性(HA)構成をサポートしていません。HAクラスターを設定する場合、K3sの前に単一のロードバランサーを配置すると、単一障害点が再導入されます。 +::: + +[Nginx Open Source](http://nginx.org/)は、TCPロードバランサーを提供します。詳細については、[Using nginx as HTTP load balancer](https://nginx.org/en/docs/http/load_balancing.html)を参照してください。 + +1) lb-1に次の内容の`nginx.conf`ファイルを作成します: + +``` +events {} + +stream { + upstream k3s_servers { + server 10.10.10.50:6443; + server 10.10.10.51:6443; + server 10.10.10.52:6443; + } + + server { + listen 6443; + proxy_pass k3s_servers; + } +} +``` + +2) lb-1でNginxロードバランサーを実行します: + +Dockerを使用する場合: + +```bash +docker run -d --restart unless-stopped \ + -v ${PWD}/nginx.conf:/etc/nginx/nginx.conf \ + -p 6443:6443 \ + nginx:stable +``` + +または[Nginxをインストール](https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/)してから次を実行します: + +```bash +cp nginx.conf /etc/nginx/nginx.conf +systemctl start nginx +``` + +3) agent-1、agent-2、およびagent-3で次のコマンドを実行してk3sをインストールし、クラスターに参加します: + +```bash +curl -sfL https://get.k3s.io | K3S_TOKEN=lb-cluster-gd sh -s - agent --server https://10.10.10.98:6443 +``` + +サーバーノードから`kubectl`を使用してクラスターと対話できます。 +```bash +root@server1 $ k3s kubectl get nodes -A +NAME STATUS ROLES AGE VERSION +agent-1 Ready 30s v1.27.3+k3s1 +agent-2 Ready 22s v1.27.3+k3s1 +agent-3 Ready 13s v1.27.3+k3s1 +server-1 Ready control-plane,etcd,master 4m49s v1.27.3+k3s1 +server-2 Ready control-plane,etcd,master 3m58s v1.27.3+k3s1 +server-3 Ready control-plane,etcd,master 3m16s v1.27.3+k3s1 +``` + + \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/datastore/datastore.md b/i18n/ja/docusaurus-plugin-content-docs/current/datastore/datastore.md new file mode 100644 index 000000000..6b209ae5f --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/datastore/datastore.md @@ -0,0 +1,91 @@ +--- +title: "クラスタデータストア" +--- + +K3sが他のKubernetesディストリビューションと異なる点は、etcd以外のデータストアを使用してKubernetesを実行できる能力です。この機能はKubernetesオペレーターに柔軟性を提供します。利用可能なデータストアオプションにより、ユースケースに最適なデータストアを選択できます。例えば: + +* チームにetcdの運用経験がない場合、MySQLやPostgreSQLのようなエンタープライズグレードのSQLデータベースを選択できます。 +* CI/CD環境でシンプルで短期間のクラスタを実行する必要がある場合、組み込みのSQLiteデータベースを使用できます。 +* エッジでKubernetesをデプロイし、高可用性のソリューションが必要だが、エッジでデータベースを管理する運用負荷を負えない場合、組み込みのetcdをベースにしたK3sの組み込みHAデータストアを使用できます。 + +K3sは以下のデータストアオプションをサポートしています: + +* **組み込み [SQLite](https://www.sqlite.org/index.html)** + SQLiteは複数のサーバーを持つクラスタでは使用できません。 + SQLiteはデフォルトのデータストアであり、他のデータストアの設定が存在せず、ディスク上に組み込みetcdデータベースファイルが存在しない場合に使用されます。 +* **組み込みetcd** + 複数のサーバーで組み込みetcdを使用する方法については、[高可用性組み込みetcd](ha-embedded.md)のドキュメントを参照してください。 + K3sが新しいetcdクラスタを初期化するように設定されている場合、既存のetcdクラスタに参加する場合、または起動時にディスク上にetcdデータベースファイルが存在する場合、組み込みetcdが自動的に選択されます。 +* **外部データベース** + 複数のサーバーで外部データストアを使用する方法については、[高可用性外部DB](ha.md)のドキュメントを参照してください。 + 以下の外部データストアがサポートされています: + * [etcd](https://etcd.io/) (バージョン3.5.4に対して認定) + * [MySQL](https://www.mysql.com/) (バージョン5.7および8.0に対して認定) + * [MariaDB](https://mariadb.org/) (バージョン10.6.8に対して認定) + * [PostgreSQL](https://www.postgresql.org/) (バージョン12.16、13.12、14.9および15.4に対して認定) + +:::warning プリペアドステートメントサポート +K3sはDBからのプリペアドステートメントサポートを必要とします。これは、[PgBouncer](https://www.pgbouncer.org/faq.html#how-to-use-prepared-statements-with-transaction-pooling)のような接続プーラーがK3sと連携するために追加の設定を必要とする場合があることを意味します。 +::: + +### 外部データストアの設定パラメータ +PostgreSQL、MySQL、またはetcdなどの外部データストアを使用する場合、`datastore-endpoint`パラメータを設定してK3sが接続方法を認識できるようにする必要があります。また、接続の認証と暗号化を設定するためのパラメータを指定することもできます。以下の表は、CLIフラグまたは環境変数として渡すことができるこれらのパラメータをまとめたものです。 + +| CLIフラグ | 環境変数 | 説明 +|------------|-------------|------------------ +| `--datastore-endpoint` | `K3S_DATASTORE_ENDPOINT` | PostgreSQL、MySQL、またはetcdの接続文字列を指定します。これはデータストアへの接続を記述するために使用される文字列です。この文字列の構造は各バックエンドに特有であり、以下に詳細が記載されています。 | +| `--datastore-cafile` | `K3S_DATASTORE_CAFILE` | データストアとの通信を保護するために使用されるTLS証明書認証局(CA)ファイル。データストアがカスタム証明書認証局によって署名された証明書を使用してTLS経由でリクエストを提供する場合、このパラメータを使用してそのCAを指定することで、K3sクライアントが証明書を適切に検証できるようにします。 | +| `--datastore-certfile` | `K3S_DATASTORE_CERTFILE` | データストアへのクライアント証明書ベースの認証に使用されるTLS証明書ファイル。この機能を使用するには、データストアがクライアント証明書ベースの認証をサポートするように設定されている必要があります。このパラメータを指定する場合、`datastore-keyfile`パラメータも指定する必要があります。 | +| `--datastore-keyfile` | `K3S_DATASTORE_KEYFILE` | データストアへのクライアント証明書ベースの認証に使用されるTLSキー ファイル。詳細については、前述の`datastore-certfile`パラメータを参照してください。 | + +ベストプラクティスとして、これらのパラメータをコマンドライン引数ではなく環境変数として設定することをお勧めします。これにより、データベースの資格情報やその他の機密情報がプロセス情報の一部として露出しないようにします。 + +### データストアエンドポイントの形式と機能 +前述のように、`datastore-endpoint`パラメータに渡される値の形式はデータストアバックエンドに依存します。以下に、各サポートされている外部データストアの形式と機能を詳細に説明します。 + + + + + PostgreSQLの最も一般的な形式では、`datastore-endpoint`パラメータは以下の形式を持ちます: + + `postgres://username:password@hostname:port/database-name` + + より高度な設定パラメータも利用可能です。これらの詳細については、https://godoc.org/github.com/lib/pq を参照してください。 + + データベース名を指定し、それが存在しない場合、サーバーはそれを作成しようとします。 + + エンドポイントとして`postgres://`のみを指定した場合、K3sは以下を試みます: + + - `postgres`をユーザー名とパスワードとして使用してlocalhostに接続 + - `kubernetes`という名前のデータベースを作成 + + + + + MySQLおよびMariaDBの最も一般的な形式では、`datastore-endpoint`パラメータは以下の形式を持ちます: + + `mysql://username:password@tcp(hostname:3306)/database-name` + + より高度な設定パラメータも利用可能です。これらの詳細については、https://github.com/go-sql-driver/mysql#dsn-data-source-name を参照してください。 + + K3sの[既知の問題](https://github.com/k3s-io/k3s/issues/1093)により、`tls`パラメータを設定できないことに注意してください。TLS通信はサポートされていますが、例えばこのパラメータを"skip-verify"に設定してK3sが証明書の検証をスキップするようにすることはできません。 + + データベース名を指定し、それが存在しない場合、サーバーはそれを作成しようとします。 + + エンドポイントとして`mysql://`のみを指定した場合、K3sは以下を試みます: + + - `root`ユーザーとパスワードなしで`/var/run/mysqld/mysqld.sock`のMySQLソケットに接続 + - `kubernetes`という名前のデータベースを作成 + + + + + + etcdの最も一般的な形式では、`datastore-endpoint`パラメータは以下の形式を持ちます: + + `https://etcd-host-1:2379,https://etcd-host-2:2379,https://etcd-host-3:2379` + + 上記は典型的な3ノードのetcdクラスタを想定しています。このパラメータは、カンマで区切られた1つ以上のetcd URLを受け入れることができます。 + + + \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/datastore/ha-embedded.md b/i18n/ja/docusaurus-plugin-content-docs/current/datastore/ha-embedded.md new file mode 100644 index 000000000..9d4358036 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/datastore/ha-embedded.md @@ -0,0 +1,71 @@ +--- +title: "高可用性組み込みetcd" +--- + +:::warning +組み込みetcd(HA)は、Raspberry PiのようなSDカードを使用する遅いディスク上でパフォーマンスの問題が発生する可能性があります。 +::: + +
+なぜサーバーノードの数は奇数なのか? + +HA組み込みetcdクラスターは、etcdがクォーラムを維持するために奇数のサーバーノードで構成されている必要があります。n台のサーバーを持つクラスターの場合、クォーラムは(n/2)+1です。奇数サイズのクラスターにノードを追加すると、クォーラムに必要なノードの数が常に増加します。奇数サイズのクラスターにノードを追加することは、マシンの数が増えるため一見良さそうに見えますが、クォーラムを失わずに故障できるノードの数は同じであるため、故障耐性は悪化します。 +
+ +組み込みetcdを使用したHA K3sクラスターは以下で構成されます: + +- Kubernetes APIを提供し、他のコントロールプレーンサービスを実行し、組み込みetcdデータストアをホストする**サーバーノード**が3つ以上 +- オプション:アプリケーションやサービスを実行するために指定された**エージェントノード**が0個以上 +- オプション:エージェントノードがクラスターに登録するための**固定登録アドレス** + +:::note +大規模なHAクラスターを迅速にデプロイするには、[関連プロジェクト](../related-projects.md)を参照してください。 +::: + +まず、クラスタリングを有効にするために`cluster-init`フラグと、追加のサーバーをクラスターに参加させるための共有シークレットとして使用されるトークンを使用してサーバーノードを起動します。 + +```bash +curl -sfL https://get.k3s.io | K3S_TOKEN=SECRET sh -s - server \ + --cluster-init \ + --tls-san= # オプション、固定登録アドレスを使用する場合に必要 +``` + +最初のサーバーを起動した後、共有シークレットを使用して2番目と3番目のサーバーをクラスターに参加させます: + +```bash +curl -sfL https://get.k3s.io | K3S_TOKEN=SECRET sh -s - server \ + --server https://<サーバー1のIPまたはホスト名>:6443 \ + --tls-san= # オプション、固定登録アドレスを使用する場合に必要 +``` + +2番目と3番目のサーバーがクラスターの一部になっていることを確認します: + +```bash +$ kubectl get nodes +NAME STATUS ROLES AGE VERSION +server1 Ready control-plane,etcd,master 28m vX.Y.Z +server2 Ready control-plane,etcd,master 13m vX.Y.Z +server3 Ready control-plane,etcd,master 10m vX.Y.Z +``` + +これで高可用性のコントロールプレーンが完成しました。クラスター化に成功したサーバーは、追加のサーバーやエージェントノードを参加させるために`--server`引数で使用できます。追加のエージェントノードをクラスターに参加させる手順はサーバーと同じです: + +```bash +curl -sfL https://get.k3s.io | K3S_TOKEN=SECRET sh -s - agent --server https://<サーバーのIPまたはホスト名>:6443 +``` + +すべてのサーバーノードで同じでなければならないいくつかの設定フラグがあります: + +- ネットワーク関連のフラグ:`--cluster-dns`、`--cluster-domain`、`--cluster-cidr`、`--service-cidr` +- 特定のコンポーネントのデプロイを制御するフラグ:`--disable-helm-controller`、`--disable-kube-proxy`、`--disable-network-policy`および`--disable`に渡される任意のコンポーネント +- 機能関連のフラグ:`--secrets-encryption` + +## 既存のシングルノードクラスター + +:::info バージョンゲート +[v1.22.2+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.22.2%2Bk3s1)から利用可能 +::: + +デフォルトの組み込みSQLiteデータベースを使用している既存のクラスターがある場合、K3sサーバーを`--cluster-init`フラグで再起動するだけでetcdに変換できます。それが完了すると、上記の手順で追加のインスタンスを追加できるようになります。 + +そのノードがすでにクラスターを初期化または参加したためにディスク上にetcdデータストアが見つかった場合、データストアの引数(`--cluster-init`、`--server`、`--datastore-endpoint`など)は無視されます。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/datastore/ha.md b/i18n/ja/docusaurus-plugin-content-docs/current/datastore/ha.md new file mode 100644 index 000000000..9bb25c6ce --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/datastore/ha.md @@ -0,0 +1,105 @@ +--- +title: 高可用性外部データベース +--- + +このセクションでは、外部データベースを使用した高可用性K3sクラスターのインストール方法について説明します。 + +:::note +大規模なHAクラスターを迅速にデプロイするには、[関連プロジェクト](/related-projects)を参照してください。 +::: + +単一サーバークラスターはさまざまなユースケースに対応できますが、Kubernetesコントロールプレーンの稼働時間が重要な環境では、K3sをHA構成で実行できます。HA K3sクラスターは以下で構成されます: + +- Kubernetes APIを提供し、他のコントロールプレーンサービスを実行する**サーバーノード**が2つ以上 +- (単一サーバーセットアップで使用される埋め込みSQLiteデータストアとは対照的に)**外部データストア** +- オプション:アプリケーションやサービスを実行するために指定された**エージェントノード**が0個以上 +- オプション:エージェントノードがクラスターに登録するための**固定登録アドレス** + +これらのコンポーネントがどのように連携するかの詳細については、[アーキテクチャセクション](../architecture.md#high-availability-k3s)を参照してください。 + +## インストール概要 + +HAクラスターのセットアップには以下の手順が必要です: + +### 1. 外部データストアの作成 + +まず、クラスター用の外部データストアを作成する必要があります。詳細については、[クラスターのデータストアオプション](datastore.md)のドキュメントを参照してください。 + +### 2. サーバーノードの起動 + +K3sのHA構成には2つ以上のサーバーノードが必要です。最小マシン要件については、[要件](../installation/requirements.md)ガイドを参照してください。 + +これらのノードで`k3s server`コマンドを実行する際、K3sが外部データストアに接続する方法を知るために`datastore-endpoint`パラメータを設定する必要があります。ノードを追加する際に決定的なトークンを設定するために`token`パラメータも使用できます。空の場合、このトークンは自動的に生成され、後で使用されます。 + +例えば、以下のようなコマンドを使用して、MySQLデータベースを外部データストアとしてK3sサーバーをインストールし、[トークンを設定](../cli/server.md#cluster-options)できます: + +```bash +curl -sfL https://get.k3s.io | sh -s - server \ + --token=SECRET \ + --datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name" + --tls-san= # オプション、固定登録アドレスを使用する場合に必要 +``` + +データストアエンドポイントの形式はデータベースの種類によって異なります。詳細については、[データストアエンドポイントの形式](../datastore/datastore.md#datastore-endpoint-format-and-functionality)のセクションを参照してください。 + +サーバーノードを起動する際のTLS証明書の設定については、[データストア設定ガイド](../datastore/datastore.md#external-datastore-configuration-parameters)を参照してください。 + +:::note +単一サーバーインストールで利用可能なインストールオプションは、高可用性インストールでも利用可能です。詳細については、[設定オプション](../installation/configuration.md)のドキュメントを参照してください。 +::: + +デフォルトでは、サーバーノードはスケジュール可能であり、ワークロードが起動される可能性があります。ユーザーワークロードが実行されない専用のコントロールプレーンを持ちたい場合は、テイントを使用できます。`node-taint`パラメータを使用してノードにテイントを設定できます。例えば、`--node-taint CriticalAddonsOnly=true:NoExecute`のように設定します。 + +すべてのサーバーノードで`k3s server`プロセスを起動したら、`k3s kubectl get nodes`を使用してクラスターが正常に起動していることを確認してください。サーバーノードがReady状態で表示されるはずです。 + +### 3. オプション:追加のサーバーノードの参加 + +ステップ2の同じコマンドを使用して追加のサーバーノードを参加させることができます。この場合、最初のノードのトークンを使用する必要があります。 + +最初のサーバーノードが`--token` CLIフラグまたは`K3S_TOKEN`変数なしで起動された場合、クラスターに既に参加している任意のサーバーからトークン値を取得できます: + +```bash +cat /var/lib/rancher/k3s/server/token +``` + +追加のサーバーノードは[トークンを使用して](../cli/server.md#cluster-options)追加できます: + +```bash +curl -sfL https://get.k3s.io | sh -s - server \ + --token=SECRET \ + --datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name" +``` + +すべてのサーバーノードで同じでなければならないいくつかの設定フラグがあります: + +- ネットワーク関連のフラグ:`--cluster-dns`、`--cluster-domain`、`--cluster-cidr`、`--service-cidr` +- 特定のコンポーネントのデプロイを制御するフラグ:`--disable-helm-controller`、`--disable-kube-proxy`、`--disable-network-policy`および`--disable`に渡される任意のコンポーネント +- 機能関連のフラグ:`--secrets-encryption` + +:::note +このトークンのコピーを保持しておくことを確認してください。バックアップからの復元やノードの追加時に必要です。以前は、外部SQLデータストアを使用する際にトークンの使用が強制されていませんでした。 +::: + +### 4. オプション:固定登録アドレスの設定 + +エージェントノードは登録するためのURLが必要です。これは任意のサーバーノードのIPまたはホスト名で構いませんが、多くの場合、それらは時間とともに変わる可能性があります。例えば、スケーリンググループをサポートするクラウドでクラスターを実行している場合、ノードは時間とともに作成および破棄され、最初のサーバーノードセットから異なるIPに変更される可能性があります。時間とともに変わらない安定したエンドポイントをサーバーノードの前に設定するのが最善です。このエンドポイントは、以下のような方法で設定できます: + +- レイヤー4(TCP)ロードバランサー +- ラウンドロビンDNS +- 仮想またはエラスティックIPアドレス + +例としての設定については、[クラスターのロードバランサー](./cluster-loadbalancer.md)を参照してください。 + +このエンドポイントはKubernetes APIにアクセスするためにも使用できます。例えば、[kubeconfig](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/)ファイルを特定のノードではなくこのエンドポイントを指すように変更できます。 + +このような構成で証明書エラーを回避するために、サーバーを`--tls-san YOUR_IP_OR_HOSTNAME_HERE`オプションで設定する必要があります。このオプションはTLS証明書のSubject Alternative Nameに追加のホスト名またはIPを追加し、IPとホスト名の両方でアクセスしたい場合は複数回指定できます。 + +### 5. オプション:エージェントノードの参加 + +K3sサーバーノードはデフォルトでスケジュール可能であるため、HA K3sクラスターにはエージェントノードは必須ではありません。ただし、アプリケーションやサービスを実行するための専用のエージェントノードを持ちたい場合があります。 + +HAクラスターにエージェントノードを参加させる方法は、単一サーバークラスターにエージェントノードを参加させる方法と同じです。エージェントが登録するURL(サーバーIPのいずれかまたは固定登録アドレス)と使用するトークンを指定するだけです。 + +```bash +K3S_TOKEN=SECRET k3s agent --server https://server-or-fixed-registration-address:6443 +``` \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/faq.md b/i18n/ja/docusaurus-plugin-content-docs/current/faq.md new file mode 100644 index 000000000..83deb3e04 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/faq.md @@ -0,0 +1,70 @@ +--- +title: FAQ +--- + +FAQは定期的に更新され、K3sに関してユーザーが最も頻繁に尋ねる質問に答えるために設計されています。 + +### K3sはKubernetesの代替として適していますか? + +K3sはCNCF認定のKubernetesディストリビューションであり、標準的なKubernetesクラスターに必要なすべてのことを実行できます。ただし、より軽量なバージョンです。詳細については[メイン](./introduction.md)ドキュメントページを参照してください。 + +### Traefikの代わりに自分のIngressを使用するにはどうすればよいですか? + +単にK3sサーバーを`--disable=traefik`オプションで起動し、Ingressをデプロイしてください。 + +### K3sはWindowsをサポートしていますか? + +現時点ではK3sはネイティブにWindowsをサポートしていませんが、将来的にはその可能性を検討しています。 + +### サーバーとエージェントとは具体的に何ですか? + +サーバーとエージェントを構成するコンポーネントの詳細については、[アーキテクチャページ](./architecture.md)を参照してください。 + +### ソースからビルドするにはどうすればよいですか? + +K3sの[BUILDING.md](https://github.com/k3s-io/k3s/blob/master/BUILDING.md)を参照してください。 + +### K3sのログはどこにありますか? + +K3sのログの場所は、K3sの実行方法やノードのOSによって異なります。 + +* コマンドラインから実行する場合、ログはstdoutとstderrに送信されます。 +* openrcで実行する場合、ログは`/var/log/k3s.log`に作成されます。 +* Systemdで実行する場合、ログはJournaldに送信され、`journalctl -u k3s`で表示できます。 +* Podのログは`/var/log/pods`にあります。 +* Containerdのログは`/var/lib/rancher/k3s/agent/containerd/containerd.log`にあります。 + +K3sを起動する際に`--debug`フラグ(または設定ファイルで`debug: true`)を使用すると、より詳細なログを生成できます。 + +Kubernetesは`klog`というロギングフレームワークを使用しており、プロセス内のすべてのコンポーネントに対して単一のロギング設定を使用します。K3sはすべてのKubernetesコンポーネントを単一のプロセス内で実行するため、個々のKubernetesコンポーネントに対して異なるログレベルや出力先を設定することはできません。`-v=`や`--vmodule==`のコンポーネント引数を使用しても、期待通りの効果は得られない可能性があります。 + +さらに多くのログオプションについては、[追加のログソース](./advanced.md#additional-logging-sources)を参照してください。 + +### DockerでK3sを実行できますか? + +はい、DockerでK3sを実行する方法はいくつかあります。詳細については[高度なオプション](./advanced.md#running-k3s-in-docker)を参照してください。 + +### K3sサーバーとエージェントトークンの違いは何ですか? + +K3sの参加トークンの管理に関する詳細は、[`k3s token`コマンドのドキュメント](./cli/token.md)を参照してください。 + +### 異なるバージョンのK3sの互換性はどの程度ですか? + +一般的に、[Kubernetesのバージョンスキューポリシー](https://kubernetes.io/docs/setup/release/version-skew-policy/)が適用されます。 + +簡単に言えば、サーバーはエージェントより新しいバージョンであることができますが、エージェントはサーバーより新しいバージョンであってはなりません。 + +### 問題が発生した場合、どこで助けを得られますか? + +K3sのデプロイに問題がある場合は、以下を行ってください: + +1) [既知の問題](./known-issues.md)ページを確認してください。 + +2) [追加のOS準備](./installation/requirements.md#operating-systems)が解決されていることを確認してください。`k3s check-config`を実行し、パスすることを確認してください。 + +3) K3sの[Issues](https://github.com/k3s-io/k3s/issues)および[Discussions](https://github.com/k3s-io/k3s/discussions)で、問題に一致するものを検索してください。 + + +4) [Rancher Slack](https://slack.rancher.io/)のK3sチャンネルに参加して助けを求めてください。 + +5) K3s Githubに[新しいIssue](https://github.com/k3s-io/k3s/issues/new/choose)を提出し、セットアップと発生している問題を説明してください。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/helm.md b/i18n/ja/docusaurus-plugin-content-docs/current/helm.md new file mode 100644 index 000000000..cb661e4ad --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/helm.md @@ -0,0 +1,149 @@ +--- +title: Helm +--- + +HelmはKubernetesのためのパッケージ管理ツールです。HelmチャートはKubernetes YAMLマニフェストドキュメントのためのテンプレート構文を提供します。Helmを使用すると、開発者やクラスター管理者は静的なマニフェストを使用する代わりに、チャートとして知られる設定可能なテンプレートを作成できます。独自のチャートカタログを作成する方法については、[https://helm.sh/docs/intro/quickstart/](https://helm.sh/docs/intro/quickstart/)のドキュメントを参照してください。 + +K3sはHelmをサポートするために特別な設定を必要としません。[クラスターアクセス](./cluster-access.md)のドキュメントに従って、kubeconfigパスを正しく設定していることを確認してください。 + +K3sには、HelmChartカスタムリソース定義(CRD)を使用してHelmチャートのインストール、アップグレード/再構成、およびアンインストールを管理する[Helmコントローラー](https://github.com/k3s-io/helm-controller/)が含まれています。[自動デプロイAddOnマニフェスト](./installation/packaged-components.md)と組み合わせることで、ディスク上に1つのファイルを作成するだけでクラスターにHelmチャートを自動的にインストールできます。 + +### Helmコントローラーの使用 + +[HelmChartカスタムリソース](https://github.com/k3s-io/helm-controller#helm-controller)は、通常`helm`コマンドラインツールに渡すほとんどのオプションをキャプチャします。以下は、BitnamiチャートリポジトリからApacheをデプロイし、いくつかのデフォルトチャート値を上書きする例です。HelmChartリソース自体は`kube-system`ネームスペースにありますが、チャートのリソースは同じマニフェストで作成される`web`ネームスペースにデプロイされます。これは、HelmChartリソースをデプロイするリソースから分離して保持したい場合に便利です。 + +```yaml +apiVersion: v1 +kind: Namespace +metadata: + name: web +--- +apiVersion: helm.cattle.io/v1 +kind: HelmChart +metadata: + name: apache + namespace: kube-system +spec: + repo: https://charts.bitnami.com/bitnami + chart: apache + targetNamespace: web + valuesContent: |- + service: + type: ClusterIP + ingress: + enabled: true + hostname: www.example.com + metrics: + enabled: true +``` + +認証付きのプライベートリポジトリからHelmチャートをデプロイする例: + +```yaml +apiVersion: helm.cattle.io/v1 +kind: HelmChart +metadata: + namespace: kube-system + name: example-app +spec: + targetNamespace: example-space + createNamespace: true + version: v1.2.3 + chart: example-app + repo: https://secure-repo.example.com + authSecret: + name: example-repo-auth + repoCAConfigMap: + name: example-repo-ca + valuesContent: |- + image: + tag: v1.2.2 +--- +apiVersion: v1 +kind: Secret +metadata: + namespace: kube-system + name: example-repo-auth +type: kubernetes.io/basic-auth +stringData: + username: user + password: pass +--- +apiVersion: v1 +kind: ConfigMap +metadata: + namespace: kube-system + name: example-repo-ca +data: + ca.crt: |- + -----BEGIN CERTIFICATE----- + + -----END CERTIFICATE----- +``` + +#### HelmChartフィールド定義 + +| フィールド | デフォルト | 説明 | Helm引数/フラグの同等 | +|------------|------------|------|-----------------------| +| metadata.name | | Helmチャート名 | NAME | +| spec.chart | | リポジトリ内のHelmチャート名、またはチャートアーカイブ(.tgz)への完全なHTTPS URL | CHART | +| spec.targetNamespace | default | Helmチャートのターゲットネームスペース | `--namespace` | +| spec.createNamespace | false | ターゲットネームスペースが存在しない場合に作成 | `--create-namespace` | +| spec.version | | リポジトリからインストールする場合のHelmチャートバージョン | `--version` | +| spec.repo | | HelmチャートリポジトリURL | `--repo` | +| spec.repoCA | | HTTPS対応サーバーの証明書をこのCAバンドルを使用して検証します。1つ以上のPEMエンコードされたCA証明書を含む文字列である必要があります。 | `--ca-file` | +| spec.repoCAConfigMap | | Helmが信頼するCA証明書を含むConfigMapへの参照。`repoCA`と一緒に、または代わりに使用できます。 | `--ca-file` | +| spec.helmVersion | v3 | 使用するHelmバージョン(`v2`または`v3`) | | +| spec.bootstrap | False | このチャートがクラスターをブートストラップするために必要な場合(クラウドコントローラーマネージャーなど)にTrueに設定 | | +| spec.set | | シンプルなデフォルトチャート値を上書きします。これらはvaluesContent経由で設定されたオプションよりも優先されます。 | `--set` / `--set-string` | +| spec.jobImage | | Helmチャートをインストールする際に使用するイメージを指定します。例:rancher/klipper-helm:v0.3.0。 | | +| spec.backOffLimit | 1000 | ジョブが失敗と見なされる前に再試行する回数を指定します。 | | +| spec.timeout | 300s | Helm操作のタイムアウト、[duration string](https://pkg.go.dev/time#ParseDuration)(`300s`、`10m`、`1h`など)として指定 | `--timeout` | +| spec.failurePolicy | reinstall | Helm操作が中止され、オペレーターによる手動介入が必要な場合に`abort`に設定 | | +| spec.authSecret | | チャートリポジトリの基本認証資格情報を保持する`kubernetes.io/basic-auth`タイプのSecretへの参照。 | | +| spec.authPassCredentials | false | すべてのドメインに基本認証資格情報を渡します。 | `--pass-credentials` | +| spec.dockerRegistrySecret | | チャートリポジトリとして機能するOCIベースのレジストリのDocker認証資格情報を保持する`kubernetes.io/dockerconfigjson`タイプのSecretへの参照。 | | +| spec.valuesContent | | YAMLファイルの内容を介して複雑なデフォルトチャート値を上書き | `--values` | +| spec.chartContent | | Base64エンコードされたチャートアーカイブ.tgz - spec.chartを上書き | CHART | + +`/var/lib/rancher/k3s/server/static/`に配置されたコンテンツは、クラスター内からKubernetes APIServerを介して匿名でアクセスできます。このURLは、`spec.chart`フィールドで特別な変数`%{KUBERNETES_API}%`を使用してテンプレート化できます。例えば、パッケージ化されたTraefikコンポーネントは、`https://%{KUBERNETES_API}%/static/charts/traefik-12.0.000.tgz`からチャートをロードします。 + +:::note +`name`フィールドはHelmチャートの命名規則に従う必要があります。詳細については、[Helmベストプラクティスドキュメント](https://helm.sh/docs/chart_best_practices/conventions/#chart-names)を参照してください。 +::: + +### HelmChartConfigでパッケージ化されたコンポーネントをカスタマイズする + +HelmChartsとしてデプロイされるパッケージ化されたコンポーネント(例えばTraefik)の値を上書きするために、K3sはHelmChartConfigリソースを介してデプロイのカスタマイズをサポートします。HelmChartConfigリソースは対応するHelmChartの名前とネームスペースに一致する必要があり、追加の`valuesContent`を提供することができ、これは追加の値ファイルとして`helm`コマンドに渡されます。 + +:::note +HelmChartの`spec.set`値は、HelmChartおよびHelmChartConfigの`spec.valuesContent`設定を上書きします。 +::: + +例えば、パッケージ化されたTraefikのインバウンド設定をカスタマイズするには、`/var/lib/rancher/k3s/server/manifests/traefik-config.yaml`という名前のファイルを作成し、以下の内容を入力します: + +```yaml +apiVersion: helm.cattle.io/v1 +kind: HelmChartConfig +metadata: + name: traefik + namespace: kube-system +spec: + valuesContent: |- + image: + name: traefik + tag: 2.9.10 + ports: + web: + forwardedHeaders: + trustedIPs: + - 10.0.0.0/8 +``` + +### Helm v2からの移行 + +K3sはHelm v2またはHelm v3のいずれかを処理できます。Helm v3に移行したい場合は、Helmの[この](https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/)ブログ投稿でプラグインを使用して成功裏に移行する方法を説明しています。詳細については、公式のHelm 3ドキュメント[こちら](https://helm.sh/docs/)を参照してください。[クラスターアクセス](./cluster-access.md)のセクションに従ってkubeconfigを正しく設定していることを確認してください。 + +:::note +Helm 3はもはやTillerと`helm init`コマンドを必要としません。詳細については公式ドキュメントを参照してください。 +::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/installation/airgap.md b/i18n/ja/docusaurus-plugin-content-docs/current/installation/airgap.md new file mode 100644 index 000000000..1bd2b1ff4 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/installation/airgap.md @@ -0,0 +1,162 @@ +--- +title: "エアギャップインストール" +--- + +K3sをエアギャップ環境でインストールするには、2つの方法があります。エアギャップ環境とは、インターネットに直接接続されていない環境のことです。プライベートレジストリをデプロイしてdocker.ioをミラーリングするか、小規模クラスター用のイメージを手動でデプロイすることができます。 + +## イメージのロード + +### プライベートレジストリ方式 + +これらの手順は、エアギャップ環境でノードを既に作成し、コンテナランタイムとしてバンドルされたcontainerdを使用し、環境内にOCI準拠のプライベートレジストリが利用可能であることを前提としています。 + +まだプライベートDockerレジストリを設定していない場合は、[公式レジストリドキュメント](https://docs.docker.com/registry/deploying/#run-an-externally-accessible-registry)を参照してください。 + +#### レジストリYAMLの作成とイメージのプッシュ + +1. 実行するK3sのバージョンに対応するアーキテクチャ用のイメージアーカイブを[リリース](https://github.com/k3s-io/k3s/releases)ページから取得します。 +2. `docker image load k3s-airgap-images-amd64.tar.zst`を使用して、tarファイルからDockerにイメージをインポートします。 +3. `docker tag`と`docker push`を使用して、ロードしたイメージを再タグ付けし、プライベートレジストリにプッシュします。 +4. [プライベートレジストリの設定](private-registry.md)ガイドに従って、`registries.yaml`ファイルを作成および設定します。 +5. 以下の[Install K3s](#install-k3s)セクションに進みます。 + +### 手動デプロイ方式 + +これらの手順は、エアギャップ環境でノードを既に作成し、コンテナランタイムとしてバンドルされたcontainerdを使用し、プライベートレジストリを使用できない、または使用したくない場合を前提としています。 + +この方法では、必要なイメージを各ノードに手動でデプロイする必要があり、プライベートレジストリを実行するのが現実的でないエッジデプロイメントに適しています。 + +#### イメージディレクトリとエアギャップイメージtarballの準備 + +1. 実行するK3sのバージョンに対応するアーキテクチャ用のイメージアーカイブを[リリース](https://github.com/k3s-io/k3s/releases)ページから取得します。 +2. エージェントのイメージディレクトリにイメージアーカイブをダウンロードします。例: + ```bash + sudo mkdir -p /var/lib/rancher/k3s/agent/images/ + sudo curl -L -o /var/lib/rancher/k3s/agent/images/k3s-airgap-images-amd64.tar.zst "https://github.com/k3s-io/k3s/releases/download/v1.29.1-rc2%2Bk3s1/k3s-airgap-images-amd64.tar.zst" + ``` +3. 以下の[Install K3s](#install-k3s)セクションに進みます。 + +### 埋め込みレジストリミラー + +:::info バージョンゲート +埋め込みレジストリミラーは、2024年1月のリリースから実験的機能として利用可能です:v1.26.13+k3s1、v1.27.10+k3s1、v1.28.6+k3s1、v1.29.1+k3s1 +::: + +K3sには、埋め込みの分散型OCI準拠のレジストリミラーが含まれています。 +有効化して適切に設定すると、任意のノードのcontainerdイメージストアにあるイメージを、 +外部イメージレジストリにアクセスせずに他のクラスターのメンバーがプルできます。 + +ミラーリングされたイメージは、上流のレジストリ、レジストリミラー、またはエアギャップイメージtarballから取得できます。 +埋め込み分散レジストリミラーの有効化に関する詳細は、[埋め込みレジストリミラー](./registry-mirror.md)ドキュメントを参照してください。 + +## K3sのインストール + +### 前提条件 + +K3sをインストールする前に、上記の[プライベートレジストリ方式](#private-registry-method)または[手動デプロイ方式](#manually-deploy-images-method)を完了して、K3sのインストールに必要なイメージを事前に準備してください。 + +#### バイナリ +- [リリース](https://github.com/k3s-io/k3s/releases)ページからK3sバイナリをダウンロードし、エアギャップノードごとに同じバージョンのバイナリを取得します。バイナリを`/usr/local/bin`に配置し、実行可能にします。 +- [get.k3s.io](https://get.k3s.io)からK3sインストールスクリプトをダウンロードします。インストールスクリプトをエアギャップノードの任意の場所に配置し、`install.sh`と名付けます。 + +#### デフォルトネットワークルート +ノードにデフォルトルートを持つインターフェースがない場合は、デフォルトルートを設定する必要があります。ダミーインターフェースを介したブラックホールルートでも構いません。K3sはデフォルトルートを必要とし、ノードのプライマリIPを自動検出し、kube-proxyのClusterIPルーティングが正常に機能するためです。ダミールートを追加するには、以下を実行します: + ``` + ip link add dummy0 type dummy + ip link set dummy0 up + ip addr add 203.0.113.254/31 dev dummy0 + ip route add default via 203.0.113.255 dev dummy0 metric 1000 + ``` + +`INSTALL_K3S_SKIP_DOWNLOAD`環境変数を使用してK3sスクリプトを実行すると、K3sはローカルバージョンのスクリプトとバイナリを使用します。 + +#### SELinux RPM + +SELinuxを有効にしてK3sをデプロイする場合は、適切なk3s-selinux RPMをすべてのノードにインストールする必要があります。最新バージョンのRPMは[こちら](https://github.com/k3s-io/k3s-selinux/releases/latest)で見つけることができます。例えば、CentOS 8の場合: + +```bash +インターネットにアクセス可能なマシンで: +curl -LO https://github.com/k3s-io/k3s-selinux/releases/download/v1.4.stable.1/k3s-selinux-1.4-1.el8.noarch.rpm + +# RPMをエアギャップマシンに転送 +エアギャップマシンで: +sudo yum install ./k3s-selinux-1.4-1.el8.noarch.rpm +``` + +詳細は[SELinux](../advanced.md#selinux-support)セクションを参照してください。 + +### エアギャップ環境でのK3sのインストール + +以下の手順に従って、1台以上のサーバーにK3sをインストールできます。 + + + + +シングルサーバーにK3sをインストールするには、サーバーノードで以下を実行します: + +```bash +INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh +``` + +追加のエージェントを追加するには、各エージェントノードで以下を実行します: + +```bash +INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://:6443 K3S_TOKEN= ./install.sh +``` + +:::note +サーバーのトークンは通常、`/var/lib/rancher/k3s/server/token`にあります。 +::: + + + + +[外部DBを使用した高可用性](../datastore/ha.md)または[埋め込みDBを使用した高可用性](../datastore/ha-embedded.md)ガイドを参照してください。インストールコマンドを調整して`INSTALL_K3S_SKIP_DOWNLOAD=true`を指定し、インストールスクリプトをcurlではなくローカルで実行します。また、`INSTALL_K3S_EXEC='args'`を使用してk3sに引数を渡します。 + +例えば、外部DBを使用した高可用性ガイドのステップ2では、以下のように記載されています: + +```bash +curl -sfL https://get.k3s.io | sh -s - server \ + --token=SECRET \ + --datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name" +``` + +これを以下のように変更します: + +```bash +INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC='server --token=SECRET' \ +K3S_DATASTORE_ENDPOINT='mysql://username:password@tcp(hostname:3306)/database-name' \ +./install.sh +``` + + + + +:::note +K3sの`--resolv-conf`フラグはkubeletに渡され、ホストに上流のネームサーバーが設定されていないエアギャップネットワークでのポッドDNS解決の設定に役立つ場合があります。 +::: + +## アップグレード + +### インストールスクリプト方式 + +エアギャップ環境のアップグレードは、以下の方法で行うことができます: + +1. アップグレードするK3sのバージョンに対応する新しいエアギャップイメージ(tarファイル)を[リリース](https://github.com/k3s-io/k3s/releases)ページからダウンロードします。各ノードの`/var/lib/rancher/k3s/agent/images/`ディレクトリにtarファイルを配置し、古いtarファイルを削除します。 +2. 各ノードの`/usr/local/bin`にある古いK3sバイナリを新しいものに置き換えます。https://get.k3s.ioからインストールスクリプトをコピーし、前回のリリース以降に変更があった可能性があるため、再度スクリプトを実行します。同じ環境変数を使用してスクリプトを実行します。 +3. K3sサービスを再起動します(インストーラーによって自動的に再起動されない場合)。 + +### 自動アップグレード方式 + +K3sは[自動アップグレード](../upgrades/automated.md)をサポートしています。エアギャップ環境でこれを有効にするには、必要なイメージがプライベートレジストリにあることを確認する必要があります。 + +アップグレードするK3sのバージョンに対応するrancher/k3s-upgradeのバージョンが必要です。注意点として、K3sリリースの`+`はDockerイメージではサポートされていないため、イメージタグでは`-`に置き換えられます。 + +また、system-upgrade-controllerマニフェストYAMLに指定されているsystem-upgrade-controllerとkubectlのバージョンも必要です。最新のsystem-upgrade-controllerリリースは[こちら](https://github.com/rancher/system-upgrade-controller/releases/latest)で確認し、必要なバージョンをプライベートレジストリにプッシュします。例えば、system-upgrade-controllerのv0.4.0リリースでは、以下のイメージがマニフェストYAMLに指定されています: + +``` +rancher/system-upgrade-controller:v0.4.0 +rancher/kubectl:v0.17.0 +``` + +必要なrancher/k3s-upgrade、rancher/system-upgrade-controller、およびrancher/kubectlイメージをプライベートレジストリに追加したら、[自動アップグレード](../upgrades/automated.md)ガイドに従ってください。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/installation/configuration.md b/i18n/ja/docusaurus-plugin-content-docs/current/installation/configuration.md new file mode 100644 index 000000000..6f9b45d6b --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/installation/configuration.md @@ -0,0 +1,191 @@ +--- +title: "設定オプション" +--- + +このページでは、K3sを初めてセットアップする際によく使用されるオプションに焦点を当てます。詳細については、[高度なオプションと設定](../advanced.md)および[サーバー](../cli/server.md)と[エージェント](../cli/agent.md)のコマンドドキュメントを参照してください。 + +## インストールスクリプトによる設定 + +[クイックスタートガイド](../quick-start.md)で述べたように、https://get.k3s.io で利用可能なインストールスクリプトを使用して、systemdおよびopenrcベースのシステムにK3sをサービスとしてインストールできます。 + +`INSTALL_K3S_EXEC`、`K3S_`環境変数、およびコマンドフラグの組み合わせを使用して、サービス設定に設定を渡すことができます。 +プレフィックス付きの環境変数、`INSTALL_K3S_EXEC`の値、およびトレイリングシェル引数はすべてサービス設定に保存されます。 +インストール後、環境ファイルを編集するか、サービス設定を編集するか、または新しいオプションでインストーラーを再実行することで設定を変更できます。 + +これを示すために、以下のコマンドはすべて、Flannelなしでトークンを使用してサーバーを登録する同じ動作をもたらします: + +```bash +curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server" sh -s - --flannel-backend none --token 12345 +curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server --flannel-backend none" K3S_TOKEN=12345 sh -s - +curl -sfL https://get.k3s.io | K3S_TOKEN=12345 sh -s - server --flannel-backend none +# K3S_URLがないため、以下ではサーバーが想定されます +curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--flannel-backend none --token 12345" sh -s - +curl -sfL https://get.k3s.io | sh -s - --flannel-backend none --token 12345 +``` + +エージェントを登録する場合、以下のコマンドはすべて同じ動作をもたらします: + +```bash +curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent --server https://k3s.example.com --token mypassword" sh -s - +curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent" K3S_TOKEN="mypassword" sh -s - --server https://k3s.example.com +curl -sfL https://get.k3s.io | K3S_URL=https://k3s.example.com sh -s - agent --token mypassword +curl -sfL https://get.k3s.io | K3S_URL=https://k3s.example.com K3S_TOKEN=mypassword sh -s - # K3S_URLがあるためエージェントが想定されます +``` + +すべての環境変数の詳細については、[環境変数](../reference/env-variables.md)を参照してください。 + +:::info 注意 +インストールスクリプトを実行する際に設定を行ったが、再実行する際に設定を再度行わない場合、元の値は失われます。 + +[設定ファイル](#configuration-file)の内容はインストールスクリプトによって管理されません。 +設定をインストールスクリプトから独立させたい場合は、環境変数や引数をインストールスクリプトに渡すのではなく、設定ファイルを使用するべきです。 +::: + +## バイナリによる設定 + +前述のように、インストールスクリプトは主にK3sをサービスとして実行するための設定に関心があります。 +スクリプトを使用しない場合は、[リリースページ](https://github.com/k3s-io/k3s/releases/latest)からバイナリをダウンロードし、パスに配置して実行するだけでK3sを実行できます。これは恒久的なインストールには特に役立ちませんが、K3sをシステムサービスとして管理する価値がない迅速なテストを行う場合には役立つかもしれません。 +```bash +curl -Lo /usr/local/bin/k3s https://github.com/k3s-io/k3s/releases/download/v1.26.5+k3s1/k3s; chmod a+x /usr/local/bin/k3s +``` + +`K3S_`環境変数を設定して設定を渡すことができます: +```bash +K3S_KUBECONFIG_MODE="644" k3s server +``` + +またはコマンドフラグ: +```bash +k3s server --write-kubeconfig-mode=644 +``` + +k3sエージェントもこの方法で設定できます: + +```bash +k3s agent --server https://k3s.example.com --token mypassword +``` + +K3sサーバーの設定の詳細については、[`k3s server`ドキュメント](../cli/server.md)を参照してください。 +K3sエージェントの設定の詳細については、[`k3s agent`ドキュメント](../cli/agent.md)を参照してください。 +また、`--help`フラグを使用して、利用可能なすべてのオプションとそれに対応する環境変数のリストを表示することもできます。 + +:::info フラグの一致 +サーバーノードで重要なフラグを一致させることが重要です。たとえば、マスターノードで`--disable servicelb`や`--cluster-cidr=10.200.0.0/16`フラグを使用し、他のサーバーノードで設定しない場合、ノードは参加に失敗します。エラーとして次のようなメッセージが表示されます: +`failed to validate server configuration: critical configuration value mismatch.` +サーバー設定の詳細については、上記のリンクを参照してください。 +::: +## 設定ファイル + +:::info バージョンゲート + +[v1.19.1+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.19.1%2Bk3s1)以降で利用可能 + +::: + +K3sは環境変数やCLI引数で設定するだけでなく、設定ファイルも使用できます。 + +デフォルトでは、`/etc/rancher/k3s/config.yaml`にあるYAMLファイルの値がインストール時に使用されます。 + +以下は基本的な`server`設定ファイルの例です: + +```yaml +write-kubeconfig-mode: "0644" +tls-san: + - "foo.local" +node-label: + - "foo=bar" + - "something=amazing" +cluster-init: true +``` + +これは次のCLI引数に相当します: + +```bash +k3s server \ + --write-kubeconfig-mode "0644" \ + --tls-san "foo.local" \ + --node-label "foo=bar" \ + --node-label "something=amazing" \ + --cluster-init +``` + +一般的に、CLI引数はそれぞれのYAMLキーにマップされ、繰り返し可能なCLI引数はYAMLリストとして表されます。ブールフラグはYAMLファイルでは`true`または`false`として表されます。 + +設定ファイルとCLI引数の両方を使用することも可能です。この場合、値は両方のソースから読み込まれますが、CLI引数が優先されます。`--node-label`のような繰り返し可能な引数の場合、CLI引数はリスト内のすべての値を上書きします。 + +最後に、設定ファイルの場所はCLI引数`--config FILE, -c FILE`または環境変数`$K3S_CONFIG_FILE`を使用して変更できます。 + +### 複数の設定ファイル +:::info バージョンゲート +[v1.21.0+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.21.0%2Bk3s1)以降で利用可能 +::: + +複数の設定ファイルがサポートされています。デフォルトでは、設定ファイルは`/etc/rancher/k3s/config.yaml`および`/etc/rancher/k3s/config.yaml.d/*.yaml`からアルファベット順に読み込まれます。 + +デフォルトでは、特定のキーに対して最後に見つかった値が使用されます。キーに`+`を追加すると、既存の文字列やスライスに値を追加することができます。以降のファイルでもこのキーに`+`を追加しないと、累積された値が上書きされます。 + +以下は複数の設定ファイルの例です: + +```yaml +# config.yaml +token: boop +node-label: + - foo=bar + - bar=baz + + +# config.yaml.d/test1.yaml +write-kubeconfig-mode: 600 +node-taint: + - alice=bob:NoExecute + +# config.yaml.d/test2.yaml +write-kubeconfig-mode: 777 +node-label: + - other=what + - foo=three +node-taint+: + - charlie=delta:NoSchedule + +``` + +これにより、最終的な設定は次のようになります: + +```yaml +write-kubeconfig-mode: 777 +token: boop +node-label: + - other=what + - foo=three +node-taint: + - alice=bob:NoExecute + - charlie=delta:NoSchedule +``` + +## すべてをまとめる + +上記のすべてのオプションを組み合わせて、単一の例にすることができます。 + +`/etc/rancher/k3s/config.yaml`に`config.yaml`ファイルを作成します: + +```yaml +token: "secret" +debug: true +``` + +次に、環境変数とフラグの組み合わせでインストールスクリプトを実行します: + +```bash +curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" INSTALL_K3S_EXEC="server" sh -s - --flannel-backend none +``` + +または、すでにK3sバイナリをインストールしている場合: +```bash +K3S_KUBECONFIG_MODE="644" k3s server --flannel-backend none +``` + +これにより、次の設定を持つサーバーが作成されます: +- パーミッション`644`のkubeconfigファイル +- フランネルバックエンドが`none`に設定 +- トークンが`secret`に設定 +- デバッグログが有効 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/installation/installation.md b/i18n/ja/docusaurus-plugin-content-docs/current/installation/installation.md new file mode 100644 index 000000000..8254cf26b --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/installation/installation.md @@ -0,0 +1,19 @@ +--- +title: "インストール" +--- + +このセクションでは、さまざまな環境でK3sをインストールするための手順を説明します。K3sのインストールを開始する前に、[要件](requirements.md)を満たしていることを確認してください。 + +[構成オプション](configuration.md)では、K3sをインストールする際に利用可能なオプションについてのガイダンスを提供します。 + +[プライベートレジストリの構成](private-registry.md)では、`registries.yaml`を使用してコンテナイメージレジストリミラーを構成する方法について説明します。 + +[埋め込みミラー](registry-mirror.md)では、埋め込み分散イメージレジストリミラーを有効にする方法を示します。 + +[エアギャップインストール](airgap.md)では、インターネットに直接アクセスできない環境でK3sをセットアップする方法について詳しく説明します。 + +[サーバーロールの管理](server-roles.md)では、専用の`control-plane`または`etcd`サーバーを使用してK3sをセットアップする方法について詳しく説明します。 + +[パッケージコンポーネントの管理](packaged-components.md)では、パッケージコンポーネントを無効にする方法や、自動デプロイマニフェストを使用して独自のコンポーネントをインストールする方法について詳しく説明します。 + +[K3sのアンインストール](uninstall.md)では、ホストからK3sを削除する方法について詳しく説明します。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/installation/packaged-components.md b/i18n/ja/docusaurus-plugin-content-docs/current/installation/packaged-components.md new file mode 100644 index 000000000..4b4c272ff --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/installation/packaged-components.md @@ -0,0 +1,66 @@ +--- +title: "パッケージ化されたコンポーネントの管理" +--- + +## マニフェストの自動デプロイ (AddOns) + +サーバーノード上では、`/var/lib/rancher/k3s/server/manifests` にあるファイルは、起動時およびディスク上のファイルが変更されたときに、`kubectl apply` に似た方法で自動的にKubernetesにデプロイされます。このディレクトリからファイルを削除しても、対応するリソースはクラスターから削除されません。 + +マニフェストは `kube-system` ネームスペースの `AddOn` カスタムリソースとして追跡されます。マニフェストファイルの適用時に発生したエラーや警告は、対応する `AddOn` に対して `kubectl describe` を使用するか、`kubectl get event -n kube-system` を使用してそのネームスペースのすべてのイベントを表示することで確認できます。 + +### パッケージ化されたコンポーネント + +K3sには、`coredns`、`traefik`、`local-storage`、および `metrics-server` など、マニフェストディレクトリを介してAddOnsとしてデプロイされる多数のパッケージ化されたコンポーネントが付属しています。組み込みの `servicelb` ロードバランサーコントローラーにはマニフェストファイルがありませんが、歴史的な理由から `AddOn` として無効にすることができます。 + +パッケージ化されたコンポーネントのマニフェストはK3sによって管理されており、変更しないでください。これらのファイルはK3sが起動するたびにディスクに再書き込みされ、その整合性が確保されます。 + +### ユーザーAddOns + +追加のファイルをマニフェストディレクトリに配置して `AddOn` としてデプロイすることができます。各ファイルには、`---` YAMLドキュメントセパレーターで区切られた複数のKubernetesリソースを含めることができます。マニフェスト内のリソースの整理に関する詳細は、Kubernetesドキュメントの[リソース管理](https://kubernetes.io/docs/concepts/cluster-administration/manage-deployment/)セクションを参照してください。 + +#### ファイル命名要件 + +マニフェストディレクトリ内の各ファイルの `AddOn` 名は、ファイルのベース名から派生します。マニフェストディレクトリ内(またはサブディレクトリ内)のすべてのファイルが一意の名前を持ち、Kubernetesの[オブジェクト命名制限](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/)に従うようにしてください。デフォルトのK3sパッケージ化コンポーネントで使用されている名前と競合しないようにも注意が必要です。 + +ファイル名にアンダースコアが含まれている場合に報告されるエラーの例を以下に示します: +> `Failed to process config: failed to process /var/lib/rancher/k3s/server/manifests/example_manifest.yaml: + Addon.k3s.cattle.io "example_manifest" is invalid: metadata.name: Invalid value: "example_manifest": + a lowercase RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character + (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')` + +:::danger +複数のサーバーノードがあり、複数のサーバーに追加のAddOnマニフェストを配置する場合、ファイルがこれらのノード間で同期されることを保証するのはあなたの責任です。K3sはノード間でAddOnの内容を同期せず、異なるサーバーが競合するマニフェストをデプロイしようとした場合の正しい動作を保証できません。 +::: + +## マニフェストの無効化 + +マニフェストディレクトリから特定のコンテンツのデプロイを無効にする方法は2つあります。 + +### `--disable` フラグを使用する + +上記のパッケージ化されたコンポーネントのAddOnsに加えて、`manifests` ディレクトリに配置された追加のマニフェストのAddOnsは、`--disable` フラグを使用して無効にできます。無効にされたAddOnsはクラスターから積極的にアンインストールされ、ソースファイルは `manifests` ディレクトリから削除されます。 + +例えば、新しいクラスターにtraefikをインストールしないようにするか、既存のクラスターからアンインストールしてマニフェストを削除するには、`--disable=traefik` を使用してK3sを起動します。複数の項目を無効にするには、名前をカンマで区切るか、フラグを繰り返して使用します。 + +### .skipファイルを使用する + +`/var/lib/rancher/k3s/server/manifests` 配下の任意のファイルに対して、対応するマニフェストをK3sが無視するようにする `.skip` ファイルを作成できます。`.skip` ファイルの内容は関係なく、その存在のみがチェックされます。AddOnが既に作成された後に `.skip` ファイルを作成しても、それを削除または変更することはなく、リソースも変更されません。ファイルは存在しないものとして扱われます。 + +例えば、K3sが初めて起動する前にマニフェストディレクトリに空の `traefik.yaml.skip` ファイルを作成すると、K3sは `traefik.yaml` のデプロイをスキップします: +```bash +$ ls /var/lib/rancher/k3s/server/manifests +ccm.yaml local-storage.yaml rolebindings.yaml traefik.yaml.skip +coredns.yaml traefik.yaml + +$ kubectl get pods -A +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system local-path-provisioner-64ffb68fd-xx98j 1/1 Running 0 74s +kube-system metrics-server-5489f84d5d-7zwkt 1/1 Running 0 74s +kube-system coredns-85cb69466-vcq7j 1/1 Running 0 74s +``` + +`traefik.skip` ファイルを作成する前にTraefikが既にデプロイされていた場合、Traefikはそのまま残り、K3sがアップグレードされたときに将来の更新に影響を受けません。 + +## Helm AddOns + +自動デプロイマニフェストを介してHelmチャートを管理する方法については、[Helm](../helm.md)セクションを参照してください。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/installation/private-registry.md b/i18n/ja/docusaurus-plugin-content-docs/current/installation/private-registry.md new file mode 100644 index 000000000..2333d95a0 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/installation/private-registry.md @@ -0,0 +1,245 @@ +--- +title: "プライベートレジストリの設定" +--- + +Containerdはプライベートレジストリに接続し、kubeletが必要とするイメージをプルするために使用するように設定できます。 + +起動時に、K3sは`/etc/rancher/k3s/registries.yaml`が存在するかどうかを確認します。存在する場合、このファイルに含まれるレジストリ設定がcontainerd設定の生成時に使用されます。 +* docker.ioのようなパブリックレジストリのミラーとしてプライベートレジストリを使用したい場合、そのミラーを使用する各ノードに`registries.yaml`を設定する必要があります。 +* プライベートレジストリが認証を必要とする場合、カスタムTLS証明書を使用する場合、またはTLSを使用しない場合、イメージをプルする各ノードに`registries.yaml`を設定する必要があります。 + +サーバーノードはデフォルトでスケジュール可能であることに注意してください。サーバーノードに汚染を設定しておらず、ワークロードを実行する場合は、各サーバーにも`registries.yaml`ファイルを作成することを確認してください。 + +## デフォルトエンドポイントのフォールバック + +Containerdにはすべてのレジストリに対して暗黙の「デフォルトエンドポイント」があります。 +デフォルトエンドポイントは、`registries.yaml`にそのレジストリの他のエンドポイントがリストされている場合でも、最後の手段として常に試されます。 +例えば、`registry.example.com:5000/rancher/mirrored-pause:3.6`をプルする場合、containerdは`https://registry.example.com:5000/v2`のデフォルトエンドポイントを使用します。 +* `docker.io`のデフォルトエンドポイントは`https://index.docker.io/v2`です。 +* 他のすべてのレジストリのデフォルトエンドポイントは`https:///v2`です。``はレジストリのホスト名とオプションのポートです。 + +レジストリとして認識されるためには、イメージ名の最初のコンポーネントに少なくとも1つのピリオドまたはコロンが含まれている必要があります。 +歴史的な理由から、名前にレジストリが指定されていないイメージは暗黙的に`docker.io`からのものと見なされます。 + +:::info バージョンゲート +`--disable-default-registry-endpoint`オプションは2024年1月のリリースから実験的機能として利用可能です:v1.26.13+k3s1、v1.27.10+k3s1、v1.28.6+k3s1、v1.29.1+k3s1 +::: + +ノードは`--disable-default-registry-endpoint`オプションを設定して起動できます。 +このオプションが設定されている場合、containerdはデフォルトのレジストリエンドポイントにフォールバックせず、設定されたミラーエンドポイントと、分散レジストリが有効になっている場合はそれを使用してのみプルします。 + +これは、クラスターが上流のレジストリが利用できない真のエアギャップ環境にある場合や、一部のノードのみが上流のレジストリからプルすることを希望する場合に望ましいかもしれません。 + +デフォルトのレジストリエンドポイントの無効化は、`registries.yaml`を介して設定されたレジストリにのみ適用されます。 +レジストリが`registries.yaml`のミラーエントリを介して明示的に設定されていない場合、デフォルトのフォールバック動作は引き続き使用されます。 + +## レジストリ設定ファイル + +ファイルは2つのトップレベルキーで構成され、それぞれのレジストリに対してサブキーがあります: + +```yaml +mirrors: + : + endpoint: + - https:///v2 +configs: + : + auth: + username: + password: + token: + tls: + ca_file: + cert_file: + key_file: + insecure_skip_verify: +``` + +### ミラー + +ミラーセクションはレジストリの名前とエンドポイントを定義します。例えば: + +``` +mirrors: + registry.example.com: + endpoint: + - "https://registry.example.com:5000" +``` + +各ミラーには名前とエンドポイントのセットが必要です。レジストリからイメージをプルする際、containerdはこれらのエンドポイントURLとデフォルトエンドポイントを試し、最初に動作するものを使用します。 + +#### リダイレクト + +プライベートレジストリが他のレジストリのミラーとして使用される場合、例えば[プルスルーキャッシュ](https://docs.docker.com/registry/recipes/mirror/)を設定する場合、 +イメージプルはリストされたエンドポイントに透過的にリダイレクトされます。元のレジストリ名は`ns`クエリパラメータを介してミラーエンドポイントに渡されます。 + +例えば、`docker.io`のミラーを設定している場合: + +```yaml +mirrors: + docker.io: + endpoint: + - "https://registry.example.com:5000" +``` + +この場合、`docker.io/rancher/mirrored-pause:3.6`をプルすると、透過的に`registry.example.com:5000/rancher/mirrored-pause:3.6`としてイメージがプルされます。 + +#### リライト + +各ミラーにはリライトのセットを持つことができます。リライトは正規表現に基づいてイメージの名前を変更できます。 +これは、プライベートレジストリの組織/プロジェクト構造がミラーリングしているレジストリと異なる場合に便利です。 + +例えば、次の設定は、`docker.io/rancher/mirrored-pause:3.6`のイメージを透過的に`registry.example.com:5000/mirrorproject/rancher-images/mirrored-pause:3.6`としてプルします: + +``` +mirrors: + docker.io: + endpoint: + - "https://registry.example.com:5000" + rewrite: + "^rancher/(.*)": "mirrorproject/rancher-images/$1" +``` + +リダイレクトとリライトを使用する場合でも、イメージは元の名前の下に保存されます。 +例えば、`crictl image ls`は、ノード上で`docker.io/rancher/mirrored-pause:3.6`が利用可能であることを示しますが、イメージは異なる名前でミラーリングされたレジストリからプルされました。 + +### 設定 + +`configs`セクションは各ミラーのTLSおよび認証設定を定義します。各ミラーに対して`auth`および/または`tls`を定義できます。 + +`tls`部分は以下のように構成されます: + +| ディレクティブ | 説明 | +|------------------------|--------------------------------------------------------------------------------------| +| `cert_file` | レジストリと認証するために使用されるクライアント証明書のパス | +| `key_file` | レジストリと認証するために使用されるクライアントキーのパス | +| `ca_file` | レジストリのサーバー証明書ファイルを検証するために使用されるCA証明書のパス | +| `insecure_skip_verify` | レジストリのTLS検証をスキップするかどうかを定義するブール値 | + +`auth`部分はユーザー名/パスワードまたは認証トークンのいずれかで構成されます: + +| ディレクティブ | 説明 | +|------------|---------------------------------------------------------| +| `username` | プライベートレジストリの基本認証のユーザー名 | +| `password` | プライベートレジストリの基本認証のユーザーパスワード | +| `auth` | プライベートレジストリの基本認証の認証トークン | + +以下は、異なるモードでプライベートレジストリを使用する基本的な例です: + +### ワイルドカードサポート + +:::info バージョンゲート +ワイルドカードサポートは2024年3月のリリースから利用可能です:v1.26.15+k3s1、v1.27.12+k3s1、v1.28.8+k3s1、v1.29.3+k3s1 +::: + +`mirrors`および`configs`セクションで`"*"`ワイルドカードエントリを使用して、すべてのレジストリに対するデフォルト設定を提供できます。 +デフォルト設定は、そのレジストリに特定のエントリがない場合にのみ使用されます。アスタリスクは必ず引用符で囲む必要があります。 + +以下の例では、すべてのレジストリに対してローカルレジストリミラーが使用されます。`docker.io`を除くすべてのレジストリに対してTLS検証が無効になります。 +```yaml +mirrors: + "*": + endpoint: + - "https://registry.example.com:5000" +configs: + "docker.io": + "*": + tls: + insecure_skip_verify: true +``` + +### TLSを使用する場合 + +以下は、TLSを使用する場合に各ノードで`/etc/rancher/k3s/registries.yaml`を設定する方法を示す例です。 + + + + +```yaml +mirrors: + docker.io: + endpoint: + - "https://registry.example.com:5000" +configs: + "registry.example.com:5000": + auth: + username: xxxxxx # これはレジストリのユーザー名です + password: xxxxxx # これはレジストリのパスワードです + tls: + cert_file: # レジストリで使用される証明書ファイルのパス + key_file: # レジストリで使用されるキーのパス + ca_file: # レジストリで使用されるCAファイルのパス +``` + + + + +```yaml +mirrors: + docker.io: + endpoint: + - "https://registry.example.com:5000" +configs: + "registry.example.com:5000": + tls: + cert_file: # レジストリで使用される証明書ファイルのパス + key_file: # レジストリで使用されるキーのパス + ca_file: # レジストリで使用されるCAファイルのパス +``` + + + +### TLSを使用しない場合 + +以下は、TLSを使用しない場合に各ノードで`/etc/rancher/k3s/registries.yaml`を設定する方法を示す例です。 + + + + +```yaml +mirrors: + docker.io: + endpoint: + - "http://registry.example.com:5000" +configs: + "registry.example.com:5000": + auth: + username: xxxxxx # これはレジストリのユーザー名です + password: xxxxxx # これはレジストリのパスワードです +``` + + + + +```yaml +mirrors: + docker.io: + endpoint: + - "http://registry.example.com:5000" +``` + + + +> TLS通信がない場合、エンドポイントに`http://`を指定する必要があります。そうしないと、デフォルトでhttpsになります。 + +レジストリの変更を有効にするためには、各ノードでK3sを再起動する必要があります。 + +## イメージプルのトラブルシューティング + +Kubernetesがイメージのプルに問題を抱えている場合、kubeletによって表示されるエラーは、デフォルトエンドポイントに対して行われたプル試行から返された最終エラーのみを反映することがあり、設定されたエンドポイントが使用されていないように見えることがあります。 + +ノードの`/var/lib/rancher/k3s/agent/containerd/containerd.log`にあるcontainerdログを確認して、失敗の根本原因に関する詳細情報を確認してください。 + +## プライベートレジストリへのイメージの追加 + +プライベートレジストリにイメージをミラーリングするには、イメージをプルおよびプッシュできるDockerまたは他のサードパーティツールを備えたホストが必要です。 +以下の手順は、dockerdとdocker CLIツール、およびdocker.ioとプライベートレジストリの両方にアクセスできるホストがあることを前提としています。 + +1. 作業しているリリースのGitHubから`k3s-images.txt`ファイルを取得します。 +2. `k3s-images.txt`ファイルにリストされている各K3sイメージをdocker.ioからプルします。 + 例:`docker pull docker.io/rancher/mirrored-pause:3.6` +3. イメージをプライベートレジストリに再タグ付けします。 + + 例: `docker tag docker.io/rancher/mirrored-pause:3.6 registry.example.com:5000/rancher/mirrored-pause:3.6` +4. イメージをプライベートレジストリにプッシュします。 + 例: `docker push registry.example.com:5000/rancher/mirrored-pause:3.6` \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/installation/registry-mirror.md b/i18n/ja/docusaurus-plugin-content-docs/current/installation/registry-mirror.md new file mode 100644 index 000000000..c165f494b --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/installation/registry-mirror.md @@ -0,0 +1,132 @@ +--- +title: "埋め込みレジストリミラー" +--- + +:::info バージョンゲート +埋め込みレジストリミラーは、2024年1月のリリースから実験的な機能として利用可能です:v1.26.13+k3s1、v1.27.10+k3s1、v1.28.6+k3s1、v1.29.1+k3s1 +::: + +K3sは、Kubernetesクラスター内のノード間でコンテナイメージをピアツーピアで共有できる、ステートレスな分散OCIレジストリミラーである[Spegel](https://github.com/XenitAB/spegel)を埋め込んでいます。 +分散レジストリミラーはデフォルトでは無効になっています。 + +## 分散OCIレジストリミラーの有効化 + +埋め込みレジストリミラーを有効にするには、サーバーノードを`--embedded-registry`フラグを付けて起動するか、設定ファイルに`embedded-registry: true`を追加する必要があります。 +このオプションを有効にすると、クラスター内のすべてのノードで埋め込みミラーが使用可能になります。 + +クラスター全体で有効にすると、すべてのノードはポート6443でローカルOCIレジストリをホストし、ポート5001でピアツーピアネットワークを介して利用可能なイメージのリストを公開します。 +任意のノードのcontainerdイメージストアにあるイメージは、外部レジストリにアクセスせずに他のクラスターのメンバーによってプルされることができます。 +[エアギャップイメージtarファイル](./airgap.md#manually-deploy-images-method)を介してインポートされたイメージは、Kubeletのガベージコレクションによって削除されないようにcontainerdに固定されます。 + +ピアツーピアポートは、K3sサービスの環境変数`K3S_P2P_PORT`を設定することで5001から変更できます。ポートはすべてのノードで同じ値に設定する必要があります。 +ポートの変更はサポートされておらず、推奨されません。 + +### 要件 + +埋め込みレジストリミラーが有効になっている場合、すべてのノードは内部IPアドレスを介して、TCPポート5001および6443で相互に接続できる必要があります。 +ノードが相互に接続できない場合、分散レジストリが最初に試され、その後他のエンドポイントにフォールバックするため、イメージのプルに時間がかかることがあります。 + +## レジストリミラーリングの有効化 + +レジストリのミラーリングを有効にすると、ノードは他のノードからそのレジストリのイメージをプルし、そのレジストリのイメージを他のノードと共有できます。 +一部のノードでレジストリのミラーリングが有効になっているが、他のノードでは有効になっていない場合、レジストリが有効になっているノードのみがそのレジストリからイメージを交換します。 + +上流のコンテナレジストリからのイメージのミラーリングを有効にするには、ノードはそのレジストリの`registries.yaml`の`mirrors`セクションにエントリを持っている必要があります。 +レジストリにはエンドポイントをリストする必要はなく、存在するだけで十分です。 +例えば、`docker.io`および`registry.k8s.io`からのイメージの分散ミラーリングを有効にするには、すべてのクラスターのノードで以下の内容で`registries.yaml`を設定します: + +```yaml +mirrors: + docker.io: + registry.k8s.io: +``` + +レジストリミラーのエンドポイントも通常通り追加できます。 +以下の設定では、イメージのプルは最初に埋め込みミラーを試し、その後`mirror.example.com`、最後に`docker.io`を試みます: +```yaml +mirrors: + docker.io: + endpoint: + - https://mirror.example.com +``` + +プライベートレジストリを直接使用する場合、上流レジストリのミラーとしてではなく、パブリックレジストリと同様にミラーリングを有効にできます - ミラーセクションにリストすることで: +```yaml +mirrors: + mirror.example.com: +``` + +:::info バージョンゲート +ワイルドカードサポートは、2024年3月のリリースから利用可能です:v1.26.15+k3s1、v1.27.12+k3s1、v1.28.8+k3s1、v1.29.3+k3s1 +::: + +`"*"`ワイルドカードミラーエントリを使用して、すべてのレジストリの分散ミラーリングを有効にできます。アスタリスクは必ず引用符で囲む必要があります: +```yaml +mirrors: + "*": +``` + +ノードでミラーリングが有効になっているレジストリがない場合、そのノードは分散レジストリに一切参加しません。 + +`registries.yaml`ファイルの構造に関する詳細は、[プライベートレジストリの設定](./private-registry.md)を参照してください。 + +### デフォルトエンドポイントのフォールバック + +デフォルトでは、containerdはミラーエンドポイントが設定されているレジストリからプルする際にデフォルトエンドポイントにフォールバックします。これを無効にし、 +設定されたミラーおよび/または埋め込みミラーからのみイメージをプルしたい場合は、プライベートレジストリ設定の[デフォルトエンドポイントのフォールバック](./private-registry.md#default-endpoint-fallback)セクションを参照してください。 + +`--disable-default-endpoint`オプションを使用していて、特定のレジストリから直接プルを許可し、他のレジストリからは許可しない場合は、エンドポイントを明示的に指定してイメージプルがそのレジストリ自体にフォールバックするようにできます: +```yaml +mirrors: + docker.io: # デフォルトエンドポイントなし、ノードで利用できない場合はプルに失敗 + registry.k8s.io: # デフォルトエンドポイントなし、ノードで利用できない場合はプルに失敗 + mirror.example.com: # 明示的なデフォルトエンドポイント、ノードで利用できない場合は上流からプル可能 + endpoint: + - https://mirror.example.com +``` + +### 最新タグ + +コンテナイメージにタグが指定されていない場合、暗黙のデフォルトタグは`latest`です。このタグは頻繁に更新され、最新バージョンのイメージを指します。このタグはプルされるタイミングによって異なるリビジョンのイメージを指すため、分散レジストリは他のノードから`latest`タグをプル**しません**。これにより、containerdは一貫したビューを確保するために上流レジストリまたはレジストリミラーにアクセスすることを強制されます。 + +これは、コンテナイメージに`latest`タグを使用する際にKubernetesが観察する[特別な`imagePullPolicy`のデフォルト設定](https://kubernetes.io/docs/concepts/containers/images/#imagepullpolicy-defaulting)と一致します。 + +`latest`タグのミラーリングは、K3sサービスの環境変数`K3S_P2P_ENABLE_LATEST=true`を設定することで有効にできます。上記の理由から、これはサポートされておらず、推奨されません。 + +## セキュリティ + +### 認証 + +埋め込みミラーのレジストリAPIへのアクセスには、クラスターのクライアント証明書認証局によって署名された有効なクライアント証明書が必要です。 + +分散ハッシュテーブルのピアツーピアネットワークへのアクセスには、サーバーノードによって制御される事前共有キーが必要です。 +ノードは、事前共有キーとクラスター証明書認証局によって署名された証明書の両方を使用して相互に認証します。 + +### 潜在的な懸念 + +:::warning +分散レジストリはピアツーピアの原則に基づいて構築されており、すべてのクラスターメンバー間で同等の特権と信頼を前提としています。 +これがクラスターのセキュリティポリシーに一致しない場合、埋め込み分散レジストリを有効にすべきではありません。 +::: + +埋め込みレジストリは、ノードが通常アクセスできないイメージを利用可能にする場合があります。 +例えば、一部のイメージがKubernetesイメージプルシークレットや`registries.yaml`の資格情報を介して認証が必要なレジストリ、プロジェクト、リポジトリからプルされる場合、分散レジストリは他のノードがこれらのイメージを資格情報なしで共有できるようにします。 + +あるノードのcontainerdイメージストアにイメージをプッシュする権限を持つユーザーは、他のクラスターノードのイメージを「毒する」ことができるかもしれません。他のノードはそのノードが広告するタグを信頼し、上流レジストリを確認せずに使用します。 +イメージの整合性が重要な場合は、タグの代わりにイメージダイジェストを使用するべきです。ダイジェストはこの方法で毒されることはありません。 + +## エアギャップまたは手動でロードされたイメージの共有 + +イメージの共有は、ソースレジストリに基づいて制御されます。 +エアギャップtarボールを介して直接containerdにロードされたイメージ、または`ctr`コマンドラインツールを使用してcontainerdのイメージストアに直接ロードされたイメージは、ミラーリングが有効になっているレジストリとしてタグ付けされている場合、ノード間で共有されます。 + +イメージが実際に存在する必要はなく、到達可能である必要もありません。 +例えば、架空の上流レジストリとしてイメージをタグ付けし、そのイメージをcontainerdのイメージストアにインポートすることができます。 +そのレジストリが`registries.yaml`にリストされている限り、すべてのクラスターメンバーからそのイメージをプルすることができます。 + +## イメージのプッシュ + +埋め込みレジストリは読み取り専用であり、`docker push`や他の一般的なOCIレジストリと対話するツールを使用して直接プッシュすることはできません。 + +イメージは、`ctr -n k8s.io image pull`を実行してイメージをプルするか、`docker save`で作成されたイメージアーカイブを`ctr -n k8s.io image import`コマンドを使用してロードすることで、手動で埋め込みレジストリで利用可能にできます。 +`ctr`を使用してイメージを管理する際には、kubeletに表示されるようにするために`k8s.io`名前空間を指定する必要があることに注意してください。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/installation/requirements.md b/i18n/ja/docusaurus-plugin-content-docs/current/installation/requirements.md new file mode 100644 index 000000000..4cc3dbb5b --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/installation/requirements.md @@ -0,0 +1,208 @@ +--- +title: 要件 +--- + +K3sは非常に軽量ですが、以下に示す最低要件があります。 + +K3sをコンテナ内で実行する場合でも、ネイティブのLinuxサービスとして実行する場合でも、K3sを実行する各ノードは以下の最低要件を満たす必要があります。これらの要件はK3sおよびそのパッケージ化されたコンポーネントのためのベースラインであり、ワークロード自体によって消費されるリソースは含まれていません。 + +## 前提条件 + +2つのノードは同じホスト名を持つことはできません。 + +複数のノードが同じホスト名を持つ場合、またはホスト名が自動プロビジョニングシステムによって再利用される可能性がある場合は、`--with-node-id`オプションを使用して各ノードにランダムなサフィックスを追加するか、`--node-name`または`$K3S_NODE_NAME`で一意の名前を渡してクラスターに追加する各ノードに指定してください。 + +## アーキテクチャ + +K3sは以下のアーキテクチャで利用可能です: +- x86_64 +- armhf +- arm64/aarch64 +- s390x + +:::warning ARM64 ページサイズ + +2023年5月以前のリリース(v1.24.14+k3s1、v1.25.10+k3s1、v1.26.5+k3s1、v1.27.2+k3s1)では、`aarch64/arm64`システムでカーネルが4kページを使用する必要があります。**RHEL9**、**Ubuntu**、**Raspberry PI OS**、および**SLES**はすべてこの要件を満たしています。 + +::: + +## オペレーティングシステム + +K3sはほとんどの最新のLinuxシステムで動作することが期待されています。 + +一部のOSには追加のセットアップ要件があります: + + + +firewalldをオフにすることをお勧めします: +```bash +systemctl disable firewalld --now +``` + +firewalldを有効にしたままにしたい場合、デフォルトで以下のルールが必要です: +```bash +firewall-cmd --permanent --add-port=6443/tcp #apiserver +firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 #pods +firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16 #services +firewall-cmd --reload +``` + +セットアップに応じて追加のポートを開く必要がある場合があります。詳細については[インバウンドルール](#inbound-rules-for-k3s-nodes)を参照してください。ポッドやサービスのデフォルトCIDRを変更する場合は、ファイアウォールルールを更新する必要があります。 + + + + +firewalldをオフにすることをお勧めします: +```bash +systemctl disable firewalld --now +``` + +firewalldを有効にしたままにしたい場合、デフォルトで以下のルールが必要です: +```bash +firewall-cmd --permanent --add-port=6443/tcp #apiserver +firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 #pods +firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16 #services +firewall-cmd --reload +``` + +セットアップに応じて追加のポートを開く必要がある場合があります。詳細については[インバウンドルール](#inbound-rules-for-k3s-nodes)を参照してください。ポッドやサービスのデフォルトCIDRを変更する場合は、ファイアウォールルールを更新する必要があります。 + +有効になっている場合は、nm-cloud-setupを無効にしてノードを再起動する必要があります: +```bash +systemctl disable nm-cloud-setup.service nm-cloud-setup.timer +reboot +``` + + + +古いDebianリリースには既知のiptablesバグがある可能性があります。詳細は[既知の問題](../known-issues.md#iptables)を参照してください。 + +ufw(uncomplicated firewall)をオフにすることをお勧めします: +```bash +ufw disable +``` + +ufwを有効にしたままにしたい場合、デフォルトで以下のルールが必要です: +```bash +ufw allow 6443/tcp #apiserver +ufw allow from 10.42.0.0/16 to any #pods +ufw allow from 10.43.0.0/16 to any #services +``` + +セットアップに応じて追加のポートを開く必要がある場合があります。詳細については[インバウンドルール](#inbound-rules-for-k3s-nodes)を参照してください。ポッドやサービスのデフォルトCIDRを変更する場合は、ファイアウォールルールを更新する必要があります。 + + + +Raspberry Pi OSはDebianベースであり、既知のiptablesバグがある可能性があります。詳細は[既知の問題](../known-issues.md#iptables)を参照してください。 + +標準のRaspberry Pi OSインストールでは、`cgroups`が有効になっていません。**K3S**はsystemdサービスを開始するために`cgroups`を必要とします。`cgroups`は`/boot/cmdline.txt`に`cgroup_memory=1 cgroup_enable=memory`を追加することで有効にできます。 + +例のcmdline.txt: +``` +console=serial0,115200 console=tty1 root=PARTUUID=58b06195-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait cgroup_memory=1 cgroup_enable=memory +``` + +Ubuntu 21.10以降、Raspberry Piでのvxlanサポートは別のカーネルモジュールに移動されました。 +```bash +sudo apt install linux-modules-extra-raspi +``` + + + +Rancher管理のK3sクラスターでテストされたOSの詳細については、[Rancherのサポートとメンテナンスの条件](https://rancher.com/support-maintenance-terms/)を参照してください。 + +## ハードウェア + +ハードウェア要件はデプロイメントの規模に応じてスケールします。ここでは最低限の推奨事項を示します。 + +| スペック | 最低限 | 推奨 | +|------|---------|-------------| +| CPU | 1コア | 2コア | +| RAM | 512 MB | 1 GB | + +[リソースプロファイリング](../reference/resource-profiling.md)では、K3sエージェント、ワークロードを持つK3sサーバー、および1つのエージェントを持つK3sサーバーの最小リソース要件を決定するためのテスト結果をキャプチャしています。また、K3sサーバーとエージェントの利用に最も大きな影響を与える要因についての分析や、エージェントやワークロードからクラスターのデータストアを保護する方法についても含まれています。 + +:::info Raspberry Piと組み込みetcd +Raspberry Piで組み込みetcdを使用してK3sをデプロイする場合、外部SSDを使用することをお勧めします。etcdは書き込みが多く、SDカードはIO負荷に耐えられません。 +::: + +#### ディスク + +K3sのパフォーマンスはデータベースのパフォーマンスに依存します。最適な速度を確保するために、可能であればSSDを使用することをお勧めします。ARMデバイスでSDカードやeMMCを使用する場合、ディスクのパフォーマンスは異なります。 + +## ネットワーキング + +K3sサーバーはポート6443がすべてのノードからアクセス可能である必要があります。 + +ノードは、Flannel VXLANバックエンドを使用する場合はUDPポート8472を介して、Flannel WireGuardバックエンドを使用する場合はUDPポート51820(IPv6を使用する場合は51821)を介して他のノードに到達できる必要があります。ノードは他のポートでリッスンしないようにする必要があります。K3sはリバーストンネリングを使用して、ノードがサーバーに対してアウトバウンド接続を行い、すべてのkubeletトラフィックがそのトンネルを通じて実行されるようにします。ただし、Flannelを使用せずに独自のカスタムCNIを提供する場合は、Flannelが必要とするポートはK3sには必要ありません。 + +メトリクスサーバーを利用する場合、すべてのノードがポート10250で相互にアクセス可能である必要があります。 + +組み込みetcdを使用して高可用性を実現する予定がある場合、サーバーノードはポート2379および2380で相互にアクセス可能である必要があります。 + +:::tip 重要 +ノードのVXLANポートは、クラスターネットワークが誰でもアクセスできるようになるため、外部に公開しないでください。ポート8472へのアクセスを無効にするファイアウォール/セキュリティグループの背後でノードを実行してください。 +::: + +:::danger +Flannelは、トラフィックをスイッチングするL2ネットワークを作成するために[Bridge CNIプラグイン](https://www.cni.dev/plugins/current/main/bridge/)に依存しています。`NET_RAW`機能を持つ不正なポッドは、そのL2ネットワークを悪用して[ARPスプーフィング](https://static.sched.com/hosted_files/kccncna19/72/ARP%20DNS%20spoof.pdf)などの攻撃を開始する可能性があります。したがって、[Kubernetesドキュメント](https://kubernetes.io/docs/concepts/security/pod-security-standards/)に記載されているように、信頼できないポッドで`NET_RAW`を無効にする制限付きプロファイルを設定してください。 +::: + +### K3sノードのインバウンドルール + +| プロトコル | ポート | ソース | 宛先 | 説明 +|----------|-----------|-----------|-------------|------------ +| TCP | 2379-2380 | サーバー | サーバー | 組み込みetcdを使用したHAの場合のみ必要 +| TCP | 6443 | エージェント | サーバー | K3sスーパーバイザーおよびKubernetes APIサーバー +| UDP | 8472 | すべてのノード | すべてのノード | Flannel VXLANの場合のみ必要 +| TCP | 10250 | すべてのノード | すべてのノード | Kubeletメトリクス +| UDP | 51820 | すべてのノード | すべてのノード | Flannel WireguardをIPv4で使用する場合のみ必要 +| UDP | 51821 | すべてのノード | すべてのノード | Flannel WireguardをIPv6で使用する場合のみ必要 +| TCP | 5001 | すべてのノード | すべてのノード | 組み込み分散レジストリ(Spegel)の場合のみ必要 +| TCP | 6443 | すべてのノード | すべてのノード | 組み込み分散レジストリ(Spegel)の場合のみ必要 + +通常、すべてのアウトバウンドトラフィックは許可されます。 + +使用するOSに応じて、ファイアウォールに追加の変更が必要な場合があります。 + +## 大規模クラスター + +ハードウェア要件はK3sクラスターの規模に基づいています。プロダクションおよび大規模クラスターの場合、外部データベースを使用した高可用性セットアップをお勧めします。プロダクションでの外部データベースには以下のオプションが推奨されます: + +- MySQL +- PostgreSQL +- etcd + +### CPUとメモリ + +高可用性K3sサーバーのノードに必要な最小CPUおよびメモリ要件は以下の通りです: + +| デプロイメント規模 | ノード数 | VCPUS | RAM | +|:---------------:|:---------:|:-----:|:-----:| +| 小規模 | 最大10 | 2 | 4 GB | +| 中規模 | 最大100 | 4 | 8 GB | +| 大規模 | 最大250 | 8 | 16 GB | +| 超大規模 | 最大500 | 16 | 32 GB | +| 超超大規模 | 500+ | 32 | 64 GB | + +### ディスク + +クラスターのパフォーマンスはデータベースのパフォーマンスに依存します。最適な速度を確保するために、常にSSDディスクを使用してK3sクラスターをバックアップすることをお勧めします。クラウドプロバイダーでは、最大IOPSを許可する最小サイズを使用することもお勧めします。 + +### ネットワーク + +クラスターCIDRのサブネットサイズを増やして、ポッドのIPが不足しないようにすることを検討してください。K3sサーバーを起動する際に`--cluster-cidr`オプションを渡すことでそれを行うことができます。 + +### データベース + +K3sはMySQL、PostgreSQL、MariaDB、およびetcdなどのさまざまなデータベースをサポートしています。詳細については[クラスターデータストア](../datastore/datastore.md)を参照してください。 + +大規模クラスターを実行するために必要なデータベースリソースのサイズガイドは以下の通りです: + +| デプロイメント規模 | ノード数 | VCPUS | RAM | +|:---------------:|:---------:|:-----:|:-----:| +| 小規模 | 最大10 | 1 | 2 GB | +| 中規模 | 最大100 | 2 | 8 GB | +| 大規模 | 最大250 | 4 | 16 GB | +| 超大規模 | 最大500 | 8 | 32 GB | +| 超超大規模 | 500+ | 16 | 64 GB | diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/installation/server-roles.md b/i18n/ja/docusaurus-plugin-content-docs/current/installation/server-roles.md new file mode 100644 index 000000000..ab9ebe4bb --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/installation/server-roles.md @@ -0,0 +1,50 @@ +--- +title: "サーバーロールの管理" +--- + +`--cluster-init` オプションを使用して K3s サーバーを起動すると、apiserver、controller-manager、scheduler、および etcd を含むすべてのコントロールプレーンコンポーネントが実行されます。特定のコンポーネントを無効にして、コントロールプレーンと etcd のロールを別々のノードに分割することが可能です。 + +:::info +このドキュメントは、埋め込み etcd を使用している場合にのみ関連します。埋め込み etcd を使用していない場合、すべてのサーバーはコントロールプレーンロールを持ち、コントロールプレーンコンポーネントを実行します。 +::: + +## 専用の `etcd` ノード +`etcd` ロールのみを持つサーバーを作成するには、すべてのコントロールプレーンコンポーネントを無効にして K3s を起動します: +``` +curl -fL https://get.k3s.io | sh -s - server --cluster-init --disable-apiserver --disable-controller-manager --disable-scheduler +``` + +この最初のノードは etcd を起動し、追加の `etcd` および/または `control-plane` ノードが参加するのを待ちます。クラスターは、`control-plane` コンポーネントが有効な追加のサーバーが参加するまで使用できません。 + +## 専用の `control-plane` ノード +:::note +専用の `control-plane` ノードはクラスターの最初のサーバーにはなれません。専用の `control-plane` ノードが参加する前に、`etcd` ロールを持つ既存のノードが必要です。 +::: + +`control-plane` ロールのみを持つサーバーを作成するには、etcd を無効にして k3s を起動します: +```bash +curl -fL https://get.k3s.io | sh -s - server --token --disable-etcd --server https://:6443 +``` + +専用のサーバーノードを作成した後、選択したロールは `kubectl get node` で確認できます: +```bash +$ kubectl get nodes +NAME STATUS ROLES AGE VERSION +k3s-server-1 Ready etcd 5h39m v1.20.4+k3s1 +k3s-server-2 Ready control-plane,master 5h39m v1.20.4+k3s1 +``` + +## 既存のサーバーへのロールの追加 + +ロールは、無効化フラグを削除して K3s を再起動することで、既存の専用ノードに追加できます。例えば、専用の `etcd` ノードに `control-plane` ロールを追加したい場合、systemd ユニットまたは設定ファイルから `--disable-apiserver --disable-controller-manager --disable-scheduler` フラグを削除し、サービスを再起動します。 + +## 設定ファイルの構文 + +他のすべての CLI フラグと同様に、[設定ファイル](configuration.md#configuration-file) を使用してコンポーネントを無効にすることができます。例えば、専用の `etcd` ノードを作成するには、次の値を `/etc/rancher/k3s/config.yaml` に配置します: + +```yaml +cluster-init: true +disable-apiserver: true +disable-controller-manager: true +disable-scheduler: true +``` \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/installation/uninstall.md b/i18n/ja/docusaurus-plugin-content-docs/current/installation/uninstall.md new file mode 100644 index 000000000..fac8fac56 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/installation/uninstall.md @@ -0,0 +1,26 @@ +--- +title: K3sのアンインストール +--- + +:::warning +K3sをアンインストールすると、ローカルクラスターのデータ、設定、およびすべてのスクリプトとCLIツールが削除されます。 +外部データストアからのデータや、外部Kubernetesストレージボリュームを使用してポッドによって作成されたデータは削除されません。 +::: + +インストールスクリプトを使用してK3sをインストールした場合、インストール中にK3sをアンインストールするためのスクリプトが生成されました。 + +アンインストール後にノードを既存のクラスターに再参加させる予定がある場合は、ノードのパスワードシークレットが削除されるように、クラスターからノードを削除することを忘れないでください。詳細については、[ノード登録](../architecture.md#how-agent-node-registration-works)のドキュメントを参照してください。 + +### サーバーのアンインストール +サーバーノードからK3sをアンインストールするには、次のコマンドを実行します: + +```bash +/usr/local/bin/k3s-uninstall.sh +``` + +### エージェントのアンインストール +エージェントノードからK3sをアンインストールするには、次のコマンドを実行します: + +```bash +/usr/local/bin/k3s-agent-uninstall.sh +``` diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/introduction.md b/i18n/ja/docusaurus-plugin-content-docs/current/introduction.md new file mode 100644 index 000000000..26ffb5be9 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/introduction.md @@ -0,0 +1,43 @@ +--- +slug: / +title: "K3s - 軽量なKubernetes" +--- + +軽量なKubernetes。インストールが簡単で、メモリ使用量は半分、100MB未満のバイナリにすべてが収まります。 + +以下に最適です: + +* エッジ +* ホームラボ +* モノのインターネット (IoT) +* 継続的インテグレーション (CI) +* 開発 +* シングルボードコンピュータ (ARM) +* エアギャップ環境 +* 組み込みK8s +* K8sクラスタロジーの博士号が不要な状況 + +# K3sとは? + +K3sは、以下の強化機能を備えた完全準拠のKubernetesディストリビューションです: + +* 単一のバイナリまたは最小限のコンテナイメージとして配布。 +* デフォルトのストレージバックエンドとしてsqlite3に基づく軽量データストア。etcd3、MySQL、およびPostgresも利用可能。 +* TLSやオプションの複雑さを処理するシンプルなランチャーにラップ。 +* 軽量環境に適した合理的なデフォルト設定でデフォルトでセキュア。 +* すべてのKubernetesコントロールプレーンコンポーネントの操作が単一のバイナリとプロセスにカプセル化されており、K3sは証明書の配布などの複雑なクラスタ操作を自動化および管理可能。 +* 外部依存関係が最小限に抑えられており、必要なのは最新のカーネルとcgroupマウントのみ。 +* 簡単な「バッテリー同梱」クラスタ作成のために必要な依存関係をパッケージ化: + * containerd / cri-dockerdコンテナランタイム (CRI) + * Flannelコンテナネットワークインターフェース (CNI) + * CoreDNSクラスタDNS + * Traefikイングレスコントローラ + * ServiceLBロードバランサーコントローラ + * Kube-routerネットワークポリシーコントローラ + * Local-path-provisioner永続ボリュームコントローラ + * Spegel分散コンテナイメージレジストリミラー + * ホストユーティリティ (iptables, socat, etc) + +# 名前の由来は? + +メモリフットプリントが半分のKubernetesインストールを望んでいました。KubernetesはK8sとして表記される10文字の単語です。したがって、Kubernetesの半分の大きさのものはK3sとして表記される5文字の単語になります。K3sの正式な長い形や公式の発音はありません。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/known-issues.md b/i18n/ja/docusaurus-plugin-content-docs/current/known-issues.md new file mode 100644 index 000000000..9519e2437 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/known-issues.md @@ -0,0 +1,101 @@ +--- +title: 既知の問題 +--- +既知の問題は定期的に更新され、次のリリースで直ちに対処されない可能性のある問題についてお知らせすることを目的としています。 + +### Snap Docker + +K3sをDockerと一緒に使用する予定がある場合、Snapパッケージ経由でインストールされたDockerは推奨されません。これは、K3sの実行に問題を引き起こすことが知られているためです。 + +### Iptables + +iptables v1.6.1およびそれ以前のバージョンをnftablesモードで実行している場合、問題が発生する可能性があります。問題を回避するために、新しいiptables(例えば1.6.1+)を使用するか、iptablesのレガシーモードを実行することをお勧めします。 + +``` +update-alternatives --set iptables /usr/sbin/iptables-legacy +update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy +``` + +iptablesバージョン1.8.0-1.8.4には、K3sの失敗を引き起こす既知の問題があります。いくつかの人気のあるLinuxディストリビューションは、デフォルトでこれらのバージョンを提供しています。あるバグは重複したルールの蓄積を引き起こし、ノードのパフォーマンスと安定性に悪影響を与えます。この問題の影響を受けているかどうかを確認する方法については、[Issue #3117](https://github.com/k3s-io/k3s/issues/3117)を参照してください。 + +K3sには、正常に動作するiptables(v1.8.8)が含まれています。K3sを`--prefer-bundled-bin`オプションで起動するか、オペレーティングシステムからiptables/nftablesパッケージをアンインストールすることで、K3sにバンドルされたiptablesバージョンを使用させることができます。 + +:::info バージョンゲート + +`--prefer-bundled-bin`フラグは、2022-12リリース(v1.26.0+k3s1、v1.25.5+k3s1、v1.24.9+k3s1、v1.23.15+k3s1)から利用可能です。 + +::: + +### ルートレスモード + +K3sをルートレスモードで実行することは実験的であり、いくつかの[既知の問題](./advanced.md#known-issues-with-rootless-mode)があります。 + +### v1.24.xからv1.25.xへのハードニングされたクラスターのアップグレード {#hardened-125} + +Kubernetesは、Pod Security Standardsに置き換えるためにv1.25からPodSecurityPolicyを削除しました。PSSについての詳細は[上流のドキュメント](https://kubernetes.io/docs/concepts/security/pod-security-standards/)を参照してください。K3Sの場合、ノードに`PodSecurityPolicy`が設定されている場合、いくつかの手動ステップが必要です。 + +1. すべてのノードで、`kube-apiserver-arg`の値を更新して`PodSecurityPolicy`アドミッションプラグインを削除します。代わりに次の引数値を追加します:`'admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml'`、ただし、まだK3Sを再起動またはアップグレードしないでください。以下は、この更新後のノードのハードニングされた設定ファイルの例です: +```yaml +protect-kernel-defaults: true +secrets-encryption: true +kube-apiserver-arg: + - 'admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml' + - 'audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log' + - 'audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml' + - 'audit-log-maxage=30' + - 'audit-log-maxbackup=10' + - 'audit-log-maxsize=100' + - 'request-timeout=300s' + - 'service-account-lookup=true' +kube-controller-manager-arg: + - 'terminated-pod-gc-threshold=10' + - 'use-service-account-credentials=true' +kubelet-arg: + - 'streaming-connection-idle-timeout=5m' + - 'make-iptables-util-chains=true' +``` +2. 次の内容で`/var/lib/rancher/k3s/server/psa.yaml`ファイルを作成します。さらに多くのネームスペースを免除することもできます。以下の例では、`kube-system`(必須)、`cis-operator-system`(オプションですが、Rancherを通じてセキュリティスキャンを実行する場合に便利)、および`system-upgrade`([自動アップグレード](./upgrades/automated.md)を行う場合に必須)を免除しています。 +```yaml +apiVersion: apiserver.config.k8s.io/v1 +kind: AdmissionConfiguration +plugins: +- name: PodSecurity + configuration: + apiVersion: pod-security.admission.config.k8s.io/v1beta1 + kind: PodSecurityConfiguration + defaults: + enforce: "restricted" + enforce-version: "latest" + audit: "restricted" + audit-version: "latest" + warn: "restricted" + warn-version: "latest" + exemptions: + usernames: [] + runtimeClasses: [] + namespaces: [kube-system, cis-operator-system, system-upgrade] +``` +3. 通常通りアップグレードを実行します。[自動アップグレード](./upgrades/automated.md)を行う場合、`system-upgrade-controller`ポッドが実行されているネームスペースが[Pod Securityレベル](https://kubernetes.io/docs/concepts/security/pod-security-admission/#pod-security-levels)に従って特権を持つように設定されていることを確認してください: +```yaml +apiVersion: v1 +kind: Namespace +metadata: + name: system-upgrade + labels: + # コントローラーが正常に実行されるためには、この値は特権である必要があります。 + pod-security.kubernetes.io/enforce: privileged + pod-security.kubernetes.io/enforce-version: v1.25 + # これらの値は、希望する`enforce`レベルに設定していますが、以下の値は利用可能なオプションのいずれかにすることができます。 + pod-security.kubernetes.io/audit: privileged + pod-security.kubernetes.io/audit-version: v1.25 + pod-security.kubernetes.io/warn: privileged + pod-security.kubernetes.io/warn-version: v1.25 +``` +4. アップグレードが完了したら、クラスターから残りのPSPリソースを削除します。多くの場合、`/var/lib/rancher/k3s/server/manifests/`内のカスタムファイルでハードニングに使用されるPodSecurityPoliciesおよび関連するRBACリソースが存在する可能性があります。これらのリソースを削除すると、k3sは自動的に更新されます。タイミングの関係で、これらの一部がクラスターに残る場合があるため、その場合は手動で削除する必要があります。[ハードニングガイド](./security/hardening-guide.md)が以前に従われていた場合、以下のコマンドで削除できるはずです: +```sh +# PSPに関連するリソースを取得 +$ kubectl get roles,clusterroles,rolebindings,clusterrolebindings -A | grep -i psp + +# これらのリソースを削除: +$ kubectl delete clusterrole.rbac.authorization.k8s.io/psp:restricted-psp clusterrole.rbac.authorization.k8s.io/psp:svclb-psp clusterrole.rbac.authorization.k8s.io/psp:system-unrestricted-psp clusterrolebinding.rbac.authorization.k8s.io/default:restricted-psp clusterrolebinding.rbac.authorization.k8s.io/system-unrestricted-node-psp-rolebinding && kubectl delete -n kube-system rolebinding.rbac.authorization.k8s.io/svclb-psp-rolebinding rolebinding.rbac.authorization.k8s.io/system-unrestricted-svc-acct-psp-rolebinding +``` \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/networking/basic-network-options.md b/i18n/ja/docusaurus-plugin-content-docs/current/networking/basic-network-options.md new file mode 100644 index 000000000..410bb8f27 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/networking/basic-network-options.md @@ -0,0 +1,178 @@ +--- +title: "基本的なネットワークオプション" +--- + +このページでは、Flannelの設定や置き換え、IPv6やデュアルスタックの設定を含むK3sのネットワーク設定オプションについて説明します。 + +## Flannelオプション + +[Flannel](https://github.com/flannel-io/flannel/blob/master/README.md)は、Kubernetesコンテナネットワークインターフェース(CNI)を実装するレイヤー3ネットワークファブリックの軽量プロバイダーです。一般的にCNIプラグインと呼ばれます。 + +* Flannelオプションはサーバーノードでのみ設定でき、クラスター内のすべてのサーバーで同一である必要があります。 +* Flannelのデフォルトバックエンドは`vxlan`です。暗号化を有効にするには、`wireguard-native`バックエンドを使用します。 +* 最近のバージョンのUbuntuを使用しているRaspberry Piで`vxlan`を使用するには、[追加の準備](../installation/requirements.md?os=pi#operating-systems)が必要です。 +* Flannelバックエンドとして`wireguard-native`を使用する場合、一部のLinuxディストリビューションでは追加のモジュールが必要になることがあります。詳細については[WireGuardインストールガイド](https://www.wireguard.com/install/)を参照してください。WireGuardのインストール手順に従うことで、適切なカーネルモジュールがインストールされます。WireGuard Flannelバックエンドを使用する前に、すべてのノード(サーバーとエージェント)でWireGuardカーネルモジュールが利用可能であることを確認する必要があります。 + +| CLIフラグと値 | 説明 | +|--------------------|-------------| +| `--flannel-ipv6-masq` | IPv6トラフィックにマスカレードルールを適用します(IPv4のデフォルト)。デュアルスタックまたはIPv6のみのクラスターにのみ適用されます。`none`以外のFlannelバックエンドと互換性があります。 | +| `--flannel-external-ip` | Flannelトラフィックの宛先として内部IPではなくノードの外部IPアドレスを使用します。ノードで--node-external-ipが設定されている場合にのみ適用されます。 | +| `--flannel-backend=vxlan` | パケットをカプセル化するためにVXLANを使用します。Raspberry Piでは追加のカーネルモジュールが必要になる場合があります。 | +| `--flannel-backend=host-gw` | ノードIPを介してポッドサブネットへのIPルートを使用します。クラスター内のすべてのノード間で直接レイヤー2接続が必要です。 | +| `--flannel-backend=wireguard-native` | ネットワークトラフィックをカプセル化および暗号化するためにWireGuardを使用します。追加のカーネルモジュールが必要になる場合があります。 | +| `--flannel-backend=ipsec` | `swanctl`バイナリを介してstrongSwan IPSecを使用してネットワークトラフィックを暗号化します。(非推奨; v1.27.0で削除予定) | +| `--flannel-backend=none` | Flannelを完全に無効にします。 | + +:::info バージョンゲート + +K3sは2022-12リリース(v1.26.0+k3s1、v1.25.5+k3s1、v1.24.9+k3s1、v1.23.15+k3s1)以降、strongSwanの`swanctl`および`charon`バイナリを含まなくなりました。これらのリリースにアップグレードまたはインストールする前に、ノードに正しいパッケージをインストールしてください。`ipsec`バックエンドを使用する場合は特に注意が必要です。 + +::: + +### `wireguard`または`ipsec`から`wireguard-native`への移行 + +従来の`wireguard`バックエンドはホストに`wg`ツールのインストールが必要です。このバックエンドはK3s v1.26以降では利用できず、カーネルと直接インターフェースする`wireguard-native`バックエンドが推奨されます。 + +従来の`ipsec`バックエンドはホストに`swanctl`および`charon`バイナリのインストールが必要です。このバックエンドはK3s v1.27以降では利用できず、`wireguard-native`バックエンドが推奨されます。 + +ユーザーはできるだけ早く新しいバックエンドに移行することをお勧めします。移行には、ノードが新しい設定で起動する間の短期間のダウンタイムが必要です。以下の2つのステップに従ってください: + +1. すべてのサーバーノードでK3s設定を更新します。設定ファイルを使用している場合、`/etc/rancher/k3s/config.yaml`に`flannel-backend: wireguard-native`を含め、`flannel-backend: wireguard`または`flannel-backend: ipsec`を置き換えます。systemdユニットでCLIフラグを使用してK3sを設定している場合は、同等のフラグを変更します。 +2. サーバーから始めて、すべてのノードを再起動します。 + +## カスタムCNI + +`--flannel-backend=none`でK3sを起動し、任意のCNIをインストールします。ほとんどのCNIプラグインには独自のネットワークポリシーエンジンが付属しているため、競合を避けるために`--disable-network-policy`も設定することをお勧めします。考慮すべき重要な情報は次のとおりです: + + + + +[Canal Docs](https://docs.tigera.io/calico/latest/getting-started/kubernetes/flannel/install-for-flannel#installing-calico-for-policy-and-flannel-aka-canal-for-networking)ウェブサイトを訪問し、Canalをインストールする手順に従います。Canal YAMLを修正して、`container_settings`セクションでIP転送が許可されるようにします。例えば: + +```yaml +"container_settings": { + "allow_ip_forwarding": true +} +``` + +Canal YAMLを適用します。 + +ホストで次のコマンドを実行して設定が適用されたことを確認します: + +```bash +cat /etc/cni/net.d/10-canal.conflist +``` + +IP転送がtrueに設定されていることを確認します。 + + + + +[Calico CNIプラグインガイド](https://docs.tigera.io/calico/latest/reference/configure-cni-plugins)に従います。Calico YAMLを修正して、`container_settings`セクションでIP転送が許可されるようにします。例えば: + +```yaml +"container_settings": { + "allow_ip_forwarding": true +} +``` + +Calico YAMLを適用します。 + +ホストで次のコマンドを実行して設定が適用されたことを確認します: + +```bash +cat /etc/cni/net.d/10-calico.conflist +``` + +IP転送がtrueに設定されていることを確認します。 + + + + +`k3s-killall.sh`または`k3s-uninstall.sh`を実行する前に、`cilium_host`、`cilium_net`、および`cilium_vxlan`インターフェースを手動で削除する必要があります。これを行わないと、K3sが停止したときにホストへのネットワーク接続が失われる可能性があります。 + +```bash +ip link delete cilium_host +ip link delete cilium_net +ip link delete cilium_vxlan +``` + +さらに、ciliumのiptablesルールを削除する必要があります: + +```bash +iptables-save | grep -iv cilium | iptables-restore +ip6tables-save | grep -iv cilium | ip6tables-restore +``` + + + + +## コントロールプレーンのEgress Selector設定 + +K3sエージェントとサーバーは、コントロールプレーン(apiserver)とエージェント(kubeletおよびcontainerd)コンポーネント間の双方向通信をカプセル化するために使用されるノード間のWebSocketトンネルを維持します。これにより、エージェントがkubeletおよびコンテナランタイムのストリーミングポートを外部接続に公開せずに動作でき、エージェントが無効になっている場合でもコントロールプレーンがクラスターサービスに接続できるようになります。この機能は、他のKubernetesディストリビューションで一般的に使用される[Konnectivity](https://kubernetes.io/docs/tasks/extend-kubernetes/setup-konnectivity/)サービスと同等であり、apiserverのEgress Selector設定を介して管理されます。 + +デフォルトモードは`agent`です。[エージェントレスサーバー](../advanced.md#running-agentless-servers-experimental)を実行する場合、`pod`または`cluster`モードが推奨されます。これにより、flannelおよびkube-proxyがない場合でもapiserverがクラスターサービスエンドポイントにアクセスできるようになります。 + +Egress Selectorモードは、`--egress-selector-mode`フラグを介してサーバーで設定でき、次の4つのモードを提供します: +* `disabled`: apiserverはkubeletやクラスターエンドポイントと通信するためにエージェントトンネルを使用しません。このモードでは、サーバーがkubelet、CNI、およびkube-proxyを実行し、エージェントに直接接続できる必要があります。そうでない場合、apiserverはサービスエンドポイントにアクセスできず、`kubectl exec`および`kubectl logs`を実行できません。 +* `agent`(デフォルト): apiserverはkubeletと通信するためにエージェントトンネルを使用します。このモードでは、サーバーもkubelet、CNI、およびkube-proxyを実行する必要があります。そうでない場合、apiserverはサービスエンドポイントにアクセスできません。 +* `pod`: apiserverはkubeletおよびサービスエンドポイントと通信するためにエージェントトンネルを使用し、ノードおよびエンドポイントを監視してエンドポイント接続を正しいエージェントにルーティングします。 + **注意**: このモードは、独自のIPAMを使用し、ノードのPodCIDR割り当てを尊重しないCNIを使用している場合には機能しません。これらのCNIを使用する場合は、`cluster`または`agent`モードを使用する必要があります。 +* `cluster`: apiserverはkubeletおよびサービスエンドポイントと通信するためにエージェントトンネルを使用し、ポッドおよびエンドポイントを監視してエンドポイント接続を正しいエージェントにルーティングします。このモードは、異なるクラスター構成間での移植性が最も高いですが、オーバーヘッドが増加します。 + +## デュアルスタック(IPv4 + IPv6)ネットワーキング + +:::info バージョンゲート + +[v1.21.0+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.21.0%2Bk3s1)から実験的サポートが利用可能です。 +[v1.23.7+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.23.7%2Bk3s1)から安定したサポートが利用可能です。 + +::: + +:::warning 既知の問題 + +1.27以前では、Kubernetesの[Issue #111695](https://github.com/kubernetes/kubernetes/issues/111695)により、デュアルスタック環境でクラスター通信にプライマリネットワークインターフェースを使用していない場合、KubeletがノードのIPv6アドレスを無視します。このバグを回避するには、1.27以降を使用するか、次のフラグをK3sサーバーおよびエージェントの両方に追加します: + +``` +--kubelet-arg="node-ip=0.0.0.0" # IPv4トラフィックを優先する場合 +#または +--kubelet-arg="node-ip=::" # IPv6トラフィックを優先する場合 +``` + +::: + +デュアルスタックネットワーキングは、クラスターが最初に作成されるときに設定する必要があります。IPv4のみで開始された既存のクラスターでは有効にできません。 + +K3sでデュアルスタックを有効にするには、すべてのサーバーノードで有効なデュアルスタック`cluster-cidr`および`service-cidr`を提供する必要があります。以下は有効な設定の例です: + +``` +--cluster-cidr=10.42.0.0/16,2001:cafe:42::/56 --service-cidr=10.43.0.0/16,2001:cafe:43::/112 +``` + +有効な`cluster-cidr`および`service-cidr`値を設定できますが、上記のマスクが推奨されます。`cluster-cidr`マスクを変更する場合は、計画されたノードごとのポッド数および総ノード数に合わせて`node-cidr-mask-size-ipv4`および`node-cidr-mask-size-ipv6`値も変更する必要があります。サポートされる最大の`service-cidr`マスクはIPv4の場合は/12、IPv6の場合は/112です。パブリッククラウドにデプロイする場合は、IPv6トラフィックを許可することを忘れないでください。 + +カスタムCNIプラグイン、つまりFlannel以外のCNIプラグインを使用している場合、追加の設定が必要になることがあります。プラグインのデュアルスタックドキュメントを参照し、ネットワークポリシーが有効にできるか確認してください。 + +:::warning 既知の問題 + +クラスタCIDRおよびサービスCIDRをIPv6を主要ファミリーとして定義する場合、すべてのクラスタメンバーのノードIPを明示的に設定し、ノードの希望するIPv6アドレスを最初のアドレスとして配置する必要があります。デフォルトでは、kubeletは常にIPv4を主要アドレスファミリーとして使用します。 +::: + +## シングルスタックIPv6ネットワーキング + +:::info バージョンゲート +[v1.22.9+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.22.9%2Bk3s1)から利用可能 +::: + +:::warning 既知の問題 +IPv6のデフォルトルートがルーター広告(RA)によって設定されている場合、sysctl `net.ipv6.conf.all.accept_ra=2`を設定する必要があります。そうしないと、ノードはデフォルトルートが期限切れになるとドロップします。RAを受け入れることは、[中間者攻撃](https://github.com/kubernetes/kubernetes/issues/91507)のリスクを高める可能性があることに注意してください。 +::: + +シングルスタックIPv6クラスタ(IPv4を含まないクラスタ)は、`--cluster-cidr`および`--service-cidr`フラグを使用してK3sでサポートされています。以下は有効な設定の例です: + +```bash +--cluster-cidr=2001:cafe:42::/56 --service-cidr=2001:cafe:43::/112 +``` +## ホスト名のないノード + +Linodeなどの一部のクラウドプロバイダーは、ホスト名として「localhost」を持つマシンを作成することがあり、他のプロバイダーではホスト名がまったく設定されていない場合があります。これにより、ドメイン名解決に問題が生じる可能性があります。この問題を解決するために、K3sを`--node-name`フラグまたは`K3S_NODE_NAME`環境変数を使用して実行し、ノード名を渡すことができます。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/networking/distributed-multicloud.md b/i18n/ja/docusaurus-plugin-content-docs/current/networking/distributed-multicloud.md new file mode 100644 index 000000000..be828c434 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/networking/distributed-multicloud.md @@ -0,0 +1,83 @@ +--- +title: "分散型ハイブリッドまたはマルチクラウドクラスター" +--- + +K3sクラスターは、共通のプライベートネットワークを共有せず、直接接続されていないノード(例:異なるパブリッククラウドにあるノード)にもデプロイできます。これを実現するためのオプションは2つあります:組み込みのk3sマルチクラウドソリューションと、`tailscale` VPNプロバイダーとの統合です。 + +:::warning +外部接続が必要なため、ノード間のレイテンシが増加します。これによりネットワークパフォーマンスが低下し、レイテンシが高すぎる場合はクラスターの健全性にも影響を与える可能性があります。 +::: + +:::warning +このタイプのデプロイメントでは、組み込みのetcdはサポートされていません。組み込みのetcdを使用する場合、すべてのサーバーノードはプライベートIPを介して相互に到達可能でなければなりません。エージェントは複数のネットワークに分散することができますが、すべてのサーバーは同じ場所にある必要があります。 +::: + +### 組み込みのk3sマルチクラウドソリューション + +K3sはWireGuardを使用してクラスターのトラフィック用のVPNメッシュを確立します。ノードはそれぞれ一意のIP(通常はパブリックIP)を持ち、それを通じて到達可能である必要があります。K3sのスーパーバイザートラフィックはWebSocketトンネルを使用し、クラスター(CNI)トラフィックはWireGuardトンネルを使用します。 + +このタイプのデプロイメントを有効にするには、サーバーに次のパラメータを追加する必要があります: +```bash +--node-external-ip= --flannel-backend=wireguard-native --flannel-external-ip +``` +エージェントには次のパラメータを追加します: +```bash +--node-external-ip= +``` + +ここで、`SERVER_EXTERNAL_IP`はサーバーノードに到達するためのIPであり、`AGENT_EXTERNAL_IP`はエージェントノードに到達するためのIPです。エージェントの`K3S_URL`設定パラメータは、接続するために`SERVER_EXTERNAL_IP`を使用する必要があることに注意してください。[ネットワーキング要件](../installation/requirements.md#networking)を確認し、内部および外部アドレスのリストされたポートへのアクセスを許可することを忘れないでください。 + +`SERVER_EXTERNAL_IP`と`AGENT_EXTERNAL_IP`は相互に接続可能であり、通常はパブリックIPです。 + +:::info 動的IP +ノードに動的IPが割り当てられており、IPが変更された場合(例:AWS)、`--node-external-ip`パラメータを新しいIPに反映するように変更する必要があります。K3sをサービスとして実行している場合、`/etc/systemd/system/k3s.service`を変更し、次のコマンドを実行します: + +```bash +systemctl daemon-reload +systemctl restart k3s +``` +::: + +### Tailscale VPNプロバイダーとの統合(実験的) + +v1.27.3、v1.26.6、v1.25.11以降で利用可能。 + +K3sは[Tailscale](https://tailscale.com/)と統合し、ノードがTailscale VPNサービスを使用してノード間のメッシュを構築できるようにします。 + +K3sをデプロイする前に、Tailscaleで次の4つのステップを実行する必要があります: + +1. Tailscaleアカウントにログイン + +2. `設定 > キー`で、認証キー($AUTH-KEY)を生成します。このキーはクラスター内のすべてのノードで再利用可能です。 + +3. クラスターが使用するpodCIDRを決定します(デフォルトは`10.42.0.0/16`)。アクセスコントロールに次のスタンザを追加します: +```yaml +"autoApprovers": { + "routes": { + "10.42.0.0/16": ["your_account@xyz.com"], + "2001:cafe:42::/56": ["your_account@xyz.com"], + }, + }, +``` + +4. ノードにTailscaleをインストールします: +```bash +curl -fsSL https://tailscale.com/install.sh | sh +``` + +Tailscale統合を有効にしてK3sをデプロイするには、各ノードに次のパラメータを追加する必要があります: +```bash +--vpn-auth="name=tailscale,joinKey=$AUTH-KEY +``` +または、情報をファイルに提供し、次のパラメータを使用します: +```bash +--vpn-auth-file=$PATH_TO_FILE +``` + +オプションとして、独自のTailscaleサーバー(例:headscale)を持っている場合、vpn-authパラメータに`controlServerURL=$URL`を追加して接続することができます。 + +:::warning + +同じTailscaleネットワークを使用して複数のK3sクラスターを実行する予定がある場合、IPの競合を避けるために適切な[ACL](https://tailscale.com/kb/1018/acls/)を作成するか、各クラスターに異なるpodCIDRサブネットを使用してください。 + +::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/networking/multus-ipams.md b/i18n/ja/docusaurus-plugin-content-docs/current/networking/multus-ipams.md new file mode 100644 index 000000000..53eb17441 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/networking/multus-ipams.md @@ -0,0 +1,80 @@ +--- +title: "MultusとIPAMプラグイン" +--- + +[Multus CNI](https://github.com/k8snetworkplumbingwg/multus-cni) は、ポッドに複数のネットワークインターフェースを接続することを可能にするCNIプラグインです。MultusはCNIプラグインを置き換えるのではなく、CNIプラグインのマルチプレクサとして機能します。特に、ポッドがネットワーク集約型であり、SR-IOVなどのデータプレーンアクセラレーション技術をサポートする追加のネットワークインターフェースを必要とする場合に、Multusは有用です。 + +Multusは単独でデプロイすることはできません。常に、Kubernetesクラスターのネットワーク要件を満たす少なくとも1つの従来のCNIプラグインが必要です。そのCNIプラグインがMultusのデフォルトとなり、すべてのポッドに対して主要なインターフェースを提供するために使用されます。デフォルトオプションでK3sをデプロイする場合、そのCNIプラグインはFlannelです。 + +### Helmリポジトリを追加 + +Multusをデプロイするには、以下のHelmリポジトリを使用することをお勧めします: +``` +helm repo add rke2-charts https://rke2-charts.rancher.io +helm repo update +``` + +### IPAMプラグインを設定 + +Multusによって作成された追加のインターフェースにIPアドレスを割り当てるために、IPAMプラグインが必要です。 + + + +host-local IPAMプラグインは、アドレス範囲のセットからIPアドレスを割り当てます。状態をホストのファイルシステムにローカルに保存するため、単一ホスト上のIPアドレスの一意性が保証されます。したがって、マルチノードクラスターには推奨しません。このIPAMプラグインは追加のデプロイを必要としません。詳細については、https://www.cni.dev/plugins/current/ipam/host-local/ を参照してください。 + +host-localプラグインを使用するには、以下の内容で`multus-values.yaml`というファイルを作成してください: +``` +config: + cni_conf: + confDir: /var/lib/rancher/k3s/agent/etc/cni/net.d + binDir: /var/lib/rancher/k3s/data/current/bin/ + kubeconfig: /var/lib/rancher/k3s/agent/etc/cni/net.d/multus.d/multus.kubeconfig +``` + + + +[Whereabouts](https://github.com/k8snetworkplumbingwg/whereabouts) は、クラスター全体でIPアドレスを割り当てるIPアドレス管理(IPAM)CNIプラグインです。 + +Whereabouts IPAMプラグインを使用するには、以下の内容で`multus-values.yaml`というファイルを作成してください: +``` +config: + cni_conf: + confDir: /var/lib/rancher/k3s/agent/etc/cni/net.d + binDir: /var/lib/rancher/k3s/data/current/bin/ + kubeconfig: /var/lib/rancher/k3s/agent/etc/cni/net.d/multus.d/multus.kubeconfig +rke2-whereabouts: + fullnameOverride: whereabouts + enabled: true + cniConf: + confDir: /var/lib/rancher/k3s/agent/etc/cni/net.d + binDir: /var/lib/rancher/k3s/data/current/bin/ +``` + + + +dhcp IPAMプラグインは、ネットワーク上に既にDHCPサーバーが稼働している場合にデプロイできます。このデーモンセットは、DHCPリースの定期的な更新を担当します。詳細については、[DHCP IPAMプラグイン](https://www.cni.dev/plugins/current/ipam/dhcp/)の公式ドキュメントを参照してください。 + +DHCPプラグインを使用するには、以下の内容で`multus-values.yaml`というファイルを作成してください: +``` +config: + cni_conf: + confDir: /var/lib/rancher/k3s/agent/etc/cni/net.d + binDir: /var/lib/rancher/k3s/data/current/bin/ + kubeconfig: /var/lib/rancher/k3s/agent/etc/cni/net.d/multus.d/multus.kubeconfig +manifests: + dhcpDaemonSet: true +``` + + + + +### Multusをデプロイ + +`multus-values.yaml`ファイルを作成した後、Multusをインストールする準備が整います: +``` +helm install multus rke2-charts/rke2-multus -n kube-system --kubeconfig /etc/rancher/k3s/k3s.yaml --values multus-values.yaml +``` + +Helmチャートのインストールにより、必要なCNIバイナリを`/var/lib/rancher/k3s/data/current/`にインストールし、Multus CNI設定を`/var/lib/rancher/k3s/agent/etc/cni/net.d`に作成するためのMultusポッドを作成するDaemonSetがデプロイされます。 + +Multusの詳細については、[multus-cni](https://github.com/k8snetworkplumbingwg/multus-cni/tree/master/docs)のドキュメントを参照してください。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/networking/networking-services.md b/i18n/ja/docusaurus-plugin-content-docs/current/networking/networking-services.md new file mode 100644 index 000000000..390ff1d53 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/networking/networking-services.md @@ -0,0 +1,109 @@ +--- +title: "ネットワーキングサービス" +--- + +このページでは、K3s内でCoreDNS、Traefik Ingressコントローラー、ネットワークポリシーコントローラー、およびServiceLBロードバランサーコントローラーがどのように機能するかを説明します。 + +Flannelの設定オプションやバックエンドの選択、または独自のCNIのセットアップ方法については、[インストールネットワークオプション](./basic-network-options.md)ページを参照してください。 + +K3sのために開く必要のあるポートについての情報は、[ネットワーキング要件](../installation/requirements.md#networking)を参照してください。 + +## CoreDNS + +CoreDNSはサーバーの起動時に自動的にデプロイされます。これを無効にするには、クラスター内のすべてのサーバーに`--disable=coredns`オプションを設定します。 + +CoreDNSをインストールしない場合は、クラスターDNSプロバイダーを自分でインストールする必要があります。 + +## Traefik Ingressコントローラー + +[Traefik](https://traefik.io/)は、マイクロサービスを簡単にデプロイするために作られた最新のHTTPリバースプロキシおよびロードバランサーです。アプリケーションの設計、デプロイ、および実行時のネットワークの複雑さを簡素化します。 + +Traefik Ingressコントローラーは、ポート80および443を使用するLoadBalancerサービスをデプロイし、管理するIngressリソースのステータスにLoadBalancerサービスの外部IPを広告します。 + +デフォルトでは、ServiceLBはクラスター内のすべてのノードを使用してTraefik LoadBalancerサービスをホストします。つまり、ポート80および443は他のHostPortまたはNodePortポッドには使用できず、IngressリソースのステータスにはクラスターのすべてのメンバーのノードIPが表示されます。 + +Traefikが使用するノードを制限し、拡張してIngressステータスに広告されるノードIPを制限するには、以下の[ServiceLBノード選択の制御](#controlling-servicelb-node-selection)セクションの指示に従って、ServiceLBが実行されるノードを制限するか、いくつかのノードをLoadBalancerプールに追加し、Traefikサービスをそのプールに制限するためにTraefik HelmChartConfigに一致するラベルを設定します。 + +Traefikはサーバーの起動時にデフォルトでデプロイされます。詳細については[パッケージ化されたコンポーネントの管理](../installation/packaged-components.md)を参照してください。デフォルトの設定ファイルは`/var/lib/rancher/k3s/server/manifests/traefik.yaml`にあります。 + +`traefik.yaml`ファイルは手動で編集しないでください。K3sは起動時にデフォルトでファイルを置き換えます。代わりに、Traefikをカスタマイズするには、`/var/lib/rancher/k3s/server/manifests`に追加の`HelmChartConfig`マニフェストを作成します。詳細および例については[HelmChartConfigを使用したパッケージ化されたコンポーネントのカスタマイズ](../helm.md#customizing-packaged-components-with-helmchartconfig)を参照してください。可能な設定値については、公式の[Traefik Helm設定パラメータ](https://github.com/traefik/traefik-helm-chart/tree/master/traefik)を参照してください。 + +クラスターからTraefikを削除するには、すべてのサーバーを`--disable=traefik`フラグで起動します。 + +K3sにはTraefik v2が含まれています。K3sバージョン1.21から1.30はTraefik v2をインストールしますが、既存のTraefik v1のインストールが見つかった場合、Traefikはv2にアップグレードされません。K3sバージョン1.20およびそれ以前にはTraefik v1が含まれています。K3sに含まれる特定のTraefikバージョンについては、使用しているバージョンのリリースノートを参照してください。 + +古いTraefik v1インスタンスからの移行については、[Traefikドキュメント](https://doc.traefik.io/traefik/migration/v1-to-v2/)および[移行ツール](https://github.com/traefik/traefik-migration-tool)を参照してください。 + +## ネットワークポリシーコントローラー + +K3sには埋め込みのネットワークポリシーコントローラーが含まれています。基盤となる実装は[kube-router](https://github.com/cloudnativelabs/kube-router)のnetpolコントローラーライブラリ(他のkube-router機能は含まれていません)であり、[こちら](https://github.com/k3s-io/k3s/tree/master/pkg/agent/netpol)にあります。 + +これを無効にするには、各サーバーを`--disable-network-policy`フラグで起動します。 + +:::note +K3sの設定を変更してネットワークポリシーコントローラーを無効にしても、ネットワークポリシーのiptablesルールは削除されません。ネットワークポリシーコントローラーを無効にした後に設定されたkube-routerネットワークポリシールールをクリーンアップするには、`k3s-killall.sh`スクリプトを使用するか、`iptables-save`および`iptables-restore`を使用して手動でクリーンアップします。これらの手順はクラスター内のすべてのノードで手動で実行する必要があります。 +``` +iptables-save | grep -v KUBE-ROUTER | iptables-restore +ip6tables-save | grep -v KUBE-ROUTER | ip6tables-restore +``` +::: + +## サービスロードバランサー + +任意のLoadBalancerコントローラーをK3sクラスターにデプロイできます。デフォルトでは、K3sは利用可能なホストポートを使用する[ServiceLB](https://github.com/k3s-io/klipper-lb)(以前はKlipper LoadBalancerとして知られていた)というロードバランサーを提供します。 + +上流のKubernetesでは、LoadBalancerタイプのサービスを作成できますが、デフォルトのロードバランサー実装は含まれていないため、これらのサービスはインストールされるまで`pending`のままです。多くのホステッドサービスは、Amazon EC2やMicrosoft Azureなどのクラウドプロバイダーを必要とし、外部ロードバランサー実装を提供します。対照的に、K3sのServiceLBはクラウドプロバイダーや追加の設定なしでLoadBalancerサービスを使用できるようにします。 + +### ServiceLBの動作 + +ServiceLBコントローラーは、`spec.type`フィールドが`LoadBalancer`に設定されたKubernetes[サービス](https://kubernetes.io/docs/concepts/services-networking/service/)を監視します。 + +各LoadBalancerサービスごとに、`kube-system`ネームスペースに[DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)が作成されます。このDaemonSetは、各ノードに`svc-`プレフィックスを持つポッドを作成します。これらのポッドはiptablesを使用して、ポッドのNodePortからサービスのClusterIPアドレスおよびポートにトラフィックを転送します。 + +ServiceLBポッドが外部IPが設定されたノードで実行されている場合、そのノードの外部IPがサービスの`status.loadBalancer.ingress`アドレスリストに入力されます。そうでない場合は、ノードの内部IPが使用されます。 + +複数のLoadBalancerサービスが作成された場合、各サービスごとに個別のDaemonSetが作成されます。 + +異なるポートを使用する限り、同じノードで複数のサービスを公開することが可能です。 + +ポート80でリッスンするLoadBalancerサービスを作成しようとすると、ServiceLBはクラスター内のポート80の空いているホストを見つけようとします。利用可能なホストがない場合、LBはPendingのままになります。 + +### 使用方法 + +K3sで[LoadBalancerタイプのサービス](https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer)を作成します。 + +### ServiceLBノード選択の制御 + +1つ以上のノードに`svccontroller.k3s.cattle.io/enablelb=true`ラベルを追加すると、ServiceLBコントローラーが許可リストモードに切り替わり、ラベルが付いたノードのみがLoadBalancerポッドをホストする資格を持ちます。ラベルが付いていないノードはServiceLBの使用から除外されます。 + +:::note +デフォルトでは、ノードにはラベルが付いていません。すべてのノードがラベルなしのままである限り、ポートが利用可能なすべてのノードがServiceLBによって使用されます。 +::: + +### ServiceLBノードプールの作成 + +特定のサブセットのノードを選択してLoadBalancerのポッドをホストするには、目的のノードに`enablelb`ラベルを追加し、ノードとサービスに一致する`lbpool`ラベル値を設定します。例えば: + +1. ノードAとノードBに`svccontroller.k3s.cattle.io/lbpool=pool1`および`svccontroller.k3s.cattle.io/enablelb=true`ラベルを付けます。 +2. ノードCとノードDに`svccontroller.k3s.cattle.io/lbpool=pool2`および`svccontroller.k3s.cattle.io/enablelb=true`ラベルを付けます。 +3. ポート443で1つのLoadBalancerサービスを作成し、`svccontroller.k3s.cattle.io/lbpool=pool1`ラベルを付けます。このサービスのDaemonSetはノードAとノードBにのみポッドをデプロイします。 +4. ポート443で別のLoadBalancerサービスを作成し、`svccontroller.k3s.cattle.io/lbpool=pool2`ラベルを付けます。DaemonSetはノードCとノードDにのみポッドをデプロイします。 + +### ServiceLBの無効化 + +ServiceLBを無効にするには、クラスター内のすべてのサーバーを`--disable=servicelb`フラグで設定します。 + +これは、MetalLBなどの別のLBを実行する場合に必要です。 + +## 外部クラウドコントローラーマネージャーのデプロイ + +バイナリサイズを削減するために、K3sはすべての「インツリー」(組み込み)クラウドプロバイダーを削除します。代わりに、K3sは以下のことを行う埋め込みのクラウドコントローラーマネージャー(CCM)スタブを提供します: +- `--node-ip`および`--node-external-ip`フラグに基づいてノードのInternalIPおよびExternalIPアドレスフィールドを設定します。 +- ServiceLBロードバランサーコントローラーをホストします。 +- クラウドプロバイダーが`external`に設定されている場合に存在する`node.cloudprovider.kubernetes.io/uninitialized`テイントをクリアします。 + +外部CCMをデプロイする前に、すべてのK3sサーバーを`--disable-cloud-controller`フラグで起動して埋め込みCCMを無効にする必要があります。 + +:::note +組み込みのCCMを無効にし、適切に構成された外部の代替品をデプロイしない場合、ノードはテイントされたままでスケジュール不可能になります。 +::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/networking/networking.md b/i18n/ja/docusaurus-plugin-content-docs/current/networking/networking.md new file mode 100644 index 000000000..611c58415 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/networking/networking.md @@ -0,0 +1,13 @@ +--- +title: "ネットワーキング" +--- + +このセクションには、K3sでネットワーキングを設定するための手順が含まれています。 + +[基本的なネットワークオプション](basic-network-options.md) では、フランネルやシングル/デュアルスタック構成など、クラスターの基本的なネットワーク設定について説明しています。 + +[ハイブリッド/マルチクラウドクラスター](distributed-multicloud.md) では、リモートまたはハイブリッドノードにわたってk3sクラスターを展開するためのオプションについてのガイダンスを提供しています。 + +[MultusとIPAMプラグイン](multus-ipams.md) では、K3sでMultusを活用して各ポッドに複数のインターフェースを持たせる方法についてのガイダンスを提供しています。 + +[ネットワーキングサービス: DNS、Ingressなど](networking-services.md) では、CoreDNS、Traefik、ネットワークポリシーコントローラー、およびServiceLBコントローラーがk3s内でどのように機能するかを説明しています。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/quick-start.md b/i18n/ja/docusaurus-plugin-content-docs/current/quick-start.md new file mode 100644 index 000000000..0fcee1636 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/quick-start.md @@ -0,0 +1,43 @@ +--- +title: "クイックスタートガイド" +--- + +このガイドは、デフォルトオプションでクラスターを迅速に起動するのに役立ちます。[インストールセクション](./installation/installation.md)では、K3sのセットアップ方法について詳しく説明しています。 + +進める前に、ノードが[要件](./installation/requirements.md)を満たしていることを確認してください。 + +K3sコンポーネントがどのように連携するかについては、[アーキテクチャセクション](./architecture.md)を参照してください。 + +:::info +Kubernetesに初めて触れる方へ:公式のKubernetesドキュメントには、基本を説明する素晴らしいチュートリアルが[こちら](https://kubernetes.io/docs/tutorials/kubernetes-basics/)にあります。 +::: + +## インストールスクリプト + +K3sは、systemdまたはopenrcベースのシステムにサービスとしてインストールするための便利なインストールスクリプトを提供しています。このスクリプトは https://get.k3s.io で利用可能です。この方法でK3sをインストールするには、次のコマンドを実行します: + +```bash +curl -sfL https://get.k3s.io | sh - +``` + +このインストールを実行すると: + +- K3sサービスは、ノードの再起動後やプロセスがクラッシュまたは終了した場合に自動的に再起動するように設定されます +- `kubectl`、`crictl`、`ctr`、`k3s-killall.sh`、`k3s-uninstall.sh`などの追加ユーティリティがインストールされます +- [kubeconfig](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/)ファイルが`/etc/rancher/k3s/k3s.yaml`に書き込まれ、K3sによってインストールされたkubectlが自動的にそれを使用します + +単一ノードのサーバーインストールは、ワークロードポッドをホストするために必要なすべてのデータストア、コントロールプレーン、kubelet、およびコンテナランタイムコンポーネントを含む完全に機能するKubernetesクラスターです。追加のサーバーやエージェントノードを追加する必要はありませんが、クラスターの容量や冗長性を追加するために追加することを検討するかもしれません。 + +追加のエージェントノードをインストールしてクラスターに追加するには、`K3S_URL`および`K3S_TOKEN`環境変数を使用してインストールスクリプトを実行します。エージェントを参加させる方法の例は次の通りです: + +```bash +curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh - +``` + +`K3S_URL`パラメータを設定すると、インストーラーはK3sをサーバーではなくエージェントとして構成します。K3sエージェントは、指定されたURLでリッスンしているK3sサーバーに登録されます。`K3S_TOKEN`に使用する値は、サーバーノードの`/var/lib/rancher/k3s/server/node-token`に保存されています。 + +:::note +各マシンには一意のホスト名が必要です。マシンに一意のホスト名がない場合は、`K3S_NODE_NAME`環境変数を渡し、各ノードに対して有効で一意のホスト名を指定してください。 +::: + +追加のサーバーノードに興味がある場合は、[高可用性埋め込みetcd](./datastore/ha-embedded.md)および[高可用性外部DB](./datastore/ha.md)ページを参照してください。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/reference/env-variables.md b/i18n/ja/docusaurus-plugin-content-docs/current/reference/env-variables.md new file mode 100644 index 000000000..ab00c0b5f --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/reference/env-variables.md @@ -0,0 +1,43 @@ +--- +title: 環境変数 +--- + +[クイックスタートガイド](../quick-start.md)で述べたように、https://get.k3s.io で利用可能なインストールスクリプトを使用して、systemdおよびopenrcベースのシステムにK3sをサービスとしてインストールできます。 + +このコマンドの最も簡単な形式は次のとおりです: + +```bash +curl -sfL https://get.k3s.io | sh - +``` + +この方法を使用してK3sをインストールする場合、次の環境変数を使用してインストールを構成できます: + +| 環境変数 | 説明 | +|-----------------------------|---------------------------------------------| +| `INSTALL_K3S_SKIP_DOWNLOAD` | trueに設定すると、K3sのハッシュまたはバイナリをダウンロードしません。 | +| `INSTALL_K3S_SYMLINK` | デフォルトでは、パスにコマンドが存在しない場合、kubectl、crictl、およびctrバイナリのシンボリックリンクを作成します。'skip'に設定するとシンボリックリンクを作成せず、'force'に設定すると上書きします。 | +| `INSTALL_K3S_SKIP_ENABLE` | trueに設定すると、K3sサービスを有効化または開始しません。 | +| `INSTALL_K3S_SKIP_START` | trueに設定すると、K3sサービスを開始しません。 | +| `INSTALL_K3S_VERSION` | GithubからダウンロードするK3sのバージョン。指定しない場合は安定版チャネルからダウンロードを試みます。 | +| `INSTALL_K3S_BIN_DIR` | K3sバイナリ、リンク、およびアンインストールスクリプトをインストールするディレクトリ。デフォルトは`/usr/local/bin`です。 | +| `INSTALL_K3S_BIN_DIR_READ_ONLY` | trueに設定すると、`INSTALL_K3S_BIN_DIR`にファイルを書き込みません。`INSTALL_K3S_SKIP_DOWNLOAD=true`を強制設定します。 | +| `INSTALL_K3S_SYSTEMD_DIR` | systemdサービスおよび環境ファイルをインストールするディレクトリ。デフォルトは`/etc/systemd/system`です。 | +| `INSTALL_K3S_EXEC` | サービスでK3sを起動するためのフラグ付きコマンド。コマンドが指定されておらず、`K3S_URL`が設定されている場合、デフォルトは「agent」です。`K3S_URL`が設定されていない場合、デフォルトは「server」です。詳細は[この例](../installation/configuration.md#configuration-with-install-script)を参照してください。 | +| `INSTALL_K3S_NAME` | 作成するsystemdサービスの名前。k3sをサーバーとして実行する場合はデフォルトで「k3s」、エージェントとして実行する場合は「k3s-agent」になります。指定された場合、名前の前に「k3s-」が付加されます。 | +| `INSTALL_K3S_TYPE` | 作成するsystemdサービスのタイプ。指定されていない場合、K3sの実行コマンドからデフォルトが設定されます。 | +| `INSTALL_K3S_SELINUX_WARN` | trueに設定すると、k3s-selinuxポリシーが見つからない場合でも続行します。 | +| `INSTALL_K3S_SKIP_SELINUX_RPM` | trueに設定すると、k3s RPMの自動インストールをスキップします。 | +| `INSTALL_K3S_CHANNEL_URL` | K3sダウンロードURLを取得するためのチャネルURL。デフォルトはhttps://update.k3s.io/v1-release/channelsです。 | +| `INSTALL_K3S_CHANNEL` | K3sダウンロードURLを取得するためのチャネル。デフォルトは「stable」です。オプションには`stable`、`latest`、`testing`があります。 | + +次の例は、前述の環境変数をオプションとして(パイプの後に)配置する方法を示しています: + +```bash +curl -sfL https://get.k3s.io | INSTALL_K3S_CHANNEL=latest sh - +``` + +`K3S_`で始まる環境変数は、systemdおよびopenrcサービスで使用するために保持されます。 + +`K3S_URL`を設定し、明示的に実行コマンドを設定しない場合、コマンドはデフォルトで「agent」になります。 + +エージェントを実行する場合、`K3S_TOKEN`も設定する必要があります。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/reference/flag-deprecation.md b/i18n/ja/docusaurus-plugin-content-docs/current/reference/flag-deprecation.md new file mode 100644 index 000000000..fe7b2769a --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/reference/flag-deprecation.md @@ -0,0 +1,31 @@ +--- +title: "フラグの非推奨化" +--- + +K3sは急速に進化するプロジェクトであり、そのためフラグや設定オプションを非推奨化する方法が必要です。このページでは、フラグや設定オプションを非推奨化するプロセスを説明します。ユーザーがフラグの削除に驚かないようにするために、このプロセスは[Kubernetesの非推奨ポリシー](https://kubernetes.io/docs/reference/using-api/deprecation-policy/)に似ています。 + +## プロセス + +1) フラグはいつでも「非推奨予定」と宣言できます。 +2) 「非推奨予定」のフラグは、現在サポートされているすべてのリリースの次のパッチでそのようにラベル付けされなければなりません。さらに、そのフラグは次のマイナーリリースで非推奨になることをユーザーに警告し始めます。 +3) 次のマイナーリリースで、フラグはドキュメントで非推奨としてマークされ、コード内で隠しフラグに変換されます。フラグは引き続き動作し、ユーザーに警告を発します。 +4) 次のマイナーリリースブランチでは、非推奨のフラグは「非動作」になり、使用すると致命的なエラーが発生します。このエラーは、ユーザーにこのフラグを置き換える新しいフラグや設定を説明しなければなりません。 +5) 次のマイナーリリースでは、非動作のフラグはドキュメントおよびコードから完全に削除されます。 + +## 例 + +プロセスの例: + +- `--foo`はv1.22.14、v1.23.10、およびv1.24.2に存在します。 +- v1.24.2のリリース後、`--foo`を`--new-foo`に置き換えるために非推奨にすることが決定されます。 +- v1.22.15、v1.23.11、およびv1.24.3では、`--foo`は引き続き存在しますが、ユーザーに警告します: + ``` + [Warning] --fooはv1.25.0で非推奨になります。代わりに`--new-foo`を使用してください + ``` + `--foo`はv1.22、v1.23、およびv1.24のライフサイクル中は引き続き動作フラグとして存在します。 +- v1.25.0では、`--foo`はドキュメントで非推奨としてマークされ、コード内で隠されます。引き続き動作し、ユーザーに`--new-foo`に移行するよう警告します。 +- v1.26.0では、`--foo`を使用すると致命的なエラーが発生します。エラーメッセージは次のようになります: + ``` + [Fatal] exit 1: --fooはサポートされなくなりました。代わりに--new-fooを使用してください + ``` +- v1.27.0では、`--foo`はすべてのコードおよびドキュメントから完全に削除されます。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/reference/resource-profiling.md b/i18n/ja/docusaurus-plugin-content-docs/current/reference/resource-profiling.md new file mode 100644 index 000000000..b263c7ff0 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/reference/resource-profiling.md @@ -0,0 +1,145 @@ +--- +title: リソースプロファイリング +--- + +このセクションでは、K3sの最小リソース要件を決定するためのテスト結果を記録します。 + +結果は以下の通りです: + +| コンポーネント | プロセッサ | 最小CPU | Kine/SQLite使用時の最小RAM | 組み込みetcd使用時の最小RAM | +|------------|-----|----------|-------------------------|---------------------------| +| ワークロードを持つK3sサーバー | Intel 8375C CPU, 2.90 GHz | コアの6% | 1596 M | 1606 M | +| 単一エージェントを持つK3sクラスター | Intel 8375C CPU, 2.90 GHz | コアの5% | 1428 M | 1450 M | +| K3sエージェント | Intel 8375C CPU, 2.90 GHz | コアの3% | 275 M | 275 M | +| ワークロードを持つK3sサーバー | Pi4B BCM2711, 1.50 GHz | コアの30% | 1588 M | 1613 M | +| 単一エージェントを持つK3sクラスター | Pi4B BCM2711, 1.50 GHz | コアの25% | 1215 M | 1413 M | +| K3sエージェント | Pi4B BCM2711, 1.50 GHz | コアの10% | 268 M | 268 M | + +- [リソーステストの範囲](#リソーステストの範囲) +- [ベースライン測定に含まれるコンポーネント](#ベースライン測定に含まれるコンポーネント) +- [方法論](#方法論) +- [環境](#環境) +- [ベースラインリソース要件](#ベースラインリソース要件) + - [ワークロードを持つK3sサーバー](#ワークロードを持つK3sサーバー) + - [単一エージェントを持つK3sクラスター](#単一エージェントを持つK3sクラスター) + - [K3sエージェント](#K3sエージェント) +- [分析](#分析) + - [主要なリソース利用ドライバー](#主要なリソース利用ドライバー) + - [エージェントとワークロードがクラスターのデータストアに干渉しないようにする方法](#エージェントとワークロードがクラスターのデータストアに干渉しないようにする方法) + +## リソーステストの範囲 + +リソーステストは以下の問題文に対処することを目的としています: + +- 単一ノードクラスターで、実際のワークロードがクラスターにデプロイされることを前提に、K3sスタックサーバースタック全体を実行するために確保すべき正当な最小CPU、メモリ、およびIOPsを決定します。 +- エージェント(ワーカー)ノードで、KubernetesおよびK3sコントロールプレーンコンポーネント(kubeletおよびk3sエージェント)のために確保すべき正当な最小CPU、メモリ、およびIOPsを決定します。 + +## ベースライン測定に含まれるコンポーネント + +テストされたコンポーネントは以下の通りです: + +* すべてのパッケージコンポーネントが有効なK3s v1.26.5 +* Prometheus + Grafanaモニタリングスタック +* [KubernetesのNginxデプロイメント例](https://kubernetes.io/docs/tasks/run-application/run-stateless-application-deployment/) + +これらは、K3sパッケージコンポーネント(Traefik Ingress、Klipper lb、local-path storage)のみを使用し、標準のモニタリングスタック(PrometheusとGrafana)およびGuestbook例アプリを実行する安定したシステムのベースライン数値です。 + +IOPSを含むリソース数値はKubernetesデータストアおよびコントロールプレーンのみのものであり、システムレベルの管理エージェントやログ、コンテナイメージ管理、またはワークロード固有の要件のオーバーヘッドは含まれていません。 + +## 方法論 + +Prometheus v2.43.0のスタンドアロンインスタンスを使用して、`prometheus-node-exporter`をapt経由でインストールし、ホストのCPU、メモリ、およびディスクIO統計を収集しました。 + +`systemd-cgtop`を使用して、systemd cgroupレベルのCPUおよびメモリ使用量をスポットチェックしました。`system.slice/k3s.service`はK3sおよびcontainerdのリソース使用量を追跡し、個々のポッドは`kubepods`階層下にあります。 + +追加の詳細なK3sメモリ使用量データは、サーバーおよびエージェントプロセスのために統合されたメトリクスサーバーを使用して`kubectl top node`から収集しました。 + +使用量数値は、記述されたワークロードを実行しているノードの定常状態操作からの95パーセンタイルの読み取り値に基づいています。 + +## 環境 + +| アーキテクチャ | OS | システム | CPU | RAM | ディスク | +|------|----|--------|--|----|------| +| x86_64 | Ubuntu 22.04 | AWS c6id.xlarge | Intel Xeon Platinum 8375C CPU, 4 Core 2.90 GHz | 8 GB | NVME SSD | +| aarch64 | Raspberry Pi OS 11 | Raspberry Pi 4 Model B | BCM2711, 4 Core 1.50 GHz | 8 GB | UHS-III SDXC | + +## ベースラインリソース要件 + +このセクションでは、基本的なK3s操作のための最小リソース要件を決定するためのテスト結果を記録します。 + +### ワークロードを持つK3sサーバー + +これは、K3sサーバーが[シンプルなワークロード](https://kubernetes.io/docs/tasks/run-application/run-stateless-application-deployment/)とリソースを共有する単一ノードクラスターの要件です。 + +CPU要件は以下の通りです: + +| システム | CPUコア使用率 | +|--------|----------------| +| Intel 8375C | コアの6% | +| Pi4B | コアの30% | + +メモリ要件は以下の通りです: + +| テストされたデータストア | システム | メモリ | +|-----------|---------|------| +| Kine/SQLite | Intel 8375C | 1596 M | +| | Pi4B | 1588 M | +| 組み込みetcd | Intel 8375C | 1606 M | +| | Pi4B | 1613 M | + +ディスク要件は以下の通りです: + +| テストされたデータストア | IOPS | KiB/秒 | レイテンシ | +|-----------|------|---------|---------| +| Kine/SQLite | 10 | 500 | < 10 ms | +| 組み込みetcd | 50 | 250 | < 5 ms | + +### 単一エージェントを持つK3sクラスター + +これは、K3sサーバーノードとK3sエージェントを持つK3sクラスターのベースライン要件ですが、ワークロードはありません。 + +#### K3sサーバー +CPU要件は以下の通りです: + +| システム | CPUコア使用率 | +|--------|----------------| +| Intel 8375C | コアの5% | +| Pi4B | コアの25% | + +メモリ要件は以下の通りです: + +| テストされたデータストア | システム | メモリ | +|-----------|---------|------| +| Kine/SQLite | Intel 8375C | 1428 M | +| | Pi4B | 1215 M | +| 組み込みetcd | Intel 8375C | 1450 M | +| | Pi4B | 1413 M | + +### K3sエージェント + +要件は以下の通りです: + +| システム | CPUコア使用率 | RAM | +|--------|----------------|-----| +| Intel 8375C | コアの3% | 275 M | +| Pi4B | コアの5% | 268 M | + +## 分析 + +このセクションでは、K3sサーバーおよびエージェントの利用に最も大きな影響を与える要因と、エージェントおよびワークロードがクラスターのデータストアに干渉しないようにする方法を記録します。 + +### 主要なリソース利用ドライバー + +K3sサーバーの利用数値は主に、Kubernetesデータストア(kineまたはetcd)、APIサーバー、コントローラーマネージャー、およびスケジューラーのコントロールループのサポートによって駆動されます。また、システムの状態を変更するために必要な管理タスクも含まれます。Kubernetesコントロールプレーンに追加の負荷をかける操作(リソースの作成/変更/削除など)は、一時的な利用のスパイクを引き起こします。Rancherや他のオペレータータイプのアプリケーションなど、Kubernetesデータストアを広範に使用するオペレーターやアプリを使用すると、サーバーのリソース要件が増加します。追加のノードを追加したり、多くのクラスターリソースを作成したりすることで、サーバーのリソース要件が増加します。 + +K3sエージェントの利用数値は主に、コンテナライフサイクル管理コントロールループのサポートによって駆動されます。イメージの管理、ストレージのプロビジョニング、コンテナの作成/破棄を含む操作は、一時的な利用のスパイクを引き起こします。特にイメージのプルは、イメージコンテンツをディスクに解凍するため、通常は高いCPUおよびIO負荷がかかります。可能であれば、ワークロードストレージ(ポッドの一時ストレージおよびボリューム)は、エージェントコンポーネント(/var/lib/rancher/k3s/agent)から分離して、リソースの競合が発生しないようにするべきです。 + +### エージェントとワークロードがクラスターのデータストアに干渉しないようにする方法 + +サーバーがワークロードポッドもホストしている環境で実行する場合、エージェントおよびワークロードのIOPSがデータストアに干渉しないように注意する必要があります。 + +これを最も効果的に達成する方法は、サーバーコンポーネント(/var/lib/rancher/k3s/server)をエージェントコンポーネント(/var/lib/rancher/k3s/agent)とは異なるストレージメディアに配置することです。エージェントコンポーネントにはcontainerdイメージストアが含まれます。 + +ワークロードストレージ(ポッドの一時ストレージおよびボリューム)もデータストアから分離するべきです。 + +データストアのスループットおよびレイテンシ要件を満たさない場合、コントロールプレーンの応答が遅延したり、コントロールプレーンがシステム状態を維持できなくなったりする可能性があります。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/related-projects.md b/i18n/ja/docusaurus-plugin-content-docs/current/related-projects.md new file mode 100644 index 000000000..de697df53 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/related-projects.md @@ -0,0 +1,19 @@ +--- +title: "関連プロジェクト" +--- + +K3sディストリビューションを実装するプロジェクトは、コミュニティの拡大に役立つ歓迎すべき追加です。このページでは、K3sに関連するさまざまなプロジェクトを紹介し、その機能や潜在的なアプリケーションをさらに探求するのに役立てていただけます。 + +これらのプロジェクトは、さまざまな環境でのK3sの多用途性と適応性、およびK3sの拡張を示しています。すべて、大規模な高可用性(HA)Kubernetesクラスターを作成するのに役立ちます。 + +## k3s-ansible + +複数ノードのK3sクラスターをブートストラップし、ansibleに精通しているユーザーには、[k3s-io/k3s-ansible](https://github.com/k3s-io/k3s-ansible)リポジトリをチェックすることをお勧めします。この一連のansibleプレイブックは、ノードにK3sをインストールする便利な方法を提供し、インストールプロセスではなくクラスターの構成に集中できるようにします。 + +## k3sup + +K3sクラスターのセットアッププロセスを簡素化するもう一つのプロジェクトが[k3sup](https://github.com/alexellis/k3sup)です。このプロジェクトはgolangで書かれており、ノードへのsshアクセスのみを必要とします。また、埋め込みetcdだけでなく、外部データストアを使用してK3sをデプロイする便利な方法も提供します。 + +## autok3s + +別のプロビジョニングツールである[autok3s](https://github.com/cnrancher/autok3s)は、クラウドプロバイダー、VM、およびローカルマシンにわたってk3sクラスターをプロビジョニングするためのGUIを提供します。このツールは、K3sクラスターのプロビジョニングにグラフィカルインターフェースを好むユーザーにとって便利です。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.24.X.md b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.24.X.md new file mode 100644 index 000000000..e54856178 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.24.X.md @@ -0,0 +1,531 @@ +--- +hide_table_of_contents: true +sidebar_position: 7 +--- + +# v1.24.X + +:::warning アップグレード通知 +以前のリリースからアップグレードする前に、Kubernetesの[緊急アップグレードノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#urgent-upgrade-notes)を必ずお読みください。 +::: + +| バージョン | リリース日 | Kubernetes | Kine | SQLite | Etcd | Containerd | Runc | Flannel | Metrics-server | Traefik | CoreDNS | Helm-controller | Local-path-provisioner | +| ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | +| [v1.24.17+k3s1](v1.24.X.md#release-v12417k3s1) | 2023年9月5日 | [v1.24.17](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v12417) | [v0.10.2](https://github.com/k3s-io/kine/releases/tag/v0.10.2) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.7.3-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.3-k3s1) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.21.3-k3s1.23](https://github.com/flannel-io/flannel/releases/tag/v0.21.3-k3s1.23) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.24.16+k3s1](v1.24.X.md#release-v12416k3s1) | 2023年7月27日 | [v1.24.16](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v12416) | [v0.10.1](https://github.com/k3s-io/kine/releases/tag/v0.10.1) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.7.1-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.1-k3s1) | [v1.1.7](https://github.com/opencontainers/runc/releases/tag/v1.1.7) | [v0.21.3-k3s1.23](https://github.com/flannel-io/flannel/releases/tag/v0.21.3-k3s1.23) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.2](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.2) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.24.15+k3s1](v1.24.X.md#release-v12415k3s1) | 2023年6月26日 | [v1.24.15](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v12415) | [v0.10.1](https://github.com/k3s-io/kine/releases/tag/v0.10.1) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.7.1-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.1-k3s1) | [v1.1.7](https://github.com/opencontainers/runc/releases/tag/v1.1.7) | [v0.21.3-k3s1.23](https://github.com/flannel-io/flannel/releases/tag/v0.21.3-k3s1.23) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.0](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.0) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.24.14+k3s1](v1.24.X.md#release-v12414k3s1) | 2023年5月26日 | [v1.24.14](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v12414) | [v0.10.1](https://github.com/k3s-io/kine/releases/tag/v0.10.1) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.7.1-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.1-k3s1) | [v1.1.7](https://github.com/opencontainers/runc/releases/tag/v1.1.7) | [v0.21.3-k3s1.23](https://github.com/flannel-io/flannel/releases/tag/v0.21.3-k3s1.23) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.14.0](https://github.com/k3s-io/helm-controller/releases/tag/v0.14.0) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.24.13+k3s1](v1.24.X.md#release-v12413k3s1) | 2023年4月20日 | [v1.24.13](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v12413) | [v0.9.9](https://github.com/k3s-io/kine/releases/tag/v0.9.9) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.19-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.19-k3s1) | [v1.1.5](https://github.com/opencontainers/runc/releases/tag/v1.1.5) | [v0.21.3-k3s1.23](https://github.com/flannel-io/flannel/releases/tag/v0.21.3-k3s1.23) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.13.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.3) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.24.12+k3s1](v1.24.X.md#release-v12412k3s1) | 2023年3月27日 | [v1.24.12](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v12412) | [v0.9.9](https://github.com/k3s-io/kine/releases/tag/v0.9.9) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.19-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.19-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.21.3-k3s1.23](https://github.com/flannel-io/flannel/releases/tag/v0.21.3-k3s1.23) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.24.11+k3s1](v1.24.X.md#release-v12411k3s1) | 2023年3月10日 | [v1.24.11](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v12411) | [v0.9.9](https://github.com/k3s-io/kine/releases/tag/v0.9.9) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.15-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.15-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.21.1-k3s1.23](https://github.com/flannel-io/flannel/releases/tag/v0.21.1-k3s1.23) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.24.10+k3s1](v1.24.X.md#release-v12410k3s1) | 2023年1月26日 | [v1.24.10](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v12410) | [v0.9.6](https://github.com/k3s-io/kine/releases/tag/v0.9.6) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.15-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.15-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.20.2-k3s1.23](https://github.com/flannel-io/flannel/releases/tag/v0.20.2-k3s1.23) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.24.9+k3s2](v1.24.X.md#release-v1249k3s2) | 2023年1月11日 | [v1.24.9](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v1249) | [v0.9.6](https://github.com/k3s-io/kine/releases/tag/v0.9.6) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.14-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.14-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.20.2-k3s1.23](https://github.com/flannel-io/flannel/releases/tag/v0.20.2-k3s1.23) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.24.9+k3s1](v1.24.X.md#release-v1249k3s1) | 2022年12月20日 | [v1.24.9](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v1249) | [v0.9.6](https://github.com/k3s-io/kine/releases/tag/v0.9.6) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.12-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.12-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.20.2-k3s1.23](https://github.com/flannel-io/flannel/releases/tag/v0.20.2-k3s1.23) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.24.8+k3s1](v1.24.X.md#release-v1248k3s1) | 2022年11月18日 | [v1.24.8](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v1248) | [v0.9.6](https://github.com/k3s-io/kine/releases/tag/v0.9.6) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.8-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.8-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.20.1-k3s1.23](https://github.com/flannel-io/flannel/releases/tag/v0.20.1-k3s1.23) | [v0.6.1](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.1) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.0](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.0) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.24.7+k3s1](v1.24.X.md#release-v1247k3s1) | 2022年10月25日 | [v1.24.7](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v1247) | [v0.9.3](https://github.com/k3s-io/kine/releases/tag/v0.9.3) | [3.36.0](https://sqlite.org/releaselog/3_36_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.8-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.8-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.19.2](https://github.com/flannel-io/flannel/releases/tag/v0.19.2) | [v0.6.1](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.1) | [v2.9.1](https://github.com/traefik/traefik/releases/tag/v2.9.1) | [v1.9.1](https://github.com/coredns/coredns/releases/tag/v1.9.1) | [v0.12.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.12.3) | [v0.0.21](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.21) | +| [v1.24.6+k3s1](v1.24.X.md#release-v1246k3s1) | 2022年9月28日 | [v1.24.6](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v1246) | [v0.9.3](https://github.com/k3s-io/kine/releases/tag/v0.9.3) | [3.36.0](https://sqlite.org/releaselog/3_36_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.8-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.8-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.19.2](https://github.com/flannel-io/flannel/releases/tag/v0.19.2) | [v0.5.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.5.2) | [v2.6.2](https://github.com/traefik/traefik/releases/tag/v2.6.2) | [v1.9.1](https://github.com/coredns/coredns/releases/tag/v1.9.1) | [v0.12.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.12.3) | [v0.0.21](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.21) | +| [v1.24.4+k3s1](v1.24.X.md#release-v1244k3s1) | 2022年8月25日 | [v1.24.4](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v1244) | [v0.9.3](https://github.com/k3s-io/kine/releases/tag/v0.9.3) | [3.36.0](https://sqlite.org/releaselog/3_36_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.5.13-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.5.13-k3s1) | [v1.1.3](https://github.com/opencontainers/runc/releases/tag/v1.1.3) | [v0.19.1](https://github.com/flannel-io/flannel/releases/tag/v0.19.1) | [v0.5.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.5.2) | [v2.6.2](https://github.com/traefik/traefik/releases/tag/v2.6.2) | [v1.9.1](https://github.com/coredns/coredns/releases/tag/v1.9.1) | [v0.12.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.12.3) | [v0.0.21](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.21) | +| [v1.24.3+k3s1](v1.24.X.md#release-v1243k3s1) | 2022年7月19日 | [v1.24.3](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v1243) | [v0.9.3](https://github.com/k3s-io/kine/releases/tag/v0.9.3) | [3.36.0](https://sqlite.org/releaselog/3_36_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.5.13-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.5.13-k3s1) | [v1.1.3](https://github.com/opencontainers/runc/releases/tag/v1.1.3) | [v0.18.1](https://github.com/flannel-io/flannel/releases/tag/v0.18.1) | [v0.5.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.5.2) | [v2.6.2](https://github.com/traefik/traefik/releases/tag/v2.6.2) | [v1.9.1](https://github.com/coredns/coredns/releases/tag/v1.9.1) | [v0.12.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.12.3) | [v0.0.21](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.21) | +| [v1.24.2+k3s2](v1.24.X.md#release-v1242k3s2) | 2022年7月6日 | [v1.24.2](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v1242) | [v0.9.3](https://github.com/k3s-io/kine/releases/tag/v0.9.3) | [3.36.0](https://sqlite.org/releaselog/3_36_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.5.13-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.5.13-k3s1) | [v1.1.2](https://github.com/opencontainers/runc/releases/tag/v1.1.2) | [v0.18.1](https://github.com/flannel-io/flannel/releases/tag/v0.18.1) | [v0.5.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.5.2) | [v2.6.2](https://github.com/traefik/traefik/releases/tag/v2.6.2) | [v1.9.1](https://github.com/coredns/coredns/releases/tag/v1.9.1) | [v0.12.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.12.3) | [v0.0.21](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.21) | +| [v1.24.2+k3s1](v1.24.X.md#release-v1242k3s1) | 2022年6月27日 | [v1.24.2](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v1242) | [v0.9.1](https://github.com/k3s-io/kine/releases/tag/v0.9.1) | [3.36.0](https://sqlite.org/releaselog/3_36_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.6-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.6-k3s1) | [v1.1.2](https://github.com/opencontainers/runc/releases/tag/v1.1.2) | [v0.18.1](https://github.com/flannel-io/flannel/releases/tag/v0.18.1) | [v0.5.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.5.2) | [v2.6.2](https://github.com/traefik/traefik/releases/tag/v2.6.2) | [v1.9.1](https://github.com/coredns/coredns/releases/tag/v1.9.1) | [v0.12.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.12.3) | [v0.0.21](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.21) | +| [v1.24.1+k3s1](v1.24.X.md#release-v1241k3s1) | 2022年6月11日 | [v1.24.1](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#v1241) | [v0.9.1](https://github.com/k3s-io/kine/releases/tag/v0.9.1) | [3.36.0](https://sqlite.org/releaselog/3_36_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.5.11-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.5.11-k3s1) | [v1.1.1](https://github.com/opencontainers/runc/releases/tag/v1.1.1) | [v0.17.0](https://github.com/flannel-io/flannel/releases/tag/v0.17.0) | [v0.5.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.5.2) | [v2.6.2](https://github.com/traefik/traefik/releases/tag/v2.6.2) | [v1.9.1](https://github.com/coredns/coredns/releases/tag/v1.9.1) | [v0.12.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.12.1) | [v0.0.21](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.21) | + +
+ +## リリース [v1.24.17+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.17+k3s1) + +このリリースではKubernetesをv1.24.17に更新し、多くの問題を修正しました。 + +:::warning 重要 +このリリースには、K3sサーバーに対する潜在的なサービス拒否攻撃ベクトルであるCVE-2023-32187の修正サポートが含まれています。詳細については、https://github.com/k3s-io/k3s/security/advisories/GHSA-m4hf-6vgr-75r2 を参照し、この脆弱性に対してクラスターを強化するために必要な必須手順を確認してください。 +::: + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v12416)を参照してください。 + +### v1.24.16+k3s1からの変更点: + +* CNIプラグインのバージョンをv1.3.0に更新 [(#8087)](https://github.com/k3s-io/k3s/pull/8087) +* ノード名が変更された場合のEtcdスナップショットの保持 [(#8124)](https://github.com/k3s-io/k3s/pull/8124) +* 8月のテストバックポート [(#8128)](https://github.com/k3s-io/k3s/pull/8128) +* 2023年8月リリースのバックポート [(#8135)](https://github.com/k3s-io/k3s/pull/8135) + * K3sの外 + * ユーザー提供のcontainerd設定テンプレートは、`{{ template "base" . }}`を使用してデフォルトのK3sテンプレート内容を含めることができるようになりました。これにより、ファイルに追加セクションを追加するだけでユーザー設定を維持するのが容易になります。 + * golangの最近のリリースによってdockerクライアントが送信する無効なホストヘッダーが拒否される問題を修正するために、docker/dockerモジュールのバージョンを更新しました。 + * kineをv0.10.2に更新しました。 +* K3sのetcdスナップショット削除がs3フラグを使用して呼び出されたときにローカルファイルを削除できない問題を修正しました [(#8146)](https://github.com/k3s-io/k3s/pull/8146) +* etcdスナップショットが無効になっている場合のs3からのクラスタリセットバックアップの修正 [(#8168)](https://github.com/k3s-io/k3s/pull/8168) +* 日付に基づいて孤立したスナップショットを削除するためのetcd保持の修正 [(#8191)](https://github.com/k3s-io/k3s/pull/8191) +* 2023-08リリースの追加バックポート [(#8214)](https://github.com/k3s-io/k3s/pull/8214) + * バンドルされたhelmコントローラーのジョブイメージで使用される`helm`のバージョンがv3.12.3に更新されました。 + * apiserver/supervisorリスナーがetcd専用ノードでリクエストを処理しなくなる問題を解決するためにdynamiclistenerを更新しました。 + * K3sの外部apiserver/supervisorリスナーがTLSハンドシェイクで完全な証明書チェーンを送信するようになりました。 +* runcバージョンの更新を修正 [(#8243)](https://github.com/k3s-io/k3s/pull/8243) +* v1.24.17に更新 [(#8240)](https://github.com/k3s-io/k3s/pull/8240) +* TLS SAN CNフィルタリングを有効にする新しいCLIフラグを追加 [(#8260)](https://github.com/k3s-io/k3s/pull/8260) + * 新しい`--tls-san-security`オプションを追加しました。このフラグはデフォルトでfalseですが、trueに設定すると、クライアントが要求する任意のホスト名を満たすためにサーバーのTLS証明書にSANを自動的に追加することを無効にできます。 +* アドレスコントローラーにRWMutexを追加 [(#8276)](https://github.com/k3s-io/k3s/pull/8276) + +----- +## リリース [v1.24.16+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.16+k3s1) + + +このリリースはKubernetesをv1.24.16に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v12415)を参照してください。 + +### v1.24.14+k3s1以降の変更点: + +* コードのスペルチェックを修正 [(#7861)](https://github.com/k3s-io/k3s/pull/7861) +* file_windows.goを削除 [(#7857)](https://github.com/k3s-io/k3s/pull/7857) +* helm-controllerでapiServerPortをカスタマイズできるようにk3sを許可 [(#7872)](https://github.com/k3s-io/k3s/pull/7872) +* ルートレスノードのパスワードを修正 [(#7899)](https://github.com/k3s-io/k3s/pull/7899) +* 2023-07リリースのバックポート [(#7910)](https://github.com/k3s-io/k3s/pull/7910) + * kubeadmスタイルのブートストラップトークンで参加したエージェントが、ノードオブジェクトが削除されたときにクラスターに再参加できない問題を解決しました。 + * `k3s certificate rotate-ca`コマンドがdata-dirフラグをサポートするようになりました。 +* カスタムklipper helmイメージにCLIを追加 [(#7916)](https://github.com/k3s-io/k3s/pull/7916) + * デフォルトのhelm-controllerジョブイメージは、--helm-job-image CLIフラグで上書きできるようになりました。 +* etcdが無効になっている場合、etcdの証明書とキーの生成をゲートするようにしました [(#7946)](https://github.com/k3s-io/k3s/pull/7946) +* apparmorプロファイルが強制されている場合、`check-config`でzgrepを使用しないようにしました [(#7955)](https://github.com/k3s-io/k3s/pull/7955) +* image_scan.shスクリプトを修正し、trivyバージョンをダウンロード (#7950) [(#7970)](https://github.com/k3s-io/k3s/pull/7970) +* デフォルトのkubeconfigファイルの権限を調整 [(#7985)](https://github.com/k3s-io/k3s/pull/7985) +* v1.24.16に更新 [(#8023)](https://github.com/k3s-io/k3s/pull/8023) + +----- +## リリース [v1.24.15+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.15+k3s1) + +このリリースはKubernetesをv1.24.15に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v12414)を参照してください。 + +### v1.24.14+k3s1以降の変更点: + +* E2Eバックポート - 6月 [(#7726)](https://github.com/k3s-io/k3s/pull/7726) + * バージョンまたはヘルプフラグでコマンドをショートサーキット #7683 + * 回転証明書チェックを追加し、エージェントを再起動する関数を削除 #7097 + * E2E: RunCmdOnNodeのためのSudo #7686 +* スペルチェックを修正 [(#7753)](https://github.com/k3s-io/k3s/pull/7753) +* バージョンバンプとバグ修正のバックポート [(#7719)](https://github.com/k3s-io/k3s/pull/7719) + * バンドルされたmetrics-serverがv0.6.3にバンプされ、デフォルトで安全なTLS暗号のみを使用するようになりました。 + * `coredns-custom` ConfigMapは、`.:53`デフォルトサーバーブロックに`*.override`セクションを含めることができるようになりました。 + * K3sのコアコントローラー(supervisor、deploy、helm)は、もはやadmin kubeconfigを使用しません。これにより、アクセスおよび監査ログからシステムによって実行されたアクションと管理ユーザーによって実行されたアクションを区別しやすくなります。 + * klipper-lbイメージをv0.4.4にバンプし、Service ExternalTrafficPolicyがLocalに設定されている場合にlocalhostからServiceLBポートにアクセスできない問題を解決しました。 + * k3sをコンパイルする際にLBイメージを構成可能にしました。 + * ノードがクラスターに参加する際にノードパスワードシークレットを作成できない場合でも、ノードがクラスターに参加できるようになりました。シークレットの作成はバックグラウンドで再試行されます。これにより、シークレット作成をブロックする失敗閉鎖の検証Webhookが新しいノードがクラスターに参加してWebhookポッドを実行するまで利用できない場合に発生する可能性のあるデッドロックが解消されます。 + * バンドルされたcontainerdのaufs/devmapper/zfsスナップショットプラグインが復元されました。これらは、前回のリリースでcontainerdをk3sマルチコールバイナリに戻す際に意図せず省略されました。 + * 組み込みのhelmコントローラーがv0.15.0にバンプされ、ターゲットネームスペースが存在しない場合にチャートのターゲットネームスペースを作成することをサポートするようになりました。 +* 未使用のlibvirt設定を削除 [(#7759)](https://github.com/k3s-io/k3s/pull/7759) +* Makefileにフォーマットコマンドを追加 [(#7764)](https://github.com/k3s-io/k3s/pull/7764) +* Kubernetesをv1.24.15に更新 [(#7785)](https://github.com/k3s-io/k3s/pull/7785) + +----- +## リリース [v1.24.14+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.14+k3s1) + +このリリースはKubernetesをv1.24.14に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v12413)を参照してください。 + +### v1.24.13+k3s1以降の変更点: + +* DroneでE2Eテストを追加 [(#7376)](https://github.com/k3s-io/k3s/pull/7376) +* etc-snapshotサーバーフラグの統合テストを追加 [(#7379)](https://github.com/k3s-io/k3s/pull/7379) +* CLI + 設定の強化 [(#7407)](https://github.com/k3s-io/k3s/pull/7407) + * `--Tls-sans`は複数の引数を受け入れるようになりました: `--tls-sans="foo,bar"` + * `Prefer-bundled-bin: true`は`config.yaml.d`ファイルに設定された場合に正しく動作するようになりました。 +* netutilメソッドを/utils/net.goに移行 [(#7435)](https://github.com/k3s-io/k3s/pull/7435) +* CVE修正のためにRunc + Containerd + Dockerをバンプ [(#7453)](https://github.com/k3s-io/k3s/pull/7453) +* ポート名が使用される場合のバグを修正するためにkube-routerバージョンをバンプ [(#7462)](https://github.com/k3s-io/k3s/pull/7462) +* Kubeフラグとlonghornテスト1.24 [(#7467)](https://github.com/k3s-io/k3s/pull/7467) +* ローカルストレージ: 権限を修正 [(#7472)](https://github.com/k3s-io/k3s/pull/7472) +* バージョンバンプとバグ修正のバックポート [(#7516)](https://github.com/k3s-io/k3s/pull/7516) + * K3sは、etcdから「too many learners」エラーを受け取ったときにクラスター参加操作を再試行するようになりました。これは、複数のサーバーを同時に追加しようとしたときに最も頻繁に発生しました。 + * K3sは再びページサイズ> 4kのaarch64ノードをサポートします。 + * パッケージされたTraefikバージョンがv2.9.10 / チャート21.2.0にバンプされました。 + * K3sは、`noexec`でマウントされたファイルシステムから実行しようとしたときに、より意味のあるエラーを表示するようになりました。 + * K3sは、サーバートークンがブートストラップトークン`id.secret`形式を使用している場合に適切なエラーメッセージで終了するようになりました。 + * Addon、HelmChart、およびHelmChartConfig CRDが構造的スキーマなしで作成され、これらのタイプのカスタムリソースを無効な内容で作成できる問題を修正しました。 + * (実験的な) --disable-agentフラグで開始されたサーバーは、トンネル認証エージェントコンポーネントを実行しようとしなくなりました。 + * Podおよびクラスターのイグレスセレクターモードが正しく機能しない問題を修正しました。 + * K3sは、管理されたetcdノードを再起動するときにクラスターブートストラップデータを抽出するために使用される一時的なetcdにetcd-argsを正しく渡すようになりました。 + * K3sは、新しいサーバーが管理されたetcdクラスターに参加するときに現在のetcdクラスターメンバーリストを取得する際のエラーを適切に処理するようになりました。 + * 組み込みのkineバージョンがv0.10.1にバンプされました。これにより、従来の`lib/pq` postgresドライバーが`pgx`に置き換えられました。 + * バンドルされたCNIプラグインがv1.2.0-k3s1にアップグレードされました。バンドルにはbandwidthおよびfirewallプラグインが含まれています。 + * 組み込みのHelmコントローラーは、シークレットに保存された資格情報を介してチャートリポジトリに認証すること、およびConfigMapを介してリポCAを渡すことをサポートするようになりました。 +* containerd/runcをv1.7.1-k3s1/v1.1.7にバンプ [(#7536)](https://github.com/k3s-io/k3s/pull/7536) + * バンドルされたcontainerdおよびruncバージョンがv1.7.1-k3s1/v1.1.7にバンプされました。 +* netpolからのエラーをラップ [(#7549)](https://github.com/k3s-io/k3s/pull/7549) +* v1.24.14-k3s1に更新 [(#7577)](https://github.com/k3s-io/k3s/pull/7577) + +----- +## リリース [v1.24.13+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.13+k3s1) + +このリリースはKubernetesをv1.24.13に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v12412)を参照してください。 + +### v1.24.12+k3s1以降の変更点: + +* `check-config`を強化 [(#7165)](https://github.com/k3s-io/k3s/pull/7165) +* 廃止されたnodeSelectorラベルbeta.kubernetes.io/osを削除 (#6970) [(#7122)](https://github.com/k3s-io/k3s/pull/7122) +* バージョンバンプとバグ修正のバックポート [(#7229)](https://github.com/k3s-io/k3s/pull/7229) + * バンドルされたlocal-path-provisionerバージョンがv0.0.24にバンプされました。 + * 同梱の runc バージョンが v1.1.5 にバンプされました + * 同梱の coredns バージョンが v1.10.1 にバンプされました + * 外部データストアを使用する場合、K3s は初期クラスターのブートストラップデータを作成する際にブートストラップキーをロックし、複数のサーバーが同時にクラスターを初期化しようとする際の競合状態を防ぎます。 + * アクティブなサーバーノードへの接続を維持するクライアントロードバランサーは、サーバーがクラスターから削除されたときに接続を閉じるようになりました。これにより、エージェントコンポーネントが直ちに現在のクラスターのメンバーに再接続することが保証されます。 + * クラスターリセット中の競合状態を修正し、操作がハングしてタイムアウトする可能性を防ぎました。 +* デフォルトの ACCEPT ルールをチェーンの最後に移動するように kube-router を更新しました [(#7222)](https://github.com/k3s-io/k3s/pull/7222) + * 埋め込みの kube-router コントローラーが更新され、ホスト上のデフォルトのドロップ/拒否ルールによってポッドからのトラフィックがブロックされる回帰を修正しました。ユーザーは依然として外部で管理されているファイアウォールルールがポッドおよびサービスネットワークへの/からのトラフィックを明示的に許可することを確認する必要がありますが、これは一部のユーザーが依存していた以前の動作に戻ります。 +* klipper lb と helm-controller を更新しました [(#7241)](https://github.com/k3s-io/k3s/pull/7241) +* Kube-router の ACCEPT ルール挿入とインストールスクリプトを更新し、開始前にルールをクリーンアップするようにしました [(#7277)](https://github.com/k3s-io/k3s/pull/7277) + * 埋め込みの kube-router コントローラーが更新され、ホスト上のデフォルトのドロップ/拒否ルールによってポッドからのトラフィックがブロックされる回帰を修正しました。ユーザーは依然として外部で管理されているファイアウォールルールがポッドおよびサービスネットワークへの/からのトラフィックを明示的に許可することを確認する必要がありますが、これは一部のユーザーが依存していた以前の動作に戻ります。 +* v1.24.13-k3s1 に更新しました [(#7284)](https://github.com/k3s-io/k3s/pull/7284) + +----- +## リリース [v1.24.12+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.12+k3s1) + +このリリースは Kubernetes を v1.24.12 に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v12411) を参照してください。 + +### v1.24.11+k3s1 からの変更点: + +* flannel と kube-router を更新しました [(#7063)](https://github.com/k3s-io/k3s/pull/7063) +* CVE のためにさまざまな依存関係をバンプしました [(#7042)](https://github.com/k3s-io/k3s/pull/7042) +* dependabot を有効にしました [(#7046)](https://github.com/k3s-io/k3s/pull/7046) +* kubelet ポートが準備完了になるのを待ってから設定するようにしました [(#7065)](https://github.com/k3s-io/k3s/pull/7065) + * エージェントトンネル認証者は、kubelet ポートをノードオブジェクトから読み取る前に kubelet が準備完了になるのを待つようになりました。 +* デフォルトの自己署名証明書のローテーションサポートを改善しました [(#7080)](https://github.com/k3s-io/k3s/pull/7080) + * `k3s certificate rotate-ca` チェックは、`--force` オプションなしで自己署名証明書のローテーションをサポートするようになりました。 +* containerd config.toml ファイルの編集に関する警告を追加しました [(#7076)](https://github.com/k3s-io/k3s/pull/7076) +* v1.24.12-k3s1 に更新しました [(#7105)](https://github.com/k3s-io/k3s/pull/7105) + +----- +## リリース [v1.24.11+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.11+k3s1) + +このリリースは Kubernetes を v1.24.11 に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v12410) を参照してください。 + +### v1.24.10+k3s1 からの変更点: + +* スケジュールされたスナップショットにジッターを追加し、競合時に再試行を強化しました [(#6783)](https://github.com/k3s-io/k3s/pull/6783) + * スケジュールされた etcd スナップショットは、数秒以内の短いランダムな遅延によってオフセットされるようになりました。これにより、複数サーバークラスターがスナップショットリスト ConfigMap を同時に更新しようとする際の病理的な動作を防ぐことができます。スナップショットコントローラーは、スナップショットリストの更新を試みる際により粘り強くなります。 +* cri-dockerd をバンプしました [(#6799)](https://github.com/k3s-io/k3s/pull/6799) + * 埋め込みの cri-dockerd が v0.3.1 に更新されました +* バグ修正: pprof が有効な場合に cert-manager を壊さないようにしました [(#6838)](https://github.com/k3s-io/k3s/pull/6838) +* vagrant ボックスを fedora37 にバンプしました [(#6859)](https://github.com/k3s-io/k3s/pull/6859) +* cronjob の例を修正しました [(#6865)](https://github.com/k3s-io/k3s/pull/6865) +* フラグタイプの一貫性を確保しました [(#6868)](https://github.com/k3s-io/k3s/pull/6868) +* cri-dockerd ソケットを待機するようにしました [(#6854)](https://github.com/k3s-io/k3s/pull/6854) +* E2E テストを統合しました [(#6888)](https://github.com/k3s-io/k3s/pull/6888) +* シークレットの再暗号化時に値の競合を無視するようにしました [(#6918)](https://github.com/k3s-io/k3s/pull/6918) +* ServiceLB が `ExternalTrafficPolicy=Local` を尊重するようにしました [(#6908)](https://github.com/k3s-io/k3s/pull/6908) + * ServiceLB は、サービスの ExternalTrafficPolicy を尊重するようになりました。Local に設定されている場合、ロードバランサーはサービスのポッドを持つノードのアドレスのみを広告し、他のクラスター メンバーにトラフィックを転送しません。 +* kubernetes サービスアドレスを SAN リストに追加する際にデフォルトのアドレスファミリを使用するようにしました [(#6905)](https://github.com/k3s-io/k3s/pull/6905) + * apiserver 広告アドレスと IP SAN エントリは、デフォルトの IP ファミリとして IPv6 を使用するクラスターで正しく設定されるようになりました。 +* servicelb の起動失敗時に検証 webhook が作成をブロックする問題を修正しました [(#6920)](https://github.com/k3s-io/k3s/pull/6920) + * 埋め込みのクラウドコントローラーマネージャーは、起動時に無条件に名前空間とサービスアカウントを再作成しようとしなくなりました。これにより、フェイルクローズドの webhook が使用されている場合にデッドロッククラスターが発生する問題が解決されます。 +* ユーザー提供の CA 証明書と `kubeadm` ブートストラップトークンのサポートをバックポートしました [(#6930)](https://github.com/k3s-io/k3s/pull/6930) + * K3s は、クラスター CA 証明書が既存のルートまたは中間 CA によって署名されている場合に正しく機能するようになりました。K3s が開始する前にそのような証明書を生成するためのサンプルスクリプトは、github リポジトリの [contrib/util/certs.sh](https://github.com/k3s-io/k3s/blob/master/contrib/util/certs.sh) にあります。 + * K3s は `kubeadm` スタイルの参加トークンをサポートするようになりました。`k3s token create` は、オプションで制限付き TTL を持つ参加トークンシークレットを作成するようになりました。 + * 期限切れまたは削除されたトークンで参加した K3s エージェントは、ノードオブジェクトがクラスターから削除されない限り、NodeAuthorization アドミッションプラグインを介して既存のクライアント証明書を使用してクラスターに留まります。 +* egress-selector-mode=agent の場合に NodeIP 上の hostNetwork ポートへのアクセスを修正しました [(#6937)](https://github.com/k3s-io/k3s/pull/6937) + * apiserver egress プロキシが、エージェントまたは無効モードでもサービスエンドポイントに接続するためにエージェントトンネルを使用しようとする問題を修正しました。 +* flannel を v0.21.1 に更新しました [(#6925)](https://github.com/k3s-io/k3s/pull/6925) +* 複数のリーダー選出コントローラーセットを許可するようにしました [(#6942)](https://github.com/k3s-io/k3s/pull/6942) + * 管理された etcd のリーダー選出コントローラーが etcd 専用ノードで実行されない問題を修正しました +* etcd と ca-cert のローテーション問題を修正しました [(#6955)](https://github.com/k3s-io/k3s/pull/6955) +* ServiceLB のデュアルスタックインバウンド IP リストの問題を修正しました [(#6988)](https://github.com/k3s-io/k3s/pull/6988) + * ServiceLB がノードの IPv6 アドレスを広告する問題を解決しました。クラスターまたはサービスがデュアルスタック操作を有効にしていない場合でも発生していました。 +* kine を v0.9.9 にバンプしました [(#6976)](https://github.com/k3s-io/k3s/pull/6976) + * 埋め込みの kine バージョンが v0.9.9 にバンプされました。コンパクションログメッセージは、可視性を高めるために `info` レベルで省略されるようになりました。 +* v1.24.11-k3s1 に更新しました [(#7009)](https://github.com/k3s-io/k3s/pull/7009) + +----- +## リリース [v1.24.10+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.10+k3s1) + + +このリリースは Kubernetes を v1.24.10+k3s1 に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1249) を参照してください。 + +### v1.24.9+k3s2 からの変更点: + +* デフォルトの tls-cipher-suites を通過させるようにしました [(#6731)](https://github.com/k3s-io/k3s/pull/6731) + * K3s のデフォルトの暗号スイートは、kube-apiserver に明示的に渡されるようになり、すべてのリスナーがこれらの値を使用することが保証されます。 +* containerd を v1.6.15-k3s1 にバンプしました [(#6736)](https://github.com/k3s-io/k3s/pull/6736) + * 埋め込みの containerd バージョンが v1.6.15-k3s1 にバンプされました +* action/download-artifact を v3 にバンプしました [(#6748)](https://github.com/k3s-io/k3s/pull/6748) + +----- +## リリース [v1.24.9+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.24.9+k3s2) + + +このリリースは containerd を v1.6.14 に更新し、containerd が再起動されたときにポッドが CNI 情報を失う問題を解決します。 + +### v1.24.9+k3s1 からの変更点: + +* 欠落している E2E テストコミットをバックポートしました [(#6616)](https://github.com/k3s-io/k3s/pull/6616) +* containerd を v1.6.14-k3s1 にバンプしました [(#6695)](https://github.com/k3s-io/k3s/pull/6695) + * 埋め込みの containerd バージョンが v1.6.14-k3s1 にバンプされました。これには、containerd の再起動時にポッドが CNI 情報を失う原因となる [containerd/7843](https://github.com/containerd/containerd/issues/7843) の修正がバックポートされています。これにより、kubelet がポッドを再作成する原因となっていました。 + +----- +## リリース [v1.24.9+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.9+k3s1) + + +> ## ⚠️ 警告 +> このリリースは https://github.com/containerd/containerd/issues/7843 の影響を受けており、K3s が再起動されるたびに kubelet がすべてのポッドを再起動します。このため、この K3s リリースをチャネルサーバーから削除しました。代わりに `v1.24.9+k3s2` を使用してください。 + +このリリースは Kubernetes を v1.24.9 に更新し、多くの問題を修正します。 + +**重大な変更:** K3s には `swanctl` および `charon` バイナリが含まれなくなりました。ipsec flannel バックエンドを使用している場合、このリリースに K3s をアップグレードする前に、ノードに strongswan の `swanctl` および `charon` パッケージがインストールされていることを確認してください。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1248) を参照してください。 + +### v1.24.8+k3s1 からの変更点: + + +* Windowsエグゼキュータ実装に属するものを削除 [(#6502)](https://github.com/k3s-io/k3s/pull/6502) +* Github CIの更新 [(#6535)](https://github.com/k3s-io/k3s/pull/6535) +* flannelExternalIP使用ケースのログ修正 [(#6540)](https://github.com/k3s-io/k3s/pull/6540) +* Google BucketsからAWS S3 Bucketsへの切り替え [(#6570)](https://github.com/k3s-io/k3s/pull/6570) +* secrets-encryptionフラグをGAに変更 [(#6591)](https://github.com/k3s-io/k3s/pull/6591) +* flannelをv0.20.2に更新 [(#6589)](https://github.com/k3s-io/k3s/pull/6589) +* 2022-12のバックポート [(#6599)](https://github.com/k3s-io/k3s/pull/6599) + * K3sがホストツールよりもバンドルされたバイナリを使用するように強制する新しいprefer-bundled-binフラグを追加 + * 組み込みのcontainerdバージョンがv1.6.10-k3s1に更新 + * ルートレスの`port-driver`、`cidr`、`mtu`、`enable-ipv6`、および`disable-host-loopback`設定が環境変数を介して構成可能に + * 組み込みのロードバランサーコントローラーイメージがklipper-lb:v0.4.0に更新され、[LoadBalancerSourceRanges](https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/#:~:text=loadBalancerSourceRanges)フィールドのサポートを含む + * 組み込みのHelmコントローラーイメージがklipper-helm:v0.7.4-build20221121に更新 + * `--disable-cloud-controller`フラグが設定されている場合、組み込みのcloud-controller-managerのメトリクスリスナーがポート10258で無効化 + * K3sパッケージコンポーネントのデプロイメントが一貫したアップグレード戦略とrevisionHistoryLimit設定を持ち、レプリカ数をハードコーディングすることでスケーリングの決定を上書きしないように + * パッケージ化されたmetrics-serverがv0.6.2に更新 + * 組み込みのk3s-rootバージョンがv0.12.0に更新され、buildroot 2022.08.1に基づく + * 組み込みのswanctlおよびcharonバイナリが削除。ipsec flannelバックエンドを使用している場合、k3sをアップグレードする前にstrongswanの`swanctl`および`charon`パッケージがノードにインストールされていることを確認してください。 +* node12->node16ベースのGHアクションを更新 [(#6595)](https://github.com/k3s-io/k3s/pull/6595) +* v1.24.9-k3s1に更新 [(#6623)](https://github.com/k3s-io/k3s/pull/6623) +* containerdをv1.6.12-k3s1にバンプ [(#6630)](https://github.com/k3s-io/k3s/pull/6630) + * 組み込みのcontainerdバージョンがv1.6.12にバンプ +* iptable_filter/ip6table_filterをプリロード [(#6647)](https://github.com/k3s-io/k3s/pull/6647) + +----- +## リリース [v1.24.8+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.8+k3s1) + +このリリースはKubernetesをv1.24.8に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1247)を参照してください。 + +### v1.24.7+k3s1からの変更点: + +* netplanにゲートウェイパラメータを追加 [(#6341)](https://github.com/k3s-io/k3s/pull/6341) +* podSelector & ingressタイプのnetpolテストを追加 [(#6348)](https://github.com/k3s-io/k3s/pull/6348) +* kube-routerをv1.5.1にアップグレード [(#6356)](https://github.com/k3s-io/k3s/pull/6356) +* インストールテストのOSイメージをバンプ [(#6379)](https://github.com/k3s-io/k3s/pull/6379) +* node-external-ip設定パラメータのテストを追加 [(#6363)](https://github.com/k3s-io/k3s/pull/6363) +* Flannelをv0.20.1に更新 [(#6418)](https://github.com/k3s-io/k3s/pull/6418) +* 2022-11のバックポート + * パッケージ化されたtraefik helmチャートがv19.0.0にバンプされ、デフォルトでingressclassサポートを有効化 + * パッケージ化されたlocal-path-provisionerがv0.0.23にバンプ + * パッケージ化されたcorednsがv1.9.4にバンプ + * 不正なdefer使用を修正 + * バンドルされたtraefikがv2.9.4 / helmチャートv18.3.0に更新 + * デバッグが設定されている場合、デバッガーフレンドリーなコンパイル設定を使用 + * node-external-ip設定パラメータのテストを追加 + * containerd config.toml.tmpl linuxテンプレートをv2構文に変換 + * インストールテスト用にfedora-coreosをfedora 36に置き換え + * apiserverがサポートしなくなったリソースタイプを含むマニフェストをデプロイコントローラーが処理できない問題を修正 + * 組み込みのhelmコントローラーがv0.13.0にバンプ + * バンドルされたtraefik helmチャートがv18.0.0に更新 + * 強化されたクラスターとアップグレードテストを追加 + * kineをv0.9.6 / sqlite3 v3.39.2にバンプ ([cve-2022-35737](https://nvd.nist.gov/vuln/detail/cve-2022-35737)) + * dynamiclistenerライブラリをv0.3.5にバンプ [(#6411)](https://github.com/k3s-io/k3s/pull/6411) +* 誤った設定を避けるためのヘルピングログを追加 [(#6432)](https://github.com/k3s-io/k3s/pull/6432) +* flannel-external-ipに応じてアドレスタイプの優先順位を変更 [(#6434)](https://github.com/k3s-io/k3s/pull/6434) +* netpolコントローラーを開始する際にkube-routerバージョンをログに記録 [(#6439)](https://github.com/k3s-io/k3s/pull/6439) +* K3sは、サーバーノード間で重要な設定が異なる場合に、同期していないクラスターレベルの設定フラグを具体的に示すようになりました。 [(#6446)](https://github.com/k3s-io/k3s/pull/6446) +* traefik helmチャートを直接GHからプル [(#6469)](https://github.com/k3s-io/k3s/pull/6469) +* v1.24.8に更新 [(#6479)](https://github.com/k3s-io/k3s/pull/6479) +* パッケージ化されたtraefik helmチャートが19.0.4にバンプ [(#6495)](https://github.com/k3s-io/k3s/pull/6495) +* traefikチャートリポジトリを再度移動 [(#6509)](https://github.com/k3s-io/k3s/pull/6509) + +----- +## リリース [v1.24.7+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.7+k3s1) + +このリリースはKubernetesをv1.24.7に更新し、多くの問題を修正します。 + +K3sの[CIS強化ガイド](https://docs.k3s.io/security/hardening-guide)が更新され、cloud controller managerにServiceLBを埋め込むために必要な設定変更が含まれています。強化ガイドに従った場合は、ポリシーとRBACを適宜更新してください。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1246)を参照してください。 + +### v1.24.6+k3s1からの変更点: + +* k3s node-external-ipがある場合にflannel-external-ipを追加 [(#6189)](https://github.com/k3s-io/k3s/pull/6189) +* 2022-10のバックポート [(#6227)](https://github.com/k3s-io/k3s/pull/6227) + * 組み込みのmetrics-serverバージョンがv0.6.1にバンプ + * ServiceLB (klipper-lb)サービスコントローラーがK3sスタブcloud controller managerに統合 + * 組み込みコントローラーによってクラスターに記録されたイベントがサービスログで適切にフォーマットされるように + * apiserverネットワークプロキシの問題を修正し、`kubectl exec`が`error dialing backend: EOF`で時折失敗する問題を修正 + * apiserverネットワークプロキシの問題を修正し、カスタムkubeletポートが使用され、カスタムポートがファイアウォールまたはセキュリティグループルールによってブロックされている場合に`kubectl exec`および`kubectl logs`が失敗する問題を修正 + * 組み込みのTraefikバージョンがv2.9.1 / チャート12.0.0にバンプ +* 非推奨のioutilパッケージを置き換え [(#6235)](https://github.com/k3s-io/k3s/pull/6235) +* dualStackテストを修正 [(#6250)](https://github.com/k3s-io/k3s/pull/6250) +* v1.24.7-k3s1に更新 [(#6270)](https://github.com/k3s-io/k3s/pull/6270) +* svclbポッド用のServiceAccountを追加 [(#6276)](https://github.com/k3s-io/k3s/pull/6276) +* ProviderIDをURI形式で返す [(#6287)](https://github.com/k3s-io/k3s/pull/6287) +* レガシーサービスファイナライザーを削除するためのCCM RBACを修正 [(#6307)](https://github.com/k3s-io/k3s/pull/6307) +* 新しい--flannel-external-ipフラグを追加 [(#6322)](https://github.com/k3s-io/k3s/pull/6322) + * 有効にすると、Flannelトラフィックは内部IPの代わりにノードの外部IPを使用 + * これは、同じローカルネットワーク上にない分散クラスターでの使用を目的としています。 + +----- +## リリース [v1.24.6+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.6+k3s1) + +このリリースはKubernetesをv1.24.6に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1244)を参照してください。 + +### v1.24.4+k3s1からの変更点: + +* Windows kubelet引数から`--containerd`フラグを削除 [(#6028)](https://github.com/k3s-io/k3s/pull/6028) +* v1.24.4+k3s1を安定版としてマーク [(#6036)](https://github.com/k3s-io/k3s/pull/6036) +* E2E: CentOS 7およびRocky 8のサポートを追加 [(#6015)](https://github.com/k3s-io/k3s/pull/6015) +* インストールテストをPRビルドのk3sで実行するように変換 [(#6003)](https://github.com/k3s-io/k3s/pull/6003) +* CI: Fedora 34 -> 35に更新 [(#5996)](https://github.com/k3s-io/k3s/pull/5996) +* dualStackテストを修正し、ipv6ネットワークプレフィックスを変更 [(#6023)](https://github.com/k3s-io/k3s/pull/6023) +* e2eテストを修正 [(#6018)](https://github.com/k3s-io/k3s/pull/6018) +* 古いiptablesバージョンの問題を修正するためにFlannelバージョンを更新 [(#6088)](https://github.com/k3s-io/k3s/pull/6088) +* バンドルされたruncバージョンがv1.1.4にバンプ [(#6072)](https://github.com/k3s-io/k3s/pull/6072) +* 組み込みのcontainerdバージョンがv1.6.8-k3s1にバンプ [(#6079)](https://github.com/k3s-io/k3s/pull/6079) +* テスト変更の一括バックポート [(#6085)](https://github.com/k3s-io/k3s/pull/6085) +* Kubernetesの正しいgolangバージョンを確認するための検証チェックを追加 [(#6113)](https://github.com/k3s-io/k3s/pull/6113) +* v1.24.5に更新 [(#6143)](https://github.com/k3s-io/k3s/pull/6143) +* v1.24.6-k3s1に更新 [(#6164)](https://github.com/k3s-io/k3s/pull/6164) + +----- +## リリース [v1.24.4+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.4+k3s1) + +このリリースはKubernetesをv1.24.4に更新し、多くの問題を修正します。 + +このリリースは、v1.24ブランチに`--docker`フラグの使用を復元します。詳細は[docs/adrs/cri-dockerd.md](https://github.com/k3s-io/k3s/blob/master/docs/adrs/cri-dockerd.md)を参照してください。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1243)を参照してください。 + +### v1.24.3+k3s1からの変更点: + +* terraformテストを独自のパッケージに分け、テスト実行をクリーンアップ [(#5861)](https://github.com/k3s-io/k3s/pull/5861) +* rootlesskitをv1.0.1にバンプしました [(#5773)](https://github.com/k3s-io/k3s/pull/5773) +* etcdデータストアの初期ヘルスチェック時間を10秒から30秒に引き上げました。 [(#5882)](https://github.com/k3s-io/k3s/pull/5882) +* サーバーノードでsystemd cgroupドライバーの自動構成が失敗する回帰を修正しました。 [(#5851)](https://github.com/k3s-io/k3s/pull/5851) +* 組み込みのネットワークポリシーコントローラーをkube-router v1.5.0に更新しました [(#5789)](https://github.com/k3s-io/k3s/pull/5789) +* 設定されたサービスCIDRが`--service-cluster-ip-range`フラグを介してKubernetesコントローラーマネージャーに渡されるようになりました。以前はこの値はapiserverにのみ渡されていました。 [(#5894)](https://github.com/k3s-io/k3s/pull/5894) +* 証明書の更新が正しく機能しない回帰を修正するためにdynamiclistenerを更新しました。 [(#5896)](https://github.com/k3s-io/k3s/pull/5896) +* v1.24.3+k3s1を安定版に昇格 [(#5889)](https://github.com/k3s-io/k3s/pull/5889) +* ADR: 古いフラグの廃止と削除 [(#5890)](https://github.com/k3s-io/k3s/pull/5890) +* K3sは、サポートされていないカーネルでcontainerdの`enable_unprivileged_icmp`および`enable_unprivileged_ports`オプションを設定しなくなりました。 [(#5913)](https://github.com/k3s-io/k3s/pull/5913) +* 不正なピアURLに関するetcdエラーが、期待されるhttpsおよび2380ポートを正しく含むようになりました。 [(#5909)](https://github.com/k3s-io/k3s/pull/5909) +* 設定されている場合、agent-tokenの値がデフォルトの(サーバー)トークンと同様に`$datadir/server/agent-token`に書き込まれるようになりました。 [(#5906)](https://github.com/k3s-io/k3s/pull/5906) +* 廃止されたフラグはv1.25での削除を警告するようになりました [(#5937)](https://github.com/k3s-io/k3s/pull/5937) +* 8K以上のシークレットを持つクラスターのシークレット再暗号化を修正 [(#5936)](https://github.com/k3s-io/k3s/pull/5936) +* minio-goをv7.0.33にバンプしました。これによりIMDSv2クレデンシャルのサポートが追加されます。 [(#5928)](https://github.com/k3s-io/k3s/pull/5928) +* GH Actionsのmacos-10.15をmacos-12にアップグレード [(#5953)](https://github.com/k3s-io/k3s/pull/5953) +* デュアルスタックIPの自動検出を追加 [(#5920)](https://github.com/k3s-io/k3s/pull/5920) +* `--docker`フラグがk3sに復元され、組み込みのcri-dockerdを有効にするショートカットとして機能します [(#5916)](https://github.com/k3s-io/k3s/pull/5916) +* 新しいメンバーと退職者を含むMAINTAINERSを更新 [(#5948)](https://github.com/k3s-io/k3s/pull/5948) +* バックポートを示すチェックボックスを削除 [(#5947)](https://github.com/k3s-io/k3s/pull/5947) +* terraform/testutilsのcheckErrorを修正 [(#5893)](https://github.com/k3s-io/k3s/pull/5893) +* ansibleを使用してe2eテストを実行するスクリプトを追加 [(#5134)](https://github.com/k3s-io/k3s/pull/5134) +* flannelをv0.19.1に更新 [(#5962)](https://github.com/k3s-io/k3s/pull/5962) +* 実行スクリプトを更新 [(#5979)](https://github.com/k3s-io/k3s/pull/5979) +* install/cgroupテストをyamlベースの設定に変換 [(#5992)](https://github.com/k3s-io/k3s/pull/5992) +* E2E: ローカルクラスターのテスト [(#5977)](https://github.com/k3s-io/k3s/pull/5977) +* 毎晩のインストールgithubアクションを追加 [(#5998)](https://github.com/k3s-io/k3s/pull/5998) +* codespellをDroneからGHアクションに変換 [(#6004)](https://github.com/k3s-io/k3s/pull/6004) +* v1.24.4に更新 [(#6014)](https://github.com/k3s-io/k3s/pull/6014) + +----- +## リリース [v1.24.3+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.3+k3s1) + +このリリースはKubernetesをv1.24.3に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1242)を参照してください。 + +### v1.24.2+k3s2からの変更点: +* rancher/remotedialerを更新し、潜在的なメモリリークに対処しました。 [(#5784)](https://github.com/k3s-io/k3s/pull/5784) +* 組み込みのruncバイナリをv1.1.3にバンプしました [(#5783)](https://github.com/k3s-io/k3s/pull/5783) +* cadvisorポッドメトリクスで一部のcontainerdラベルが空になる回帰を修正しました [(#5812)](https://github.com/k3s-io/k3s/pull/5812) +* dapperテストを通常のdockerに置き換えました [(#5805)](https://github.com/k3s-io/k3s/pull/5805) +* v1.23.8+k3s2を安定版に昇格 [(#5814)](https://github.com/k3s-io/k3s/pull/5814) +* シークレット暗号化が有効な状態で作成されたスナップショットを復元する際に、--secrets-encryptionコマンドが設定ファイルまたは復元コマンドに含まれていない場合にetcdの復元が失敗する問題を修正しました。 [(#5817)](https://github.com/k3s-io/k3s/pull/5817) +* svclb DaemonSetの削除を修正しました +* サービスが削除された後にServiceLB DaemonSetsが残る回帰を修正しました。 + 影響を受けたリリースを実行している間にLoadBalancerサービスが削除された場合、`kube-system`ネームスペースから孤立した`svclb-*` DaemonSetsを手動でクリーンアップする必要があるかもしれません。 [(#5824)](https://github.com/k3s-io/k3s/pull/5824) +* etcdスナップショットに関する問題に対処 +* スナップショット圧縮が有効な場合、スケジュールされたetcdスナップショットは圧縮されるようになりました。 +* デフォルトのetcdスナップショットタイムアウトが5分に引き上げられました。 + 一度に1つのスケジュールされたetcdスナップショットのみが実行されます。前のスナップショットがまだ進行中のときに別のスナップショットが発生する場合、エラーが記録され、2番目のスケジュールされたスナップショットはスキップされます。 +* 圧縮が有効でない場合、etcdスナップショットのS3オブジェクトは正しいコンテンツタイプでラベル付けされるようになりました。 [(#5833)](https://github.com/k3s-io/k3s/pull/5833) +* v1.24.3に更新 [(#5870)](https://github.com/k3s-io/k3s/pull/5870) + +----- +## リリース [v1.24.2+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.24.2+k3s2) + +このリリースはv1.24.2+k3s1およびそれ以前のリリースのいくつかの問題を修正します。 + +### v1.24.2+k3s1からの変更点: + +* sqlストレージバックエンドを使用している場合、metadata.nameにフィールドセレクターを含む名前空間リストが結果を返さない問題を修正するためにkineをバンプしました。 ([#5795](https://github.com/k3s-io/k3s/pull/5795)) +* 古いKubernetesリリースから直接アップグレードした後、または`type: externalname`を持つサービスをデプロイする際に、K3sがパニックをログに記録しなくなりました。 ([#5771](https://github.com/k3s-io/k3s/pull/5771)) +* サーバーの`--bind-address`フラグが使用された場合や、k3sがhttpプロキシの背後で使用される場合に、`kubectl logs`やエージェントへの接続を必要とする他の機能が正しく動作しない問題を修正しました。 ([#5780](https://github.com/k3s-io/k3s/pull/5780)) +* egress-selector-modeサポートがないクラスターに新しいバージョンのk3sが参加できない問題を修正しました。 ([#5785](https://github.com/k3s-io/k3s/pull/5785)) +* go-powershellの不要な依存関係を削除しました ([#5777](https://github.com/k3s-io/k3s/pull/5777)) + +----- +## リリース [v1.24.2+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.2+k3s1) + +このリリースはKubernetesをv1.24.2に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1241)を参照してください。 + +### v1.24.1+k3s1からの変更点: + +* kube-ipvs0インターフェースをクリーンアップ時に削除 [(#5644)](https://github.com/k3s-io/k3s/pull/5644) +* k3s CLIに`--flannel-wireguard-mode`スイッチを追加し、wireguardネイティブバックエンドでワイヤーガードトンネルモードを設定できるようにしました [(#5552)](https://github.com/k3s-io/k3s/pull/5552) +* flannel cni設定を設定するためのflannelcniconfフラグを導入 [(#5656)](https://github.com/k3s-io/k3s/pull/5656) +* 統合テスト: スタートアップ [(#5630)](https://github.com/k3s-io/k3s/pull/5630) +* E2Eの改善とtest-padツールの基盤 [(#5593)](https://github.com/k3s-io/k3s/pull/5593) +* SECURITY.mdを更新 [(#5607)](https://github.com/k3s-io/k3s/pull/5607) +* pprofサーバーをオプションで実行するための--enable-pprofフラグを導入 [(#5527)](https://github.com/k3s-io/k3s/pull/5527) +* E2E: デュアルスタックテスト [(#5617)](https://github.com/k3s-io/k3s/pull/5617) +* ServiceLBによって作成されたポッドはすべて`kube-system`ネームスペースに配置されるようになりました。これにより、ユーザーネームスペースで[ポッドセキュリティ基準を強制](https://kubernetes.io/docs/tasks/configure-pod-container/enforce-standards-namespace-labels/)してもServiceLBが壊れなくなります。 [(#5657)](https://github.com/k3s-io/k3s/pull/5657) +* E2E: testpadの準備、代替スクリプトの場所を追加 [(#5692)](https://github.com/k3s-io/k3s/pull/5692) +* armテストとアップグレードテストを追加 [(#5526)](https://github.com/k3s-io/k3s/pull/5526) +* スタートアップフックが終了するまでサービスの準備を遅延 [(#5649)](https://github.com/k3s-io/k3s/pull/5649) +* urfaveのmarkdown/manドキュメント生成を無効化 [(#5566)](https://github.com/k3s-io/k3s/pull/5566) +* 組み込みのetcdスナップショットコントローラーが、ConfigMapキーに使用できない文字を含むスナップショットファイルを処理できなくなる問題を修正しました。 [(#5702)](https://github.com/k3s-io/k3s/pull/5702) +* `CONTAINERD_`で始まる環境変数が、containerdに渡される際に他の既存の変数よりも優先されるようになりました。 [(#5706)](https://github.com/k3s-io/k3s/pull/5706) +* 組み込みのetcdインスタンスは、リセットまたは復元中に他のノードからの接続を受け付けなくなりました。 [(#5542)](https://github.com/k3s-io/k3s/pull/5542) +* k3s s390xの互換性テストを有効化 [(#5658)](https://github.com/k3s-io/k3s/pull/5658) +* Containerd: enable_unprivileged_portsおよびenable_unprivileged_…を有効化 [(#5538)](https://github.com/k3s-io/k3s/pull/5538) +* 組み込みのHelmコントローラーが、HelmChartConfigリソースが更新または削除されたときにチャートのデプロイメントを適切に更新するようになりました。 [(#5731)](https://github.com/k3s-io/k3s/pull/5731) +* v1.24.2に更新 [(#5749)](https://github.com/k3s-io/k3s/pull/5749) + +----- +## リリース [v1.24.1+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.24.1+k3s1) + +このリリースはKubernetesをv1.24.1に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1240)を参照してください。 + +### v1.24.0+k3s1からの変更点: + +* マニフェストファイルから削除されたオブジェクトはKubernetesからも削除されます。 [(#5560)](https://github.com/k3s-io/k3s/pull/5560) +* バージョン管理されていないetcdのgo.modエントリを削除 [(#5548)](https://github.com/k3s-io/k3s/pull/5548) +* node-ipの値をkubeletに渡す [(#5579)](https://github.com/k3s-io/k3s/pull/5579) +* 統合されたapiserverネットワークプロキシの動作モードは、`--egress-selector-mode`で設定できるようになりました。 [(#5577)](https://github.com/k3s-io/k3s/pull/5577) +* dweomerをメンテナから削除 [(#5582)](https://github.com/k3s-io/k3s/pull/5582) +* dynamiclistenerをv0.3.3にバンプ [(#5554)](https://github.com/k3s-io/k3s/pull/5554) +* v1.24.1-k3s1にアップデート [(#5616)](https://github.com/k3s-io/k3s/pull/5616) +* `--cloud-provider=external` kubelet引数を再追加 [(#5628)](https://github.com/k3s-io/k3s/pull/5628) +* "kubeletにnode-ipの値を渡す (#5579)" をリバート [(#5636)](https://github.com/k3s-io/k3s/pull/5636) + +----- \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.25.X.md b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.25.X.md new file mode 100644 index 000000000..2bb1b393d --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.25.X.md @@ -0,0 +1,569 @@ +--- +hide_table_of_contents: true +sidebar_position: 6 +--- + +# v1.25.X + +:::warning アップグレード通知 +以前のリリースからアップグレードする前に、Kubernetesの[緊急アップグレードノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#urgent-upgrade-notes)を必ずお読みください。 +::: + +| バージョン | リリース日 | Kubernetes | Kine | SQLite | Etcd | Containerd | Runc | Flannel | Metrics-server | Traefik | CoreDNS | Helm-controller | Local-path-provisioner | +| ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | +| [v1.25.16+k3s4](v1.25.X.md#release-v12516k3s4) | 2023年12月07日 | [v1.25.16](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v12516) | [v0.11.0](https://github.com/k3s-io/kine/releases/tag/v0.11.0) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.7.7-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.7-k3s1) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.25.15+k3s2](v1.25.X.md#release-v12515k3s2) | 2023年11月08日 | [v1.25.15](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v12515) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.7.7-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.7-k3s1) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.25.15+k3s1](v1.25.X.md#release-v12515k3s1) | 2023年10月30日 | [v1.25.15](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v12515) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.7.7-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.7-k3s1) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.25.14+k3s1](v1.25.X.md#release-v12514k3s1) | 2023年9月20日 | [v1.25.14](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v12514) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.7.6-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.6-k3s1) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.25.13+k3s1](v1.25.X.md#release-v12513k3s1) | 2023年9月05日 | [v1.25.13](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v12513) | [v0.10.2](https://github.com/k3s-io/kine/releases/tag/v0.10.2) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.7.3-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.3-k3s1) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.25.12+k3s1](v1.25.X.md#release-v12512k3s1) | 2023年7月27日 | [v1.25.12](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v12512) | [v0.10.1](https://github.com/k3s-io/kine/releases/tag/v0.10.1) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.7.1-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.1-k3s1) | [v1.1.7](https://github.com/opencontainers/runc/releases/tag/v1.1.7) | [v0.22.0](https://github.com/flannel-io/flannel/releases/tag/v0.22.0) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.2](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.2) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.25.11+k3s1](v1.25.X.md#release-v12511k3s1) | 2023年6月26日 | [v1.25.11](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v12511) | [v0.10.1](https://github.com/k3s-io/kine/releases/tag/v0.10.1) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.7.1-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.1-k3s1) | [v1.1.7](https://github.com/opencontainers/runc/releases/tag/v1.1.7) | [v0.22.0](https://github.com/flannel-io/flannel/releases/tag/v0.22.0) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.0](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.0) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.25.10+k3s1](v1.25.X.md#release-v12510k3s1) | 2023年5月26日 | [v1.25.10](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v12510) | [v0.10.1](https://github.com/k3s-io/kine/releases/tag/v0.10.1) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.7.1-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.1-k3s1) | [v1.1.7](https://github.com/opencontainers/runc/releases/tag/v1.1.7) | [v0.21.4](https://github.com/flannel-io/flannel/releases/tag/v0.21.4) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.14.0](https://github.com/k3s-io/helm-controller/releases/tag/v0.14.0) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.25.9+k3s1](v1.25.X.md#release-v1259k3s1) | 2023年4月20日 | [v1.25.9](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v1259) | [v0.9.9](https://github.com/k3s-io/kine/releases/tag/v0.9.9) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.19-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.19-k3s1) | [v1.1.5](https://github.com/opencontainers/runc/releases/tag/v1.1.5) | [v0.21.4](https://github.com/flannel-io/flannel/releases/tag/v0.21.4) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.13.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.3) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.25.8+k3s1](v1.25.X.md#release-v1258k3s1) | 2023年3月27日 | [v1.25.8](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v1258) | [v0.9.9](https://github.com/k3s-io/kine/releases/tag/v0.9.9) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.19-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.19-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.21.4](https://github.com/flannel-io/flannel/releases/tag/v0.21.4) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) +| [v1.25.7+k3s1](v1.25.X.md#release-v1257k3s1) | 2023年3月10日 | [v1.25.7](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v1257) | [v0.9.9](https://github.com/k3s-io/kine/releases/tag/v0.9.9) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.15-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.15-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.21.1](https://github.com/flannel-io/flannel/releases/tag/v0.21.1) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.25.6+k3s1](v1.25.X.md#release-v1256k3s1) | 2023年1月26日 | [v1.25.6](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v1256) | [v0.9.6](https://github.com/k3s-io/kine/releases/tag/v0.9.6) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.15-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.15-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.20.2](https://github.com/flannel-io/flannel/releases/tag/v0.20.2) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.25.5+k3s2](v1.25.X.md#release-v1255k3s2) | 2023年1月11日 | [v1.25.5](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v1255) | [v0.9.6](https://github.com/k3s-io/kine/releases/tag/v0.9.6) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.14-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.14-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.20.2](https://github.com/flannel-io/flannel/releases/tag/v0.20.2) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.25.5+k3s1](v1.25.X.md#release-v1255k3s1) | 2022年12月20日 | [v1.25.5](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v1255) | [v0.9.6](https://github.com/k3s-io/kine/releases/tag/v0.9.6) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.12-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.12-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.20.2](https://github.com/flannel-io/flannel/releases/tag/v0.20.2) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.25.4+k3s1](v1.25.X.md#release-v1254k3s1) | 2022年11月18日 | [v1.25.4](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v1254) | [v0.9.6](https://github.com/k3s-io/kine/releases/tag/v0.9.6) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.8-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.8-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.20.1](https://github.com/flannel-io/flannel/releases/tag/v0.20.1) | [v0.6.1](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.1) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.0](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.0) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.25.3+k3s1](v1.25.X.md#release-v1253k3s1) | 2022年10月25日 | [v1.25.3](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v1253) | [v0.9.3](https://github.com/k3s-io/kine/releases/tag/v0.9.3) | [3.36.0](https://sqlite.org/releaselog/3_36_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.8-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.8-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.19.2](https://github.com/flannel-io/flannel/releases/tag/v0.19.2) | [v0.6.1](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.1) | [v2.9.1](https://github.com/traefik/traefik/releases/tag/v2.9.1) | [v1.9.1](https://github.com/coredns/coredns/releases/tag/v1.9.1) | [v0.12.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.12.3) | [v0.0.21](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.21) | +| [v1.25.2+k3s1](v1.25.X.md#release-v1252k3s1) | 2022年9月28日 | [v1.25.2](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v1252) | [v0.9.3](https://github.com/k3s-io/kine/releases/tag/v0.9.3) | [3.36.0](https://sqlite.org/releaselog/3_36_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.6.8-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.8-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.19.2](https://github.com/flannel-io/flannel/releases/tag/v0.19.2) | [v0.5.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.5.2) | [v2.6.2](https://github.com/traefik/traefik/releases/tag/v2.6.2) | [v1.9.1](https://github.com/coredns/coredns/releases/tag/v1.9.1) | [v0.12.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.12.3) | [v0.0.21](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.21) | +| [v1.25.0+k3s1](v1.25.X.md#release-v1250k3s1) | 2022年9月12日 | [v1.25.0](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#v1250) | [v0.9.3](https://github.com/k3s-io/kine/releases/tag/v0.9.3) | [3.36.0](https://sqlite.org/releaselog/3_36_0.html) | [v3.5.3-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.3-k3s1) | [v1.5.13-k3s2](https://github.com/k3s-io/containerd/releases/tag/v1.5.13-k3s2) | [v1.1.3](https://github.com/opencontainers/runc/releases/tag/v1.1.3) | [v0.19.1](https://github.com/flannel-io/flannel/releases/tag/v0.19.1) | [v0.5.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.5.2) | [v2.6.2](https://github.com/traefik/traefik/releases/tag/v2.6.2) | [v1.9.1](https://github.com/coredns/coredns/releases/tag/v1.9.1) | [v0.12.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.12.3) | [v0.0.21](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.21) | + +
+ +## リリース [v1.25.16+k3s4](https://github.com/k3s-io/k3s/releases/tag/v1.25.16+k3s4) + + +このリリースでは、Kubernetesをv1.25.16に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v12515)をご覧ください。 + +### v1.25.15+k3s2からの変更点: + +* Etcdステータス条件 [(#8819)](https://github.com/k3s-io/k3s/pull/8819) +* 2023年11月リリースのバックポート [(#8880)](https://github.com/k3s-io/k3s/pull/8880) + * Dockerイメージに新しいタイムゾーン情報を追加し、CronJobsで`spec.timeZone`を使用可能に + * kineをv0.11.0にバンプし、postgresとNATSの問題を解決し、負荷の高い環境でのウォッチチャネルのパフォーマンスを向上させ、リファレンス実装との互換性を改善 + * `rdt_config.yaml`または`blockio_config.yaml`ファイルを定義することで、Containerdがrdtまたはblockio設定を使用できるように + * エージェントフラグdisable-apiserver-lbを追加し、エージェントがロードバランスプロキシを開始しないように + * ServiceLBからのイングレスIPの順序を改善 + * disable-helm-controllerのためのhelm CRDインストールを無効化 + * 追加メタデータのないスナップショットのスナップショットリストconfigmapエントリを省略 + * クライアント設定のリトライにジッターを追加し、サーバー起動時の過負荷を回避 +* etcdのランタイムコアが準備できていない場合のnilポインタ処理 [(#8889)](https://github.com/k3s-io/k3s/pull/8889) +* dualStackログの改善 [(#8867)](https://github.com/k3s-io/k3s/pull/8867) +* dynamiclistenerのバンプ; スナップショットコントローラーログのスピューを減少 [(#8904)](https://github.com/k3s-io/k3s/pull/8904) + * レースコンディションを解決するためにdynamiclistenerをバンプし、サーバーがKubernetesシークレットに証明書を同期できない問題を修正 + * 初期クラスター起動時のetcdスナップショットログスパムを減少 +* etcdスナップショットS3の問題を修正 [(#8939)](https://github.com/k3s-io/k3s/pull/8939) + * S3クライアントが初期化に失敗した場合、S3保持を適用しない + * S3スナップショットをリストする際にメタデータを要求しない + * スナップショットメタデータログメッセージでファイルパスの代わりにキーを表示 +* v1.25.16への更新 [(#8923)](https://github.com/k3s-io/k3s/pull/8923) +* ランナーが無効になっているため、s390xステップを一時的に削 +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v12515)をご覧ください。 + +### v1.25.15+k3s1 以降の変更点: + +* E2E ドメインドローンのクリーンアップ [(#8584)](https://github.com/k3s-io/k3s/pull/8584) +* templates_linux.go の SystemdCgroup 修正 [(#8767)](https://github.com/k3s-io/k3s/pull/8767) + * 追加のコンテナランタイムの識別に関する問題を修正 +* traefik チャートを v25.0.0 に更新 [(#8777)](https://github.com/k3s-io/k3s/pull/8777) +* レジストリ値を修正するために traefik を更新 [(#8791)](https://github.com/k3s-io/k3s/pull/8791) + +----- +## リリース [v1.25.15+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.15+k3s1) + + +このリリースでは Kubernetes を v1.25.15 に更新し、多くの問題を修正しています。 + +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v12514)をご覧ください。 + +### v1.25.14+k3s1 以降の変更点: + +* エラーレポートの修正 [(#8413)](https://github.com/k3s-io/k3s/pull/8413) +* flannel エラーにコンテキストを追加 [(#8421)](https://github.com/k3s-io/k3s/pull/8421) +* 9月のテストバックポート [(#8301)](https://github.com/k3s-io/k3s/pull/8301) +* エラーメッセージにインターフェース名を含める [(#8437)](https://github.com/k3s-io/k3s/pull/8437) +* tailscale に extraArgs を追加 [(#8466)](https://github.com/k3s-io/k3s/pull/8466) +* kube-router の更新 [(#8445)](https://github.com/k3s-io/k3s/pull/8445) +* サーバーフラグを使用しているときにクラスターリセット時にエラーを追加 [(#8457)](https://github.com/k3s-io/k3s/pull/8457) + * --cluster-reset と --server フラグを使用した場合にユーザーにエラーが表示されます +* 非ブートストラップノードからのクラスターリセット [(#8454)](https://github.com/k3s-io/k3s/pull/8454) +* スペルチェックの問題を修正 [(#8511)](https://github.com/k3s-io/k3s/pull/8511) +* 順序に基づいて IPFamily の優先順位を設定 [(#8506)](https://github.com/k3s-io/k3s/pull/8506) +* ネットワークのデフォルトが重複しているため、1つを削除 [(#8553)](https://github.com/k3s-io/k3s/pull/8553) +* アドバタイズアドレスの統合テスト [(#8518)](https://github.com/k3s-io/k3s/pull/8518) +* IPv4 のみのノードの場合に tailscale ノード IP デュアルスタックモードを修正 [(#8560)](https://github.com/k3s-io/k3s/pull/8560) +* サーバートークンのローテーション [(#8578)](https://github.com/k3s-io/k3s/pull/8578) + * ユーザーは `k3s token rotate -t --new-token ` を使用してサーバートークンをローテーションできます。コマンドが成功した後、すべてのサーバーノードは新しいトークンで再起動する必要があります。 +* クラスターリセット時に削除アノテーションをクリア [(#8589)](https://github.com/k3s-io/k3s/pull/8589) + * スナップショットが取得された時点で削除がキューに入っていた場合、クラスターリセット/リストア直後に k3s が etcd クラスターからメンバーを削除しようとする問題を修正しました。 +* デュアルスタックで最初に構成された IP が IPv6 の場合に使用 [(#8599)](https://github.com/k3s-io/k3s/pull/8599) +* 2023-10 リリースのバックポート [(#8617)](https://github.com/k3s-io/k3s/pull/8617) +* ビルドスクリプトで kube-router パッケージを更新 [(#8636)](https://github.com/k3s-io/k3s/pull/8636) +* etcd のみ/コントロールプレーンのみのサーバーテストを追加し、コントロールプレーンのみのサーバークラッシュを修正 [(#8644)](https://github.com/k3s-io/k3s/pull/8644) +* Windows エージェントのサポート [(#8646)](https://github.com/k3s-io/k3s/pull/8646) +* トークンローテーションログで `version.Program` を使用し、K3s を使用しない [(#8654)](https://github.com/k3s-io/k3s/pull/8654) +* --image-service-endpoint フラグを追加 (#8279) [(#8664)](https://github.com/k3s-io/k3s/pull/8664) + * 外部イメージサービスソケットを指定するための `--image-service-endpoint` フラグを追加 +* etcd 修正のバックポート [(#8692)](https://github.com/k3s-io/k3s/pull/8692) + * etcd エンドポイントの自動同期を再有効化 + * ノードがスナップショットを調整していない場合に configmap の調整を手動で再キュー +* v1.25.15 と Go を v1.20.10 に更新 [(#8679)](https://github.com/k3s-io/k3s/pull/8679) +* s3 スナップショットのリストアを修正 [(#8735)](https://github.com/k3s-io/k3s/pull/8735) + +----- +## リリース [v1.25.14+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.14+k3s1) + + +このリリースでは Kubernetes を v1.25.14 に更新し、多くの問題を修正しています。 + +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v12513)をご覧ください。 + +### v1.25.13+k3s1 以降の変更点: + +* kine を v0.10.3 にバンプ [(#8326)](https://github.com/k3s-io/k3s/pull/8326) +* Kubernetes を v1.25.14 に、go を 1.20.8 に更新 [(#8350)](https://github.com/k3s-io/k3s/pull/8350) +* containerd バンプとテスト修正のバックポート [(#8384)](https://github.com/k3s-io/k3s/pull/8384) + * 組み込み containerd を v1.7.6 にバンプ + * 組み込み stargz-snapshotter プラグインを最新にバンプ + * テスト環境セットアップスクリプトの競合状態による断続的な drone CI の失敗を修正 + * Kubernetes 1.28 の API ディスカバリ変更による CI の失敗を修正 + +----- +## リリース [v1.25.13+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.13+k3s1) + +このリリースでは Kubernetes を v1.25.13 に更新し、多くの問題を修正しています。 + +:::warning 重要 +このリリースには、K3s サーバーに対する潜在的なサービス拒否攻撃ベクトルである CVE-2023-32187 の修正が含まれています。詳細およびこの脆弱性に対するクラスターの強化に必要な必須手順については、https://github.com/k3s-io/k3s/security/advisories/GHSA-m4hf-6vgr-75r2 を参照してください。 +::: + +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v12512)をご覧ください。 + +### v1.25.12+k3s1 以降の変更点: + +* flannel とプラグインの更新 [(#8076)](https://github.com/k3s-io/k3s/pull/8076) +* ip モードに関する tailscale バグの修正 [(#8098)](https://github.com/k3s-io/k3s/pull/8098) +* ノード名が変更された場合の etcd スナップショットの保持 [(#8123)](https://github.com/k3s-io/k3s/pull/8123) +* 8月のテストバックポート [(#8127)](https://github.com/k3s-io/k3s/pull/8127) +* 2023-08 リリースのバックポート [(#8132)](https://github.com/k3s-io/k3s/pull/8132) + * K3s の外部 apiserver リスナーは、kubernetes apiserver サービス、サーバーノード、または --tls-san オプションの値に関連付けられていないサブジェクト名を証明書に追加しないようになりました。これにより、証明書の SAN リストに不要なエントリが追加されるのを防ぎます。 + * K3s は、イングレスプロキシがクラスタ内エンドポイントへの接続をルーティングするために使用されていない場合、apiserver の `enable-aggregator-routing` フラグを有効にしなくなりました。 + * 組み込み containerd を v1.7.3+k3s1 に更新 + * 組み込み runc を v1.1.8 に更新 + * ユーザー提供の containerd 設定テンプレートは、`{{ template "base" . }}` を使用してデフォルトの K3s テンプレートコンテンツを含めることができるようになりました。これにより、ファイルに追加セクションを追加する必要がある場合にユーザー設定を維持しやすくなります。 + * golang の最近のリリースによって docker クライアントが送信する無効なホストヘッダーが拒否される問題を修正するために、docker/docker モジュールのバージョンをバンプ + * kine を v0.10.2 に更新 +* s3 フラグを使用して呼び出された場合にローカルファイルを削除できない k3s etcd-snapshot delete の修正 [(#8145)](https://github.com/k3s-io/k3s/pull/8145) +* etcd スナップショットが無効になっている場合の s3 からのクラスターリセットバックアップの修正 [(#8169)](https://github.com/k3s-io/k3s/pull/8169) +* 日付に基づいて孤立したスナップショットを削除するための etcd 保持の修正 [(#8190)](https://github.com/k3s-io/k3s/pull/8190) +* 2023-08 リリースの追加バックポート [(#8213)](https://github.com/k3s-io/k3s/pull/8213) + * バンドルされた helm コントローラーのジョブイメージで使用される `helm` のバージョンが v3.12.3 に更新されました + * etcd のみのノードで apiserver/supervisor リスナーが 6443 でリクエストの提供を停止する可能性がある問題を修正するために dynamiclistener をバンプ + * K3s の外部 apiserver/supervisor リスナーは、TLS ハンドシェイクで完全な証明書チェーンを送信するようになりました +* flannel を 0.22.2 に移行 [(#8223)](https://github.com/k3s-io/k3s/pull/8223) +* v1.25.13 に更新 [(#8241)](https://github.com/k3s-io/k3s/pull/8241) +* runc バージョンバンプの修正 [(#8246)](https://github.com/k3s-io/k3s/pull/8246) +* TLS SAN CN フィルタリングを有効にする新しい CLI フラグを追加 [(#8259)](https://github.com/k3s-io/k3s/pull/8259) + * 新しい `--tls-san-security` オプションを追加。このフラグはデフォルトで false ですが、true に設定すると、クライアントが要求する任意のホスト名を満たすためにサーバーの TLS 証明書に SAN を自動的に追加することを無効にできます。 +* アドレスコントローラーに RWMutex を追加 [(#8275)](https://github.com/k3s-io/k3s/pull/8275) + +----- +## リリース [v1.25.12+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.12+k3s1) + +このリリースでは Kubernetes を v1.25.12 に更新し、多くの問題を修正しています。 +​ +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v12511)をご覧ください。 +​ +### v1.25.11+k3s1 以降の変更点: +​ +* file_windows.go を削除 [(#7856)](https://github.com/k3s-io/k3s/pull/7856) +* コードスペルチェックの修正 [(#7860)](https://github.com/k3s-io/k3s/pull/7860) +* helm-controller で apiServerPort をカスタマイズするための k3s の許可 [(#7873)](https://github.com/k3s-io/k3s/pull/7873) +* tailscale を行う際に ipv4、ipv6、またはデュアルスタックかどうかを確認 [(#7883)](https://github.com/k3s-io/k3s/pull/7883) +* Tailscale のコントロールサーバー URL を設定するサポート [(#7894)](https://github.com/k3s-io/k3s/pull/7894) +* S3 とスタートアップテスト [(#7886)](https://github.com/k3s-io/k3s/pull/7886) +* ルートレスノードのパスワード修正 [(#7900)](https://github.com/k3s-io/k3s/pull/7900) +* 2023-07 リリースのバックポート [(#7909)](https://github.com/k3s-io/k3s/pull/7909) + * kubeadm スタイルのブートストラップトークンで参加したエージェントが、ノードオブジェクトが削除されたときにクラスターに再参加できない問題を解決しました。 + * `k3s certificate rotate-ca` コマンドは data-dir フラグをサポートするようになりました。 +* カスタム klipper helm イメージに CLI を追加 [(#7915)](https://github.com/k3s-io/k3s/pull/7915) + * デフォルトの helm-controller ジョブイメージは、--helm-job-image CLI フラグで上書きできるようになりました +* etcd が無効になっている場合に etcd の証明書とキーの生成をゲート [(#7945)](https://github.com/k3s-io/k3s/pull/7945) +* apparmorプロファイルが強制されている場合、`check-config`でzgrepを使用しない [(#7954)](https://github.com/k3s-io/k3s/pull/7954) +* image_scan.shスクリプトを修正し、trivyバージョンをダウンロードする (#7950) [(#7969)](https://github.com/k3s-io/k3s/pull/7969) +* デフォルトのkubeconfigファイルの権限を調整 [(#7984)](https://github.com/k3s-io/k3s/pull/7984) +* v1.25.12にアップデート [(#8021)](https://github.com/k3s-io/k3s/pull/8021) + +----- +## リリース [v1.25.11+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.11+k3s1) + +このリリースではKubernetesをv1.25.11に更新し、いくつかの問題を修正しています。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v12510)をご覧ください。 + +### v1.25.10+k3s1からの変更点: + +* flannelバージョンを更新 [(#7649)](https://github.com/k3s-io/k3s/pull/7649) +* プラグインインストールの修正を含むvagrant libvirtのバージョンアップ [(#7659)](https://github.com/k3s-io/k3s/pull/7659) +* E2Eバックポート - 6月 [(#7705)](https://github.com/k3s-io/k3s/pull/7705) + * バージョンまたはヘルプフラグでコマンドをショートサーキット #7683 + * ローテーション認証チェックを追加し、エージェントの再起動機能を削除 #7097 + * E2E: RunCmdOnNodeのためのSudo #7686 +* プライベートレジストリのE2Eテストを追加 [(#7722)](https://github.com/k3s-io/k3s/pull/7722) +* VPN統合 [(#7728)](https://github.com/k3s-io/k3s/pull/7728) +* スペルテストの修正 [(#7752)](https://github.com/k3s-io/k3s/pull/7752) +* 未使用のlibvirt設定を削除 [(#7758)](https://github.com/k3s-io/k3s/pull/7758) +* バージョンアップとバグ修正のバックポート [(#7718)](https://github.com/k3s-io/k3s/pull/7718) + * バンドルされたmetrics-serverがv0.6.3にアップデートされ、デフォルトで安全なTLS暗号のみを使用するようになりました。 + * `coredns-custom` ConfigMapは、`.:53`デフォルトサーバーブロックに`*.override`セクションを含めることができるようになりました。 + * K3sのコアコントローラー(スーパーバイザー、デプロイ、ヘルム)は、管理者kubeconfigを使用しなくなりました。これにより、アクセスおよび監査ログからシステムによって実行されたアクションと管理者ユーザーによって実行されたアクションを区別しやすくなります。 + * klipper-lbイメージをv0.4.4にバンプし、Service ExternalTrafficPolicyがLocalに設定されている場合にlocalhostからServiceLBポートにアクセスできない問題を解決しました。 + * k3sをコンパイルする際にLBイメージを設定可能にする + * K3sは、ノードパスワードシークレットがノード参加時に作成できない場合でも、クラスターにノードを参加させることができるようになりました。シークレットの作成はバックグラウンドで再試行されます。これにより、シークレット作成をブロックする失敗閉鎖の検証ウェブフックが新しいノードがクラスターに参加してウェブフックポッドを実行するまで利用できない場合に発生する可能性のあるデッドロックが解消されます。 + * バンドルされたcontainerdのaufs/devmapper/zfsスナップショッタープラグインが復元されました。これらは、前回のリリースでcontainerdをk3sマルチコールバイナリに戻す際に意図せず省略されました。 + * 組み込みのヘルムコントローラーがv0.15.0にバンプされ、ターゲットネームスペースが存在しない場合にチャートのターゲットネームスペースを作成することをサポートするようになりました。 +* Makefileにフォーマットコマンドを追加 [(#7763)](https://github.com/k3s-io/k3s/pull/7763) +* Tailscaleのログとクリーンアップを修正 [(#7784)](https://github.com/k3s-io/k3s/pull/7784) +* Kubernetesをv1.25.11にアップデート [(#7788)](https://github.com/k3s-io/k3s/pull/7788) +* /apiエンドポイントのkubectlプロキシ適合テストに影響するパス正規化 [(#7818)](https://github.com/k3s-io/k3s/pull/7818) + +----- +## リリース [v1.25.10+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.10+k3s1) + +このリリースではKubernetesをv1.25.10に更新し、いくつかの問題を修正しています。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v1259)をご覧ください。 + +### v1.25.9+k3s1からの変更点: + +* klogの詳細度をlogrusと同じレベルに設定することを保証 [(#7361)](https://github.com/k3s-io/k3s/pull/7361) +* DroneでのE2Eテストを追加 [(#7375)](https://github.com/k3s-io/k3s/pull/7375) +* etc-snapshotサーバーフラグの統合テストを追加 #7377 [(#7378)](https://github.com/k3s-io/k3s/pull/7378) +* CLI + Configの強化 [(#7404)](https://github.com/k3s-io/k3s/pull/7404) + * `--Tls-sans`は複数の引数を受け入れるようになりました: `--tls-sans="foo,bar"` + * `Prefer-bundled-bin: true`は`config.yaml.d`ファイルに設定された場合に正しく動作するようになりました +* netutilメソッドを/utils/net.goに移行 [(#7433)](https://github.com/k3s-io/k3s/pull/7433) +* CVE修正のためにRunc + Containerd + Dockerをバンプ [(#7452)](https://github.com/k3s-io/k3s/pull/7452) +* ポート名が使用される場合のバグを修正するためにkube-routerバージョンをバンプ [(#7461)](https://github.com/k3s-io/k3s/pull/7461) +* Kubeフラグとlonghornストレージテスト1.25 [(#7466)](https://github.com/k3s-io/k3s/pull/7466) +* ローカルストレージ: 権限を修正 [(#7473)](https://github.com/k3s-io/k3s/pull/7473) +* バージョンアップとバグ修正のバックポート [(#7515)](https://github.com/k3s-io/k3s/pull/7515) + * K3sは、etcdから「学習者が多すぎる」エラーを受け取った場合にクラスター参加操作を再試行するようになりました。これは、複数のサーバーを同時に追加しようとしたときに最も頻繁に発生しました。 + * K3sは再びページサイズ> 4kのaarch64ノードをサポートします + * パッケージされたTraefikバージョンがv2.9.10 / チャート21.2.0にバンプされました + * K3sは、`noexec`でマウントされたファイルシステムから実行しようとしたときに、より意味のあるエラーを出力するようになりました。 + * サーバートークンがブートストラップトークン`id.secret`形式を使用している場合、K3sは適切なエラーメッセージで終了するようになりました。 + * Addon、HelmChart、およびHelmChartConfig CRDが構造的スキーマなしで作成され、これらのタイプのカスタムリソースが無効なコンテンツで作成される問題を修正しました。 + * (実験的な) --disable-agentフラグで開始されたサーバーは、トンネル認証エージェントコンポーネントを実行しようとしなくなりました。 + * ポッドおよびクラスターのイーグレスセレクターモードが正しく機能しない問題を修正しました。 + * 新しいサーバーが管理されたetcdクラスターに参加するときに、現在のetcdクラスターのメンバーリストを取得する際のエラーを適切に処理するようになりました。 + * 組み込みのkineバージョンがv0.10.1にバンプされました。これにより、レガシー`lib/pq`ポストグレスドライバーが`pgx`に置き換えられました。 + * バンドルされたCNIプラグインがv1.2.0-k3s1にアップグレードされました。バンド幅およびファイアウォールプラグインがバンドルに含まれるようになりました。 + * 組み込みのHelmコントローラーは、シークレットに保存された資格情報を介してチャートリポジトリに認証すること、およびConfigMapを介してリポジトリCAを渡すことをサポートするようになりました。 +* containerd/runcをv1.7.1-k3s1/v1.1.7にバンプ [(#7535)](https://github.com/k3s-io/k3s/pull/7535) + * バンドルされたcontainerdおよびruncバージョンがv1.7.1-k3s1/v1.1.7にバンプされました +* netpolからのエラーをラップ [(#7548)](https://github.com/k3s-io/k3s/pull/7548) +* 非アクティブなユニットに適用するための'-all'フラグを追加 [(#7574)](https://github.com/k3s-io/k3s/pull/7574) +* v1.25.10-k3s1にアップデート [(#7582)](https://github.com/k3s-io/k3s/pull/7582) + +----- +## リリース [v1.25.9+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.9+k3s1) + +このリリースではKubernetesをv1.25.9に更新し、いくつかの問題を修正しています。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v1258)をご覧ください。 + +### v1.25.8+k3s1からの変更点: + +* `check-config`を強化 [(#7164)](https://github.com/k3s-io/k3s/pull/7164) +* 廃止されたnodeSelectorラベルbeta.kubernetes.io/osを削除 (#6970) [(#7121)](https://github.com/k3s-io/k3s/pull/7121) +* バージョンアップとバグ修正のバックポート [(#7228)](https://github.com/k3s-io/k3s/pull/7228) + * バンドルされたlocal-path-provisionerバージョンがv0.0.24にバンプされました + * バンドルされたruncバージョンがv1.1.5にバンプされました + * バンドルされたcorednsバージョンがv1.10.1にバンプされました + * 外部データストアを使用する場合、K3sは初期クラスターブートストラップデータを作成する際にブートストラップキーをロックし、複数のサーバーが同時にクラスターを初期化しようとしたときの競合状態を防ぎます。 + * アクティブなサーバーノードへの接続を維持するクライアントロードバランサーは、サーバーがクラスターから削除されたときに接続を閉じるようになりました。これにより、エージェントコンポーネントが直ちに現在のクラスターのメンバーに再接続することが保証されます。 + * クラスターリセット中の競合状態を修正し、操作がハングしてタイムアウトする問題を修正しました。 +* デフォルトのACCEPTルールをチェーンの最後に移動するためにkube-routerを更新 [(#7221)](https://github.com/k3s-io/k3s/pull/7221) + * 組み込みのkube-routerコントローラーが更新され、ホスト上のデフォルトのドロップ/拒否ルールによってポッドからのトラフィックがブロックされる回帰を修正しました。ユーザーは依然として外部管理のファイアウォールルールがポッドおよびサービスネットワークへのトラフィックを明示的に許可することを確認する必要がありますが、これは一部のユーザーが依存していた以前の動作に戻ります。 +* klipper lbおよびhelm-controllerを更新 [(#7240)](https://github.com/k3s-io/k3s/pull/7240) +* kube-routerのACCEPTルール挿入および開始前にルールをクリーンアップするインストールスクリプトを更新 [(#7276)](https://github.com/k3s-io/k3s/pull/7276) + * 組み込みのkube-routerコントローラーが更新され、ホスト上のデフォルトのドロップ/拒否ルールによってポッドからのトラフィックがブロックされる回帰を修正しました。ユーザーは依然として外部管理のファイアウォールルールがポッドおよびサービスネットワークへのトラフィックを明示的に許可することを確認する必要がありますが、これは一部のユーザーが依存していた以前の動作に戻ります。 +* v1.25.9-k3s1にアップデート [(#7283)](https://github.com/k3s-io/k3s/pull/7283) + +----- +## リリース [v1.25.8+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.8+k3s1) + +このリリースではKubernetesをv1.25.8に更新し、いくつかの問題を修正しています。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v1257)をご覧ください。 + +### v1.25.7+k3s1からの変更点: + +* flannelおよびkube-routerを更新 [(#7061)](https://github.com/k3s-io/k3s/pull/7061) +* CVEのためにさまざまな依存関係をバンプ [(#7043)](https://github.com/k3s-io/k3s/pull/7043) +* Dependabotを有効にする [(#7045)](https://github.com/k3s-io/k3s/pull/7045) +* kubeletポートの設定前に準備が整うのを待つ [(#7064)](https://github.com/k3s-io/k3s/pull/7064) + * エージェントトンネル認証者は、ノードオブジェクトからkubeletポートを読み取る前にkubeletの準備が整うのを待つようになりました。 +* containerdのconfig.tomlファイルを編集する際の警告を追加 [(#7075)](https://github.com/k3s-io/k3s/pull/7075) +* デフォルトの自己署名証明書のローテーションサポートを改善 [(#7079)](https://github.com/k3s-io/k3s/pull/7079) + * `k3s certificate rotate-ca`チェックは、`--force`オプションなしで自己署名証明書のローテーションをサポートするようになりました。 +* v1.25.8-k3s1に更新 [(#7106)](https://github.com/k3s-io/k3s/pull/7106) +* 古いiptablesバージョンでのNAT問題を修正するためにflannelを更新 [(#7138)](https://github.com/k3s-io/k3s/pull/7138) + +----- +## リリース [v1.25.7+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.7+k3s1) + +このリリースはKubernetesをv1.25.7に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v1256)を参照してください。 + +### v1.25.6+k3s1からの変更点: + +* スケジュールされたスナップショットにジッターを追加し、競合時に再試行を強化 [(#6782)](https://github.com/k3s-io/k3s/pull/6782) + * スケジュールされたetcdスナップショットは、数秒以内の短いランダムな遅延でオフセットされるようになりました。これにより、複数サーバークラスターがスナップショットリストConfigMapを同時に更新しようとする病理的な動作を防ぐことができます。スナップショットコントローラーもスナップショットリストの更新を試みる際により粘り強くなります。 +* cri-dockerdをバンプ [(#6798)](https://github.com/k3s-io/k3s/pull/6798) + * 組み込みのcri-dockerdがv0.3.1に更新されました +* バグ修正: pprofが有効な場合にcert-managerを壊さない [(#6837)](https://github.com/k3s-io/k3s/pull/6837) +* cri-dockerdソケットを待つ [(#6853)](https://github.com/k3s-io/k3s/pull/6853) +* vagrantボックスをfedora37にバンプ [(#6858)](https://github.com/k3s-io/k3s/pull/6858) +* cronjobの例を修正 [(#6864)](https://github.com/k3s-io/k3s/pull/6864) +* フラグタイプの一貫性を確保 [(#6867)](https://github.com/k3s-io/k3s/pull/6867) +* E2Eテストを統合 [(#6887)](https://github.com/k3s-io/k3s/pull/6887) +* シークレットの再暗号化時に値の競合を無視 [(#6919)](https://github.com/k3s-io/k3s/pull/6919) +* KubernetesサービスアドレスをSANリストに追加する際にデフォルトのアドレスファミリを使用 [(#6904)](https://github.com/k3s-io/k3s/pull/6904) + * IPv6をデフォルトのIPファミリとして使用するクラスターで、apiserverの広告アドレスとIP SANエントリが正しく設定されるようになりました。 +* ServiceLBが`ExternalTrafficPolicy=Local`を尊重するように許可 [(#6907)](https://github.com/k3s-io/k3s/pull/6907) + * ServiceLBはServiceのExternalTrafficPolicyを尊重するようになりました。Localに設定されている場合、LoadBalancerはServiceのPodを持つノードのアドレスのみを広告し、他のクラスターのメンバーにトラフィックを転送しません。 +* バリデーションWebhookが作成をブロックする際のservicelb起動失敗問題を修正 [(#6916)](https://github.com/k3s-io/k3s/pull/6916) + * 組み込みのクラウドコントローラーマネージャーは、起動時に無条件に名前空間とサービスアカウントを再作成しようとしなくなりました。これにより、fail-closed Webhookが使用されている場合にデッドロッククラスターが発生する問題が解決されます。 +* ユーザー提供のCA証明書と`kubeadm`ブートストラップトークンサポートをバックポート [(#6929)](https://github.com/k3s-io/k3s/pull/6929) + * K3sは、クラスターCA証明書が既存のルートまたは中間CAによって署名されている場合に正しく機能するようになりました。K3sが開始する前にそのような証明書を生成するためのサンプルスクリプトは、githubリポジトリの[contrib/util/certs.sh](https://github.com/k3s-io/k3s/blob/master/contrib/util/certs.sh)にあります。 + * K3sは`kubeadm`スタイルの参加トークンをサポートするようになりました。`k3s token create`は、オプションで制限付きTTLを持つ参加トークンシークレットを作成します。 + * 期限切れまたは削除されたトークンで参加したK3sエージェントは、ノードオブジェクトがクラスターから削除されない限り、NodeAuthorizationアドミッションプラグインを介して既存のクライアント証明書を使用してクラスターに残ります。 +* egress-selector-mode=agentのときにNodeIPのhostNetworkポートへのアクセスを修正 [(#6936)](https://github.com/k3s-io/k3s/pull/6936) + * apiserver egressプロキシが、エージェントまたは無効モードでもエージェントトンネルを使用してサービスエンドポイントに接続しようとする問題を修正しました。 +* flannelバージョンをv0.21.1に更新 [(#6915)](https://github.com/k3s-io/k3s/pull/6915) +* 複数のリーダー選出コントローラーセットを許可 [(#6941)](https://github.com/k3s-io/k3s/pull/6941) + * 管理されたetcdのリーダー選出コントローラーがetcd専用ノードで実行されない問題を修正しました +* etcdおよびca-certのローテーション問題を修正 [(#6954)](https://github.com/k3s-io/k3s/pull/6954) +* ServiceLBデュアルスタックのイングレスIPリストを修正 [(#6987)](https://github.com/k3s-io/k3s/pull/6987) + * クラスターまたはサービスがデュアルスタック操作を有効にしていない場合でも、ServiceLBがノードのIPv6アドレスを広告する問題を解決しました。 +* kineをv0.9.9にバンプ [(#6975)](https://github.com/k3s-io/k3s/pull/6975) + * 組み込みのkineバージョンがv0.9.9にバンプされました。コンパクションログメッセージは、可視性を高めるために`info`レベルで省略されるようになりました。 +* v1.25.7-k3s1に更新 [(#7010)](https://github.com/k3s-io/k3s/pull/7010) + +----- +## リリース [v1.25.6+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.6+k3s1) + +このリリースはKubernetesをv1.25.6に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v1255)を参照してください。 + +### v1.25.5+k3s2からの変更点: + +* デフォルトのtls-cipher-suitesをパススルー [(#6730)](https://github.com/k3s-io/k3s/pull/6730) + * K3sのデフォルトの暗号スイートは、kube-apiserverに明示的に渡されるようになり、すべてのリスナーがこれらの値を使用するようになりました。 +* containerdをv1.6.15-k3s1にバンプ [(#6735)](https://github.com/k3s-io/k3s/pull/6735) + * 組み込みのcontainerdバージョンがv1.6.15-k3s1にバンプされました +* action/download-artifactをv3にバンプ [(#6747)](https://github.com/k3s-io/k3s/pull/6747) +* dependabot/updatecliの更新をバックポート [(#6761)](https://github.com/k3s-io/k3s/pull/6761) +* 32ビットarm用のDrone plugins/dockerタグを修正 [(#6768)](https://github.com/k3s-io/k3s/pull/6768) +* v1.25.6+k3s1に更新 [(#6775)](https://github.com/k3s-io/k3s/pull/6775) + +----- +## リリース [v1.25.5+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.25.5+k3s2) + + +このリリースは、containerdをv1.6.14に更新し、containerdが再起動されたときにポッドがCNI情報を失う問題を解決します。 + +### v1.25.5+k3s1からの変更点: + +* containerdをv1.6.14-k3s1にバンプ [(#6694)](https://github.com/k3s-io/k3s/pull/6694) + * 組み込みのcontainerdバージョンがv1.6.14-k3s1にバンプされました。これには、containerdの再起動時にポッドがCNI情報を失い、kubeletがポッドを再作成する原因となる[containerd/7843](https://github.com/containerd/containerd/issues/7843)の修正がバックポートされています。 + +----- +## リリース [v1.25.5+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.5+k3s1) + + +> ## ⚠️ 警告 +> このリリースは、K3sが再起動されるたびにkubeletがすべてのポッドを再起動する原因となるhttps://github.com/containerd/containerd/issues/7843の影響を受けます。このため、このK3sリリースをチャネルサーバーから削除しました。代わりに`v1.25.5+k3s2`を使用してください。 + +このリリースはKubernetesをv1.25.5に更新し、多くの問題を修正します。 + +**破壊的変更:** K3sにはもはや`swanctl`および`charon`バイナリが含まれていません。ipsec flannelバックエンドを使用している場合は、このリリースにK3sをアップグレードする前に、ノードにstrongswanの`swanctl`および`charon`パッケージがインストールされていることを確認してください。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v1254)を参照してください。 + +### v1.25.4+k3s1からの変更点: + +* flannelExternalIP使用ケースのログを修正 [(#6531)](https://github.com/k3s-io/k3s/pull/6531) +* Carolineのgithub IDを修正 [(#6464)](https://github.com/k3s-io/k3s/pull/6464) +* Github CIの更新 [(#6522)](https://github.com/k3s-io/k3s/pull/6522) +* 新しい`prefer-bundled-bin`実験フラグを追加 [(#6420)](https://github.com/k3s-io/k3s/pull/6420) + * K3sがホストツールよりもバンドルされたバイナリを強制的に使用する新しいprefer-bundled-binフラグを追加しました +* containerdをv1.6.10にバンプ [(#6512)](https://github.com/k3s-io/k3s/pull/6512) + * 組み込みのcontainerdバージョンがv1.6.10-k3s1に更新されました +* Traefikチャートをk3s-charts経由でステージング [(#6519)](https://github.com/k3s-io/k3s/pull/6519) +* ルートレス設定を構成可能にする [(#6498)](https://github.com/k3s-io/k3s/pull/6498) + * ルートレスの`port-driver`、`cidr`、`mtu`、`enable-ipv6`、および`disable-host-loopback`設定は、環境変数を介して構成可能になりました。 +* Windowsエグゼキュータ実装に属するものを削除 [(#6517)](https://github.com/k3s-io/k3s/pull/6517) +* v1.25.4+k3s1を安定版としてマーク [(#6534)](https://github.com/k3s-io/k3s/pull/6534) +* `prefer-bundled-bin`をエージェントフラグとして追加 [(#6545)](https://github.com/k3s-io/k3s/pull/6545) +* klipper-helmおよびklipper-lbバージョンをバンプ [(#6549)](https://github.com/k3s-io/k3s/pull/6549) + * 組み込みのロードバランサーコントローラーイメージがklipper-lb:v0.4.0にバンプされ、[LoadBalancerSourceRanges](https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/#:~:text=loadBalancerSourceRanges)フィールドのサポートが追加されました。 + * 組み込みのHelmコントローラーイメージがklipper-helm:v0.7.4-build20221121にバンプされました +* GoogleバケットからAWS S3バケットへの切り替え [(#6497)](https://github.com/k3s-io/k3s/pull/6497) +* Dapperを介したAWSクレデンシャルのパススルーを修正 [(#6567)](https://github.com/k3s-io/k3s/pull/6567) +* `aws s3 cp`を使用したアーティファクトのアップロードを修正 [(#6568)](https://github.com/k3s-io/k3s/pull/6568) +* レガシーCCM機能が無効な場合にCCMメトリクスポートを無効にする [(#6572)](https://github.com/k3s-io/k3s/pull/6572) + * `--disable-cloud-controller` フラグが設定されている場合、ポート10258での埋め込みcloud-controller-managerのメトリクスリスナーが無効になります。 +* パッケージ化されたコンポーネントのDeployment設定を同期 [(#6552)](https://github.com/k3s-io/k3s/pull/6552) + * K3sのパッケージ化されたコンポーネントのDeploymentは、一貫したアップグレード戦略とrevisionHistoryLimit設定を持つようになり、レプリカ数をハードコーディングすることでスケーリングの決定を上書きしません。 + * パッケージ化されたmetrics-serverがv0.6.2にバンプされました。 +* secrets-encryptionフラグをGAとしてマーク [(#6582)](https://github.com/k3s-io/k3s/pull/6582) +* k3s rootをv0.12.0にバンプし、strongswanバイナリを削除 [(#6400)](https://github.com/k3s-io/k3s/pull/6400) + * 埋め込みk3s-rootバージョンがbuildroot 2022.08.1に基づいてv0.12.0にバンプされました。 + * 埋め込みのswanctlおよびcharonバイナリが削除されました。ipsec flannelバックエンドを使用している場合は、k3sをアップグレードする前にノードにstrongswanの`swanctl`および`charon`パッケージがインストールされていることを確認してください。 +* flannelをv0.20.2に更新 [(#6588)](https://github.com/k3s-io/k3s/pull/6588) +* セキュリティバンプ自動化のためのADRを追加 [(#6559)](https://github.com/k3s-io/k3s/pull/6559) +* node12->node16ベースのGHアクションを更新 [(#6593)](https://github.com/k3s-io/k3s/pull/6593) +* リリースドキュメントを更新 [(#6237)](https://github.com/k3s-io/k3s/pull/6237) +* install.shを更新し、現在のk3s-selinuxバージョンを推奨 [(#6453)](https://github.com/k3s-io/k3s/pull/6453) +* v1.25.5-k3s1に更新 [(#6622)](https://github.com/k3s-io/k3s/pull/6622) +* containerdをv1.6.12-k3s1にバンプ [(#6631)](https://github.com/k3s-io/k3s/pull/6631) + * 埋め込みcontainerdバージョンがv1.6.12にバンプされました。 +* iptable_filter/ip6table_filterをプリロード [(#6646)](https://github.com/k3s-io/k3s/pull/6646) + +----- +## リリース [v1.25.4+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.4+k3s1) + +このリリースはKubernetesをv1.25.4に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v1253)を参照してください。 + +### v1.25.3+k3s1からの変更点: + +* netplanにゲートウェイパラメータを追加 [(#6292)](https://github.com/k3s-io/k3s/pull/6292) +* dynamiclistenerライブラリをv0.3.5にバンプ [(#6300)](https://github.com/k3s-io/k3s/pull/6300) +* 追加のログを含むkube-routerをv1.5.1に更新 [(#6345)](https://github.com/k3s-io/k3s/pull/6345) +* メンテナを更新 [(#6298)](https://github.com/k3s-io/k3s/pull/6298) +* テストをopensuse Leap 15.4にバンプ [(#6337)](https://github.com/k3s-io/k3s/pull/6337) +* ubuntu 22.04に関する情報を追加してE2Eドキュメントを更新 [(#6316)](https://github.com/k3s-io/k3s/pull/6316) +* podSelector & ingressのためのNetpolテスト [(#6247)](https://github.com/k3s-io/k3s/pull/6247) +* すべてのalpineイメージを3.16にバンプ [(#6334)](https://github.com/k3s-io/k3s/pull/6334) +* kineをv0.9.6 / sqlite3 v3.39.2にバンプ ([CVE-2022-35737](https://nvd.nist.gov/vuln/detail/CVE-2022-35737)) [(#6317)](https://github.com/k3s-io/k3s/pull/6317) +* 強化されたクラスターとアップグレードテストを追加 [(#6320)](https://github.com/k3s-io/k3s/pull/6320) +* バンドルされたTraefik helmチャートがv18.0.0に更新されました [(#6353)](https://github.com/k3s-io/k3s/pull/6353) +* v1.25.3+k3s1を安定版としてマーク [(#6338)](https://github.com/k3s-io/k3s/pull/6338) +* 埋め込みhelmコントローラがv0.13.0にバンプされました [(#6294)](https://github.com/k3s-io/k3s/pull/6294) +* apiserverによってサポートされなくなったリソースタイプを含むマニフェストをデプロイコントローラが処理できない問題を修正しました。 [(#6295)](https://github.com/k3s-io/k3s/pull/6295) +* インストールテストのためにfedora-coreosをfedora 36に置き換えました [(#6315)](https://github.com/k3s-io/k3s/pull/6315) +* containerd config.toml.tmpl Linuxテンプレートをv2構文に変換 [(#6267)](https://github.com/k3s-io/k3s/pull/6267) +* node-external-ip設定パラメータのテストを追加 [(#6359)](https://github.com/k3s-io/k3s/pull/6359) +* DEBUGが設定されている場合、デバッガーフレンドリーなコンパイル設定を使用 [(#6147)](https://github.com/k3s-io/k3s/pull/6147) +* e2eテストを更新 [(#6354)](https://github.com/k3s-io/k3s/pull/6354) +* 未使用のvagrant開発スクリプトを削除 [(#6395)](https://github.com/k3s-io/k3s/pull/6395) +* バンドルされたTraefikがv2.9.4 / helmチャートv18.3.0に更新されました [(#6397)](https://github.com/k3s-io/k3s/pull/6397) +* なし [(#6371)](https://github.com/k3s-io/k3s/pull/6371) +* deferの誤った使用を修正 [(#6296)](https://github.com/k3s-io/k3s/pull/6296) +* スナップショット復元のe2eテストを追加 [(#6396)](https://github.com/k3s-io/k3s/pull/6396) +* v1.25でのsonobouyテストを修正 [(#6399)](https://github.com/k3s-io/k3s/pull/6399) +* パッケージ化されたコンポーネントのバージョンをバンプ + * パッケージ化されたtraefik helmチャートがv19.0.0にバンプされ、デフォルトでingressClassサポートが有効になりました。 + * パッケージ化されたlocal-path-provisionerがv0.0.23にバンプされました。 + * パッケージ化されたcorednsがv1.9.4にバンプされました。 [(#6408)](https://github.com/k3s-io/k3s/pull/6408) +* netpolコントローラを開始する際にkube-routerバージョンをログに記録 [(#6405)](https://github.com/k3s-io/k3s/pull/6405) +* KairosをADOPTERSに追加 [(#6417)](https://github.com/k3s-io/k3s/pull/6417) +* Flannelを0.20.1に更新 [(#6388)](https://github.com/k3s-io/k3s/pull/6388) +* `flannel-external-ip`の誤った設定を回避し、暗号化されていないバックエンドの場合に警告を追加 [(#6403)](https://github.com/k3s-io/k3s/pull/6403) +* k8s.ioからバージョンをピン留めするためのテスト修正 [(#6413)](https://github.com/k3s-io/k3s/pull/6413) +* マルチクラウドクラスター環境でのmetrics-serverの修正 [(#6386)](https://github.com/k3s-io/k3s/pull/6386) +* K3sは、サーバーノード間で重要な設定が異なる場合に、同期していないクラスター全体の設定フラグを具体的に示すようになりました。 [(#6409)](https://github.com/k3s-io/k3s/pull/6409) +* テスト出力をJSON形式に変換 [(#6410)](https://github.com/k3s-io/k3s/pull/6410) +* traefik helmチャートを直接GHから取得 [(#6468)](https://github.com/k3s-io/k3s/pull/6468) +* ナイトリーテストの修正 [(#6475)](https://github.com/k3s-io/k3s/pull/6475) +* v1.25.4に更新 [(#6477)](https://github.com/k3s-io/k3s/pull/6477) +* Windowsエグゼキュータ実装に属するものを削除 [(#6492)](https://github.com/k3s-io/k3s/pull/6492) +* パッケージ化されたtraefik helmチャートがv19.0.4にバンプされました [(#6494)](https://github.com/k3s-io/k3s/pull/6494) +* 再度traefikチャートリポジトリを移動 [(#6508)](https://github.com/k3s-io/k3s/pull/6508) + +----- +## リリース [v1.25.3+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.3+k3s1) + +このリリースはKubernetesをv1.25.3に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v1252)を参照してください。 + +### v1.25.2+k3s1からの変更点: + +* E2E: PR実行のための基礎作り [(#6131)](https://github.com/k3s-io/k3s/pull/6131) +* 同じネットワークに属さず、パブリックIPを使用して接続するノードのデプロイメントのためのflannelを修正 [(#6180)](https://github.com/k3s-io/k3s/pull/6180) +* v1.24.6+k3s1を安定版としてマーク [(#6193)](https://github.com/k3s-io/k3s/pull/6193) +* クラスターリセットテストを追加 [(#6161)](https://github.com/k3s-io/k3s/pull/6161) +* 埋め込みmetrics-serverバージョンがv0.6.1にバンプされました [(#6151)](https://github.com/k3s-io/k3s/pull/6151) +* ServiceLB (klipper-lb) サービスコントローラがK3sスタブクラウドコントローラマネージャに統合されました。 [(#6181)](https://github.com/k3s-io/k3s/pull/6181) +* 埋め込みコントローラによってクラスターに記録されたイベントがサービスログに適切にフォーマットされるようになりました。 [(#6203)](https://github.com/k3s-io/k3s/pull/6203) +* apiserverネットワークプロキシの`error dialing backend`エラーを修正 [(#6216)](https://github.com/k3s-io/k3s/pull/6216) + * apiserverネットワークプロキシの問題を修正し、`kubectl exec`が時折`error dialing backend: EOF`で失敗する問題を修正しました。 + * apiserverネットワークプロキシの問題を修正し、カスタムkubeletポートが使用され、そのカスタムポートがファイアウォールやセキュリティグループルールによってブロックされている場合に`kubectl exec`および`kubectl logs`が失敗する問題を修正しました。 +* テストのタイプミスを修正 [(#6183)](https://github.com/k3s-io/k3s/pull/6183) +* 依存関係をキャッシュするためにsetup-goアクションを使用 [(#6220)](https://github.com/k3s-io/k3s/pull/6220) +* E2Eテストにjournalctlログを追加 [(#6224)](https://github.com/k3s-io/k3s/pull/6224) +* 埋め込みTraefikバージョンがv2.9.1 / チャート12.0.0にバンプされました [(#6223)](https://github.com/k3s-io/k3s/pull/6223) +* 不安定なetcdテストを修正 [(#6232)](https://github.com/k3s-io/k3s/pull/6232) +* 非推奨のioutilパッケージを置き換え [(#6230)](https://github.com/k3s-io/k3s/pull/6230) +* dualStackテストを修正 [(#6245)](https://github.com/k3s-io/k3s/pull/6245) +* svclbポッドのためのServiceAccountを追加 [(#6253)](https://github.com/k3s-io/k3s/pull/6253) +* v1.25.3-k3s1に更新 [(#6269)](https://github.com/k3s-io/k3s/pull/6269) +* ProviderIDをURI形式で返す [(#6284)](https://github.com/k3s-io/k3s/pull/6284) +* レガシーサービスのファイナライザを削除するためのCCM RBACを修正 [(#6306)](https://github.com/k3s-io/k3s/pull/6306) +* 新しい--flannel-external-ipフラグを追加 [(#6321)](https://github.com/k3s-io/k3s/pull/6321) + * 有効にすると、Flannelトラフィックはノードの外部IPを使用するようになります。 + * これは、同じローカルネットワーク上にない分散クラスターでの使用を意図しています。 + +----- +## リリース [v1.25.2+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.2+k3s1) + +このリリースはKubernetesをv1.25.2に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v1250)を参照してください。 + +### v1.25.0+k3s1からの変更点: + +* k3s v1.25をリリースチャンネルに追加 [(#6129)](https://github.com/k3s-io/k3s/pull/6129) +* 元のINSTALL_K3S_SKIP_DOWNLOAD動作を復元 [(#6130)](https://github.com/k3s-io/k3 +## リリース [v1.25.0+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.25.0+k3s1) + +このリリースは、v1.25ラインにおけるK3Sの最初のリリースです。このリリースでは、Kubernetesをv1.25.0に更新します。 + +以前のリリースからアップグレードする前に、Kubernetesの[緊急アップグレードノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#urgent-upgrade-notes)を必ずお読みください。 + +**重要な注意事項:** Kubernetes v1.25では、ベータ版の`PodSecurityPolicy`アドミッションプラグインが削除されます。v1.25.0+k3s1にアップグレードする前に、組み込みのPodSecurityアドミッションプラグインを使用している場合は、[上流のドキュメント](https://kubernetes.io/docs/tasks/configure-pod-container/migrate-from-psp/)に従ってPSPから移行してください。 + +### v1.24.4+k3s1からの変更点: + +* Kubernetesをv1.25.0に更新 [(#6040)](https://github.com/k3s-io/k3s/pull/6040) +* Windows kubeletの引数から`--containerd`フラグを削除 [(#6028)](https://github.com/k3s-io/k3s/pull/6028) +* E2E: CentOS 7とRocky 8のサポートを追加 [(#6015)](https://github.com/k3s-io/k3s/pull/6015) +* インストールテストをk3sのPRビルドで実行するように変更 [(#6003)](https://github.com/k3s-io/k3s/pull/6003) +* CI: Fedora 34 -> 35に更新 [(#5996)](https://github.com/k3s-io/k3s/pull/5996) +* dualStackテストを修正し、ipv6ネットワークプレフィックスを変更 [(#6023)](https://github.com/k3s-io/k3s/pull/6023) +* e2eテストを修正 [(#6018)](https://github.com/k3s-io/k3s/pull/6018) +* README.mdを更新 [(#6048)](https://github.com/k3s-io/k3s/pull/6048) +* クラスターを削除する際にwireguardインターフェースを削除 [(#6055)](https://github.com/k3s-io/k3s/pull/6055) +* Kubernetesの正しいgolangバージョンを確認するための検証チェックを追加 [(#6050)](https://github.com/k3s-io/k3s/pull/6050) +* スタートアップ統合テストを拡張 [(#6030)](https://github.com/k3s-io/k3s/pull/6030) +* go.modバージョンを1.19に更新 [(#6049)](https://github.com/k3s-io/k3s/pull/6049) +* `--cluster-secret`、`--no-deploy`、および`--no-flannel`の使用はサポートされなくなりました。これらのフラグを使用しようとすると致命的なエラーが発生します。代替については[ドキュメント](https://k3s-io.github.io/docs/reference/server-config#deprecated-options)を参照してください。 [(#6069)](https://github.com/k3s-io/k3s/pull/6069) +* 古いiptablesバージョンの問題を修正するためにFlannelバージョンを更新 [(#6090)](https://github.com/k3s-io/k3s/pull/6090) +* バンドルされたruncのバージョンをv1.1.4に更新 [(#6071)](https://github.com/k3s-io/k3s/pull/6071) +* 組み込みのcontainerdバージョンをv1.6.8-k3s1に更新 [(#6078)](https://github.com/k3s-io/k3s/pull/6078) +* 非推奨メッセージを修正 [(#6112)](https://github.com/k3s-io/k3s/pull/6112) +* flannelバックエンドの追加オプションの非推奨に関する警告メッセージを追加 [(#6111)](https://github.com/k3s-io/k3s/pull/6111) + +----- \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.26.X.md b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.26.X.md new file mode 100644 index 000000000..a70c61749 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.26.X.md @@ -0,0 +1,592 @@ +--- +hide_table_of_contents: true +sidebar_position: 5 +--- + +# v1.26.X + +:::warning アップグレード通知 +以前のリリースからアップグレードする前に、Kubernetesの[緊急アップグレードノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#urgent-upgrade-notes)を必ずお読みください。 +::: + +| バージョン | リリース日 | Kubernetes | Kine | SQLite | Etcd | Containerd | Runc | Flannel | Metrics-server | Traefik | CoreDNS | Helm-controller | Local-path-provisioner | +| ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | +| [v1.26.15+k3s1](v1.26.X.md#release-v12615k3s1) | 2024年3月25日 | [v1.26.15](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v12615) | [v0.11.4](https://github.com/k3s-io/kine/releases/tag/v0.11.4) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2.26](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2.26) | [v1.1.12-k3s1](https://github.com/opencontainers/runc/releases/tag/v1.1.12-k3s1) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.9](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.9) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.26.14+k3s1](v1.26.X.md#release-v12614k3s1) | 2024年2月29日 | [v1.26.14](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v12614) | [v0.11.4](https://github.com/k3s-io/kine/releases/tag/v0.11.4) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2.26](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2.26) | [v1.1.12-k3s1](https://github.com/k3s-io/runc/releases/tag/v1.1.12-k3s1) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.8](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.8) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.26.13+k3s2](v1.26.X.md#release-v12613k3s2) | 2024年2月6日 | [v1.26.13](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v12613) | [v0.11.0](https://github.com/k3s-io/kine/releases/tag/v0.11.0) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2.26](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2.26) | [v1.1.12-k3s1](https://github.com/opencontainers/runc/releases/tag/v1.1.12-k3s1) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.8](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.8) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.26.12+k3s1](v1.26.X.md#release-v12612k3s1) | 2023年12月27日 | [v1.26.12](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v12612) | [v0.11.0](https://github.com/k3s-io/kine/releases/tag/v0.11.0) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2.26](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2.26) | [v1.1.10](https://github.com/opencontainers/runc/releases/tag/v1.1.10) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.26.11+k3s2](v1.26.X.md#release-v12611k3s2) | 2023年12月7日 | [v1.26.11](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v12611) | [v0.11.0](https://github.com/k3s-io/kine/releases/tag/v0.11.0) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.7-k3s1.26](https://github.com/k3s-io/containerd/releases/tag/v1.7.7-k3s1.26) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.26.10+k3s2](v1.26.X.md#release-v12610k3s2) | 2023年11月8日 | [v1.26.10](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v12610) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.7-k3s1.26](https://github.com/k3s-io/containerd/releases/tag/v1.7.7-k3s1.26) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.26.10+k3s1](v1.26.X.md#release-v12610k3s1) | 2023年10月30日 | [v1.26.10](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v12610) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.7-k3s1.26](https://github.com/k3s-io/containerd/releases/tag/v1.7.7-k3s1.26) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.26.9+k3s1](v1.26.X.md#release-v1269k3s1) | 2023年9月20日 | [v1.26.9](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v1269) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.6-k3s1.26](https://github.com/k3s-io/containerd/releases/tag/v1.7.6-k3s1.26) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.26.8+k3s1](v1.26.X.md#release-v1268k3s1) | 2023年9月5日 | [v1.26.8](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v1268) | [v0.10.2](https://github.com/k3s-io/kine/releases/tag/v0.10.2) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.3-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.3-k3s1) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.26.7+k3s1](v1.26.X.md#release-v1267k3s1) | 2023年7月27日 | [v1.26.7](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v1267) | [v0.10.1](https://github.com/k3s-io/kine/releases/tag/v0.10.1) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.7-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.7-k3s1) | [v1.7.1-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.1-k3s1) | [v1.1.7](https://github.com/opencontainers/runc/releases/tag/v1.1.7) | [v0.22.0](https://github.com/flannel-io/flannel/releases/tag/v0.22.0) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.2](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.2) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.26.6+k3s1](v1.26.X.md#release-v1266k3s1) | 2023年6月26日 | [v1.26.6](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v1266) | [v0.10.1](https://github.com/k3s-io/kine/releases/tag/v0.10.1) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.7-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.7-k3s1) | [v1.7.1-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.1-k3s1) | [v1.1.7](https://github.com/opencontainers/runc/releases/tag/v1.1.7) | [v0.22.0](https://github.com/flannel-io/flannel/releases/tag/v0.22.0) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.0](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.0) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.26.5+k3s1](v1.26.X.md#release-v1265k3s1) | 2023年5月26日 | [v1.26.5](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v1265) | [v0.10.1](https://github.com/k3s-io/kine/releases/tag/v0.10.1) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.7-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.7-k3s1) | [v1.7.1-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.1-k3s1) | [v1.1.7](https://github.com/opencontainers/runc/releases/tag/v1.1.7) | [v0.21.4](https://github.com/flannel-io/flannel/releases/tag/v0.21.4) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.14.0](https://github.com/k3s-io/helm-controller/releases/tag/v0.14.0) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.26.4+k3s1](v1.26.X.md#release-v1264k3s1) | 2023年4月20日 | [v1.26.4](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v1264) | [v0.9.9](https://github.com/k3s-io/kine/releases/tag/v0.9.9) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.7-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.7-k3s1) | [v1.6.19-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.19-k3s1) | [v1.1.5](https://github.com/opencontainers/runc/releases/tag/v1.1.5) | [v0.21.4](https://github.com/flannel-io/flannel/releases/tag/v0.21.4) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.13.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.3) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.26.3+k3s1](v1.26.X.md#release-v1263k3s1) | 2023年3月27日 | [v1.26.3](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v1263) | [v0.9.9](https://github.com/k3s-io/kine/releases/tag/v0.9.9) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.5-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.5-k3s1) | [v1.6.19-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.19-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.21.4](https://github.com/flannel-io/flannel/releases/tag/v0.21.4) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.26.2+k3s1](v1.26.X.md#release-v1262k3s1) | 2023年3月10日 | [v1.26.2](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v1262) | [v0.9.9](https://github.com/k3s-io/kine/releases/tag/v0.9.9) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.5-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.5-k3s1) | [v1.6.15-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.15-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.21.1](https://github.com/flannel-io/flannel/releases/tag/v0.21.1) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.26.1+k3s1](v1.26.X.md#release-v1261k3s1) | 2023年1月26日 | [v1.26.1](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v1261) | [v0.9.8](https://github.com/k3s-io/kine/releases/tag/v0.9.8) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.5-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.5-k3s1) | [v1.6.15-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.15-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.20.2](https://github.com/flannel-io/flannel/releases/tag/v0.20.2) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.26.0+k3s2](v1.26.X.md#release-v1260k3s2) | 2023年1月11日 | [v1.26.0](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v1260) | [v0.9.8](https://github.com/k3s-io/kine/releases/tag/v0.9.8) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.5-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.5-k3s1) | [v1.6.14-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.14-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.20.2](https://github.com/flannel-io/flannel/releases/tag/v0.20.2) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | +| [v1.26.0+k3s1](v1.26.X.md#release-v1260k3s1) | 2022年12月21日 | [v1.26.0](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v1260) | [v0.9.8](https://github.com/k3s-io/kine/releases/tag/v0.9.8) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.5-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.5-k3s1) | [v1.6.12-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.12-k3s1) | [v1.1.4](https://github.com/opencontainers/runc/releases/tag/v1.1.4) | [v0.20.2](https://github.com/flannel-io/flannel/releases/tag/v0.20.2) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.9.4](https://github.com/coredns/coredns/releases/tag/v1.9.4) | [v0.13.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.1) | [v0.0.23](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.23) | + +
+ +## リリース [v1.26.15+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.15+k3s1) + + +このリリースでは、Kubernetesをv1.26.15に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v12614)をご覧ください。 + +### v1.26.14+k3s1からの変更点: + +* klipper-lbイメージバージョンの更新 [(#9607)](https://github.com/k3s-io/k3s/pull/9607) +* インストールとユニットテストのバックポート [(#9645)](https://github.com/k3s-io/k3s/pull/9645) +* 設定されたclusterCIDRに基づいて最初のnode-ipを調整 [(#9633)](https://github.com/k3s-io/k3s/pull/9633) +* flannel-backend=noneの統合テストを追加 [(#9610)](https://github.com/k3s-io/k3s/pull/9610) +* tailscale e2eテストの改善 [(#9655)](https://github.com/k3s-io/k3s/pull/9655) +* 2024年3月リリースサイクルのバックポート [(#9692)](https://github.com/k3s-io/k3s/pull/9692) + * 修正: 正しいwasmシム名を使用 + * 組み込みのflannel cni-pluginバイナリは、他のcniプラグインや組み込みのflannelコントローラーとは別にビルドおよびバージョン管理されるようになりました。 + * spegelをv + * Rootless モードは、rootful モードの UX に一致するように、LoadBalancer タイプのサービス nodePort をホストにバインドする必要があります。 + * `check-config` サブコマンドの生出力を有効にするために、NO_COLOR=1 を設定できるようになりました。 + * レジストリ処理の追加のコーナーケースを修正 + * metrics-server を v0.7.0 にバンプ + * K3s は、レジストリのミラーエンドポイントリストに重複するエントリがある場合に警告を表示し、抑制するようになりました。Containerd は、単一の上流レジストリのミラーとして同じエンドポイントを複数回リストすることをサポートしていません。 +* ワイルドカードエントリの上流フォールバックを修正 [(#9735)](https://github.com/k3s-io/k3s/pull/9735) +* v1.26.15-k3s1 と Go 1.21.8 にアップデート [(#9740)](https://github.com/k3s-io/k3s/pull/9740) + +----- +## リリース [v1.26.14+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.14+k3s1) + + +このリリースは Kubernetes を v1.26.14 に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v12613) を参照してください。 + +### v1.26.13+k3s2 以降の変更点: + +* 雑務: Local Path Provisioner のバージョンをバンプ [(#9428)](https://github.com/k3s-io/k3s/pull/9428) +* Docker Engine 25 との互換性を修正するために cri-dockerd をバンプ [(#9292)](https://github.com/k3s-io/k3s/pull/9292) +* 自動依存関係バンプ [(#9421)](https://github.com/k3s-io/k3s/pull/9421) +* exec.LookPath を使用したランタイムのリファクタリング [(#9429)](https://github.com/k3s-io/k3s/pull/9429) + * ランタイムを含むディレクトリは、効果的なランタイム検出のために $PATH 環境変数に含める必要があります。 +* etcd 条件で lastHeartBeatTime の動作を変更 [(#9423)](https://github.com/k3s-io/k3s/pull/9423) +* containerd と docker の動作を定義するためのエグゼキュータを許可 [(#9252)](https://github.com/k3s-io/k3s/pull/9252) +* Kube-router を v2.0.1 にアップデート [(#9406)](https://github.com/k3s-io/k3s/pull/9406) +* 2024-02 リリースサイクルのバックポート [(#9464)](https://github.com/k3s-io/k3s/pull/9464) +* flannel バージョンをバンプ + multiclustercidr を削除 [(#9409)](https://github.com/k3s-io/k3s/pull/9409) +* より長い http タイムアウトリクエストを有効にする [(#9446)](https://github.com/k3s-io/k3s/pull/9446) +* Test_UnitApplyContainerdQoSClassConfigFileIfPresent [(#9442)](https://github.com/k3s-io/k3s/pull/9442) +* PR テストインストールをサポート [(#9471)](https://github.com/k3s-io/k3s/pull/9471) +* Kubernetes を v1.26.14 にアップデート [(#9490)](https://github.com/k3s-io/k3s/pull/9490) +* arm 用の drone パブリッシュを修正 [(#9510)](https://github.com/k3s-io/k3s/pull/9510) +* 失敗する Drone ステップを削除 [(#9514)](https://github.com/k3s-io/k3s/pull/9514) +* エージェントの起動関数の元の順序を復元 [(#9547)](https://github.com/k3s-io/k3s/pull/9547) +* flannel が無効な場合の netpol 起動を修正 [(#9580)](https://github.com/k3s-io/k3s/pull/9580) + +----- +## リリース [v1.26.13+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.26.13+k3s2) + + +このリリースは Kubernetes を v1.26.13 に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v12612) を参照してください。 + +**重要な注意事項** + +runc の CVE に対処: [CVE-2024-21626](https://nvd.nist.gov/vuln/detail/CVE-2024-21626) により runc を v1.1.12 に更新。 + +### v1.26.12+k3s1 以降の変更点: + +* secrets-encrypt ノードの注釈を更新する際のリトライを追加 [(#9123)](https://github.com/k3s-io/k3s/pull/9123) +* エージェントロードバランサーのための env *_PROXY 変数のサポートを追加 [(#9116)](https://github.com/k3s-io/k3s/pull/9116) +* netpol コントローラーを開始する前にノードの taint がなくなるのを待つ [(#9177)](https://github.com/k3s-io/k3s/pull/9177) +* Etcd 条件 [(#9183)](https://github.com/k3s-io/k3s/pull/9183) +* 2024-01 のバックポート [(#9212)](https://github.com/k3s-io/k3s/pull/9212) +* init() からプロキシダイアラーを移動し、クラッシュを修正 [(#9221)](https://github.com/k3s-io/k3s/pull/9221) +* 依存関係チェーンが欠落しているため、opa バージョンを固定 [(#9218)](https://github.com/k3s-io/k3s/pull/9218) +* Etcd ノードが nil [(#9230)](https://github.com/k3s-io/k3s/pull/9230) +* v1.26.13 と Go 1.20.13 にアップデート [(#9262)](https://github.com/k3s-io/k3s/pull/9262) +* デュアルスタック kube-dns のために `ipFamilyPolicy: RequireDualStack` を使用 [(#9271)](https://github.com/k3s-io/k3s/pull/9271) +* 2024-01 k3s2 のバックポート [(#9338)](https://github.com/k3s-io/k3s/pull/9338) + * runc を v1.1.12 に、helm-controller を v0.15.7 にバンプ + * registries.yaml でエンドポイントアドレスとしてベアホスト名または IP を処理する際の問題を修正 +* ChartContent の問題を修正するために helm-controller をバンプ [(#9348)](https://github.com/k3s-io/k3s/pull/9348) + +----- +## リリース [v1.26.12+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.12+k3s1) + + +このリリースは Kubernetes を v1.26.12 に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v12611) を参照してください。 + +### v1.26.11+k3s2 以降の変更点: + +* ランタイムのバックポート [(#9014)](https://github.com/k3s-io/k3s/pull/9014) + * wasm/nvidia/crun のランタイムクラスを追加 + * containerd のデフォルトランタイムフラグを追加 +* containerd/runc を v1.7.10-k3s1/v1.1.10 にバンプ [(#8964)](https://github.com/k3s-io/k3s/pull/8964) +* アドレス範囲の重複を修正 [(#9019)](https://github.com/k3s-io/k3s/pull/9019) +* サーバーでデフォルトランタイムを設定できるようにする [(#9028)](https://github.com/k3s-io/k3s/pull/9028) +* containerd を v1.7.11 にバンプ [(#9042)](https://github.com/k3s-io/k3s/pull/9042) +* v1.26.12-k3s1 にアップデート [(#9077)](https://github.com/k3s-io/k3s/pull/9077) + +----- +## リリース [v1.26.11+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.26.11+k3s2) + + +このリリースは Kubernetes を v1.26.11 に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v12610) を参照してください。 + +### v1.26.10+k3s2 以降の変更点: + +* Etcd ステータス条件 [(#8820)](https://github.com/k3s-io/k3s/pull/8820) +* 2023-11 リリースのバックポート [(#8879)](https://github.com/k3s-io/k3s/pull/8879) + * Docker イメージの新しいタイムゾーン情報により、CronJobs で `spec.timeZone` を使用できるようになりました。 + * kine を v0.11.0 にバンプし、postgres と NATS の問題を解決し、負荷が高い場合のウォッチチャネルのパフォーマンスを向上させ、リファレンス実装との互換性を向上させました。 + * Containerd は、`rdt_config.yaml` または `blockio_config.yaml` ファイルを定義することで、rdt または blockio 構成を使用するように設定できるようになりました。 + * エージェントフラグ disable-apiserver-lb を追加し、エージェントはロードバランスプロキシを開始しません。 + * ServiceLB からの Ingress IP の順序を改善 + * disable-helm-controller のために helm CRD インストールを無効化 + * 追加のメタデータがないスナップショットのスナップショットリスト configmap エントリを省略 + * クライアント構成のリトライにジッターを追加し、サーバーの起動時にハンマーリングを回避 +* multiclustercidr フラグの削除に関する警告を追加 [(#8760)](https://github.com/k3s-io/k3s/pull/8760) +* etcd でランタイムコアが準備完了でない場合の nil ポインタを処理 [(#8888)](https://github.com/k3s-io/k3s/pull/8888) +* dualStack ログを改善 [(#8829)](https://github.com/k3s-io/k3s/pull/8829) +* dynamiclistener をバンプ; スナップショットコントローラーログのスピューを減少 [(#8903)](https://github.com/k3s-io/k3s/pull/8903) + * レースコンディションに対処するために dynamiclistener をバンプし、サーバーが Kubernetes シークレットに証明書を同期できない問題を修正 + * 初期クラスター起動時の etcd スナップショットログスパムを減少 +* etcd スナップショット S3 の問題を修正 [(#8938)](https://github.com/k3s-io/k3s/pull/8938) + * S3 クライアントの初期化に失敗した場合、S3 保持を適用しない + * S3 スナップショットをリストする際にメタデータを要求しない + * スナップショットメタデータログメッセージでファイルパスの代わりにキーを表示 +* v1.26.11 と Go 1.20.11 にアップデート [(#8922)](https://github.com/k3s-io/k3s/pull/8922) +* s390x を削除 [(#9000)](https://github.com/k3s-io/k3s/pull/9000) + +----- +## リリース [v1.26.10+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.26.10+k3s2) + + +このリリースは Kubernetes を v1.26.10 に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v12610) を参照してください。 + +### v1.26.10+k3s1 以降の変更点: + +* templates_linux.go の SystemdCgroup を修正 [(#8766)](https://github.com/k3s-io/k3s/pull/8766) + * 追加のコンテナランタイムの識別に関する問題を修正 +* traefik チャートを v25.0.0 にアップデート [(#8776)](https://github.com/k3s-io/k3s/pull/8776) +* レジストリ値を修正するために traefik をアップデート [(#8790)](https://github.com/k3s-io/k3s/pull/8790) + +----- +## リリース [v1.26.10+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.10+k3s1) + + +このリリースは Kubernetes を v1.26.10 に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1269) を参照してください。 + +### v1.26.9+k3s1 以降の変更点: + +* エラーレポートを修正 [(#8412)](https://github.com/k3s-io/k3s/pull/8412) +* flannel エラーにコンテキストを追加 [(#8420)](https://github.com/k3s-io/k3s/pull/8420) +* 9月のテストバックポート [(#8300)](https://github.com/k3s-io/k3s/pull/8300) +* エラーメッセージにインターフェース名を含める [(#8436)](https://github.com/k3s-io/k3s/pull/8436) +* kube-router をアップデート [(#8444)](https://github.com/k3s-io/k3s/pull/8444) +* tailscale に extraArgs を追加 [(#8465)](https://github.com/k3s-io/k3s/pull/8465) +* サーバーフラグを使用している場合のクラスターリセット時にエラーを追加 [(#8456)](https://github.com/k3s-io/k3s/pull/8456) + * ユーザーは --server フラグを使用して --cluster-reset を実行するとエラーを受け取ります +* 非ブートストラップノードからのクラスターリセット [(#8453)](https://github.com/k3s-io/k3s/pull/8453) +* スペルチェックの問題を修正 [(#8510)](https://github.com/k3s-io/k3s/pull/8510) +* 順序に基づいて IPFamily の優先順位を取る [(# +* システムエージェントのプッシュタグ修正 [(#8570)](https://github.com/k3s-io/k3s/pull/8570) +* IPv4のみのノードの場合におけるTailscaleノードIPデュアルスタックモードの修正 [(#8559)](https://github.com/k3s-io/k3s/pull/8559) +* サーバートークンのローテーション [(#8577)](https://github.com/k3s-io/k3s/pull/8577) + * ユーザーは `k3s token rotate -t --new-token ` を使用してサーバートークンをローテーションできるようになりました。コマンドが成功した後、すべてのサーバーノードは新しいトークンで再起動する必要があります。 +* クラスタリセット時にアノテーションをクリアして削除 [(#8590)](https://github.com/k3s-io/k3s/pull/8590) + * スナップショットが取得された時点で削除がキューに入っていた場合、クラスタリセット/リストア直後にk3sがetcdクラスタからメンバーを削除しようとする問題を修正しました。 +* デュアルスタックで最初に設定されたIPがIPv6の場合に使用 [(#8598)](https://github.com/k3s-io/k3s/pull/8598) +* 2023-10リリースのバックポート [(#8616)](https://github.com/k3s-io/k3s/pull/8616) +* E2Eドメインドローンクリーンアップ [(#8583)](https://github.com/k3s-io/k3s/pull/8583) +* ビルドスクリプトでkube-routerパッケージを更新 [(#8635)](https://github.com/k3s-io/k3s/pull/8635) +* etcd専用/コントロールプレーン専用サーバーテストの追加とコントロールプレーン専用サーバークラッシュの修正 [(#8643)](https://github.com/k3s-io/k3s/pull/8643) +* トークンローテーションログで `version.Program` を使用し、K3sを使用しない [(#8655)](https://github.com/k3s-io/k3s/pull/8655) +* Windowsエージェントサポート [(#8647)](https://github.com/k3s-io/k3s/pull/8647) +* --image-service-endpointフラグの追加 (#8279) [(#8663)](https://github.com/k3s-io/k3s/pull/8663) + * 外部イメージサービスソケットを指定するための `--image-service-endpoint` フラグを追加。 +* etcd修正のバックポート [(#8691)](https://github.com/k3s-io/k3s/pull/8691) + * etcdエンドポイントの自動同期を再有効化 + * ノードがスナップショットを調整していない場合にconfigmapの再調整を手動で再キュー +* v1.26.10およびGo v1.20.10への更新 [(#8680)](https://github.com/k3s-io/k3s/pull/8680) +* s3スナップショットリストアの修正 [(#8734)](https://github.com/k3s-io/k3s/pull/8734) + +----- +## リリース [v1.26.9+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.9+k3s1) + + +このリリースではKubernetesをv1.26.9に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1268)をご覧ください。 + +### v1.26.8+k3s1からの変更点: + +* kineをv0.10.3にバンプ [(#8325)](https://github.com/k3s-io/k3s/pull/8325) +* v1.26.9およびgoをv1.20.8に更新 [(#8357)](https://github.com/k3s-io/k3s/pull/8357) + * 組み込みのcontainerdをv1.7.6にバンプ + * 組み込みのstargz-snapshotterプラグインを最新にバンプ + * テスト環境セットアップスクリプトの競合状態による断続的なドローンCIの失敗を修正 + * Kubernetes 1.28のAPIディスカバリ変更によるCIの失敗を修正 + +----- +## リリース [v1.26.8+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.8+k3s1) + +このリリースではKubernetesをv1.26.8に更新し、多くの問題を修正しました。 + +:::warning 重要 +このリリースには、K3sサーバーに対する潜在的なサービス拒否攻撃ベクトルであるCVE-2023-32187の修正が含まれています。詳細については、https://github.com/k3s-io/k3s/security/advisories/GHSA-m4hf-6vgr-75r2 を参照し、この脆弱性に対するクラスタの強化に必要な必須手順を確認してください。 +::: + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1267)をご覧ください。 + +### v1.26.7+k3s1からの変更点: + +* flannelおよびプラグインの更新 [(#8075)](https://github.com/k3s-io/k3s/pull/8075) +* ipモードに関するtailscaleバグの修正 [(#8097)](https://github.com/k3s-io/k3s/pull/8097) +* ノード名が変更された場合のetcdスナップショットの保持 [(#8122)](https://github.com/k3s-io/k3s/pull/8122) +* 8月のテストバックポート [(#8126)](https://github.com/k3s-io/k3s/pull/8126) +* 2023-08リリースのバックポート [(#8129)](https://github.com/k3s-io/k3s/pull/8129) + * K3sの外部apiserverリスナーは、kubernetes apiserverサービス、サーバーノード、または--tls-sanオプションの値に関連付けられていないサブジェクト名を証明書に追加することを拒否するようになりました。これにより、証明書のSANリストに不要なエントリが追加されるのを防ぎます。 + * K3sは、イングレスプロキシがクラスタ内エンドポイントへの接続をルーティングするために使用されていない場合、apiserverの `enable-aggregator-routing` フラグを有効にしなくなりました。 + * 組み込みのcontainerdをv1.7.3+k3s1に更新 + * 組み込みのruncをv1.1.8に更新 + * 組み込みのetcdをv3.5.9+k3s1に更新 + * ユーザー提供のcontainerd設定テンプレートは、`{{ template "base" . }}` を使用してデフォルトのK3sテンプレートコンテンツを含めることができるようになりました。これにより、ファイルに追加セクションを追加するだけの場合、ユーザー設定の維持が容易になります。 + * golangの最近のリリースによってdockerクライアントが送信する無効なホストヘッダーが拒否される問題を修正するために、docker/dockerモジュールのバージョンをバンプ。 + * kineをv0.10.2に更新 +* - K3s etcd-snapshot削除がs3フラグで呼び出された場合にローカルファイルを削除できない問題を修正 [(#8144)](https://github.com/k3s-io/k3s/pull/8144) +* - etcdスナップショットが無効になっている場合のs3からのクラスタリセットバックアップの修正 [(#8170)](https://github.com/k3s-io/k3s/pull/8170) +* 日付に基づいて孤立したスナップショットを削除するためのetcd保持の修正 [(#8189)](https://github.com/k3s-io/k3s/pull/8189) +* 2023-08リリースの追加バックポート [(#8212)](https://github.com/k3s-io/k3s/pull/8212) + * バンドルされたhelmコントローラーのジョブイメージで使用される `helm` のバージョンがv3.12.3に更新されました。 + * apiserver/supervisorリスナーが6443でリクエストの提供を停止する可能性がある問題を修正するために、dynamiclistenerをバンプ。 + * K3sの外部apiserver/supervisorリスナーは、TLSハンドシェイクで完全な証明書チェーンを送信するようになりました。 +* flannelを0.22.2に移行 [(#8222)](https://github.com/k3s-io/k3s/pull/8222) +* v1.26.8に更新 [(#8235)](https://github.com/k3s-io/k3s/pull/8235) +* TLS SAN CNフィルタリングを有効にする新しいCLIフラグの追加 [(#8258)](https://github.com/k3s-io/k3s/pull/8258) + * 新しい `--tls-san-security` オプションを追加。このフラグはデフォルトでfalseですが、trueに設定すると、クライアントが要求する任意のホスト名を満たすためにサーバーのTLS証明書にSANを自動的に追加することを無効にします。 +* アドレスコントローラーにRWMutexを追加 [(#8274)](https://github.com/k3s-io/k3s/pull/8274) + +----- +## リリース [v1.26.7+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.7+k3s1) + + +このリリースではKubernetesをv1.26.7に更新し、多くの問題を修正しました。 +​ +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1266)をご覧ください。 +​ +### v1.26.6+k3s1からの変更点: +​ +* file_windows.goの削除 [(#7855)](https://github.com/k3s-io/k3s/pull/7855) +* コードスペルチェックの修正 [(#7859)](https://github.com/k3s-io/k3s/pull/7859) +* helm-controllerでapiServerPortをカスタマイズするためのk3sの許可 [(#7874)](https://github.com/k3s-io/k3s/pull/7874) +* tailscaleを行う際にipv4、ipv6、またはデュアルスタックかどうかの確認 [(#7882)](https://github.com/k3s-io/k3s/pull/7882) +* TailscaleのコントロールサーバーURLの設定をサポート [(#7893)](https://github.com/k3s-io/k3s/pull/7893) +* S3およびスタートアップテスト [(#7885)](https://github.com/k3s-io/k3s/pull/7885) +* ルートレスノードのパスワード修正 [(#7901)](https://github.com/k3s-io/k3s/pull/7901) +* 2023-07リリースのバックポート [(#7908)](https://github.com/k3s-io/k3s/pull/7908) + * kubeadmスタイルのブートストラップトークンで参加したエージェントが、ノードオブジェクトが削除されたときにクラスタに再参加できない問題を解決しました。 + * `k3s certificate rotate-ca` コマンドはデータディレクトリフラグをサポートするようになりました。 +* カスタムklipper helmイメージへのCLIの追加 [(#7914)](https://github.com/k3s-io/k3s/pull/7914) + * デフォルトのhelm-controllerジョブイメージは、--helm-job-image CLIフラグで上書きできるようになりました。 +* etcdが無効な場合、etcdの証明書とキーの生成をゲート [(#7944)](https://github.com/k3s-io/k3s/pull/7944) +* apparmorプロファイルが強制されている場合、`check-config`でzgrepを使用しない [(#7956)](https://github.com/k3s-io/k3s/pull/7956) +* image_scan.shスクリプトの修正とtrivyバージョンのダウンロード (#7950) [(#7968)](https://github.com/k3s-io/k3s/pull/7968) +* デフォルトのkubeconfigファイルの権限を調整 [(#7983)](https://github.com/k3s-io/k3s/pull/7983) +* v1.26.7に更新 [(#8022)](https://github.com/k3s-io/k3s/pull/8022) +​ +----- +## リリース [v1.26.6+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.6+k3s1) + +このリリースではKubernetesをv1.26.6に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1265)をご覧ください。 + +### v1.26.5+k3s1からの変更点: + +* flannelバージョンの更新 [(#7648)](https://github.com/k3s-io/k3s/pull/7648) +* プラグインインストールの修正を含むvagrant libvirtのバンプ [(#7658)](https://github.com/k3s-io/k3s/pull/7658) +* E2Eおよび依存関係のバックポート - 6月 [(#7693)](https://github.com/k3s-io/k3s/pull/7693) + * docker go.modのバンプ #7681 + * バージョンまたはヘルプフラグでコマンドをショートサーキット #7683 + * ローテーション証明書のチェックを追加し、エージェントを再起動する関数を削除 #7097 + * E2E: RunCmdOnNodeのためのSudo #7686 +* VPN統合 [(#7727)](https://github.com/k3s-io/k3s/pull/7727) +* E2E: プライベートレジストリテスト [(#7721)](https://github.com/k3s-io/k3s/pull/7721) +* スペルチェックの修正 [(#7751)](https://github.com/k3s-io/k3s/pull/7751) +* 未使用のlibvirt設定の削除 [(#7757)](https://github.com/k3s-io/k3s/pull/7757) +* バージョンバンプおよびバグ修正のバックポート [(#7717)](https://github.com/k3s-io/k3s/pull/7717) + * バンドルされたmetrics-serverがv0.6.3にバンプされ、デフォルトで安全なTLS暗号のみを使用するようになりました。 + * `coredns-custom` ConfigMapは、`.:53`デフォルトサーバーブロックに `*.override` セクションを含めることができるようになりました。 + * K3sのコアコントローラー(スーパーバイザー、デプロイ、ヘルム)は、管理者のkubeconfigを使用しなくなりました。これにより、アクセスおよび監査ログからシステムによって実行されたアクションと管理ユーザーによって実行されたアクションを区別しやすくなります。 + * klipper-lb イメージを v0.4.4 にバンプし、Service ExternalTrafficPolicy が Local に設定されている場合に localhost から ServiceLB ポートにアクセスできない問題を解決しました。 + * k3s をコンパイルする際に LB イメージを設定可能にしました。 + * k3s は、ノードがクラスターに参加する際にノードパスワードシークレットを作成できない場合でも、ノードがクラスターに参加できるようになりました。シークレットの作成はバックグラウンドで再試行されます。これにより、シークレットの作成をブロックする fail-closed 検証 Webhook によって引き起こされる可能性のあるデッドロックが解消されます。この Webhook は、新しいノードがクラスターに参加して Webhook ポッドを実行するまで利用できません。 + * バンドルされた containerd の aufs/devmapper/zfs スナップショットプラグインが復元されました。これらは、前回のリリースで containerd を k3s マルチコールバイナリに戻す際に意図せず省略されていました。 + * 組み込みの helm コントローラーが v0.15.0 にバンプされ、存在しない場合にチャートのターゲットネームスペースを作成することをサポートするようになりました。 +* Makefile に format コマンドを追加 [(#7762)](https://github.com/k3s-io/k3s/pull/7762) +* Tailscale のロギングとクリーンアップを修正 [(#7782)](https://github.com/k3s-io/k3s/pull/7782) +* Kubernetes を v1.26.6 に更新 [(#7789)](https://github.com/k3s-io/k3s/pull/7789) + +----- +## リリース [v1.26.5+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.5+k3s1) + +このリリースでは、Kubernetes を v1.26.5 に更新し、いくつかの問題を修正しました。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1264) を参照してください。 + +### v1.26.4+k3s1 以降の変更点: + +* klog の詳細度が logrus と同じレベルに設定されるようにしました [(#7360)](https://github.com/k3s-io/k3s/pull/7360) +* dependabot にリリースブランチを追加 [(#7374)](https://github.com/k3s-io/k3s/pull/7374) +* etc-snapshot サーバーフラグの統合テストを追加 [(#7377)](https://github.com/k3s-io/k3s/pull/7377) +* Runc と Containerd をバンプ [(#7399)](https://github.com/k3s-io/k3s/pull/7399) +* CLI + Config の強化 [(#7403)](https://github.com/k3s-io/k3s/pull/7403) + * `--Tls-sans` は複数の引数を受け入れるようになりました: `--tls-sans="foo,bar"` + * `Prefer-bundled-bin: true` は `config.yaml.d` ファイルに設定された場合に正しく動作するようになりました +* netutil メソッドを /utils/net.go に移行 [(#7432)](https://github.com/k3s-io/k3s/pull/7432) +* ポート名が使用されている場合のバグを修正するために kube-router バージョンをバンプ [(#7460)](https://github.com/k3s-io/k3s/pull/7460) +* Kube フラグと longhorn ストレージテスト [(#7465)](https://github.com/k3s-io/k3s/pull/7465) +* ローカルストレージ: パーミッションを修正 [(#7474)](https://github.com/k3s-io/k3s/pull/7474) +* containerd を v1.7.0 にバンプし、マルチコールバイナリに戻す [(#7444)](https://github.com/k3s-io/k3s/pull/7444) + * 組み込みの containerd バージョンが `v1.7.0-k3s1` にバンプされ、リリースアーティファクトのサイズを大幅に削減するためにメインの k3s バイナリに再統合されました。 +* バージョンバンプとバグ修正のバックポート [(#7514)](https://github.com/k3s-io/k3s/pull/7514) + * k3s は、etcd から "too many learners" エラーを受け取った場合にクラスター参加操作を再試行するようになりました。これは、複数のサーバーを同時に追加しようとしたときに最も頻繁に発生しました。 + * k3s は、ページサイズ > 4k の aarch64 ノードを再びサポートします。 + * パッケージ化された Traefik バージョンが v2.9.10 / チャート 21.2.0 にバンプされました。 + * k3s は、`noexec` でマウントされたファイルシステムから実行しようとしたときに、より意味のあるエラーを出力するようになりました。 + * サーバートークンがブートストラップトークン `id.secret` フォーマットを使用している場合、k3s は適切なエラーメッセージで終了するようになりました。 + * Addon、HelmChart、および HelmChartConfig CRD が構造スキーマなしで作成され、これらのタイプのカスタムリソースが無効なコンテンツで作成される問題を修正しました。 + * (実験的な) --disable-agent フラグで開始されたサーバーは、トンネル認証エージェントコンポーネントを実行しようとしなくなりました。 + * ポッドおよびクラスターのイーグレスセレクターモードが正しく動作しない問題を修正しました。 + * 新しいサーバーが管理された etcd クラスターに参加する際に、現在の etcd クラスター メンバーリストを取得する際のエラーを適切に処理するようになりました。 + * 組み込みの kine バージョンが v0.10.1 にバンプされました。これにより、従来の `lib/pq` postgres ドライバーが `pgx` に置き換えられます。 + * バンドルされた CNI プラグインが v1.2.0-k3s1 にアップグレードされました。バンドルには、帯域幅およびファイアウォールプラグインが含まれています。 + * 組み込みの Helm コントローラーは、シークレットに保存された資格情報を介してチャートリポジトリに認証すること、および ConfigMap を介してリポジトリ CA を渡すことをサポートするようになりました。 +* containerd/runc を v1.7.1-k3s1/v1.1.7 にバンプ [(#7534)](https://github.com/k3s-io/k3s/pull/7534) + * バンドルされた containerd および runc バージョンが v1.7.1-k3s1/v1.1.7 にバンプされました。 +* netpol からのエラーをラップ [(#7547)](https://github.com/k3s-io/k3s/pull/7547) +* 非アクティブなユニットに適用するための '-all' フラグを追加 [(#7573)](https://github.com/k3s-io/k3s/pull/7573) +* v1.26.5-k3s1 に更新 [(#7576)](https://github.com/k3s-io/k3s/pull/7576) +* emicklei/go-restful を v3.9.0 にピン留め [(#7598)](https://github.com/k3s-io/k3s/pull/7598) + +----- +## リリース [v1.26.4+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.4+k3s1) + +このリリースでは、Kubernetes を v1.26.4 に更新し、いくつかの問題を修正しました。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1263) を参照してください。 + +### v1.26.3+k3s1 以降の変更点: + +* `k3s check-config` を強化 [(#7091)](https://github.com/k3s-io/k3s/pull/7091) +* 安定チャネルを v1.25.8+k3s1 に更新 [(#7161)](https://github.com/k3s-io/k3s/pull/7161) +* Drone パイプラインの強化 [(#7169)](https://github.com/k3s-io/k3s/pull/7169) +* Fix_get_sha_url [(#7187)](https://github.com/k3s-io/k3s/pull/7187) +* Updatecli local-path-provisioner パイプラインの改善 [(#7181)](https://github.com/k3s-io/k3s/pull/7181) +* ワークフローの改善 [(#7142)](https://github.com/k3s-io/k3s/pull/7142) +* Trivy 設定の改善 [(#7154)](https://github.com/k3s-io/k3s/pull/7154) +* Local Path Provisioner バージョンをバンプ [(#7167)](https://github.com/k3s-io/k3s/pull/7167) + * バンドルされた local-path-provisioner バージョンが v0.0.24 にバンプされました。 +* etcd を v3.5.7 にバンプ [(#7170)](https://github.com/k3s-io/k3s/pull/7170) + * 組み込みの etcd バージョンが v3.5.7 にバンプされました。 +* runc を v1.1.5 にバンプ [(#7171)](https://github.com/k3s-io/k3s/pull/7171) + * バンドルされた runc バージョンが v1.1.5 にバンプされました。 +* etcd がリッスンしていないアドレスを広告することによって引き起こされるレースコンディションを修正 [(#7147)](https://github.com/k3s-io/k3s/pull/7147) + * クラスターリセット中のレースコンディションを修正し、操作がハングしてタイムアウトする可能性を修正しました。 +* coredns を v1.10.1 にバンプ [(#7168)](https://github.com/k3s-io/k3s/pull/7168) + * バンドルされた coredns バージョンが v1.10.1 にバンプされました。 +* エージェントにハードニング引数を適用しない [(#7089)](https://github.com/k3s-io/k3s/pull/7089) +* helm-controller を v0.13.3 にアップグレード [(#7209)](https://github.com/k3s-io/k3s/pull/7209) +* Klipper Helm と Helm コントローラーのバンプを改善 [(#7146)](https://github.com/k3s-io/k3s/pull/7146) +* 削除された LB サーバーへの古い接続の問題を修正 [(#7194)](https://github.com/k3s-io/k3s/pull/7194) + * クライアントロードバランサーは、クラスターから削除されたサーバーへの接続を閉じるようになりました。これにより、エージェントコンポーネントが現在のクラスター メンバーに即座に再接続することが保証されます。 +* actions/setup-go を 3 から 4 にバンプ [(#7111)](https://github.com/k3s-io/k3s/pull/7111) +* 競合を防ぐために空のキーでブートストラップデータをロック [(#7215)](https://github.com/k3s-io/k3s/pull/7215) + * 外部データストアを使用する場合、K3s は初期クラスターブートストラップデータを作成する際にブートストラップキーをロックし、複数のサーバーが同時にクラスターを初期化しようとしたときのレースコンディションを防ぎます。 +* デフォルトの ACCEPT ルールをチェーンの最後に移動するように kube-router を更新 [(#7218)](https://github.com/k3s-io/k3s/pull/7218) + * 組み込みの kube-router コントローラーが更新され、ホストに存在するデフォルトのドロップ/拒否ルールによってポッドからのトラフィックがブロックされる回帰を修正しました。ユーザーは、外部で管理されているファイアウォールルールがポッドおよびサービスネットワークへのトラフィックを明示的に許可することを確認する必要がありますが、これは一部のユーザーが依存していた以前の動作に戻ります。 +* terraform 自動化のための make コマンドを追加し、外部 DB に関連する問題を修正 [(#7159)](https://github.com/k3s-io/k3s/pull/7159) +* klipper lb を v0.4.2 に更新 [(#7210)](https://github.com/k3s-io/k3s/pull/7210) +* selinux サポートに coreos と sle micro を追加 [(#6945)](https://github.com/k3s-io/k3s/pull/6945) +* エアギャップ環境での k3s-selinux バージョンの呼び出しを修正 [(#7264)](https://github.com/k3s-io/k3s/pull/7264) +* Kube-router ACCEPT ルールの挿入と開始前のルールのクリーンアップを行うインストールスクリプトを更新 [(#7274)](https://github.com/k3s-io/k3s/pull/7274) + * 組み込みの kube-router コントローラーが更新され、ホストに存在するデフォルトのドロップ/拒否ルールによってポッドからのトラフィックがブロックされる回帰を修正しました。ユーザーは、外部で管理されているファイアウォールルールがポッドおよびサービスネットワークへのトラフィックを明示的に許可することを確認する必要がありますが、これは一部のユーザーが依存していた以前の動作に戻ります。 +* v1.26.4-k3s1 に更新 [(#7282)](https://github.com/k3s-io/k3s/pull/7282) +* golang:alpine イメージバージョンをバンプ [(#7292)](https://github.com/k3s-io/k3s/pull/7292) +* Sonobuoy バージョンをバンプ [(#7256)](https://github.com/k3s-io/k3s/pull/7256) +* Trivy バージョンをバンプ [(#7257)](https://github.com/k3s-io/k3s/pull/7257) + +----- +## リリース [v1.26.3+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.3+k3s1) + +このリリースでは、Kubernetes を v1.26.3 に更新し、いくつかの問題を修正しました。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1262) を参照してください。 + +### v1.26.2+k3s1 以降の変更点: + +* Drone に E2E を追加 [(#6890)](https://github.com/k3s-io/k3s/pull/6890) +* flannel adr を追加 [(#6973)](https://github.com/k3s-io/k3s/pull/6973) +* flannel と kube-router を更新 [(#7039)](https://github.com/k3s-io/k3s/pull/7039) +* CVE のためにさまざまな依存関係をバンプ [(#7044)](https://github.com/k3s-io/k3s/pull/7044) +* containerd config.toml ファイルの編集に関する警告を追加 [(#7057)](https://github.com/k3s-io/k3s/pull/7057) +* チャンネルサーバーの安定版バージョンを更新 [(#7066)](https://github.com/k3s-io/k3s/pull/7066) +* kubelet ポートが準備完了になるまで待機 [(#7041)](https://github.com/k3s-io/k3s/pull/7041) + * エージェントトンネル認証者は、ノードオブジェクトから kubelet ポートを読み取る前に kubelet が準備完了になるのを待つようになりました。 +* デフォルトの自己署名証明書のローテーションサポートを改善 [(#7032)](https://github.com/k3s-io/k3s/pull/7032) + * `k3s certificate rotate-ca` チェックは、`--force` オプションなしで自己署名証明書のローテーションをサポートするようになりました。 +* PR の内容に基づいてすべてのパイプラインをスキップ [(#6996)](https://github.com/k3s-io/k3s/pull/6996) +* 欠落しているカーネル設定チェックを追加 [(#6946)](https://github.com/k3s-io/k3s/pull/6946) +* 廃止された nodeSelector ラベル beta.kubernetes.io/os を削除 [(#6970)](https://github.com/k3s-io/k3s/pull/6970) +* v1.26 用の MultiClusterCIDR [(#6885)](https://github.com/k3s-io/k3s/pull/6885) + * MultiClusterCIDR 機能 +* MAINTAINERS リストから Nikolai を削除 [(#7088)](https://github.com/k3s-io/k3s/pull/7088) +* K3s の再起動コマンドの自動化を追加 [(#7002)](https://github.com/k3s-io/k3s/pull/7002) +* Rotate CA e2e テストの修正 [(#7101)](https://github.com/k3s-io/k3s/pull/7101) +* Drone: テストパニック時の E2E VM のクリーンアップ [(#7104)](https://github.com/k3s-io/k3s/pull/7104) +* v1.26.3-k3s1 に更新 [(#7108)](https://github.com/k3s-io/k3s/pull/7108) +* golangci-lint バージョンを v1.51.2 に固定 [(#7113)](https://github.com/k3s-io/k3s/pull/7113) +* テスト前に E2E VM をクリーンアップ [(#7109)](https://github.com/k3s-io/k3s/pull/7109) +* 古い iptables バージョンの NAT 問題を修正するために flannel を更新 [(#7136)](https://github.com/k3s-io/k3s/pull/7136) + +----- +## リリース [v1.26.2+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.2+k3s1) + +このリリースでは Kubernetes を v1.26.2 に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1261) を参照してください。 + +### v1.26.1+k3s1 からの変更点: + +* cri-dockerd を無効にするビルドタグを追加 [(#6760)](https://github.com/k3s-io/k3s/pull/6760) +* cri-dockerd をバンプ [(#6797)](https://github.com/k3s-io/k3s/pull/6797) + * 組み込みの cri-dockerd が v0.3.1 に更新されました +* 安定チャンネルを v1.25.6+k3s1 に更新 [(#6828)](https://github.com/k3s-io/k3s/pull/6828) +* E2E Rancher と Hardened スクリプトの改善 [(#6778)](https://github.com/k3s-io/k3s/pull/6778) +* Ayedo を Adopters に追加 [(#6801)](https://github.com/k3s-io/k3s/pull/6801) +* E2E テストと GH Actions を統合 [(#6772)](https://github.com/k3s-io/k3s/pull/6772) +* ServiceLB が `ExternalTrafficPolicy=Local` を尊重するようにする [(#6726)](https://github.com/k3s-io/k3s/pull/6726) + * ServiceLB は、Service の ExternalTrafficPolicy を尊重するようになりました。Local に設定されている場合、LoadBalancer は Service の Pod を持つノードのアドレスのみを広告し、他のクラスターメンバーにトラフィックを転送しません。 +* cronjob の例を修正 [(#6707)](https://github.com/k3s-io/k3s/pull/6707) +* vagrant ボックスを fedora37 にバンプ [(#6832)](https://github.com/k3s-io/k3s/pull/6832) +* フラグタイプの一貫性を確保 [(#6852)](https://github.com/k3s-io/k3s/pull/6852) +* E2E: docker を統合し、新しいスタートアップテストにバンドルされたテストを優先 [(#6851)](https://github.com/k3s-io/k3s/pull/6851) +* ドキュメントへの参照を修正 [(#6860)](https://github.com/k3s-io/k3s/pull/6860) +* 依存関係をバンプ: trivy, sonobuoy, dapper, golangci-lint, gopls [(#6807)](https://github.com/k3s-io/k3s/pull/6807) +* (open)SUSE バージョンのチェックを修正 [(#6791)](https://github.com/k3s-io/k3s/pull/6791) +* ユーザー提供の CA 証明書のサポートを追加 [(#6615)](https://github.com/k3s-io/k3s/pull/6615) + * K3s は、クラスタ CA 証明書が既存のルートまたは中間 CA によって署名されている場合に適切に機能するようになりました。K3s が起動する前にそのような証明書を生成するためのサンプルスクリプトは、github リポジトリの [contrib/util/certs.sh](https://github.com/k3s-io/k3s/blob/master/contrib/util/certs.sh) にあります。 +* シークレットの再暗号化時に値の競合を無視 [(#6850)](https://github.com/k3s-io/k3s/pull/6850) +* `kubeadm` スタイルのブートストラップトークンシークレットサポートを追加 [(#6663)](https://github.com/k3s-io/k3s/pull/6663) + * K3s は `kubeadm` スタイルの参加トークンをサポートするようになりました。`k3s token create` は、オプションで制限付き TTL を持つ参加トークンシークレットを作成します。 + * 期限切れまたは削除されたトークンで参加した K3s エージェントは、ノードオブジェクトがクラスタから削除されない限り、既存のクライアント証明書を使用してクラスタに残ります。 +* サポートされているデータストアのリストに NATS を追加 [(#6876)](https://github.com/k3s-io/k3s/pull/6876) +* SAN リストに Kubernetes サービスアドレスを追加する際にデフォルトのアドレスファミリを使用 [(#6857)](https://github.com/k3s-io/k3s/pull/6857) + * apiserver 広告アドレスと IP SAN エントリは、デフォルトの IP ファミリとして IPv6 を使用するクラスタで正しく設定されるようになりました。 +* バリデーション webhook が作成をブロックする場合の servicelb 起動失敗の問題を修正 [(#6911)](https://github.com/k3s-io/k3s/pull/6911) + * 組み込みのクラウドコントローラーマネージャーは、起動時に無条件にそのネームスペースとサービスアカウントを再作成しようとしなくなりました。これにより、fail-closed webhook が使用されている場合にデッドロッククラスタを引き起こす可能性がある問題が解決されます。 +* egress-selector-mode=agent の場合の NodeIP 上の hostNetwork ポートへのアクセスを修正 [(#6829)](https://github.com/k3s-io/k3s/pull/6829) + * apiserver egress プロキシが、エージェントまたは無効モードでもエージェントトンネルを使用してサービスエンドポイントに接続しようとする問題を修正しました。 +* トークンを作成する前にサーバーが準備完了になるのを待つ [(#6932)](https://github.com/k3s-io/k3s/pull/6932) +* リーダー選出されたコントローラーの複数セットを許可 [(#6922)](https://github.com/k3s-io/k3s/pull/6922) + * 管理された etcd のリーダー選出されたコントローラーが etcd 専用ノードで実行されない問題を修正しました +* Flannel を v0.21.1 に更新 [(#6944)](https://github.com/k3s-io/k3s/pull/6944) +* Nightly E2E テストを修正 [(#6950)](https://github.com/k3s-io/k3s/pull/6950) +* etcd と ca-cert ローテーションの問題を修正 [(#6952)](https://github.com/k3s-io/k3s/pull/6952) +* ServiceLB デュアルスタックのイングレス IP リストの修正 [(#6979)](https://github.com/k3s-io/k3s/pull/6979) + * ServiceLB がノードの IPv6 アドレスを広告する問題を解決しました。クラスタまたはサービスがデュアルスタック操作を有効にしていない場合でも。 +* kine を v0.9.9 にバンプ [(#6974)](https://github.com/k3s-io/k3s/pull/6974) + * 組み込みの kine バージョンが v0.9.9 にバンプされました。コンパクションログメッセージは、可視性を高めるために `info` レベルで省略されるようになりました。 +* v1.26.2-k3s1 に更新 [(#7011)](https://github.com/k3s-io/k3s/pull/7011) + +----- +## リリース [v1.26.1+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.1+k3s1) + +このリリースでは Kubernetes を v1.26.1 に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1260) を参照してください。 + +### v1.26.0+k3s2 からの変更点: + +* スケジュールされたスナップショットにジッターを追加し、競合時に再試行を強化 [(#6715)](https://github.com/k3s-io/k3s/pull/6715) + * スケジュールされた etcd スナップショットは、数秒以内の短いランダムな遅延でオフセットされるようになりました。これにより、マルチサーバークラスタがスナップショットリスト ConfigMap を同時に更新しようとする病理的な動作を防ぐことができます。スナップショットコントローラーは、スナップショットリストの更新を試みる際により粘り強くなります。 +* e2e テスト実行スクリプトと修正を調整 [(#6718)](https://github.com/k3s-io/k3s/pull/6718) +* RIP Codespell [(#6701)](https://github.com/k3s-io/k3s/pull/6701) +* /package の alpine を 3.16 から 3.17 にバンプ [(#6688)](https://github.com/k3s-io/k3s/pull/6688) +* /conformance の alpine を 3.16 から 3.17 にバンプ [(#6687)](https://github.com/k3s-io/k3s/pull/6687) +* containerd を v1.6.15-k3s1 にバンプ [(#6722)](https://github.com/k3s-io/k3s/pull/6722) + * 組み込みの containerd バージョンが v1.6.15-k3s1 にバンプされました +* containerd 再起動テストレット [(#6696)](https://github.com/k3s-io/k3s/pull/6696) +* /tests/e2e/scripts の ubuntu を 20.04 から 22.04 にバンプ [(#6686)](https://github.com/k3s-io/k3s/pull/6686) +* ワークフローに明示的な読み取り権限を追加 [(#6700)](https://github.com/k3s-io/k3s/pull/6700) +* デフォルトの tls-cipher-suites をパススルー [(#6725)](https://github.com/k3s-io/k3s/pull/6725) + * K3s のデフォルトの暗号スイートは、kube-apiserver に明示的に渡されるようになり、すべてのリスナーがこれらの値を使用するようになります。 +* golang:alpine イメージバージョンをバンプ [(#6683)](https://github.com/k3s-io/k3s/pull/6683) +* バグ修正: pprof が有効な場合に cert-manager を壊さない [(#6635)](https://github.com/k3s-io/k3s/pull/6635) +* Alpine 3.17 での CI テストを修正 [(#6744)](https://github.com/k3s-io/k3s/pull/6744) +* 安定版を 1.25.5+k3s2 に更新 [(#6753)](https://github.com/k3s-io/k3s/pull/6753) +* action/download-artifact を v3 にバンプ [(#6746)](https://github.com/k3s-io/k3s/pull/6746) +* レポートを生成し、テスト結果をアップロード [(#6737)](https://github.com/k3s-io/k3s/pull/6737) +* 依存関係 CI を週次に遅延 [(#6764)](https://github.com/k3s-io/k3s/pull/6764) +* 32 ビット arm 用の Drone plugins/docker タグを修正 [(#6769)](https://github.com/k3s-io/k3s/pull/6769) +* v1.26.1-k3s1 に更新 [(#6774)](https://github.com/k3s-io/k3s/pull/6774) + +----- +## リリース [v1.26.0+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.26.0+k3s2) + + +このリリースでは、containerd を v1.6.14 に更新し、containerd の再起動時にポッドが CNI 情報を失う問題を解決しました。また、他の多くの安定性および管理上の変更も含まれています。 + +以前のリリースからアップグレードする前に、Kubernetes の [緊急アップグレードノート](https +* 現在のステータスバッジ [(#6653)](https://github.com/k3s-io/k3s/pull/6653) +* 初期のUpdatecli ADR自動化を追加 [(#6583)](https://github.com/k3s-io/k3s/pull/6583) +* 2022年12月のチャンネル更新 [(#6618)](https://github.com/k3s-io/k3s/pull/6618) +* Updatecli GHアクション参照ブランチを変更 [(#6682)](https://github.com/k3s-io/k3s/pull/6682) +* OpenRC initスクリプトエラー 'openrc-run.sh: source: not found' を修正 [(#6614)](https://github.com/k3s-io/k3s/pull/6614) +* セキュリティADRのためのDependabot設定を追加 [(#6560)](https://github.com/k3s-io/k3s/pull/6560) +* containerdをv1.6.14-k3s1にバンプ [(#6693)](https://github.com/k3s-io/k3s/pull/6693) + * 組み込みのcontainerdバージョンがv1.6.14-k3s1にバンプされました。これには、containerdの再起動時にポッドがCNI情報を失う問題を引き起こす[containerd/7843](https://github.com/containerd/containerd/issues/7843)のバックポート修正が含まれています。この問題により、kubeletがポッドを再作成することになります。 +* チャンネルサーバーから12月のr1リリースを除外 [(#6706)](https://github.com/k3s-io/k3s/pull/6706) + +----- +## リリース [v1.26.0+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.26.0+k3s1) + + +> ## ⚠️ 警告 +> このリリースは、K3sの再起動時にkubeletがすべてのポッドを再起動する原因となるhttps://github.com/containerd/containerd/issues/7843の影響を受けます。このため、このK3sリリースはチャンネルサーバーから削除されました。代わりに`v1.26.0+k3s2`を使用してください。 + +このリリースは、v1.26ラインにおけるK3Sの最初のリリースです。このリリースでは、Kubernetesがv1.26.0に更新されます。 + +以前のリリースからアップグレードする前に、Kubernetesの[緊急アップグレードノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#urgent-upgrade-notes)を必ずお読みください。 + +### v1.25.5+k3s1からの変更点: + +* v1.26で非推奨となったフラグを削除 [(#6574)](https://github.com/k3s-io/k3s/pull/6574) +* スナップショットの保存に「etcd-snapshot」を使用することは非推奨となり、代わりに「etcd-snapshot save」を使用してください。 [(#6575)](https://github.com/k3s-io/k3s/pull/6575) +* v1.26.0-k3s1に更新 + * * Kubernetesをv1.26.0-k3s1に更新 + * * cri-toolsをv1.26.0-rc.0-k3s1に更新 + * * helmコントローラーをv0.13.1に更新 + * * etcdをv3.5.5-k3s1に更新 + * * cri-dockerdを最新の1.26.0に更新 + * * cadvisorを更新 + * * containerdをv1.6.12-k3s1に更新 [(#6370)](https://github.com/k3s-io/k3s/pull/6370) +* iptable_filter/ip6table_filterをプリロード [(#6645)](https://github.com/k3s-io/k3s/pull/6645) +* k3s-rootバージョンをv0.12.1にバンプ [(#6651)](https://github.com/k3s-io/k3s/pull/6651) + +----- \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.27.X.md b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.27.X.md new file mode 100644 index 000000000..c8ce6b27f --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.27.X.md @@ -0,0 +1,582 @@ +--- +hide_table_of_contents: true +sidebar_position: 4 +--- + +# v1.27.X + +:::warning アップグレード通知 +以前のリリースからアップグレードする前に、Kubernetesの[緊急アップグレードノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#urgent-upgrade-notes)を必ずお読みください。 +::: + +| バージョン | リリース日 | Kubernetes | Kine | SQLite | Etcd | Containerd | Runc | Flannel | Metrics-server | Traefik | CoreDNS | Helm-controller | Local-path-provisioner | +| ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | +| [v1.27.15+k3s1](v1.27.X.md#release-v12715k3s1) | 2024年6月25日 | [v1.27.15](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v12715) | [v0.11.9](https://github.com/k3s-io/kine/releases/tag/v0.11.9) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.13-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.13-k3s1) | [v1.7.17-k3s2.27](https://github.com/k3s-io/containerd/releases/tag/v1.7.17-k3s2.27) | [v1.1.12](https://github.com/opencontainers/runc/releases/tag/v1.1.12) | [v0.25.2](https://github.com/flannel-io/flannel/releases/tag/v0.25.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.7](https://github.com/traefik/traefik/releases/tag/v2.10.7) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.10](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.10) | [v0.0.27](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.27) | +| [v1.27.14+k3s1](v1.27.X.md#release-v12714k3s1) | 2024年5月22日 | [v1.27.14](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v12714) | [v0.11.7](https://github.com/k3s-io/kine/releases/tag/v0.11.7) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.15-k3s1.27](https://github.com/k3s-io/containerd/releases/tag/v1.7.15-k3s1.27) | [v1.1.12-k3s1](https://github.com/opencontainers/runc/releases/tag/v1.1.12-k3s1) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.7](https://github.com/traefik/traefik/releases/tag/v2.10.7) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.9](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.9) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.27.13+k3s1](v1.27.X.md#release-v12713k3s1) | 2024年4月25日 | [v1.27.13](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v12713) | [v0.11.7](https://github.com/k3s-io/kine/releases/tag/v0.11.7) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.15-k3s1.27](https://github.com/k3s-io/containerd/releases/tag/v1.7.15-k3s1.27) | [v1.1.12](https://github.com/opencontainers/runc/releases/tag/v1.1.12) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.7](https://github.com/traefik/traefik/releases/tag/v2.10.7) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.9](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.9) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.27.12+k3s1](v1.27.X.md#release-v12712k3s1) | 2024年3月25日 | [v1.27.12](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v12712) | [v0.11.4](https://github.com/k3s-io/kine/releases/tag/v0.11.4) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2.27](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2.27) | [v1.1.12-k3s1](https://github.com/opencontainers/runc/releases/tag/v1.1.12-k3s1) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.9](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.9) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.27.11+k3s1](v1.27.X.md#release-v12711k3s1) | 2024年2月29日 | [v1.27.11](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v12711) | [v0.11.4](https://github.com/k3s-io/kine/releases/tag/v0.11.4) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2.27](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2.27) | [v1.1.12-k3s1](https://github.com/k3s-io/runc/releases/tag/v1.1.12-k3s1) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.8](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.8) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.27.10+k3s2](v1.27.X.md#release-v12710k3s2) | 2024年2月6日 | [v1.27.10](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v12710) | [v0.11.0](https://github.com/k3s-io/kine/releases/tag/v0.11.0) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2.27](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2.27) | [v1.1.12-k3s1](https://github.com/opencontainers/runc/releases/tag/v1.1.12-k3s1) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.8](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.8) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.27.9+k3s1](v1.27.X.md#release-v1279k3s1) | 2023年12月27日 | [v1.27.9](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v1279) | [v0.11.0](https://github.com/k3s-io/kine/releases/tag/v0.11.0) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2.27](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2.27) | [v1.1.10](https://github.com/opencontainers/runc/releases/tag/v1.1.10) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.27.8+k3s2](v1.27.X.md#release-v1278k3s2) | 2023年12月7日 | [v1.27.8](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v1278) | [v0.11.0](https://github.com/k3s-io/kine/releases/tag/v0.11.0) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.7-k3s1.27](https://github.com/k3s-io/containerd/releases/tag/v1.7.7-k3s1.27) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.27.7+k3s2](v1.27.X.md#release-v1277k3s2) | 2023年11月8日 | [v1.27.7](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v1277) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.7-k3s1.27](https://github.com/k3s-io/containerd/releases/tag/v1.7.7-k3s1.27) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.27.7+k3s1](v1.27.X.md#release-v1277k3s1) | 2023年10月30日 | [v1.27.7](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v1277) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.7-k3s1.27](https://github.com/k3s-io/containerd/releases/tag/v1.7.7-k3s1.27) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.27.6+k3s1](v1.27.X.md#release-v1276k3s1) | 2023年9月20日 | [v1.27.6](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v1276) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.6-k3s1.27](https://github.com/k3s-io/containerd/releases/tag/v1.7.6-k3s1.27) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.27.5+k3s1](v1.27.X.md#release-v1275k3s1) | 2023年9月5日 | [v1.27.5](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v1275) | [v0.10.2](https://github.com/k3s-io/kine/releases/tag/v0.10.2) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.3-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.3-k3s1) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.27.4+k3s1](v1.27.X.md#release-v1274k3s1) | 2023年7月27日 | [v1.27.4](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v1274) | [v0.10.1](https://github.com/k3s-io/kine/releases/tag/v0.10.1) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.7-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.7-k3s1) | [v1.7.1-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.1-k3s1) | [v1.1.7](https://github.com/opencontainers/runc/releases/tag/v1.1.7) | [v0.22.0](https://github.com/flannel-io/flannel/releases/tag/v0.22.0) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.2](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.2) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.27.3+k3s1](v1.27.X.md#release-v1273k3s1) | 2023年6月26日 | [v1.27.3](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v1273) | [v0.10.1](https://github.com/k3s-io/kine/releases/tag/v0.10.1) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.7-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.7-k3s1) | [v1.7.1-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.1-k3s1) | [v1.1.7](https://github.com/opencontainers/runc/releases/tag/v1.1.7) | [v0.22.0](https://github.com/flannel-io/flannel/releases/tag/v0.22.0) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.0](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.0) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.27.2+k3s1](v1.27.X.md#release-v1272k3s1) | 2023年5月26日 | [v1.27.2](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v1272) | [v0.10.1](https://github.com/k3s-io/kine/releases/tag/v0.10.1) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.7-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.7-k3s1) | [v1.7.1-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.1-k3s1) | [v1.1.7](https://github.com/opencontainers/runc/releases/tag/v1.1.7) | [v0.21.4](https://github.com/flannel-io/flannel/releases/tag/v0.21.4) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.14.0](https://github.com/k3s-io/helm-controller/releases/tag/v0.14.0) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.27.1+k3s1](v1.27.X.md#release-v1271k3s1) | 2023年4月27日 | [v1.27.1](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v1271) | [v0.9.9](https://github.com/k3s-io/kine/releases/tag/v0.9.9) | [3.39.2](https://sqlite.org/releaselog/3_39_2.html) | [v3.5.7-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.7-k3s1) | [v1.6.19-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.6.19-k3s1) | [v1.1.5](https://github.com/opencontainers/runc/releases/tag/v1.1.5) | [v0.21.4](https://github.com/flannel-io/flannel/releases/tag/v0.21.4) | [v0.6.2](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.2) | [v2.9.4](https://github.com/traefik/traefik/releases/tag/v2.9.4) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.13.3](https://github.com/k3s-io/helm-controller/releases/tag/v0.13.3) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | + +
+ +## リリース [v1.27.15+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.27.15+k3s1) + + +このリリースでは、Kubernetesをv1.27.15に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v12714)をご覧ください。 + +### v1.27.14+k3s1からの変更点: + +* 非推奨のruby関数を置き換え [(#10089)](https://github.com/k3s-io/k3s/pull/10089) +* ファイルによるtailscale設定使用時のバグ修正 [(#10143)](https://github.com/k3s-io/k3s/pull/10143) +* flannelバージョンをv0.25.2にバンプ [(#10222)](https://github.com/k3s-io/k3s/pull/10222) +* kube-routerバージョンをv2.1.2に更新 [(#10183)](https://github.com/k3s-io/k3s/pull/10183) +* tailscaleテストの改善とe2eテストに追加ログを追加 [(#10214)](https://github.com/k3s-io/k3s/pull/10214) +* 2024-06リリースサイクルのバックポート [(#10259)](https://github.com/k3s-io/k3s/pull/10259) + * WithSkipMissingを追加して、欠落しているblobのインポートで失敗しないようにする + * cri-dockerdの固定ストリームサーバーバインドアドレスを使用 + * stargzをcriレジストリconfig_pathに切り替え + * containerd v1.7.17、etcd v3.5.13にバンプ + * spegelバージョンをバンプ + * dual-stackノード上のsingle-stackサービスのexternalTrafficPolicy: Localの問題を修正 + * ServiceLBはデフォルトでsvclbポッドのpriorityClassNameを`system-node-critical`に設定するようになりました。これは、`svccontroller.k3s.cattle.io/priorityclassname`アノテーションを使用してサービスごとにオーバーライドできます。 + * minio-goをv7.0.70にバンプ + * ページネーションを修正するためにkineをv0.11.9にバンプ + * 有効なresolv confを更新 + * 欠落しているカーネル設定チェックを追加 + * Auto-Deploying Manifests (AddOns)をスキャンする際に、シンボリックリンクされたサブディレクトリが尊重されるようになりました + * バグ修正: helmコントローラーがオーナー参照を設定できるようにする + * tlsシークレットサポートのためにklipper-helmイメージをバンプ + * k3s-etcdインフォーマーが起動しない問題を修正 + * `--Enable-pprof`をエージェントに設定して、debug/pprofエンドポイントを有効にできるようになりました。設定すると、エージェントはスーパーバイザーポートでリッスンします。 + * `--Supervisor-metrics`をサーバーに設定して、スーパーバイザーエンドポイントで内部メトリクスを提供できるようになりました。設定すると、エージェントはスーパーバイザーポートでリッスンします。 + * ノードが初期化されないまま汚染された場合のnetpolクラッシュを修正 + * すべてのサーバーがヘルスチェックに失敗して利用不可とマークされた場合、埋め込みロードバランサーはヘルスチェックを無視してすべてのサーバーを試みるようになりました。 +* 2024-06リリースサイクルのさらなるバックポート [(#10290)](https://github.com/k3s-io/k3s/pull/10290) +* スナップショット保持etcd-s3フォルダ修正を追加 [(#10314)](https://github.com/k3s-io/k3s/pull/10314) +* `isValidResolvConf`のテストを追加 (#10302) [(#10332)](https://github.com/k3s-io/k3s/pull/10332) +* loadbalancer.nextServerのレースコンディションパニックを修正 [(#10324)](https://github.com/k3s-io/k3s/pull/10324) +* タイポ修正、`rancher/permissions`を使用 [(#10297)](https://github.com/k3s-io/k3s/pull/10297) +* Kubernetesをv1.27.15に更新 [(#10346)](https://github.com/k3s-io/k3s/pull/10346) + * Kubernetesをv1.27.15に更新 +* エージェントスーパーバイザーポートがapiserverポートを使用する問題を修正 [(#10356)](https://github.com/k3s-io/k3 +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v12713)をご覧ください。 + +### v1.27.13+k3s1 以降の変更点: + +* E2E opensuse leap を 15.6 にバンプし、btrfs テストを修正 [(#10096)](https://github.com/k3s-io/k3s/pull/10096) +* Windows の変更 [(#10113)](https://github.com/k3s-io/k3s/pull/10113) +* v1.27.14-k3s1 と Go 1.21.9 に更新 [(#10103)](https://github.com/k3s-io/k3s/pull/10103) + +----- +## リリース [v1.27.13+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.27.13+k3s1) + + +このリリースでは Kubernetes を v1.27.13 に更新し、多くの問題を修正しています。 + +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v12712)をご覧ください。 + +### v1.27.12+k3s1 以降の変更点: + +* kine が disable apiserver または disable etcd と一緒に使用される場合の新しいエラーを追加 [(#9803)](https://github.com/k3s-io/k3s/pull/9803) +* 古い固定依存関係を削除 [(#9828)](https://github.com/k3s-io/k3s/pull/9828) +* 非推奨のポインタライブラリから ptr への移行 [(#9825)](https://github.com/k3s-io/k3s/pull/9825) +* Golang キャッシングと E2E ubuntu 23.10 [(#9822)](https://github.com/k3s-io/k3s/pull/9822) +* kine の TLS を追加 [(#9850)](https://github.com/k3s-io/k3s/pull/9850) +* spegel を v0.0.20-k3s1 にバンプ [(#9881)](https://github.com/k3s-io/k3s/pull/9881) +* 2024-04 リリースサイクルのバックポート [(#9912)](https://github.com/k3s-io/k3s/pull/9912) + * メンバーリストを取得できない場合にエラーレスポンスを送信 + * k3s スタブクラウドプロバイダーが kubelet の要求した provider-id、インスタンスタイプ、およびトポロジーラベルを尊重するようになりました + * 画像が既にプルされている場合のエラーを修正 + * k3s docker イメージに /etc/passwd と /etc/group を追加 + * エージェントレスサーバーの etcd スナップショット調整を修正 + * ロードバランサーにヘルスチェックサポートを追加 + * 証明書の有効期限チェック、イベント、およびメトリクスを追加 + * デフォルトのレジストリエンドポイントの設定を渡す際の containerd hosts.toml バグの回避策を追加 + * 監督者の証明書/キーを回転リストに追加 + * 組み込みの containerd が v1.7.15 にバンプされました + * 組み込みの cri-dockerd が v0.3.12 にバンプされました + * `k3s etcd-snapshot` コマンドが一貫性を向上させるために再構築されました。すべてのスナップショット操作はサーバープロセスによって実行され、CLI はクライアントとして操作を開始し、結果を報告します。その副作用として、スナップショットを管理する際の CLI のノイズが減少しました。 + * etcd ロードバランサーの起動動作を改善 + * エージェント証明書の回転を実際に修正 + * Traefik が v2.10.7 にバンプされました + * Traefik ポッドの注釈がデフォルトのチャート値で正しく設定されるようになりました + * system-default-registry 値が RFC2732 IPv6 リテラルをサポートするようになりました + * local-path プロビジョナーが `hostPath` の代わりに `local` ボリュームを作成するようにデフォルト設定されました +* LPP がヘルパーログを読み取れるように許可 [(#9939)](https://github.com/k3s-io/k3s/pull/9939) +* kube-router を v2.1.0 に更新 [(#9943)](https://github.com/k3s-io/k3s/pull/9943) +* v1.27.13-k3s1 と Go 1.21.9 に更新 [(#9958)](https://github.com/k3s-io/k3s/pull/9958) +* オンデマンドスナップショットのタイムアウトを修正; フォルダーを尊重しない問題を修正 [(#9995)](https://github.com/k3s-io/k3s/pull/9995) +* /db/info を localhost から匿名で利用可能にする [(#10003)](https://github.com/k3s-io/k3s/pull/10003) + +----- +## リリース [v1.27.12+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.27.12+k3s1) + + +このリリースでは Kubernetes を v1.27.12 に更新し、多くの問題を修正しています。 + +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v12711)をご覧ください。 + +### v1.27.11+k3s1 以降の変更点: + +* flannel-backend=none の統合テストを追加 [(#9609)](https://github.com/k3s-io/k3s/pull/9609) +* インストールとユニットテストのバックポート [(#9642)](https://github.com/k3s-io/k3s/pull/9642) +* klipper-lb イメージバージョンを更新 [(#9606)](https://github.com/k3s-io/k3s/pull/9606) +* 設定された clusterCIDR に基づいて最初の node-ip を調整 [(#9632)](https://github.com/k3s-io/k3s/pull/9632) +* tailscale e2e テストを改善 [(#9654)](https://github.com/k3s-io/k3s/pull/9654) +* 2024-03 リリースサイクルのバックポート [(#9670)](https://github.com/k3s-io/k3s/pull/9670) + * 修正: 正しい wasm シム名を使用 + * 組み込みの flannel cni-plugin バイナリが他の cni プラグインおよび組み込みの flannel コントローラーとは別にビルドおよびバージョン管理されるようになりました + * spegel を v0.0.18-k3s3 にバンプ + * ワイルドカードレジストリサポートを追加 + * containerd の起動を待つ間の過剰な CPU 使用率の問題を修正 + * spegel の最新タグのミラーリングを許可する環境変数を追加 + * netpol ノード待機ログを調整 + * デュアルスタッククラスターでの coredns NodeHosts の修正 + * helm-controller/klipper-helm バージョンをバンプ + * スナップショットのプルーンを修正 + * etcd ノード名にホスト名が欠けている問題を修正 + * ルートレスモードでも、ルートフルモードの UX に一致するように、LoadBalancer タイプのサービス nodePort をホストにバインドする必要があります + * `check-config` サブコマンドの生出力を有効にするために、NO_COLOR=1 を設定できるようになりました + * レジストリのミラーエンドポイントリストに重複エントリがある場合、K3s は警告を出し、抑制するようになりました。Containerd は、単一の上流レジストリのミラーとして同じエンドポイントを複数回リストすることをサポートしていません +* Docker と E2E テストのバックポート [(#9708)](https://github.com/k3s-io/k3s/pull/9708) +* ワイルドカードエントリの上流フォールバックを修正 [(#9734)](https://github.com/k3s-io/k3s/pull/9734) +* v1.27.12-k3s1 と Go 1.21.8 に更新 [(#9745)](https://github.com/k3s-io/k3s/pull/9745) + +----- +## リリース [v1.27.11+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.27.11+k3s1) + + +このリリースでは Kubernetes を v1.27.11 に更新し、多くの問題を修正しています。 + +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v12710)をご覧ください。 + +### v1.27.10+k3s2 以降の変更点: + +* Chore: Local Path Provisioner バージョンをバンプ [(#9427)](https://github.com/k3s-io/k3s/pull/9427) +* cri-dockerd をバンプして Docker Engine 25 との互換性を修正 [(#9291)](https://github.com/k3s-io/k3s/pull/9291) +* 自動依存関係バンプ [(#9420)](https://github.com/k3s-io/k3s/pull/9420) +* exec.LookPath を使用したランタイムのリファクタリング [(#9430)](https://github.com/k3s-io/k3s/pull/9430) + * ランタイムを含むディレクトリは、効果的なランタイム検出のために $PATH 環境変数に含める必要があります +* etcd 条件で lastHeartBeatTime の動作を変更 [(#9425)](https://github.com/k3s-io/k3s/pull/9425) +* 実行者が containerd と docker の動作を定義できるようにする [(#9253)](https://github.com/k3s-io/k3s/pull/9253) +* Kube-router を v2.0.1 に更新 [(#9405)](https://github.com/k3s-io/k3s/pull/9405) +* 2024-02 リリースサイクルのバックポート [(#9463)](https://github.com/k3s-io/k3s/pull/9463) +* flannel バージョンをバンプ + multiclustercidr を削除 [(#9407)](https://github.com/k3s-io/k3s/pull/9407) +* より長い HTTP タイムアウトリクエストを有効にする [(#9445)](https://github.com/k3s-io/k3s/pull/9445) +* Test_UnitApplyContainerdQoSClassConfigFileIfPresent [(#9441)](https://github.com/k3s-io/k3s/pull/9441) +* PR テストインストールをサポート [(#9470)](https://github.com/k3s-io/k3s/pull/9470) +* Kubernetes を v1.27.11 に更新 [(#9491)](https://github.com/k3s-io/k3s/pull/9491) +* arm 用の drone パブリッシュを修正 [(#9509)](https://github.com/k3s-io/k3s/pull/9509) +* 失敗する Drone ステップを削除 [(#9515)](https://github.com/k3s-io/k3s/pull/9515) +* エージェントの起動関数の元の順序を復元 [(#9546)](https://github.com/k3s-io/k3s/pull/9546) +* flannel が無効な場合の netpol 起動を修正 [(#9579)](https://github.com/k3s-io/k3s/pull/9579) + +----- +## リリース [v1.27.10+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.27.10+k3s2) + + +このリリースでは Kubernetes を v1.27.10 に更新し、多くの問題を修正しています。 + +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1279)をご覧ください。 + +**重要な注意事項** + +runc の CVE: [CVE-2024-21626](https://nvd.nist.gov/vuln/detail/CVE-2024-21626) に対処するために、runc を v1.1.12 に更新しました。 + +### v1.27.9+k3s1 以降の変更点: + +* secrets-encrypt ノード注釈の更新にリトライを追加 [(#9124)](https://github.com/k3s-io/k3s/pull/9124) +* エージェントロードバランサーのための環境変数 *_PROXY のサポートを追加 [(#9117)](https://github.com/k3s-io/k3s/pull/9117) +* netpol コントローラーを開始する前にノードの taint がなくなるのを待つ [(#9176)](https://github.com/k3s-io/k3s/pull/9176) +* Etcd 条件 [(#9182)](https://github.com/k3s-io/k3s/pull/9182) +* 2024-01 のバックポート [(#9211)](https://github.com/k3s-io/k3s/pull/9211) +* init() からプロキシダイアラーを移動し、クラッシュを修正 [(#9220)](https://github.com/k3s-io/k3s/pull/9220) +* 依存関係チェーンが欠落しているため、opa バージョンを固定 [(#9217)](https://github.com/k3s-io/k3s/pull/9217) +* etcd ノードが nil [(#9229)](https://github.com/k3s-io/k3s/pull/9229) +* v1.27.10 と Go 1.20.13 に更新 [(#9261)](https://github.com/k3s-io/k3s/pull/9261) +* デュアルスタック kube-dns のために `ipFamilyPolicy: RequireDualStack` を使用 [(#9270)](https://github.com/k3s-io/k3s/pull/9270) +* 2024-01 k3s2 のバックポート [(#9337)](https://github.com/k3s-io/k3s/pull/9337) + * runc を v1.1.12 に、helm-controller を v0.15.7 にバンプ + * registries.yaml でエンドポイントアドレスとしてベアホスト名または IP を処理する際の問題を修正 +* ChartContent の問題を修正するために helm-controller をバンプ [(#9347)](https://github.com/k3s-io/k3s/pull/9347) + +----- +## リリース [v1.27.9+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.27.9+k3s1) + + +このリリースでは Kubernetes を v1.27.9 に更新し、多くの問題を修正しています。 + +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1278)をご覧ください。 + +### v1.27.8+k3s2 以降の変更点: + +* containerd/runc を v1.7.10-k3s1/v1.1.10 にバンプ [(#8963)](https://github.com/k3s-io/k3s/pull/8963) +* 重複するアドレス範囲を修正 [(#9018)](https://github.com/k3s-io/k3s/pull/9018) +* ランタイム + * wasm/nvidia/crunのランタイムクラスを追加 + * containerdのデフォルトランタイムフラグを追加 +* containerdをv1.7.11にバンプ [(#9041)](https://github.com/k3s-io/k3s/pull/9041) +* v1.27.9-k3s1にアップデート [(#9078)](https://github.com/k3s-io/k3s/pull/9078) + +----- +## リリース [v1.27.8+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.27.8+k3s2) + + +このリリースではKubernetesをv1.27.8に更新し、いくつかの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1277)をご覧ください。 + +### v1.27.7+k3s2からの変更点: + +* Etcdステータス条件 [(#8821)](https://github.com/k3s-io/k3s/pull/8821) +* multiclustercidrフラグの削除に関する警告を追加 [(#8759)](https://github.com/k3s-io/k3s/pull/8759) +* 2023-11リリースのバックポート [(#8878)](https://github.com/k3s-io/k3s/pull/8878) + * Dockerイメージに新しいタイムゾーン情報を追加し、CronJobsで`spec.timeZone`を使用可能に + * kineをv0.11.0にバンプし、PostgresとNATSの問題を解決、負荷の高い環境でのウォッチチャネルのパフォーマンスを向上、リファレンス実装との互換性を改善 + * `rdt_config.yaml`または`blockio_config.yaml`ファイルを定義することで、containerdをrdtまたはblockio設定で構成可能に + * エージェントフラグdisable-apiserver-lbを追加、エージェントはロードバランスプロキシを開始しない + * ServiceLBからのイングレスIPの順序を改善 + * disable-helm-controllerのためのhelm CRDインストールを無効化 + * 追加メタデータのないスナップショットのスナップショットリストconfigmapエントリを省略 + * クライアント設定のリトライにジッターを追加し、サーバー起動時の過負荷を回避 +* etcdでランタイムコアが準備できていないときのnilポインタを処理 [(#8887)](https://github.com/k3s-io/k3s/pull/8887) +* dualStackログを改善 [(#8828)](https://github.com/k3s-io/k3s/pull/8828) +* dynamiclistenerをバンプ; スナップショットコントローラーログのスパムを削減 [(#8902)](https://github.com/k3s-io/k3s/pull/8902) + * dynamiclistenerをバンプし、サーバーがKubernetesシークレットに証明書を同期できないレースコンディションを解決 + * 初期クラスター起動時のetcdスナップショットログスパムを削減 +* e2eステップのdepends_onを削除; cert rotate e2eを修正 [(#8907)](https://github.com/k3s-io/k3s/pull/8907) +* etcdスナップショットのS3問題を修正 [(#8937)](https://github.com/k3s-io/k3s/pull/8937) + * S3クライアントの初期化に失敗した場合、S3保持を適用しない + * S3スナップショットをリストする際にメタデータを要求しない + * スナップショットメタデータログメッセージでファイルパスの代わりにキーを表示 +* v1.27.8およびGoを1.20.11にアップデート [(#8921)](https://github.com/k3s-io/k3s/pull/8921) +* s390xを削除 [(#8999)](https://github.com/k3s-io/k3s/pull/8999) + +----- +## リリース [v1.27.7+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.27.7+k3s2) + + +このリリースではKubernetesをv1.27.7に更新し、いくつかの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1277)をご覧ください。 + +### v1.27.7+k3s1からの変更点: + +* templates_linux.goでのSystemdCgroupを修正 [(#8765)](https://github.com/k3s-io/k3s/pull/8765) + * 追加のコンテナランタイムの識別に関する問題を修正 +* traefikチャートをv25.0.0にアップデート [(#8775)](https://github.com/k3s-io/k3s/pull/8775) +* レジストリ値を修正するためにtraefikをアップデート [(#8789)](https://github.com/k3s-io/k3s/pull/8789) + +----- +## リリース [v1.27.7+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.27.7+k3s1) + + +このリリースではKubernetesをv1.27.7に更新し、いくつかの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1276)をご覧ください。 + +### v1.27.6+k3s1からの変更点: + +* エラーレポートの修正 [(#8411)](https://github.com/k3s-io/k3s/pull/8411) +* flannelエラーにコンテキストを追加 [(#8419)](https://github.com/k3s-io/k3s/pull/8419) +* エラーメッセージにインターフェース名を含める [(#8435)](https://github.com/k3s-io/k3s/pull/8435) +* kube-routerをアップデート [(#8443)](https://github.com/k3s-io/k3s/pull/8443) +* tailscaleにextraArgsを追加 [(#8464)](https://github.com/k3s-io/k3s/pull/8464) +* サーバーフラグを使用しているときのクラスターリセット時にエラーを追加 [(#8455)](https://github.com/k3s-io/k3s/pull/8455) + * --serverフラグを使用して--cluster-resetを実行するとエラーが発生する +* 非ブートストラップノードからのクラスターリセット [(#8451)](https://github.com/k3s-io/k3s/pull/8451) +* 順序に基づくIPFamilyの優先順位を設定 [(#8504)](https://github.com/k3s-io/k3s/pull/8504) +* スペルチェックの問題を修正 [(#8509)](https://github.com/k3s-io/k3s/pull/8509) +* ネットワークのデフォルトが重複しているため、1つを削除 [(#8551)](https://github.com/k3s-io/k3s/pull/8551) +* アドバタイズアドレスの統合テスト [(#8516)](https://github.com/k3s-io/k3s/pull/8516) +* システムエージェントのプッシュタグ修正 [(#8569)](https://github.com/k3s-io/k3s/pull/8569) +* IPv4のみのノードの場合のtailscaleノードIPデュアルスタックモードを修正 [(#8558)](https://github.com/k3s-io/k3s/pull/8558) +* サーバートークンのローテーション [(#8576)](https://github.com/k3s-io/k3s/pull/8576) + * ユーザーは`k3s token rotate -t --new-token `を使用してサーバートークンをローテーションできるようになりました。コマンドが成功した後、すべてのサーバーノードは新しいトークンで再起動する必要があります。 +* E2Eドメインドローンクリーンアップ [(#8582)](https://github.com/k3s-io/k3s/pull/8582) +* クラスターリセット時に削除アノテーションをクリア [(#8587)](https://github.com/k3s-io/k3s/pull/8587) + * スナップショットが取得された時点で削除がキューに入っていた場合、クラスターリセット/リストア直後にk3sがetcdクラスターからメンバーを削除しようとする問題を修正 +* デュアルスタックで最初に構成されたIPがIPv6の場合に使用 [(#8597)](https://github.com/k3s-io/k3s/pull/8597) +* 2023-10リリースのバックポート [(#8615)](https://github.com/k3s-io/k3s/pull/8615) +* ビルドスクリプトでkube-routerパッケージを更新 [(#8634)](https://github.com/k3s-io/k3s/pull/8634) +* etcd専用/コントロールプレーン専用サーバーテストを追加し、コントロールプレーン専用サーバークラッシュを修正 [(#8642)](https://github.com/k3s-io/k3s/pull/8642) +* トークンローテーションログで`version.Program`を使用し、K3sを使用しない [(#8656)](https://github.com/k3s-io/k3s/pull/8656) +* Windowsエージェントサポート [(#8650)](https://github.com/k3s-io/k3s/pull/8650) +* CloudDualStackNodeIPsフィーチャーゲートの不整合を修正 [(#8669)](https://github.com/k3s-io/k3s/pull/8669) +* --image-service-endpointフラグを追加 (#8279) [(#8662)](https://github.com/k3s-io/k3s/pull/8662) + * 外部イメージサービスソケットを指定するための`--image-service-endpoint`フラグを追加 +* etcd修正のバックポート [(#8690)](https://github.com/k3s-io/k3s/pull/8690) + * etcdエンドポイントの自動同期を再有効化 + * ノードがスナップショットを調整していない場合にconfigmapの再キューを手動で行う +* v1.27.7およびGoをv1.20.10にアップデート [(#8681)](https://github.com/k3s-io/k3s/pull/8681) +* s3スナップショットのリストアを修正 [(#8733)](https://github.com/k3s-io/k3s/pull/8733) + +----- +## リリース [v1.27.6+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.27.6+k3s1) + + +このリリースではKubernetesをv1.27.6に更新し、いくつかの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1275)をご覧ください。 + +### v1.27.5+k3s1からの変更点: + +* kineをv0.10.3にバンプ [(#8324)](https://github.com/k3s-io/k3s/pull/8324) +* v1.27.6およびGoを1.20.8にアップデート [(#8356)](https://github.com/k3s-io/k3s/pull/8356) + * 組み込みcontainerdをv1.7.6にバンプ + * 組み込みstargz-snapshotterプラグインを最新にバンプ + * テスト環境セットアップスクリプトのレースコンディションによる断続的なドローンCIの失敗を修正 + * Kubernetes 1.28のAPIディスカバリー変更によるCIの失敗を修正 + +----- +## リリース [v1.27.5+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.27.5+k3s1) + +このリリースではKubernetesをv1.27.5に更新し、いくつかの問題を修正しました。 + +:::warning 重要 +このリリースには、K3sサーバーに対する潜在的なサービス拒否攻撃ベクトルであるCVE-2023-32187の修正が含まれています。詳細およびこの脆弱性に対するクラスターの強化に必要な必須手順については、https://github.com/k3s-io/k3s/security/advisories/GHSA-m4hf-6vgr-75r2 を参照してください。 +::: + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1274)をご覧ください。 + +### v1.27.4+k3s1からの変更点: + +* cniプラグインのバージョンをv1.3.0にアップデート [(#8056)](https://github.com/k3s-io/k3s/pull/8056) + * cni-pluginsをv1.3.0にアップグレード +* flannelをv0.22.1にアップデート [(#8057)](https://github.com/k3s-io/k3s/pull/8057) + * flannelをv0.22.1にアップデート +* secrets encryption v3に関するADR [(#7938)](https://github.com/k3s-io/k3s/pull/7938) +* MustFindStringのユニットテスト [(#8013)](https://github.com/k3s-io/k3s/pull/8013) +* etc/containerd/config.toml.tmplでベーステンプレートを使用するサポートを追加 [(#7991)](https://github.com/k3s-io/k3s/pull/7991) + * ユーザー提供のcontainerd設定テンプレートは、`{{ template "base" . }}`を使用してデフォルトのK3sテンプレート内容を含めることができるようになりました。これにより、ファイルに追加セクションを追加する必要がある場合にユーザー設定の維持が容易になります。 +* egress-selector-modeに基づいてapiserverのegress引数を条件付きにする [(#7972)](https://github.com/k3s-io/k3s/pull/7972) + * K3sは、エグレスプロキシがインクラスタエンドポイントへの接続をルーティングするために使用されていない場合、apiserverの`enable-aggregator-routing`フラグを有効にしなくなりました。 +* `docker/distribution`のセキュリティバンプ [(#8047)](https://github.com/k3s-io/k3s/pull/8047) +* coreosの複数インストールを修正 [(#8083)](https://github.com/k3s-io/k3s/pull/8083) +* 安定チャネルをv1.27.4+k3s1に更新 [(#8067)](https://github.com/k3s-io/k3s/pull/8067) +* tailscaleのIPモードに関するバグを修正 [(#8077)](https://github.com/k3s-io/k3s/pull/8077) +* CopyFile関数を統合 [(#8079)](https://github.com/k3s-io/k3s/pull/8079) +* E2E: より多くのテストのためのGOCOVERサポート + 修正 [(#8080)](https://github.com/k3s-io/k3s/pull/8080) +* terraform/README.mdのタイプ +* FilterCN関数を追加してSAN Stuffingを防止 [(#8085)](https://github.com/k3s-io/k3s/pull/8085) + * K3sの外部apiserverリスナーは、kubernetes apiserverサービス、サーバーノード、または--tls-sanオプションの値に関連付けられていないサブジェクト名を証明書に追加することを拒否するようになりました。これにより、証明書のSANリストが不要なエントリで埋められるのを防ぎます。 +* docker/dockerをマスターコミットにバンプ; cri-dockerdを0.3.4にバンプ [(#8092)](https://github.com/k3s-io/k3s/pull/8092) + * golangの最近のリリースがdockerクライアントから送信される無効なホストヘッダーを拒否することによって引き起こされたcri-dockerdの問題を修正するために、docker/dockerモジュールのバージョンをバンプしました。 +* etcd、containerd、runcのバージョンをバンプ [(#8109)](https://github.com/k3s-io/k3s/pull/8109) + * 組み込みのcontainerdをv1.7.3+k3s1に更新 + * 組み込みのruncをv1.1.8に更新 + * 組み込みのetcdをv3.5.9+k3s1に更新 +* ノード名が変更されたときのetcdスナップショットの保持 [(#8099)](https://github.com/k3s-io/k3s/pull/8099) +* kineをv0.10.2にバンプ [(#8125)](https://github.com/k3s-io/k3s/pull/8125) + * kineをv0.10.2に更新 +* terraformパッケージを削除 [(#8136)](https://github.com/k3s-io/k3s/pull/8136) +* etcd-snapshot削除の修正 (etcd-s3がtrueの場合) [(#8110)](https://github.com/k3s-io/k3s/pull/8110) +* --disable-cloud-controllerと--disable-kube-proxyテストを追加 [(#8018)](https://github.com/k3s-io/k3s/pull/8018) +* バージョンの検索にgrepの代わりに`go list -m`を使用 [(#8138)](https://github.com/k3s-io/k3s/pull/8138) +* テストでgrep go.modの代わりにVERSION_K8Sを使用 [(#8147)](https://github.com/k3s-io/k3s/pull/8147) +* Kubeflag統合テストの修正 [(#8154)](https://github.com/k3s-io/k3s/pull/8154) +* etcdスナップショットが無効な場合のs3からのクラスタリセットバックアップの修正 [(#8155)](https://github.com/k3s-io/k3s/pull/8155) +* 統合テストCIを並列で実行 [(#8156)](https://github.com/k3s-io/k3s/pull/8156) +* Trivyバージョンをバンプ [(#8150)](https://github.com/k3s-io/k3s/pull/8150) +* Trivyバージョンをバンプ [(#8178)](https://github.com/k3s-io/k3s/pull/8178) +* 日付に基づいて孤立したスナップショットを削除するためのetcd保持の修正 [(#8177)](https://github.com/k3s-io/k3s/pull/8177) +* dynamiclistenerをバンプ [(#8193)](https://github.com/k3s-io/k3s/pull/8193) + * etcd専用ノードでapiserver/supervisorリスナーがリクエストの提供を停止する可能性がある問題に対処するためにdynamiclistenerをバンプしました。 + * K3sの外部apiserver/supervisorリスナーは、TLSハンドシェイクで完全な証明書チェーンを送信するようになりました。 +* helm-controller/klipper-helmのバージョンをバンプ [(#8204)](https://github.com/k3s-io/k3s/pull/8204) + * バンドルされたhelmコントローラーのジョブイメージで使用される`helm`のバージョンをv3.12.3に更新しました。 +* E2E: `k3s token`のテストを追加 [(#8184)](https://github.com/k3s-io/k3s/pull/8184) +* flannelを0.22.2に移行 [(#8219)](https://github.com/k3s-io/k3s/pull/8219) + * flannelをv0.22.2に移行 +* v1.27.5に更新 [(#8236)](https://github.com/k3s-io/k3s/pull/8236) +* TLS SAN CNフィルタリングを有効にする新しいCLIフラグを追加 [(#8257)](https://github.com/k3s-io/k3s/pull/8257) + * 新しい`--tls-san-security`オプションを追加しました。このフラグはデフォルトでfalseですが、trueに設定すると、クライアントが要求する任意のホスト名を満たすためにサーバーのTLS証明書にSANを自動的に追加することを無効にできます。 +* アドレスコントローラーにRWMutexを追加 [(#8273)](https://github.com/k3s-io/k3s/pull/8273) + +----- +## リリース [v1.27.4+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.27.4+k3s1) + +このリリースはKubernetesをv1.27.4に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1273)を参照してください。 + +### v1.27.3+k3s1からの変更点: + +* Pkgが複数回インポートされる [(#7803)](https://github.com/k3s-io/k3s/pull/7803) +* K3sバイナリビルドオプションの高速化 [(#7805)](https://github.com/k3s-io/k3s/pull/7805) +* 安定チャネルをv1.27.3+k3s1に更新 [(#7827)](https://github.com/k3s-io/k3s/pull/7827) +* カスタムklipper helmイメージにCLIを追加 [(#7682)](https://github.com/k3s-io/k3s/pull/7682) + * デフォルトのhelm-controllerジョブイメージは、--helm-job-image CLIフラグでオーバーライドできるようになりました。 +* tailscaleを実行する際にipv4、ipv6、またはデュアルスタックかどうかを確認 [(#7838)](https://github.com/k3s-io/k3s/pull/7838) +* file_windows.goを削除 [(#7845)](https://github.com/k3s-io/k3s/pull/7845) +* CLIで指定されたk3sデータディレクトリの場所を追加 [(#7791)](https://github.com/k3s-io/k3s/pull/7791) +* e2eスタートアップの不安定なテストを修正 [(#7839)](https://github.com/k3s-io/k3s/pull/7839) +* helm-controllerでapiServerPortをカスタマイズできるようにする [(#7834)](https://github.com/k3s-io/k3s/pull/7834) +* ノードアイデンティティ認証が拒否された場合に基本/ベアラー認証にフォールバック [(#7836)](https://github.com/k3s-io/k3s/pull/7836) + * kubeadmスタイルのブートストラップトークンで参加したエージェントが、ノードオブジェクトが削除されたときにクラスターに再参加できない問題を解決しました。 +* コードスペルチェックを修正 [(#7858)](https://github.com/k3s-io/k3s/pull/7858) +* e2e s3テストを追加 [(#7833)](https://github.com/k3s-io/k3s/pull/7833) +* v1.28がreencrypt/prepareを非推奨にすることを警告 [(#7848)](https://github.com/k3s-io/k3s/pull/7848) +* Tailscaleの制御サーバーURLを設定するサポート [(#7807)](https://github.com/k3s-io/k3s/pull/7807) + * tailscaleを別のサーバー(例:headscale)に接続するサポート +* K3sリリースドキュメントの改善 [(#7864)](https://github.com/k3s-io/k3s/pull/7864) +* ルートレスノードのパスワードの場所を修正 [(#7887)](https://github.com/k3s-io/k3s/pull/7887) +* /tests/terraform内のgoogle.golang.org/grpcを1.51.0から1.53.0にバンプ [(#7879)](https://github.com/k3s-io/k3s/pull/7879) +* クローンステップのリトライを追加 [(#7862)](https://github.com/k3s-io/k3s/pull/7862) +* etcdが無効な場合、etcdの証明書とキーの生成をゲートする [(#6998)](https://github.com/k3s-io/k3s/pull/6998) +* apparmorプロファイルが強制されている場合、`check-config`でzgrepを使用しない [(#7939)](https://github.com/k3s-io/k3s/pull/7939) +* image_scan.shスクリプトを修正し、trivyバージョンをダウンロード [(#7950)](https://github.com/k3s-io/k3s/pull/7950) +* "v1.28がreencrypt/prepareを非推奨にすることを警告"をリバート [(#7977)](https://github.com/k3s-io/k3s/pull/7977) +* デフォルトのkubeconfigファイルの権限を調整 [(#7978)](https://github.com/k3s-io/k3s/pull/7978) +* リリースドキュメントでgoバージョンの更新コマンドを修正 [(#8028)](https://github.com/k3s-io/k3s/pull/8028) +* v1.27.4に更新 [(#8014)](https://github.com/k3s-io/k3s/pull/8014) + +----- +## リリース [v1.27.3+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.27.3+k3s1) + +このリリースはKubernetesをv1.27.3に更新し、多くの問題を修正します。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1272)を参照してください。 + +### v1.27.2+k3s1からの変更点: + +* flannelバージョンを更新 [(#7628)](https://github.com/k3s-io/k3s/pull/7628) + * flannelをv0.22.0に更新 +* el9 selinux rpmを追加 [(#7635)](https://github.com/k3s-io/k3s/pull/7635) +* チャネルを更新 [(#7634)](https://github.com/k3s-io/k3s/pull/7634) +* corednsオーバーライド拡張を許可 [(#7583)](https://github.com/k3s-io/k3s/pull/7583) + * `coredns-custom` ConfigMapは、`.:53`デフォルトサーバーブロックに`*.override`セクションを含めることができるようになりました。 +* klipper-lbをv0.4.4にバンプ [(#7617)](https://github.com/k3s-io/k3s/pull/7617) + * klipper-lbイメージをv0.4.4にバンプして、Service ExternalTrafficPolicyがLocalに設定されている場合にlocalhostからServiceLBポートにアクセスできない問題を解決しました。 +* metrics-serverをv0.6.3にバンプし、tls-cipher-suitesを更新 [(#7564)](https://github.com/k3s-io/k3s/pull/7564) + * バンドルされたmetrics-serverはv0.6.3にバンプされ、デフォルトで安全なTLS暗号のみを使用するようになりました。 +* supervisorおよびコアコントローラーに管理者kubeconfigを使用しない [(#7616)](https://github.com/k3s-io/k3s/pull/7616) + * K3sのコアコントローラー(supervisor、deploy、およびhelm)は、管理者kubeconfigを使用しなくなりました。これにより、アクセスおよび監査ログからシステムによって実行されたアクションと管理ユーザーによって実行されたアクションを区別しやすくなります。 +* golang:alpineイメージバージョンをバンプ [(#7619)](https://github.com/k3s-io/k3s/pull/7619) +* k3sをコンパイルする際にLBイメージを構成可能にする [(#7626)](https://github.com/k3s-io/k3s/pull/7626) +* プラグインインストールの修正を含むvagrant libvirtをバンプ [(#7605)](https://github.com/k3s-io/k3s/pull/7605) +* Makefileにフォーマットコマンドを追加 [(#7437)](https://github.com/k3s-io/k3s/pull/7437) +* fedora 38および39にel8 rpmを使用 [(#7664)](https://github.com/k3s-io/k3s/pull/7664) +* rpmターゲットとパッケージャーを決定するためにバージョンの前にバリアントを確認し、#7666をクローズ [(#7667)](https://github.com/k3s-io/k3s/pull/7667) +* E2Eテストのテストカバレッジレポート [(#7526)](https://github.com/k3s-io/k3s/pull/7526) +* シークレットを作成できない場合にノードパスワード検証をソフトフェイル [(#7655)](https://github.com/k3s-io/k3s/pull/7655) + * ノードがクラスターに参加する際にノードパスワードシークレットを作成できない場合でも、K3sはノードの参加を許可します。シークレットの作成はバックグラウンドで再試行されます。これにより、シークレット作成をブロックする失敗閉じる検証ウェブフックによって作成される可能性のあるデッドロックが解決されます。このウェブフックは、新しいノードがクラスターに参加してウェブフックポッドを実行するまで利用できません。 +* containerdのaufs/devmapper/zfsスナップショッタープラグインを有効にする [(#7661)](https://github.com/k3s-io/k3s/pull/7661) + * バンドルされたcontainerdのaufs/devmapper/zfsスナップショッタープラグインが復元されました。これらは、前のリリースでcontainerdをk3sマルチコールバイナリに戻す際に意図せず省略されました。 +* docker go.modをバンプ [(#7681)](https://github.com/k3s-io/k3s/pull/7681) +* バージョンまたはヘルプフラグでコマンドをショートサーキット [(#7683)](https://github.com/k3s-io/k3s/pull/7683) + * 非rootユーザーは、デフォルトの設定ファイルに対する権限エラーに遭遇することなく、`k3s --help`および`k3s --version`コマンドを呼び出すことができるようになりました。 +* Trivyバージョンをバンプ [(#7672)](https://github.com/k3s + * tailscale VPNのk3sへの統合 +* プライベートレジストリのエンドツーエンドテストを追加 [(#7653)](https://github.com/k3s-io/k3s/pull/7653) +* エンドツーエンド: 不要なdaemonsetの追加/削除を削除 [(#7696)](https://github.com/k3s-io/k3s/pull/7696) +* OS検証のためのissueテンプレートを追加 [(#7695)](https://github.com/k3s-io/k3s/pull/7695) +* スペルチェックを修正 [(#7740)](https://github.com/k3s-io/k3s/pull/7740) +* 無駄なlibvirt設定を削除 [(#7745)](https://github.com/k3s-io/k3s/pull/7745) +* create-namespaceサポートのためにhelm-controllerをv0.15.0にバンプ [(#7716)](https://github.com/k3s-io/k3s/pull/7716) + * 組み込みのhelmコントローラーがv0.15.0にバンプされ、チャートのターゲットネームスペースが存在しない場合に作成するサポートが追加されました。 +* tailscaleのエラーロギングを修正 [(#7776)](https://github.com/k3s-io/k3s/pull/7776) +* k3s-killall.shにtailscaleの広告ルートを削除するコマンドを追加 [(#7777)](https://github.com/k3s-io/k3s/pull/7777) +* Kubernetesをv1.27.3に更新 [(#7790)](https://github.com/k3s-io/k3s/pull/7790) + +----- +## リリース [v1.27.2+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.27.2+k3s1) + +このリリースではKubernetesをv1.27.2に更新し、多くの問題を修正しています。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1271)をご覧ください。 + +### v1.27.1+k3s1からの変更点: + +* klogの詳細度がlogrusと同じレベルに設定されることを保証 [(#7303)](https://github.com/k3s-io/k3s/pull/7303) +* スキーマを持つCRDを作成 [(#7308)](https://github.com/k3s-io/k3s/pull/7308) + * Addon、HelmChart、およびHelmChartConfig CRDが構造スキーマなしで作成され、これらのタイプのカスタムリソースが無効な内容で作成される問題を修正しました。 +* aarch64ページサイズ修正のためにk3s-rootをバンプ [(#7364)](https://github.com/k3s-io/k3s/pull/7364) + * K3sは再びページサイズが4kを超えるaarch64ノードをサポートします。 +* RuncとContainerdをバンプ [(#7339)](https://github.com/k3s-io/k3s/pull/7339) +* etc-snapshotサーバーフラグの統合テストを追加し、/tests/integration/integration.go/K3sStartServerをリファクタリング [(#7300)](https://github.com/k3s-io/k3s/pull/7300) +* traefikをv2.9.10 / チャート21.2.0にバンプ [(#7324)](https://github.com/k3s-io/k3s/pull/7324) + * パッケージされたTraefikバージョンがv2.9.10 / チャート21.2.0にバンプされました。 +* longhornストレージテストを追加 [(#6445)](https://github.com/k3s-io/k3s/pull/6445) +* CLIラッパーExecが失敗したときのエラーメッセージを改善 [(#7373)](https://github.com/k3s-io/k3s/pull/7373) + * K3sは、ファイルシステムが`noexec`でマウントされている場合に実行しようとすると、より意味のあるエラーを表示します。 +* `--disable-agent`および`--egress-selector-mode=pod|cluster`の問題を修正 [(#7331)](https://github.com/k3s-io/k3s/pull/7331) + * (実験的な) --disable-agentフラグで起動されたサーバーは、トンネル認証エージェントコンポーネントを実行しようとしなくなりました。 + * podおよびクラスタのegress-selectorモードが正しく動作しない問題を修正しました。 +* "too many learners"エラーでクラスタ参加を再試行 [(#7351)](https://github.com/k3s-io/k3s/pull/7351) + * K3sは、etcdから"too many learners"エラーを受け取ったときにクラスタ参加操作を再試行します。これは、複数のサーバーを同時に追加しようとしたときに最も頻繁に発生しました。 +* MemberListエラー処理と不正なetcd-argパススルーを修正 [(#7371)](https://github.com/k3s-io/k3s/pull/7371) + * K3sは、管理されたetcdノードを再起動するときにクラスタブートストラップデータを抽出するために使用される一時的なetcdにetcd-argsを正しくパススルーします。 + * K3sは、新しいサーバーが管理されたetcdクラスタに参加するときに現在のetcdクラスタメンバーリストを取得する際のエラーを適切に処理します。 +* Trivyバージョンをバンプ [(#7383)](https://github.com/k3s-io/k3s/pull/7383) +* StringSliceフラグで複数の引数を処理 [(#7380)](https://github.com/k3s-io/k3s/pull/7380) +* v1.27チャンネルを追加 [(#7387)](https://github.com/k3s-io/k3s/pull/7387) +* dotD設定ファイルを検索するためのFindStringを有効にする [(#7323)](https://github.com/k3s-io/k3s/pull/7323) +* netutilメソッドを/util/net.goに移行 [(#7422)](https://github.com/k3s-io/k3s/pull/7422) +* ローカルストレージ: パーミッションを修正 [(#7217)](https://github.com/k3s-io/k3s/pull/7217) +* cniプラグインをv1.2.0-k3s1にバンプ [(#7425)](https://github.com/k3s-io/k3s/pull/7425) + * バンドルされたCNIプラグインがv1.2.0-k3s1にアップグレードされました。バンドルには帯域幅とファイアウォールプラグインが含まれています。 +* dependabotラベルとレビュアーを追加 [(#7423)](https://github.com/k3s-io/k3s/pull/7423) +* エンドツーエンド: スタートアップテストのクリーンアップ + RunCommandの強化 [(#7388)](https://github.com/k3s-io/k3s/pull/7388) +* ブートストラップid/secret形式を使用するサーバートークンの検証に失敗 [(#7389)](https://github.com/k3s-io/k3s/pull/7389) + * K3sは、サーバートークンがブートストラップトークン`id.secret`形式を使用している場合に適切なエラーメッセージで終了します。 +* トークンスタートアップテストを修正 [(#7442)](https://github.com/k3s-io/k3s/pull/7442) +* kineをv0.10.1にバンプ [(#7414)](https://github.com/k3s-io/k3s/pull/7414) + * 組み込みのkineバージョンがv0.10.1にバンプされました。これにより、レガシーの`lib/pq`postgresドライバーが`pgx`に置き換えられます。 +* kube-*サーバーフラグの統合テストを追加 [(#7416)](https://github.com/k3s-io/k3s/pull/7416) +* `-cover` + 統合テストコードカバレッジのサポートを追加 [(#7415)](https://github.com/k3s-io/k3s/pull/7415) +* ポート名が使用されるときのバグを修正するためにkube-routerバージョンをバンプ [(#7454)](https://github.com/k3s-io/k3s/pull/7454) +* パスワードハッシュの比較に一貫して定数時間比較を使用 [(#7455)](https://github.com/k3s-io/k3s/pull/7455) +* containerdをv1.7.0にバンプし、マルチコールバイナリに戻す [(#7418)](https://github.com/k3s-io/k3s/pull/7418) + * 組み込みのcontainerdバージョンが`v1.7.0-k3s1`にバンプされ、リリースアーティファクトサイズの大幅な削減のためにメインのk3sバイナリに再統合されました。 +* PITSとGetdeck Beibootを採用者として追加、SchilleとMiwに感謝 [(#7524)](https://github.com/k3s-io/k3s/pull/7524) +* リポジトリアクセス/CAサポートのためにhelm-controllerバージョンをバンプ [(#7525)](https://github.com/k3s-io/k3s/pull/7525) + * 組み込みのHelmコントローラーは、Secretに保存された資格情報を介してチャートリポジトリに認証するサポート、およびConfigMapを介してリポジトリCAを渡すサポートを追加しました。 +* containerd/runcをv1.7.1-k3s1/v1.1.7にバンプ [(#7533)](https://github.com/k3s-io/k3s/pull/7533) + * バンドルされたcontainerdおよびruncバージョンがv1.7.1-k3s1/v1.1.7にバンプされました。 +* netpolからのエラーであることを示すエラーメッセージをラップ [(#7539)](https://github.com/k3s-io/k3s/pull/7539) +* 回転証明書チェックを追加し、エージェントを再起動する関数を削除 [(#7097)](https://github.com/k3s-io/k3s/pull/7097) +* /packageのalpineを3.17から3.18にバンプ [(#7550)](https://github.com/k3s-io/k3s/pull/7550) +* /conformanceのalpineを3.17から3.18にバンプ [(#7551)](https://github.com/k3s-io/k3s/pull/7551) +* 非アクティブなsystemdユニットに適用するための'-all'フラグを追加 [(#7567)](https://github.com/k3s-io/k3s/pull/7567) +* v1.27.2-k3s1に更新 [(#7575)](https://github.com/k3s-io/k3s/pull/7575) +* アップグレード中のiptablesルールのクリーンを修正 [(#7591)](https://github.com/k3s-io/k3s/pull/7591) +* emicklei/go-restfulをv3.9.0にピン [(#7597)](https://github.com/k3s-io/k3s/pull/7597) +* el9 selinux rpmを追加 [(#7443)](https://github.com/k3s-io/k3s/pull/7443) +* "Add el9 selinux rpm (#7443)"をリバート [(#7608)](https://github.com/k3s-io/k3s/pull/7608) + +----- +## リリース [v1.27.1+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.27.1+k3s1) + +このリリースはv1.27ラインのK3Sの最初のリリースです。このリリースではKubernetesをv1.27.1に更新します。 + +以前のリリースからアップグレードする前に、Kubernetesの[緊急アップグレードノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#urgent-upgrade-notes)を必ずお読みください。 + +### v1.26.4+k3s1からの変更点: + +* Kubernetes 1.27.1 [(#7271)](https://github.com/k3s-io/k3s/pull/7271) +* V1.27.1 CLI非推奨 [(#7311)](https://github.com/k3s-io/k3s/pull/7311) + * `--flannel-backed=wireguard`は完全に`--flannel-backend=wireguard-native`に置き換えられました。 + * `k3s etcd-snapshot`コマンドはヘルプメッセージを表示するようになり、スナップショットを保存するには次を使用します: `k3s etcd-snapshot save` + * 次のフラグは致命的なエラーを引き起こすようになりました(完全な削除はv1.28.0で行われます): + * `--flannel-backed=ipsec`: `--flannel-backend=wireguard-native`に置き換えられました [詳細はドキュメントを参照してください。](https://docs.k3s.io/installation/network-options#migrating-from-wireguard-or-ipsec-to-wireguard-native) + * 複数の`--flannel-backend`値を指定することは無効になりました。代わりに`--flannel-conf`を使用してください。 +* iptablesバイナリチェックのためのコマンド-vリダイレクションを変更 [(#7315)](https://github.com/k3s-io/k3s/pull/7315) +* 2023年4月のチャンネルサーバーを更新 [(#7327)](https://github.com/k3s-io/k3s/pull/7327) +* cri-dockerdをバンプ [(#7347)](https://github.com/k3s-io/k3s/pull/7347) +* ヘルプメッセージをクリーンアップ [(#7369)](https://github.com/k3s-io/k3s/pull/7369) + +----- \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.28.X.md b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.28.X.md new file mode 100644 index 000000000..28bda5645 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.28.X.md @@ -0,0 +1,413 @@ +--- +hide_table_of_contents: true +sidebar_position: 3 +--- + +# v1.28.X + +:::warning アップグレード通知 +以前のリリースからアップグレードする前に、Kubernetesの[緊急アップグレードノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#urgent-upgrade-notes)を必ずお読みください。 +::: + +| バージョン | リリース日 | Kubernetes | Kine | SQLite | Etcd | Containerd | Runc | Flannel | Metrics-server | Traefik | CoreDNS | Helm-controller | Local-path-provisioner | +| ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | +| [v1.28.11+k3s1](v1.28.X.md#release-v12811k3s1) | 2024年6月25日 | [v1.28.11](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#v12811) | [v0.11.9](https://github.com/k3s-io/kine/releases/tag/v0.11.9) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.13-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.13-k3s1) | [v1.7.17-k3s1.28](https://github.com/k3s-io/containerd/releases/tag/v1.7.17-k3s1.28) | [v1.1.12](https://github.com/opencontainers/runc/releases/tag/v1.1.12) | [v0.25.2](https://github.com/flannel-io/flannel/releases/tag/v0.25.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.7](https://github.com/traefik/traefik/releases/tag/v2.10.7) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.10](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.10) | [v0.0.27](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.27) | +| [v1.28.10+k3s1](v1.28.X.md#release-v12810k3s1) | 2024年5月22日 | [v1.28.10](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#v12810) | [v0.11.7](https://github.com/k3s-io/kine/releases/tag/v0.11.7) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.15-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.15-k3s1) | [v1.1.12-k3s1](https://github.com/opencontainers/runc/releases/tag/v1.1.12-k3s1) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.7](https://github.com/traefik/traefik/releases/tag/v2.10.7) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.9](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.9) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.28.9+k3s1](v1.28.X.md#release-v1289k3s1) | 2024年4月25日 | [v1.28.9](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#v1289) | [v0.11.7](https://github.com/k3s-io/kine/releases/tag/v0.11.7) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.15-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.15-k3s1) | [v1.1.12](https://github.com/opencontainers/runc/releases/tag/v1.1.12) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.7](https://github.com/traefik/traefik/releases/tag/v2.10.7) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.9](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.9) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.28.8+k3s1](v1.28.X.md#release-v1288k3s1) | 2024年3月25日 | [v1.28.8](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#v1288) | [v0.11.4](https://github.com/k3s-io/kine/releases/tag/v0.11.4) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2) | [v1.1.12-k3s1](https://github.com/opencontainers/runc/releases/tag/v1.1.12-k3s1) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.9](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.9) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.28.7+k3s1](v1.28.X.md#release-v1287k3s1) | 2024年2月29日 | [v1.28.7](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#v1287) | [v0.11.4](https://github.com/k3s-io/kine/releases/tag/v0.11.4) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2) | [v1.1.12-k3s1](https://github.com/k3s-io/runc/releases/tag/v1.1.12-k3s1) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.8](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.8) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.28.6+k3s2](v1.28.X.md#release-v1286k3s2) | 2024年2月6日 | [v1.28.6](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#v1286) | [v0.11.0](https://github.com/k3s-io/kine/releases/tag/v0.11.0) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2) | [v1.1.12-k3s1](https://github.com/opencontainers/runc/releases/tag/v1.1.12-k3s1) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.8](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.8) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.28.5+k3s1](v1.28.X.md#release-v1285k3s1) | 2023年12月27日 | [v1.28.5](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#v1285) | [v0.11.0](https://github.com/k3s-io/kine/releases/tag/v0.11.0) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2) | [v1.1.10](https://github.com/opencontainers/runc/releases/tag/v1.1.10) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.28.4+k3s2](v1.28.X.md#release-v1284k3s2) | 2023年12月6日 | [v1.28.4](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#v1284) | [v0.11.0](https://github.com/k3s-io/kine/releases/tag/v0.11.0) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.7-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.7-k3s1) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.28.3+k3s2](v1.28.X.md#release-v1283k3s2) | 2023年11月8日 | [v1.28.3](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#v1283) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.7-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.7-k3s1) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.28.3+k3s1](v1.28.X.md#release-v1283k3s1) | 2023年10月30日 | [v1.28.3](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#v1283) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.7-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.7-k3s1) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/fl +| [v1.28.2+k3s1](v1.28.X.md#release-v1282k3s1) | 2023年9月20日 | [v1.28.2](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#v1282) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.6-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.6-k3s1) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.28.1+k3s1](v1.28.X.md#release-v1281k3s1) | 2023年9月8日 | [v1.28.1](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#v1281) | [v0.10.3](https://github.com/k3s-io/kine/releases/tag/v0.10.3) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.3-k3s2](https://github.com/k3s-io/containerd/releases/tag/v1.7.3-k3s2) | [v1.1.8](https://github.com/opencontainers/runc/releases/tag/v1.1.8) | [v0.22.2](https://github.com/flannel-io/flannel/releases/tag/v0.22.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.9.10](https://github.com/traefik/traefik/releases/tag/v2.9.10) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | + +
+ +## リリース [v1.28.11+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.28.11+k3s1) + + +このリリースでは、Kubernetesをv1.28.11に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v12810)をご覧ください。 + +### v1.28.10+k3s1からの変更点: + +* 非推奨のruby関数を置き換え [(#10090)](https://github.com/k3s-io/k3s/pull/10090) +* ファイルによるtailscale設定使用時のバグ修正 [(#10144)](https://github.com/k3s-io/k3s/pull/10144) +* flannelバージョンをv0.25.2にバンプ [(#10221)](https://github.com/k3s-io/k3s/pull/10221) +* kube-routerバージョンをv2.1.2に更新 [(#10182)](https://github.com/k3s-io/k3s/pull/10182) +* tailscaleテストの改善とe2eテストに追加ログを追加 [(#10213)](https://github.com/k3s-io/k3s/pull/10213) +* 2024-06リリースサイクルのバックポート [(#10258)](https://github.com/k3s-io/k3s/pull/10258) + * WithSkipMissingを追加し、欠落しているブロブのインポートで失敗しないようにする + * cri-dockerdの固定ストリームサーバーバインドアドレスを使用 + * stargzをcriレジストリconfig_pathに切り替え + * containerdをv1.7.17、etcdをv3.5.13にバンプ + * spegelバージョンをバンプ + * dual-stackノード上のsingle-stackサービスのexternalTrafficPolicy: Localの問題を修正 + * ServiceLBはデフォルトでsvclbポッドのpriorityClassNameを`system-node-critical`に設定するようになりました。これは、`svccontroller.k3s.cattle.io/priorityclassname`アノテーションを使用してサービスごとに上書きできます。 + * minio-goをv7.0.70にバンプ + * ページネーションを修正するためにkineをv0.11.9にバンプ + * 有効なresolv confを更新 + * 欠落しているカーネル設定チェックを追加 + * Auto-Deploying Manifests (AddOns)をスキャンする際に、シンボリックリンクされたサブディレクトリが尊重されるようになりました + * バグ修正: helmコントローラーがオーナー参照を設定できるようにする + * tlsシークレットサポートのためにklipper-helmイメージをバンプ + * k3s-etcdインフォーマーが起動しない問題を修正 + * `--Enable-pprof`は、エージェントでデバッグ/pprofエンドポイントを有効にするために設定できるようになりました。設定すると、エージェントはスーパーバイザーポートでリッスンします。 + * `--Supervisor-metrics`は、サーバーで内部メトリクスをスーパーバイザーエンドポイントで提供するために設定できるようになりました。設定すると、エージェントはスーパーバイザーポートでリッスンします。 + * ノードが初期化されないまま汚染された場合のnetpolクラッシュを修正 + * すべてのサーバーがヘルスチェックに失敗して利用不可とマークされた場合、埋め込みロードバランサーはヘルスチェックを無視してすべてのサーバーを試みるようになりました。 +* 2024-06リリースサイクルのさらなるバックポート [(#10289)](https://github.com/k3s-io/k3s/pull/10289) +* スナップショット保持etcd-s3フォルダ修正を追加 [(#10315)](https://github.com/k3s-io/k3s/pull/10315) +* `isValidResolvConf`のテストを追加 (#10302) [(#10331)](https://github.com/k3s-io/k3s/pull/10331) +* ロードバランサーのnextServerでの競合状態パニックを修正 [(#10323)](https://github.com/k3s-io/k3s/pull/10323) +* タイポ修正、`rancher/permissions`を使用 [(#10299)](https://github.com/k3s-io/k3s/pull/10299) +* Kubernetesをv1.28.11に更新 [(#10347)](https://github.com/k3s-io/k3s/pull/10347) +* エージェントスーパーバイザーポートがapiserverポートを使用する問題を修正 [(#10355)](https://github.com/k3s-io/k3s/pull/10355) +* 複数の同時スナップショットが許可される問題を修正 [(#10377)](https://github.com/k3s-io/k3s/pull/10377) + +----- +## リリース [v1.28.10+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.28.10+k3s1) + + +このリリースでは、Kubernetesをv1.28.10に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1289)をご覧ください。 + +### v1.28.9+k3s1からの変更点: + +* E2E opensuse leapを15.6にバンプし、btrfsテストを修正 [(#10095)](https://github.com/k3s-io/k3s/pull/10095) +* Windowsの変更 [(#10114)](https://github.com/k3s-io/k3s/pull/10114) +* v1.28.10-k3s1に更新 [(#10098)](https://github.com/k3s-io/k3s/pull/10098) + +----- +## リリース [v1.28.9+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.28.9+k3s1) + + +このリリースでは、Kubernetesをv1.28.9に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1288)をご覧ください。 + +### v1.28.8+k3s1からの変更点: + +* kineがdisable apiserverまたはdisable etcdと一緒に使用される場合の新しいエラーを追加 [(#9804)](https://github.com/k3s-io/k3s/pull/9804) +* 古い固定依存関係を削除 [(#9827)](https://github.com/k3s-io/k3s/pull/9827) +* 非推奨のポインタライブラリからptrへの移行 [(#9824)](https://github.com/k3s-io/k3s/pull/9824) +* GolangキャッシングとE2E ubuntu 23.10 [(#9821)](https://github.com/k3s-io/k3s/pull/9821) +* kineのtlsを追加 [(#9849)](https://github.com/k3s-io/k3s/pull/9849) +* spegelをv0.0.20-k3s1にバンプ [(#9880)](https://github.com/k3s-io/k3s/pull/9880) +* 2024-04リリースサイクルのバックポート [(#9911)](https://github.com/k3s-io/k3s/pull/9911) + * メンバーリストを取得できない場合にエラーレスポンスを送信 + * k3sスタブクラウドプロバイダーは、kubeletの要求されたprovider-id、インスタンスタイプ、およびトポロジラベルを尊重するようになりました + * イメージが既にプルされている場合のエラーを修正 + * k3s dockerイメージに/etc/passwdと/etc/groupを追加 + * エージェントレスサーバーのetcdスナップショット調整を修正 + * ロードバランサーにヘルスチェックサポートを追加 + * 証明書の有効期限チェック、イベント、およびメトリクスを追加 + * デフォルトのレジストリエンドポイントの設定を渡す際のcontainerd hosts.tomlバグの回避策を追加 + * 回転リストにスーパーバイザー証明書/キーを追加 + * 埋め込みcontainerdをv1.7.15にバンプ + * 埋め込みcri-dockerdをv0.3.12にバンプ + * `k3s etcd-snapshot`コマンドは、一貫性を向上させるために再構築されました。すべてのスナップショット操作はサーバープロセスによって実行され、CLIは操作を開始し結果を報告するクライアントとして機能します。副作用として、スナップショットを管理する際のCLIのノイズが減少しました。 + * etcdロードバランサーの起動動作を改善 + * エージェント証明書の回転を実際に修正 + * Traefikをv2.10.7にバンプ + * Traefikポッドのアノテーションがデフォルトのチャート値で正しく設定されるようになりました + * system-default-registry値はRFC2732 IPv6リテラルをサポートするようになりました + * local-pathプロビジョナーは、デフォルトで`local`ボリュームを作成するようになり、`hostPath`ではなくなりました +* LPPがヘルパーログを読み取れるようにする [(#9938)](https://github.com/k3s-io/k3s/pull/9938) +* kube-routerをv2.1.0に更新 [(#9942)](https://github.com/k3s-io/k3s/pull/9942) +* v1.28.9-k3s1およびGo 1.21.9に更新 [(#9959)](https://github.com/k3s-io/k3s/pull/9959) +* オンデマンドスナップショットのタイムアウトを修正; フォルダを尊重しない [(#9994)](https://github.com/k3s-io/k3s/pull/9994) +* /db/infoをlocalhostから匿名で利用可能にする [(#10002)](https://github.com/k3s-io/k3s/pull/10002) + +----- +## リリース [v1.28.8+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.28.8+k3s1) + + +このリリースでは、Kubernetesをv1.28.8に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1287)をご覧ください。 + +### v1.28.7+k3s1からの変更点: + +* flannel-backend=noneの統合テストを追加 [(#9608)](https://github.com/k3s-io/k3s/pull/9608) +* インストールおよびユニットテストのバックポート [(#9641)](https://github.com/k3s-io/k3s/pull/9641) +* klipper-lbイメージバージョンを更新 [(#9605)](https://github.com/k3s-io/k3s/pull/9605) +* Chore(deps): CVE-2023-45142 CVE-2023-48795の修正 [(#9647)](https://github.com/k3s-io/k3s/pull/9647) +* 設定されたclusterCIDRに基づいて最初のnode-ipを調整 [(#9631)](https://github.com/k3s-io/k3s/pull/9631) +* tailscale e2eテストの改善 [(#9653)](https://github.com/k3s-io/k3s/pull/9653) +* 2024-03リリースサイクルのバックポート [(#9669)](https://github.com/k3s-io/k3s/pull/9669) + * 修正: 正しいwasmシム名を使用 + * 埋め込みflannel cni-pluginバイナリは、他のcniプラグインおよび埋め込みflannelコントローラーとは別にビルドおよびバージョン管理されるようになりました + * spegelをv0.0.18-k3s3にバンプ + * ワイルドカードレジストリサポートを追加 + * containerdの起動を待つ間の過剰なCPU使用率の問題を修 + * スナップショットプルーンの修正 + * etcdノード名にホスト名が欠けている問題の修正 + * ルートレスモードでも、ルートフルモードのUXに合わせて、LoadBalancerタイプのサービスnodePortをホストにバインドする必要があります。 + * `check-config`サブコマンドの生出力を有効にするには、NO_COLOR=1を設定できます。 + * レジストリ処理の追加のコーナーケースの修正 + * metrics-serverをv0.7.0にバンプ + * K3sは、レジストリのミラーエンドポイントリストに重複するエントリがある場合に警告を出し、抑制するようになりました。Containerdは、単一の上流レジストリのミラーとして同じエンドポイントを複数回リストすることをサポートしていません。 +* DockerとE2Eテストのバックポート [(#9707)](https://github.com/k3s-io/k3s/pull/9707) +* ワイルドカードエントリの上流フォールバックの修正 [(#9733)](https://github.com/k3s-io/k3s/pull/9733) +* v1.28.8-k3s1およびGo 1.21.8へのアップデート [(#9746)](https://github.com/k3s-io/k3s/pull/9746) + +----- +## リリース [v1.28.7+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.28.7+k3s1) + + +このリリースでは、Kubernetesをv1.28.7に更新し、いくつかの問題を修正しています。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1286)をご覧ください。 + +### v1.28.6+k3s2以降の変更点: + +* 雑務: Local Path Provisionerのバージョンをバンプ [(#9426)](https://github.com/k3s-io/k3s/pull/9426) +* cri-dockerdをバンプしてDocker Engine 25との互換性を修正 [(#9293)](https://github.com/k3s-io/k3s/pull/9293) +* 自動依存関係バンプ [(#9419)](https://github.com/k3s-io/k3s/pull/9419) +* exec.LookPathを使用したランタイムのリファクタリング [(#9431)](https://github.com/k3s-io/k3s/pull/9431) + * ランタイムを含むディレクトリは、効果的なランタイム検出のために$PATH環境変数に含める必要があります。 +* etcd条件でlastHeartBeatTimeの動作を変更 [(#9424)](https://github.com/k3s-io/k3s/pull/9424) +* Flannel v0.24.2にバンプ + multiclustercidrを削除 [(#9401)](https://github.com/k3s-io/k3s/pull/9401) +* コンテナdとDockerの動作を定義するためのエグゼキュータを許可 [(#9254)](https://github.com/k3s-io/k3s/pull/9254) +* Kube-routerをv2.0.1にアップデート [(#9404)](https://github.com/k3s-io/k3s/pull/9404) +* 2024-02リリースサイクルのバックポート [(#9462)](https://github.com/k3s-io/k3s/pull/9462) +* より長いHTTPタイムアウトリクエストを有効にする [(#9444)](https://github.com/k3s-io/k3s/pull/9444) +* Test_UnitApplyContainerdQoSClassConfigFileIfPresent [(#9440)](https://github.com/k3s-io/k3s/pull/9440) +* PRテストインストールのサポート [(#9469)](https://github.com/k3s-io/k3s/pull/9469) +* Kubernetesをv1.28.7にアップデート [(#9492)](https://github.com/k3s-io/k3s/pull/9492) +* arm用のドローン公開を修正 [(#9508)](https://github.com/k3s-io/k3s/pull/9508) +* 失敗するドローンステップを削除 [(#9516)](https://github.com/k3s-io/k3s/pull/9516) +* エージェントの起動関数の元の順序を復元 [(#9545)](https://github.com/k3s-io/k3s/pull/9545) +* flannelが無効な場合のnetpol起動を修正 [(#9578)](https://github.com/k3s-io/k3s/pull/9578) + +----- +## リリース [v1.28.6+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.28.6+k3s2) + + +このリリースでは、Kubernetesをv1.28.6に更新し、いくつかの問題を修正しています。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1285)をご覧ください。 + +**重要な注意事項** + +runcのCVE: [CVE-2024-21626](https://nvd.nist.gov/vuln/detail/CVE-2024-21626)に対処するため、runcをv1.1.12に更新しました。 + +### v1.28.5+k3s1以降の変更点: + +* secrets-encryptノードの注釈を更新する際のリトライを追加 [(#9125)](https://github.com/k3s-io/k3s/pull/9125) +* netpolコントローラーを開始する前にノードのtaintがなくなるのを待つ [(#9175)](https://github.com/k3s-io/k3s/pull/9175) +* Etcd条件 [(#9181)](https://github.com/k3s-io/k3s/pull/9181) +* 2024-01のバックポート [(#9203)](https://github.com/k3s-io/k3s/pull/9203) +* 依存関係チェーンが欠けているため、opaバージョンをピン留め [(#9216)](https://github.com/k3s-io/k3s/pull/9216) +* エージェントロードバランサーのためのenv *_PROXY変数のサポートを追加 [(#9206)](https://github.com/k3s-io/k3s/pull/9206) +* Etcdノードがnil [(#9228)](https://github.com/k3s-io/k3s/pull/9228) +* v1.28.6およびGo 1.20.13にアップデート [(#9260)](https://github.com/k3s-io/k3s/pull/9260) +* デュアルスタックkube-dnsのために`ipFamilyPolicy: RequireDualStack`を使用 [(#9269)](https://github.com/k3s-io/k3s/pull/9269) +* 2024-01 k3s2のバックポート [(#9336)](https://github.com/k3s-io/k3s/pull/9336) + * runcをv1.1.12に、helm-controllerをv0.15.7にバンプ + * registries.yamlでエンドポイントアドレスとしてベアホスト名またはIPを処理する際の修正 +* ChartContentの問題を修正するためにhelm-controllerをバンプ [(#9346)](https://github.com/k3s-io/k3s/pull/9346) + +----- +## リリース [v1.28.5+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.28.5+k3s1) + + +このリリースでは、Kubernetesをv1.28.5に更新し、いくつかの問題を修正しています。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1284)をご覧ください。 + +### v1.28.4+k3s1以降の変更点: + +* ランナーが無効になっているため、s390xステップを一時的に削除 [(#8983)](https://github.com/k3s-io/k3s/pull/8983) +* マニフェストからs390xを削除 [(#8998)](https://github.com/k3s-io/k3s/pull/8998) +* アドレス範囲の重複を修正 [(#8913)](https://github.com/k3s-io/k3s/pull/8913) +* CONTRIBUTING.mdガイドの修正 [(#8954)](https://github.com/k3s-io/k3s/pull/8954) +* 2023年11月の安定チャネルアップデート [(#9022)](https://github.com/k3s-io/k3s/pull/9022) +* wasm/nvidia/crunのデフォルトランタイムとランタイムクラス [(#8936)](https://github.com/k3s-io/k3s/pull/8936) + * wasm/nvidia/crunのランタイムクラスを追加 + * containerdのデフォルトランタイムフラグを追加 +* containerd/runcをv1.7.10-k3s1/v1.1.10にバンプ [(#8962)](https://github.com/k3s-io/k3s/pull/8962) +* サーバーでデフォルトランタイムを設定できるようにする [(#9027)](https://github.com/k3s-io/k3s/pull/9027) +* containerdをv1.7.11にバンプ [(#9040)](https://github.com/k3s-io/k3s/pull/9040) +* v1.28.5-k3s1にアップデート [(#9081)](https://github.com/k3s-io/k3s/pull/9081) + +----- +## リリース [v1.28.4+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.28.4+k3s2) + + +このリリースでは、Kubernetesをv1.28.4に更新し、いくつかの問題を修正しています。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1283)をご覧ください。 + +### v1.28.3+k3s2以降の変更点: + +* 最新チャネルをv1.27.7+k3s2に更新 [(#8799)](https://github.com/k3s-io/k3s/pull/8799) +* etcdステータス条件を追加 [(#8724)](https://github.com/k3s-io/k3s/pull/8724) + * ユーザーは各ノードから簡単にetcdステータスを確認できるようになりました +* etcdステータスのADR [(#8355)](https://github.com/k3s-io/k3s/pull/8355) +* Wasmシムの検出 [(#8751)](https://github.com/k3s-io/k3s/pull/8751) + * WebAssemblyランタイムの自動検出 +* multiclustercidrフラグの削除に関する警告を追加 [(#8758)](https://github.com/k3s-io/k3s/pull/8758) +* デュアルスタックログの改善 [(#8798)](https://github.com/k3s-io/k3s/pull/8798) +* Dockerfileの簡素化とクリーンアップの最適化 [(#8244)](https://github.com/k3s-io/k3s/pull/8244) +* タイムゾーン情報をイメージに追加 [(#8764)](https://github.com/k3s-io/k3s/pull/8764) + * Dockerイメージに新しいタイムゾーン情報を追加し、CronJobsで`spec.timeZone`を使用できるようにしました +* kineをバンプしてnats、postgres、およびwatchの問題を修正 [(#8778)](https://github.com/k3s-io/k3s/pull/8778) + * kineをv0.11.0にバンプして、postgresとNATSの問題を解決し、重負荷下でのwatchチャネルのパフォーマンスを向上させ、リファレンス実装との互換性を改善しました。 +* QoSクラスのリソース構成 [(#8726)](https://github.com/k3s-io/k3s/pull/8726) + * Containerdは、`rdt_config.yaml`または`blockio_config.yaml`ファイルを定義することで、rdtまたはblockio構成を使用するように設定できます。 +* エージェントフラグdisable-apiserver-lbを追加 [(#8717)](https://github.com/k3s-io/k3s/pull/8717) + * エージェントフラグdisable-apiserver-lbを追加し、エージェントがロードバランスプロキシを開始しないようにします。 +* NFSマウントの強制アンマウント(longhornなど) [(#8521)](https://github.com/k3s-io/k3s/pull/8521) +* READMEの一般的な更新 [(#8786)](https://github.com/k3s-io/k3s/pull/8786) +* インストールスクリプトのrestoreconからの誤った警告を修正 [(#8871)](https://github.com/k3s-io/k3s/pull/8871) +* スナップショットメタデータconfigmapの問題を修正 [(#8835)](https://github.com/k3s-io/k3s/pull/8835) + * 追加のメタデータがないスナップショットのconfigmapエントリを省略 +* クラスタリセット中の初期データストア調整をスキップ [(#8861)](https://github.com/k3s-io/k3s/pull/8861) +* ServiceLBのingress IPの順序を調整 [(#8711)](https://github.com/k3s-io/k3s/pull/8711) + * ServiceLBからのingress IPの順序を改善 +* disable-helm-controllerのためのhelm CRDインストールを無効化 [(#8702)](https://github.com/k3s-io/k3s/pull/8702) +* K3sパッチリリースドキュメントのさらなる改善 [(#8800)](https://github.com/k3s-io/k3s/pull/8800) +* install.shのsha256sumを更新 [(#8885)](https://github.com/k3s-io/k3s/pull/8885) +* サーバーの起動時にクライアント構成のリトライにジッターを追加して、サーバーが起動しているときにハンマーリングを避ける [(#8863)](https://github.com/k3s-io/k3s/pull/8863) +* etcdでランタイムコアが準備できていないときのnilポインタを処理 [(#8886)](https://github.com/k3s-io/k3s/pull/8886) +* dynamiclistenerをバンプして、スナップショットコントローラーログのスプーを減少 [(#8894)](https://github.com/k3s-io/k3s/pull/8894) + * サーバーがKubernetesシークレットに証明書を同期できないレースコンディションに対処するためにdynamiclistenerをバンプ + * 初期クラスタ起動時のetcdスナップショットログスパムを減少 +* e2eステップのdepends_onを削除; cert rotate e2eを修正 [(#8906)](https://github.com/k3s-io/k3s/pull/8906) +* etcdスナップショットのS3問題を修正 [(#8926)](https://github.com/k3s-io/k3s/pull/8926) + * S3クライアントの初期化に失敗した場合、S3保持を適用しない + * S3スナップショットをリストする際にメタデータを要求しない + * スナップショットメタデータのログメッセージにファイルパスの代わり +## リリース [v1.28.3+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.28.3+k3s2) + + +このリリースでは、Kubernetesをv1.28.3に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1283)をご覧ください。 + +### v1.28.3+k3s1からの変更点: + +* selinuxコンテキストのsystemdユニットファイルを復元 [(#8593)](https://github.com/k3s-io/k3s/pull/8593) +* チャンネルをv1.27.7+k3s1に更新 [(#8753)](https://github.com/k3s-io/k3s/pull/8753) +* Sonobuoyのバージョンをバンプ [(#8710)](https://github.com/k3s-io/k3s/pull/8710) +* Trivyのバージョンをバンプ [(#8739)](https://github.com/k3s-io/k3s/pull/8739) +* 修正: 外部スコープの.SystemdCgroupにアクセス [(#8761)](https://github.com/k3s-io/k3s/pull/8761) + * nvidia-container-runtimeでの起動失敗を修正 +* traefikチャートをv25.0.0にアップグレード [(#8771)](https://github.com/k3s-io/k3s/pull/8771) +* レジストリ値を修正するためにtraefikを更新 [(#8792)](https://github.com/k3s-io/k3s/pull/8792) +* ルールが破損する場合はiptables-save/iptables-restoreを使用しない [(#8795)](https://github.com/k3s-io/k3s/pull/8795) + +----- +## リリース [v1.28.3+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.28.3+k3s1) + + +このリリースでは、Kubernetesをv1.28.3に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1282)をご覧ください。 + +### v1.28.2+k3s1からの変更点: + +* エラーレポートの修正 [(#8250)](https://github.com/k3s-io/k3s/pull/8250) +* flannelエラーにコンテキストを追加 [(#8284)](https://github.com/k3s-io/k3s/pull/8284) +* チャンネルを更新、9月のパッチリリース [(#8397)](https://github.com/k3s-io/k3s/pull/8397) +* ドキュメントにdroneへのリンクを追加 [(#8295)](https://github.com/k3s-io/k3s/pull/8295) +* エラーメッセージにインターフェース名を含める [(#8346)](https://github.com/k3s-io/k3s/pull/8346) +* vpnプロバイダーにextraArgsを追加 [(#8354)](https://github.com/k3s-io/k3s/pull/8354) + * vpnプロバイダーに追加の引数を渡すことが可能に +* メインのetcdクライアントポートでHTTPを無効にする [(#8402)](https://github.com/k3s-io/k3s/pull/8402) + * 組み込みetcdはクライアントポートでhttpリクエストを提供しなくなり、grpcのみとなります。これにより、負荷がかかった場合のウォッチストリームの飢餓状態を引き起こす可能性のあるパフォーマンス問題が解決されます。詳細はhttps://github.com/etcd-io/etcd/issues/15402をご覧ください。 +* サーバートークンのローテーション [(#8215)](https://github.com/k3s-io/k3s/pull/8215) +* リセット後のetcdメンバー削除の問題を修正 [(#8392)](https://github.com/k3s-io/k3s/pull/8392) + * スナップショットが撮影された時点で削除がキューに入っていた場合、クラスタリセット/リストア直後にk3sがetcdクラスタからメンバーを削除しようとする問題を修正しました。 +* gofmtエラーを修正 [(#8439)](https://github.com/k3s-io/k3s/pull/8439) +* 広告アドレスの統合テストを追加 [(#8344)](https://github.com/k3s-io/k3s/pull/8344) +* スナップショットリストア時の非ブートストラップノードからのクラスタリセットe2eテストを追加 [(#8292)](https://github.com/k3s-io/k3s/pull/8292) +* .githubの正規表現を修正してghアクションのバンプ時にdroneの実行をスキップ [(#8433)](https://github.com/k3s-io/k3s/pull/8433) +* --serverフラグ使用時のクラスタリセットエラーを追加 [(#8385)](https://github.com/k3s-io/k3s/pull/8385) + * --cluster-resetと--serverフラグを同時に使用した場合、ユーザーにエラーが表示されます。 +* kube-routerを更新 [(#8423)](https://github.com/k3s-io/k3s/pull/8423) + * パフォーマンス問題を修正するためにkube-routerをv2.0.0-rc7に更新 +* インストールスクリプトのSHA256署名を追加 [(#8312)](https://github.com/k3s-io/k3s/pull/8312) + * インストールスクリプトのSHA256署名を追加。 +* --image-service-endpointフラグを追加 [(#8279)](https://github.com/k3s-io/k3s/pull/8279) + * 外部イメージサービスソケットを指定するための`--image-service-endpoint`フラグを追加。 +* ホームディレクトリのアセットを無視しないように修正 [(#8458)](https://github.com/k3s-io/k3s/pull/8458) +* SystemdCgroup設定をnvidiaランタイムオプションに渡す [(#8470)](https://github.com/k3s-io/k3s/pull/8470) + * 新しいバージョンのnvidia-container-toolkitを使用する際に、nvidiaコンテナランタイムを使用するポッドが数秒後に終了する問題を修正。 +* リリースドキュメントの改善 - 更新 [(#8414)](https://github.com/k3s-io/k3s/pull/8414) +* IPFamilyの優先順位を順序に基づいて設定 [(#8460)](https://github.com/k3s-io/k3s/pull/8460) +* スペルチェックの問題を修正 [(#8507)](https://github.com/k3s-io/k3s/pull/8507) +* ネットワークのデフォルトが重複しているため、1つを削除 [(#8523)](https://github.com/k3s-io/k3s/pull/8523) +* selinuxのためのslemicroチェックを修正 [(#8526)](https://github.com/k3s-io/k3s/pull/8526) +* install.sh.sha256sumを更新 [(#8566)](https://github.com/k3s-io/k3s/pull/8566) +* システムエージェントのプッシュタグを修正 [(#8568)](https://github.com/k3s-io/k3s/pull/8568) +* IPv4のみのノードでのtailscaleノードIPデュアルスタックモードを修正 [(#8524)](https://github.com/k3s-io/k3s/pull/8524) +* サーバートークンのローテーション [(#8265)](https://github.com/k3s-io/k3s/pull/8265) + * ユーザーは`k3s token rotate -t --new-token `を使用してサーバートークンをローテーションできます。コマンドが成功した後、すべてのサーバーノードは新しいトークンで再起動する必要があります。 +* E2Eドメインドローンクリーンアップ [(#8579)](https://github.com/k3s-io/k3s/pull/8579) +* containerdをv1.7.7-k3s1にバンプ [(#8604)](https://github.com/k3s-io/k3s/pull/8604) +* busyboxをv1.36.1にバンプ [(#8602)](https://github.com/k3s-io/k3s/pull/8602) +* etcdスナップショットメタデータを保存するためにカスタムリソースを使用するように移行 [(#8064)](https://github.com/k3s-io/k3s/pull/8064) +* ビルドターゲットをmain.goからパッケージに変更 [(#8342)](https://github.com/k3s-io/k3s/pull/8342) +* デュアルスタックで最初に設定されたIPがIPv6の場合に使用 [(#8581)](https://github.com/k3s-io/k3s/pull/8581) +* traefik、golang.org/x/net、google.golang.org/grpcをバンプ [(#8624)](https://github.com/k3s-io/k3s/pull/8624) +* ビルドスクリプトでkube-routerパッケージを更新 [(#8630)](https://github.com/k3s-io/k3s/pull/8630) +* etcd専用/コントロールプレーン専用サーバーテストを追加し、コントロールプレーン専用サーバークラッシュを修正 [(#8638)](https://github.com/k3s-io/k3s/pull/8638) +* トークンローテーションログで`version.Program`を使用し、K3sを使用しない [(#8653)](https://github.com/k3s-io/k3s/pull/8653) +* [Windowsポート [(#7259)](https://github.com/k3s-io/k3s/pull/7259) +* CloudDualStackNodeIPsフィーチャーゲートの不整合を修正 [(#8667)](https://github.com/k3s-io/k3s/pull/8667) +* etcdエンドポイントの自動同期を再有効化 [(#8675)](https://github.com/k3s-io/k3s/pull/8675) +* ノードがスナップショットを調整していない場合にconfigmapの再調整を手動で再キュー [(#8683)](https://github.com/k3s-io/k3s/pull/8683) +* v1.28.3およびGoをv1.20.10に更新 [(#8682)](https://github.com/k3s-io/k3s/pull/8682) +* s3スナップショットリストアを修正 [(#8729)](https://github.com/k3s-io/k3s/pull/8729) + +----- +## リリース [v1.28.2+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.28.2+k3s1) + + +このリリースでは、Kubernetesをv1.28.2に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1281)をご覧ください。 + +### v1.28.1+k3s1からの変更点: + +* バージョンv1.28のチャンネルを更新 [(#8305)](https://github.com/k3s-io/k3s/pull/8305) +* kineをv0.10.3にバンプ [(#8323)](https://github.com/k3s-io/k3s/pull/8323) +* v1.28.2およびgo v1.20.8に更新 [(#8364)](https://github.com/k3s-io/k3s/pull/8364) + * 組み込みcontainerdをv1.7.6にバンプ + * 組み込みstargz-snapshotterプラグインを最新にバンプ + * テスト環境セットアップスクリプトの競合状態による断続的なdrone CIの失敗を修正 + * Kubernetes 1.28のAPIディスカバリ変更によるCIの失敗を修正 + +----- +## リリース [v1.28.1+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.28.1+k3s1) + +このリリースは、v1.28ラインにおけるK3Sの最初のリリースです。このリリースでは、Kubernetesをv1.28.1に更新します。 + +:::warning 重要 +このリリースには、K3sサーバーに対する潜在的なサービス拒否攻撃ベクトルであるCVE-2023-32187の修正が含まれています。詳細については、https://github.com/k3s-io/k3s/security/advisories/GHSA-m4hf-6vgr-75r2をご覧ください。この脆弱性に対するクラスターの強化に関するドキュメントも含まれています。 +::: + +:::danger 重大なリグレッション +Kubernetes v1.28には、ノードの再起動後にinitコンテナがアプリコンテナと同時に実行される重大なリグレッション([kubernetes/kubernetes#120247](https://github.com/kubernetes/kubernetes/issues/120247))が含まれています。この問題はv1.28.2で修正されます。initコンテナに依存するアプリケーションを使用している場合、現時点でK3s v1.28の使用は推奨しません。 +::: + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1270)をご覧ください。 + +### v1.27.5+k3s1からの変更点: + +* v1.28.1に更新 [(#8239)](https://github.com/k3s-io/k3s/pull/8239) +* v1.28.0のCLI削除 [(#8203)](https://github.com/k3s-io/k3s/pull/8203) +* Secrets Encryption V3 [(#8111)](https://github.com/k3s-io/k3s/pull/8111) +* TLS SAN CNフィルタリングを無効にする新しいCLIフラグを追加 [(#8252)](https://github.com/k3s-io/k3s/pull/8252) + * 新しい`--tls-san-security`オプションを追加。 +* アドレスコントローラーにRWMutexを追加 [(#8268)](https://github.com/k3s-io/k3s/pull/8268) + +----- \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.29.X.md b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.29.X.md new file mode 100644 index 000000000..2ce116d4e --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.29.X.md @@ -0,0 +1,327 @@ +--- +hide_table_of_contents: true +sidebar_position: 2 +--- + +# v1.29.X + +:::warning アップグレード通知 +以前のリリースからアップグレードする前に、Kubernetesの[緊急アップグレードノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#urgent-upgrade-notes)を必ずお読みください。 +::: + +| バージョン | リリース日 | Kubernetes | Kine | SQLite | Etcd | Containerd | Runc | Flannel | Metrics-server | Traefik | CoreDNS | Helm-controller | Local-path-provisioner | +| ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | +| [v1.29.6+k3s1](v1.29.X.md#release-v1296k3s1) | 2024年6月25日 | [v1.29.6](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#v1296) | [v0.11.9](https://github.com/k3s-io/kine/releases/tag/v0.11.9) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.13-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.13-k3s1) | [v1.7.17-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.17-k3s1) | [v1.1.12](https://github.com/opencontainers/runc/releases/tag/v1.1.12) | [v0.25.2](https://github.com/flannel-io/flannel/releases/tag/v0.25.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.7](https://github.com/traefik/traefik/releases/tag/v2.10.7) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.10](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.10) | [v0.0.27](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.27) | +| [v1.29.5+k3s1](v1.29.X.md#release-v1295k3s1) | 2024年5月22日 | [v1.29.5](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#v1295) | [v0.11.7](https://github.com/k3s-io/kine/releases/tag/v0.11.7) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.15-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.15-k3s1) | [v1.1.12-k3s1](https://github.com/opencontainers/runc/releases/tag/v1.1.12-k3s1) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.7](https://github.com/traefik/traefik/releases/tag/v2.10.7) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.9](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.9) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.29.4+k3s1](v1.29.X.md#release-v1294k3s1) | 2024年4月25日 | [v1.29.4](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#v1294) | [v0.11.7](https://github.com/k3s-io/kine/releases/tag/v0.11.7) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.15-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.15-k3s1) | [v1.1.12](https://github.com/opencontainers/runc/releases/tag/v1.1.12) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.7](https://github.com/traefik/traefik/releases/tag/v2.10.7) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.9](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.9) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.29.3+k3s1](v1.29.X.md#release-v1293k3s1) | 2024年3月25日 | [v1.29.3](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#v1293) | [v0.11.4](https://github.com/k3s-io/kine/releases/tag/v0.11.4) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2) | [v1.1.12-k3s1](https://github.com/opencontainers/runc/releases/tag/v1.1.12-k3s1) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.9](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.9) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.29.2+k3s1](v1.29.X.md#release-v1292k3s1) | 2024年2月29日 | [v1.29.2](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#v1292) | [v0.11.4](https://github.com/k3s-io/kine/releases/tag/v0.11.4) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2) | [v1.1.12-k3s1](https://github.com/k3s-io/runc/releases/tag/v1.1.12-k3s1) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.8](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.8) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.29.1+k3s2](v1.29.X.md#release-v1291k3s2) | 2024年2月6日 | [v1.29.1](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#v1291) | [v0.11.0](https://github.com/k3s-io/kine/releases/tag/v0.11.0) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2) | [v1.1.12-k3s1](https://github.com/opencontainers/runc/releases/tag/v1.1.12-k3s1) | [v0.24.0](https://github.com/flannel-io/flannel/releases/tag/v0.24.0) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.8](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.8) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | +| [v1.29.0+k3s1](v1.29.X.md#release-v1290k3s1) | 2023年12月22日 | [v1.29.0](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#v1290) | [v0.11.0](https://github.com/k3s-io/kine/releases/tag/v0.11.0) | [3.42.0](https://sqlite.org/releaselog/3_42_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.11-k3s2](https://github.com/k3s-io/containerd/releases/tag/v1.7.11-k3s2) | [v1.1.10](https://github.com/opencontainers/runc/releases/tag/v1.1.10) | [v0.24.0](https://github.com/flannel-io/flannel/releases/tag/v0.24.0) | [v0.6.3](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.3) | [v2.10.5](https://github.com/traefik/traefik/releases/tag/v2.10.5) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.15.4](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.4) | [v0.0.24](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.24) | + +
+ +## リリース [v1.29.6+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.29.6+k3s1) + + +このリリースでは、Kubernetesをv1.29.6に更新し、多くの問題を修正しています。 + +詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#changelog-since-v1295)をご覧ください。 + +### v1.29.5+k3s1からの変更点: + +* ファイルによるtailscale設定を使用する際のバグを修正 [(#10142)](https://github.com/k3s-io/k3s/pull/10142) +* flannelのバージョンをv0.25.2にバンプ [(#10220)](https://github.com/k3s-io/k3s/pull/10220) +* kube-routerのバージョンをv2.1.2に更新 [(#10181)](https://github.com/k3s-io/k3s/pull/10181) +* tailscaleテストを改善し、e2eテストに追加のログを追加 [(#10212)](https://github.com/k3s-io/k3s/pull/10212) +* 2024年6月のリリースサイクルのバックポート [(#10249)](https://github.com/k3s-io/k3s/pull/10249) + * WithSkipMissingを追加し、欠落しているブロブのインポートで失敗しないようにする + * cri-dockerdの固定ストリームサーバーバインドアドレスを使用 + * stargzをcriレジストリのconfig_pathに切り替え + * containerdをv1.7.17、etcdをv3.5.13にバンプ + * spegelバージョンをバンプ + * dual-stackノード上のsingle-stackサービスのexternalTrafficPolicy: Localに関する問題を修正 + * ServiceLBはデフォルトでsvclbポッドのpriorityClassNameを`system-node-critical`に設定するようになりました。これは、`svccontroller.k3s.cattle.io/priorityclassname`アノテーションを使用してサービスごとにオーバーライドできます。 + * minio-goをv7.0.70にバンプ + * kineをv0.11.9にバンプしてページネーションを修正 + * 有効なresolv confを更新 + * 欠落しているカーネル設定チェックを追加 + * Auto-Deploying Manifests (AddOns)をスキャンする際に、シンボリックリンクされたサブディレクトリが尊重されるようになりました + * バグ修正: helmコントローラーがオーナー参照を設定できるようにする + * tlsシークレットサポートのためにklipper-helmイメージをバンプ + * k3s-etcdインフォーマーが起動しない問題を修正 + * `--Enable-pprof`をエージェントに設定してdebug/pprofエンドポイントを有効にできるようになりました。設定すると、エージェントはスーパーバイザーポートでリッスンします。 + * `--Supervisor-metrics`をサーバーに設定して、スーパーバイザーエンドポイントで内部メトリクスを提供できるようになりました。設定すると、エージェントはスーパーバイザーポートでリッスンします。 + * ノードが初期化されないまま汚染された場合のnetpolクラッシュを修正 + * 埋め込みロードバランサーは、すべてのサーバーがヘルスチェックに失敗して利用不可とマークされた場合、ヘルスチェックを無視してすべてのサーバーを試みるようになりました。 +* 2024年6月のリリースサイクルのさらなるバックポート [(#10288)](https://github.com/k3s-io/k3s/pull/10288) +* スナップショット保持のetcd-s3フォルダ修正を追加 [(#10316)](https://github.com/k3s-io/k3s/pull/10316) +* `isValidResolvConf`のテストを追加 (#10302) [(#10329)](https://github.com/k3s-io/k3s/pull/ +* 最新のリリースブランチを含むようにGHAのキャッシュを拡張 [(#10334)](https://github.com/k3s-io/k3s/pull/10334) +* Kubernetesをv1.29.6に更新 [(#10348)](https://github.com/k3s-io/k3s/pull/10348) +* エージェントスーパーバイザーポートをapiserverポートに変更 [(#10354)](https://github.com/k3s-io/k3s/pull/10354) +* 複数の同時スナップショットが許可される問題を修正 [(#10376)](https://github.com/k3s-io/k3s/pull/10376) + +----- +## リリース [v1.29.5+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.29.5+k3s1) + + +このリリースでは、Kubernetesをv1.29.5に更新し、いくつかの問題を修正しています。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#changelog-since-v1294)をご覧ください。 + +### v1.29.4+k3s1からの変更点: + +* 安定チャネルをv1.29.4+k3s1に更新 [(#10031)](https://github.com/k3s-io/k3s/pull/10031) +* E2E Split ServerをDroneに追加し、Droneでの並列テストをサポート [(#9940)](https://github.com/k3s-io/k3s/pull/9940) +* E2E opensuse leapを15.6にバンプし、btrfsテストを修正 [(#10057)](https://github.com/k3s-io/k3s/pull/10057) +* 非推奨のruby関数を置き換え [(#10091)](https://github.com/k3s-io/k3s/pull/10091) +* e2eアップグレードテストの正しいリリースチャネルを設定 [(#10106)](https://github.com/k3s-io/k3s/pull/10106) +* Windowsの変更 [(#10115)](https://github.com/k3s-io/k3s/pull/10115) +* v1.29.5-k3s1およびGo 1.21.9に更新 [(#10108)](https://github.com/k3s-io/k3s/pull/10108) + +----- +## リリース [v1.29.4+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.29.4+k3s1) + + +このリリースでは、Kubernetesをv1.29.4に更新し、いくつかの問題を修正しています。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#changelog-since-v1293)をご覧ください。 + +### v1.29.3+k3s1からの変更点: + +* メンバーリストを取得できない場合にエラーレスポンスを送信 [(#9722)](https://github.com/k3s-io/k3s/pull/9722) +* kubeletによって設定されたcloud-providerフィールドを尊重 [(#9721)](https://github.com/k3s-io/k3s/pull/9721) + * k3sのスタブクラウドプロバイダーは、kubeletの要求されたprovider-id、インスタンスタイプ、およびトポロジーラベルを尊重するようになりました +* すでにプルされたイメージに対するエラーを修正 [(#9770)](https://github.com/k3s-io/k3s/pull/9770) +* kineがdisable apiserverまたはdisable etcdと一緒にある場合の新しいエラーを追加 [(#9766)](https://github.com/k3s-io/k3s/pull/9766) +* k3s-rootをv0.13.0にバンプ [(#9718)](https://github.com/k3s-io/k3s/pull/9718) +* より良いgolangキャッシュキーのためにubuntu latestを使用 [(#9711)](https://github.com/k3s-io/k3s/pull/9711) +* Trivyバージョンをバンプ [(#9780)](https://github.com/k3s-io/k3s/pull/9780) +* E2Eテストのためにubuntu 23.10に移行 [(#9755)](https://github.com/k3s-io/k3s/pull/9755) +* チャネルサーバーを更新 [(#9808)](https://github.com/k3s-io/k3s/pull/9808) +* k3s dockerイメージに/etc/passwdと/etc/groupを追加 [(#9784)](https://github.com/k3s-io/k3s/pull/9784) +* エージェントレスサーバーのetcdスナップショット調整を修正 [(#9809)](https://github.com/k3s-io/k3s/pull/9809) +* ロードバランサーにヘルスチェックサポートを追加 [(#9757)](https://github.com/k3s-io/k3s/pull/9757) +* kineにTLSを追加 [(#9572)](https://github.com/k3s-io/k3s/pull/9572) + * KineはTLSを使用できるようになりました +* 非推奨のポインタライブラリからptrへの移行 [(#9801)](https://github.com/k3s-io/k3s/pull/9801) +* 古い固定依存関係を削除 [(#9806)](https://github.com/k3s-io/k3s/pull/9806) +* いくつかのE2Eマトリックスの改善 [(#9802)](https://github.com/k3s-io/k3s/pull/9802) +* 証明書の有効期限チェック、イベント、およびメトリクスを追加 [(#9772)](https://github.com/k3s-io/k3s/pull/9772) +* k3s-rootを更新するためのupdatecliポリシーを追加 [(#9844)](https://github.com/k3s-io/k3s/pull/9844) +* Trivyバージョンをバンプ [(#9840)](https://github.com/k3s-io/k3s/pull/9840) +* デフォルトのレジストリエンドポイントの設定を渡す際のcontainerd hosts.tomlバグの回避策を追加 [(#9853)](https://github.com/k3s-io/k3s/pull/9853) +* エージェントボリュームを例のdocker composeで修正 [(#9838)](https://github.com/k3s-io/k3s/pull/9838) +* spegelをv0.0.20-k3s1にバンプ [(#9863)](https://github.com/k3s-io/k3s/pull/9863) +* スーパーバイザーの証明書/キーを回転リストに追加 [(#9832)](https://github.com/k3s-io/k3s/pull/9832) +* 無駄なupdatecli更新を避けるために引用符を追加 [(#9877)](https://github.com/k3s-io/k3s/pull/9877) +* containerdとcri-dockerdをバンプ [(#9886)](https://github.com/k3s-io/k3s/pull/9886) + * 組み込みのcontainerdがv1.7.15にバンプされました + * 組み込みのcri-dockerdがv0.3.12にバンプされました +* etcdスナップショット管理CLIをリクエスト/レスポンスに移行 [(#9816)](https://github.com/k3s-io/k3s/pull/9816) + * `k3s etcd-snapshot`コマンドは、一貫性を向上させるために再構築されました。すべてのスナップショット操作はサーバープロセスによって実行され、CLIはクライアントとして操作を開始し、結果を報告します。その副作用として、スナップショット管理時のCLIのノイズが減少しました。 +* etcdロードバランサーの起動動作を改善 [(#9883)](https://github.com/k3s-io/k3s/pull/9883) +* エージェント証明書の回転を実際に修正 [(#9902)](https://github.com/k3s-io/k3s/pull/9902) +* 最新をv1.29.3+k3s1にバンプ [(#9909)](https://github.com/k3s-io/k3s/pull/9909) +* パッケージ化されたマニフェストを更新 [(#9920)](https://github.com/k3s-io/k3s/pull/9920) + * Traefikがv2.10.7にバンプされました。 + * デフォルトのチャート値でTraefikポッドの注釈が正しく設定されるようになりました。 + * system-default-registry値はRFC2732 IPv6リテラルをサポートするようになりました。 + * local-pathプロビジョナーは、`hostPath`の代わりに`local`ボリュームを作成するようにデフォルト設定されました。 +* ローカルパスプロビジョナーがヘルパーログを読み取れるように許可 [(#9835)](https://github.com/k3s-io/k3s/pull/9835) +* kube-routerをv2.1.0に更新 [(#9926)](https://github.com/k3s-io/k3s/pull/9926) +* GitHub Actionsでsetup-goキャッシュキーを一致させる [(#9890)](https://github.com/k3s-io/k3s/pull/9890) +* プリロードされたイメージに関するスタートアップテストレットを追加 [(#9941)](https://github.com/k3s-io/k3s/pull/9941) +* v1.29.4-k3s1およびGo 1.21.9に更新 [(#9960)](https://github.com/k3s-io/k3s/pull/9960) +* オンデマンドスナップショットのタイムアウトを修正; フォルダーを尊重しない問題を修正 [(#9984)](https://github.com/k3s-io/k3s/pull/9984) +* `/db/info`をlocalhostから匿名で利用可能にする [(#10001)](https://github.com/k3s-io/k3s/pull/10001) + +----- +## リリース [v1.29.3+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.29.3+k3s1) + + +このリリースでは、Kubernetesをv1.29.3に更新し、いくつかの問題を修正しています。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#changelog-since-v1292)をご覧ください。 + +### v1.29.2+k3s1からの変更点: + +* テストADR [(#9562)](https://github.com/k3s-io/k3s/pull/9562) +* ユニットテストマトリックスとアクションのバンプ [(#9479)](https://github.com/k3s-io/k3s/pull/9479) +* インストールテストOSマトリックスの更新 [(#9480)](https://github.com/k3s-io/k3s/pull/9480) +* klipper-lbイメージバージョンの更新 [(#9488)](https://github.com/k3s-io/k3s/pull/9488) +* flannel-backend=noneの統合テストを追加 [(#9582)](https://github.com/k3s-io/k3s/pull/9582) +* golangのためのより良いGitHub CIキャッシュ戦略 [(#9495)](https://github.com/k3s-io/k3s/pull/9495) +* GH PR sha256sumアーティファクトのフォーマットを修正 [(#9472)](https://github.com/k3s-io/k3s/pull/9472) +* ルートレスモードでもLoadBalancerタイプのサービスnodePortをホストにバインド [(#9512)](https://github.com/k3s-io/k3s/pull/9512) + * ルートレスモードは、ルートフルモードのUXに一致するように、LoadBalancerタイプのサービスnodePortをホストにバインドする必要があります。 +* デュアルスタッククラスターでのcoredns NodeHostsを修正 [(#9584)](https://github.com/k3s-io/k3s/pull/9584) +* netpolノード待機ログを調整 [(#9581)](https://github.com/k3s-io/k3s/pull/9581) +* etcdノード名にホスト名が欠けている問題を修正 [(#9522)](https://github.com/k3s-io/k3s/pull/9522) +* helm-controller/klipper-helmバージョンをバンプ [(#9595)](https://github.com/k3s-io/k3s/pull/9595) +* 安定チャネルをv1.28.7+k3s1に更新 [(#9615)](https://github.com/k3s-io/k3s/pull/9615) +* インストールとスナップショッターテストを再有効化 [(#9601)](https://github.com/k3s-io/k3s/pull/9601) +* dockerテストをtestsフォルダーに移動 [(#9555)](https://github.com/k3s-io/k3s/pull/9555) +* setup-goのタイプミスを修正 [(#9634)](https://github.com/k3s-io/k3s/pull/9634) +* レジストリ処理の追加のコーナーケースを修正 [(#9556)](https://github.com/k3s-io/k3s/pull/9556) +* スナップショットのプルーンを修正 [(#9502)](https://github.com/k3s-io/k3s/pull/9502) +* flannel/cni-pluginを適切に使用およびバージョン管理 [(#9635)](https://github.com/k3s-io/k3s/pull/9635) + * 組み込みのflannel cni-pluginバイナリは、他のcniプラグインおよび組み込みのflannelコントローラーとは別にビルドおよびバージョン管理されるようになりました。 +* spegelをバンプ [(#9599)](https://github.com/k3s-io/k3s/pull/9599) + * spegelをv0.0.18-k3s3にバンプ + * ワイルドカードレジストリサポートを追加 + * containerdの起動待機中の過剰なCPU使用率の問題を修正 + * spegelが最新タグのミラーリングを許可する環境変数を追加 +* Chore(deps): trivyによって発見されたCVEの修正; otelrestfulのCVE-2023-45142およびgolang.org/x/cryptoのCVE-2023-48795 [(#9513)](https://github.com/k3s-io/k3s/pull/9513) +* 修正: 正しいwasmシム名を使用 [(#9519)](https://github.com/k3s-io/k3s/pull/9519) +* 組み込みレジストリテストでのワイルドカードの修正 [(#9649)](https://github.com/k3s-io/k3s/pull/9649) +* `NO_COLOR`環境変数を使用してカラフルな出力を無効化 [(#9357)](https://github.com/k3s-io/k3s/pull/9357) + * `check-config`サブコマンドの生出力を有効にするには、NO_COLOR=1を設定できます +* tailscale e2eテストを改善 [(#9586)](https://github.com/k3s-io/k3s/pull/9586) +* 設定されたclusterCIDRに基づいて最初のnode-ipを調整 [(#9520)](https://github.com/k3s-io/k3s/pull/9520) +* Trivyバージョンをバンプ [(#9528)](https://github.com/k3s-io/k3s/pull/9528) +* flannel cniプラグインバージョンにflannelバージョンを含める [(#9648)](https:// +* 重複するレジストリミラーエンドポイントの警告と抑制 [(#9697)](https://github.com/k3s-io/k3s/pull/9697) + * K3sは、レジストリのミラーエンドポイントリストに重複するエントリがある場合に警告を出し、それを抑制するようになりました。Containerdは、単一の上流レジストリに対して同じエンドポイントを複数回ミラーとしてリストすることをサポートしていません。 +* 繰り返しの単語を削除 [(#9671)](https://github.com/k3s-io/k3s/pull/9671) +* GitHub ActionsでDockerテストのサブセットを実行 [(#9698)](https://github.com/k3s-io/k3s/pull/9698) +* ワイルドカードエントリの上流フォールバックを修正 [(#9729)](https://github.com/k3s-io/k3s/pull/9729) +* v1.29.3-k3s1およびGo 1.21.8に更新 [(#9747)](https://github.com/k3s-io/k3s/pull/9747) + +----- +## リリース [v1.29.2+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.29.2+k3s1) + + +このリリースでは、Kubernetesをv1.29.2に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#changelog-since-v1291)をご覧ください。 + +### v1.29.1+k3s2からの変更点: + +* Local Path Provisionerのバージョンをバンプ [(#8953)](https://github.com/k3s-io/k3s/pull/8953) +* GitHubからK3s PRアーティファクトをインストールする機能を追加 [(#9185)](https://github.com/k3s-io/k3s/pull/9185) + * CI承認済みの任意のオープンPRからK3sのビルドをインストールするための`INSTALL_K3S_PR`オプションを追加 +* Trivyのバージョンをバンプ [(#9237)](https://github.com/k3s-io/k3s/pull/9237) +* codecov/codecov-actionを3から4にバンプ [(#9353)](https://github.com/k3s-io/k3s/pull/9353) +* ステーブルチャネルを更新 [(#9388)](https://github.com/k3s-io/k3s/pull/9388) +* スナップショット再調整のリトライを修正 [(#9318)](https://github.com/k3s-io/k3s/pull/9318) +* etcd-snapshot-dirのチェックを追加し、Walkでのパニックを修正 [(#9317)](https://github.com/k3s-io/k3s/pull/9317) +* CNIプラグインをv1.4.0にバンプ [(#9249)](https://github.com/k3s-io/k3s/pull/9249) +* corednsノードホストコントローラーの問題を修正 [(#9354)](https://github.com/k3s-io/k3s/pull/9354) + * 埋め込みのhelmコントローラーが無効になっている場合、configmapがノードホストエントリで更新されないため、corednsポッドが起動に失敗する可能性がある問題を修正。 +* IPv6のみのノードでのオンデマンドスナップショットを修正 [(#9247)](https://github.com/k3s-io/k3s/pull/9247) +* flannelのバージョンをバンプ [(#9395)](https://github.com/k3s-io/k3s/pull/9395) + * flannelをv0.24.2にバンプ +* ビルド: droneベースイメージを調整 [(#8959)](https://github.com/k3s-io/k3s/pull/8959) +* etcd条件でのlastHeartBeatTimeの動作を変更 [(#9263)](https://github.com/k3s-io/k3s/pull/9263) +* exec.LookPathを使用したランタイムのリファクタリング [(#9311)](https://github.com/k3s-io/k3s/pull/9311) + * ランタイムを含むディレクトリは、効果的なランタイム検出のために$PATH環境変数に含める必要があります。 +* Docker Engine 25との互換性を修正するためにcri-dockerdをバンプ [(#9290)](https://github.com/k3s-io/k3s/pull/9290) +* プッシュ時の統合テスト用にcodcovシークレットを追加 [(#9422)](https://github.com/k3s-io/k3s/pull/9422) +* `containerd`および`cridockerd`の動作を定義するためのエグゼキューターを許可 [(#9184)](https://github.com/k3s-io/k3s/pull/9184) +* Kube-routerをv2.0.1に更新 [(#9396)](https://github.com/k3s-io/k3s/pull/9396) +* : Test_UnitApplyContainerdQoSClassConfigFileIfPresent (作成) [(#8945)](https://github.com/k3s-io/k3s/pull/8945) +* KMSv2 GAの正しいサポートを持つ`k3s secrets-encrypt rotate-keys`を再追加 [(#9340)](https://github.com/k3s-io/k3s/pull/9340) +* sbinがユーザーのPATHにない場合のiptablesチェックを修正 [(#9344)](https://github.com/k3s-io/k3s/pull/9344) +* エージェントが無効な場合、NodePasswordValidationFailedイベントを作成しない [(#9312)](https://github.com/k3s-io/k3s/pull/9312) + * エージェントが無効な場合、`NodePasswordValidationFailed`イベントは発行されなくなります。 +* ルートレス状態ディレクトリを~/.rancher/k3s/rootlessの下に公開 [(#9308)](https://github.com/k3s-io/k3s/pull/9308) + * ルートレスモードでk3sを実行する場合、rootlesskitの状態ディレクトリを`~/.rancher/k3s/rootless`として公開 +* 外部アクセス用にルートレスcontainerdソケットディレクトリを公開 [(#9309)](https://github.com/k3s-io/k3s/pull/9309) + * k3sルートレスcontainerdおよびcri-dockerdソケットディレクトリを`$XDG_RUNTIME_DIR/k3s/containerd`および`$XDG_RUNTIME_DIR/k3s/cri-dockerd`にそれぞれマウント +* kineをバンプし、NotifyIntervalをapiserverが期待する値に設定 [(#9349)](https://github.com/k3s-io/k3s/pull/9349) +* Kubernetesをv1.29.2に更新 [(#9493)](https://github.com/k3s-io/k3s/pull/9493) +* arm用のdrone公開を修正 [(#9503)](https://github.com/k3s-io/k3s/pull/9503) +* 失敗するDroneステップを削除 [(#9517)](https://github.com/k3s-io/k3s/pull/9517) +* エージェントの起動関数の元の順序を復元 [(#9539)](https://github.com/k3s-io/k3s/pull/9539) +* flannelが無効な場合のnetpol起動を修正 [(#9571)](https://github.com/k3s-io/k3s/pull/9571) + +----- +## リリース [v1.29.1+k3s2](https://github.com/k3s-io/k3s/releases/tag/v1.29.1+k3s2) + + +このリリースでは、Kubernetesをv1.29.1に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#changelog-since-v1290)をご覧ください。 + +**重要な注意事項** + +runcのCVE: [CVE-2024-21626](https://nvd.nist.gov/vuln/detail/CVE-2024-21626)に対処するため、runcをv1.1.12に更新しました。 + +### v1.29.0+k3s1からの変更点: + +* Sonobuoyのバージョンをバンプ [(#8910)](https://github.com/k3s-io/k3s/pull/8910) +* actions/setup-goを4から5にバンプ [(#9036)](https://github.com/k3s-io/k3s/pull/9036) +* Chore: Code of ConductをCNCF CoCにリダイレクトするように更新 [(#9104)](https://github.com/k3s-io/k3s/pull/9104) + * NONE +* ステーブルチャネルをv1.28.5+k3s1に更新し、v1.29チャネルを追加 [(#9110)](https://github.com/k3s-io/k3s/pull/9110) +* エージェントロードバランサーのためのenv *_PROXY変数のサポートを追加 [(#9070)](https://github.com/k3s-io/k3s/pull/9070) + * HTTP_PROXY、HTTPS_PROXY、およびNO_PROXY環境変数は、K3S_AGENT_HTTP_PROXY_ALLOWED環境変数がtrueに設定されている場合、エージェントロードバランサーによって考慮されるようになりました。 + * ただし、ローカルリクエストには影響しません。使用される関数はそれを防ぎます: https://pkg.go.dev/net/http#ProxyFromEnvironment。 +* secrets-encryptノードアノテーションの更新にリトライを追加 [(#9039)](https://github.com/k3s-io/k3s/pull/9039) +* INSTALL_K3S_SKIP_SELINUX_RPMでSELinux警告をサイレンス [(#8703)](https://github.com/k3s-io/k3s/pull/8703) +* PodHostIPs FeatureGateのためのServiceLBサポートを追加 [(#8917)](https://github.com/k3s-io/k3s/pull/8917) +* エージェントロードバランサーのためのenv *_PROXY変数のサポートを追加 [(#9118)](https://github.com/k3s-io/k3s/pull/9118) +* nm-cloud systemdユニットをチェックする際にエラーストリームをnullにリダイレクト [(#8815)](https://github.com/k3s-io/k3s/pull/8815) + * 混乱を招く「nm-cloud-setup.service: No such file or directory」journalctlログを削除 +* Dockerfile.dapper: $HOMEを適切に設定 [(#9090)](https://github.com/k3s-io/k3s/pull/9090) +* GAリリース手順にsystem-agent-installer-k3sステップを追加 [(#9153)](https://github.com/k3s-io/k3s/pull/9153) +* インストールスクリプトのチェックサムを修正 [(#9159)](https://github.com/k3s-io/k3s/pull/9159) +* OTHER etcdスナップショットs3ログメッセージが間違った変数を印刷する問題を修正 [(#8944)](https://github.com/k3s-io/k3s/pull/8944) +* kube-proxy引数を解析する際のロギングフラグを処理 [(#8916)](https://github.com/k3s-io/k3s/pull/8916) +* フルスナップショットconfigmap再調整でのnilマップを修正 [(#9049)](https://github.com/k3s-io/k3s/pull/9049) +* containerd criレジストリconfig_pathのサポートを追加 [(#8973)](https://github.com/k3s-io/k3s/pull/8973) +* crunランタイム検出のためのパスを追加 [(#9086)](https://github.com/k3s-io/k3s/pull/9086) +* golangバージョンのランタイムチェックを追加 [(#9054)](https://github.com/k3s-io/k3s/pull/9054) +* タグ付きリリースでのOS PRETTY_NAMEを修正 [(#9062)](https://github.com/k3s-io/k3s/pull/9062) +* インストールスクリプト内でファイルエラーをダウンロードする際のエラーを印刷 [(#6874)](https://github.com/k3s-io/k3s/pull/6874) +* netpolコントローラーを起動する前にcloud-provider taintがなくなるのを待つ [(#9076)](https://github.com/k3s-io/k3s/pull/9076) +* Trivyのバージョンをバンプ [(#8812)](https://github.com/k3s-io/k3s/pull/8812) +* デュアルスタックkube-dnsのために`ipFamilyPolicy: RequireDualStack`を使用 [(#8984)](https://github.com/k3s-io/k3s/pull/8984) +* ノードが準備完了でない場合のetcdステータス条件を処理し、etcdを無効にする [(#9084)](https://github.com/k3s-io/k3s/pull/9084) +* s3 e2eテストを更新 [(#9025)](https://github.com/k3s-io/k3s/pull/9025) +* ルートレスk3sのためのe2eスタートアップテストを追加 [(#8383)](https://github.com/k3s-io/k3s/pull/8383) +* spegel分散レジストリミラーを追加 [(#8977)](https://github.com/k3s-io/k3s/pull/8977) +* CVE-2023-49295のためにquic-goをバンプ [(#9208)](https://github.com/k3s-io/k3s/pull/9208) +* ネットワークポリシーコントローラーメトリクスを有効にする [(#9195)](https://github.com/k3s-io/k3s/pull/9195) + * Kube-routerネットワークポリシーコントローラーメトリクスは、デフォルトのノードメトリクスエンドポイントを介して公開されるようになりました +* 存在しない依存リポジトリを修正 [(#9213)](https://github.com/k3s-io/k3s/pull/9213) +* init()からプロキシダイアラーを移動し、`K3S_AGENT_HTTP_PROXY_ALLOWED=true`を使用する際のクラッシュを修正 [(#9219)](https://github.com/k3s-io/k3s/pull/9219) +* setEtcdStatusConditionでノードを取得する際のエラー [(#9210)](https://github.com/k3s-io/k3s/pull/9210) +* v1.29.1およびGo 1.21.6に更新 [(#9259)](https://github.com/k3s-io/k3s/pull/9259) +* 新しいstaleアクション [(#9278)](https://github.com/k3s-io/k3s/pull/9278) +* registries.yamlでエンドポイントアドレスとしてベアホスト名またはIPを処理する際の問題を修正 [(#9323)](https://github.com/k3s-io/k3s/pull/9323) +* runcをv1.1.12にバンプし、helm-controllerをv0.15.7にバンプ [(#9332)](https://github.com/k3s-io/k3s/pull/9332) +* ChartContentの問題を修正するためにhelm-controllerをバンプ [(#9345)](https://github.com/k3s-io/k3s/pull/9345) + +----- +## リリース [v1.29.0+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.29.0+k3s1) + + +このリリースは、v1.29ラインでのK3Sの最初の +このリリースでは、Kubernetesの上流で[KMSv2](https://github.com/kubernetes/kubernetes/issues/117728)に関する変更があったため、実験的な`rotate-keys`サブコマンドを削除しました。このサブコマンドは将来のリリースで再追加される予定です。 +::: + +:::warning 重要 +このリリースでは、`multi-cluster-cidr`フラグも削除されました。このアルファ機能のサポートが[Kubernetesの上流](https://groups.google.com/g/kubernetes-sig-network/c/nts1xEZ--gQ/m/2aTOUNFFAAAJ)から完全に削除されたためです。アップグレード前にこのフラグを設定から削除する必要があります。 +::: + +### v1.28.4+k3s2以降の変更点: + +* アドレス範囲の重複を修正 [(#8913)](https://github.com/k3s-io/k3s/pull/8913) +* CONTRIBUTING.mdガイドの修正 [(#8954)](https://github.com/k3s-io/k3s/pull/8954) +* 2023年11月の安定チャネル更新 [(#9022)](https://github.com/k3s-io/k3s/pull/9022) +* wasm/nvidia/crunのデフォルトランタイムおよびランタイムクラスの追加 [(#8936)](https://github.com/k3s-io/k3s/pull/8936) + * wasm/nvidia/crunのランタイムクラスを追加 + * containerdのデフォルトランタイムフラグを追加 +* containerd/runcをv1.7.10-k3s1/v1.1.10にバンプ [(#8962)](https://github.com/k3s-io/k3s/pull/8962) +* サーバーでデフォルトランタイムを設定可能に [(#9027)](https://github.com/k3s-io/k3s/pull/9027) +* containerdをv1.7.11にバンプ [(#9040)](https://github.com/k3s-io/k3s/pull/9040) +* GA機能ゲートを削除 [(#8970)](https://github.com/k3s-io/k3s/pull/8970) +* マージされたE2Eビルドでのみcode_covに公開 [(#9051)](https://github.com/k3s-io/k3s/pull/9051) +* Kubernetesをv1.29.0+k3s1に更新 [(#9052)](https://github.com/k3s-io/k3s/pull/9052) +* flannelをv0.24.0に更新し、multiclustercidrフラグを削除 [(#9075)](https://github.com/k3s-io/k3s/pull/9075) +* rotate-keysサブコマンドを削除 [(#9079)](https://github.com/k3s-io/k3s/pull/9079) + +----- \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.30.X.md b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.30.X.md new file mode 100644 index 000000000..408a62ee0 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/release-notes/v1.30.X.md @@ -0,0 +1,121 @@ +--- +hide_table_of_contents: true +sidebar_position: 1 +--- + +# v1.30.X + +:::warning アップグレード通知 +以前のリリースからアップグレードする前に、Kubernetesの[緊急アップグレードノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.30.md#urgent-upgrade-notes)を必ずお読みください。 +::: + +| バージョン | リリース日 | Kubernetes | Kine | SQLite | Etcd | Containerd | Runc | Flannel | Metrics-server | Traefik | CoreDNS | Helm-controller | Local-path-provisioner | +| ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | +| [v1.30.2+k3s1](v1.30.X.md#release-v1302k3s1) | 2024年6月25日 | [v1.30.2](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.30.md#v1302) | [v0.11.9](https://github.com/k3s-io/kine/releases/tag/v0.11.9) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.13-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.13-k3s1) | [v1.7.17-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.17-k3s1) | [v1.1.12](https://github.com/opencontainers/runc/releases/tag/v1.1.12) | [v0.25.2](https://github.com/flannel-io/flannel/releases/tag/v0.25.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.7](https://github.com/traefik/traefik/releases/tag/v2.10.7) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.16.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.16.1) | [v0.0.27](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.27) | +| [v1.30.1+k3s1](v1.30.X.md#release-v1301k3s1) | 2024年5月22日 | [v1.30.1](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.30.md#v1301) | [v0.11.8-0.20240430184817-f9ce6f8da97b](https://github.com/k3s-io/kine/releases/tag/v0.11.8-0.20240430184817-f9ce6f8da97b) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.15-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.15-k3s1) | [v1.1.12-k3s1](https://github.com/opencontainers/runc/releases/tag/v1.1.12-k3s1) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.7](https://github.com/traefik/traefik/releases/tag/v2.10.7) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.16.1-0.20240502205943-2f32059d43e6](https://github.com/k3s-io/helm-controller/releases/tag/v0.16.1-0.20240502205943-2f32059d43e6) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | +| [v1.30.0+k3s1](v1.30.X.md#release-v1300k3s1) | 2024年5月10日 | [v1.30.0](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.30.md#v1300) | [v0.11.8](https://github.com/k3s-io/kine/releases/tag/v0.11.7) | [3.44.0](https://sqlite.org/releaselog/3_44_0.html) | [v3.5.9-k3s1](https://github.com/k3s-io/etcd/releases/tag/v3.5.9-k3s1) | [v1.7.15-k3s1](https://github.com/k3s-io/containerd/releases/tag/v1.7.15-k3s1) | [v1.1.12](https://github.com/opencontainers/runc/releases/tag/v1.1.12) | [v0.24.2](https://github.com/flannel-io/flannel/releases/tag/v0.24.2) | [v0.7.0](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.0) | [v2.10.7](https://github.com/traefik/traefik/releases/tag/v2.10.7) | [v1.10.1](https://github.com/coredns/coredns/releases/tag/v1.10.1) | [v0.16.1](https://github.com/k3s-io/helm-controller/releases/tag/v0.15.9) | [v0.0.26](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.26) | + +
+ +## リリース [v1.30.2+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.30.2+k3s1) + + +このリリースでは、Kubernetesをv1.30.2に更新し、多くの問題を修正しました。 + +新機能の詳細については、[Kubernetesリリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.30.md#changelog-since-v1301)をご覧ください。 + +### v1.30.1+k3s1からの変更点: + +* ファイルによるtailscale設定使用時のバグ修正 [(#10074)](https://github.com/k3s-io/k3s/pull/10074) + * エージェントで`vpn-auth-file`使用時のバグ修正 +* 欠落したブロブのインポート失敗を回避するためのWithSkipMissing追加 [(#10136)](https://github.com/k3s-io/k3s/pull/10136) +* cri-dockerdの固定ストリームサーバーバインドアドレス使用 [(#9975)](https://github.com/k3s-io/k3s/pull/9975) +* stargzをcriレジストリconfig_pathに切り替え [(#9977)](https://github.com/k3s-io/k3s/pull/9977) +* containerd v1.7.17、etcd v3.5.13にバンプ [(#10123)](https://github.com/k3s-io/k3s/pull/10123) +* spegelバージョンのバンプ [(#10118)](https://github.com/k3s-io/k3s/pull/10118) +* 複数の実行があるPRビルドからのアーティファクトインストールの問題修正 [(#10122)](https://github.com/k3s-io/k3s/pull/10122) +* デュアルスタックノード上のシングルスタックサービスの`externalTrafficPolicy: Local`の問題修正 [(#9963)](https://github.com/k3s-io/k3s/pull/9963) +* local-path-provisionerヘルパースクリプトの更新 [(#9964)](https://github.com/k3s-io/k3s/pull/9964) +* svclbポッドのPriorityClassNameサポート追加 [(#10045)](https://github.com/k3s-io/k3s/pull/10045) + * ServiceLBはデフォルトでsvclbポッドのpriorityClassNameを`system-node-critical`に設定します。これは`svccontroller.k3s.cattle.io/priorityclassname`アノテーションを使用してサービスごとに上書きできます。 +* レガシーtraefik v1チャートのチェック削除 [(#9593)](https://github.com/k3s-io/k3s/pull/9593) + * K3sはtraefik v1が存在する場合に自動的にtraefik v2のデプロイをスキップしなくなりました。すべてのクラスターは過去3年間のいずれかの時点でv2にアップグレードされているはずです。 +* kube-routerバージョンをv2.1.2に更新 [(#10177)](https://github.com/k3s-io/k3s/pull/10177) +* ブランチ戦略のADR作成 [(#10147)](https://github.com/k3s-io/k3s/pull/10147) +* minio-goをv7.0.70にバンプ [(#10081)](https://github.com/k3s-io/k3s/pull/10081) +* ページネーションを修正するためにkineをv0.11.9にバンプ [(#10082)](https://github.com/k3s-io/k3s/pull/10082) +* 有効なresolv confの更新 [(#9948)](https://github.com/k3s-io/k3s/pull/9948) +* 欠落しているカーネル設定チェックの追加 [(#10100)](https://github.com/k3s-io/k3s/pull/10100) +* Gitワークフローファイル名の修正 [(#10131)](https://github.com/k3s-io/k3s/pull/10131) + * なし +* 自動デプロイマニフェストのスキャン時にディレクトリシンボリックリンクをフォロー (#9288) [(#10049)](https://github.com/k3s-io/k3s/pull/10049) + * シンボリックリンクされたサブディレクトリは、Auto-Deploying Manifests(AddOns)のスキャン時に尊重されるようになりました。 +* helmコントローラーがオーナー参照を設定できるようにするバグ修正 [(#10048)](https://github.com/k3s-io/k3s/pull/10048) +* go.modの修正 [(#10192)](https://github.com/k3s-io/k3s/pull/10192) +* flannelバージョンをv0.25.2にバンプ [(#10146)](https://github.com/k3s-io/k3s/pull/10146) +* 認証ファイルを使用したエージェントの追加テスト [(#10119)](https://github.com/k3s-io/k3s/pull/10119) + * エージェントで`vpn-auth-file`使用時のバグ修正 +* e2eテストに追加ログを追加 [(#10145)](https://github.com/k3s-io/k3s/pull/10145) +* 2024年5月のチャネルサーバーの更新 [(#10137)](https://github.com/k3s-io/k3s/pull/10137) +* tlsシークレットサポートのためにklipper-helmイメージをバンプ [(#10187)](https://github.com/k3s-io/k3s/pull/10187) +* コマンド名を完全にするためのスクリプトbinary_size_checkの更新 [(#9992)](https://github.com/k3s-io/k3s/pull/9992) +* k3s-etcdインフォーマーが起動しない問題の修正 [(#10047)](https://github.com/k3s-io/k3s/pull/10047) +* スーパーバイザーメトリクスの提供を有効にする [(#10019)](https://github.com/k3s-io/k3s/pull/10019) + * `--Enable-pprof`は、デバッグ/pprofエンドポイントを有効にするためにエージェントで設定できるようになりました。設定すると、エージェントはスーパーバイザーポートでリッスンします。 + * `--Supervisor-metrics`は、サーバーで内部メトリクスをスーパーバイザーエンドポイントで提供するために設定できるようになりました。設定すると、エージェントはスーパーバイザーポートでリッスンします。 +* /conformanceでalpineを3.18から3.20にバンプ [(#10210)](https://github.com/k3s-io/k3s/pull/10210) +* /packageでalpineを3.18から3.20にバンプ [(#10211)](https://github.com/k3s-io/k3s/pull/10211) +* /tests/e2e/scriptsでubuntuを22.04から24.04にバンプ [(#10040)](https://github.com/k3s-io/k3s/pull/10040) +* Trivyバージョンのバンプ [(#10039)](https://github.com/k3s-io/k3s/pull/10039) +* ノードが初期化されずに残るときのnetpolクラッシュの修正 [(#10073)](https://github.com/k3s-io/k3s/pull/10073) +* 負荷下で唯一のサーバーが失敗としてマークされる問題の修正 [(#10241)](https://github.com/k3s-io/k3s/pull/10241) + * 埋め込みロードバランサーは、すべてのサーバーがヘルスチェックの失敗により利用不可とマークされた場合、ヘルスチェックを無視してすべてのサーバーを試すようにフォールバックします。 +* サーバーにwrite-kubeconfig-groupフラグを追加 [(#9233)](https://github.com/k3s-io/k3s/pull/9233) + * k3sサーバーの新しいフラグ: --write-kubeconfig-group +* SAR RBACによってブロックされた埋め込みミラーを修正し、テストを再有効化 [(#10257)](https://github.com/k3s-io/k3s/pull/10257) +* Local Path Provisionerバージョンのバンプ [(#10268)](https://github.com/k3s-io/k3s/pull/10268) +* 実際のwarningPeriodをcertmonitorで使用する修正 [(#10271)](https://github.com/k3s-io/k3s/pull/10271) +* エージェントがローカルロードバランサーをバイパスするバグ修正 [(#10280)](https://github.com/k3s-io/k3s/pull/10280) +* etcd s3設定シークレットのサポートのためのADR追加 [(#9364)](https://github.com/k3s-io/k3s/pull/9364) +* `isValidResolvConf`のテスト追加 [(#10302)](https://github.com/k3s-io/k3s/pull/10302) +* スナップショット保持etcd-s3フォルダ修正の追加 [(#10293)](https://github.com/k3s-io/k3s/pull/10293) +* 最新のリリースブランチを含むようにGHA golangキャッシュを拡張 [(#10307)](https://github.com/k3s-io/k3s/pull/10307) +* loadbalancer.nextServerでのレースコンディションパニックの修正 [(#10318)](https://github.com/k3s-io/k3s/pull/10318) +* タイポ修正、`rancher/permissions`を使用 [(#10296)](https://github.com/k3s-io/k3s/pull/10296) +* Kubernetesをv1.30.2に更新 [(#10349)](https://github.com/k3s-io/k3s/pull/10349) +* エージェントスーパーバイザーポートがapiserverポートを使用する問題の修正 [(#10352)](https://github.com/k3s-io/k3s/pull/10352) +* 複数の同時スナップショットが許可される問題の修正 [(#10372)](https://github.com/k3s-io/k3s/pull/10372) + +----- +## リリース [v1.30.1+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.30.1+k3s1) + + +このリリースでは、Kubernetesをv1.30.1に更新し、多くの問題を修正しました。 + +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.30.md#changelog-since-v1300)をご覧ください。 + +### v1.30.0+k3s1 以降の変更点: + +* e2e テストで非推奨の ruby 関数を置き換え [(#10084)](https://github.com/k3s-io/k3s/pull/10084) +* 1.30 にチャンネルを更新 [(#10097)](https://github.com/k3s-io/k3s/pull/10097) +* 461 に対処 [(#10112)](https://github.com/k3s-io/k3s/pull/10112) +* v1.30.1-k3s1 と Go 1.22.2 に更新 [(#10105)](https://github.com/k3s-io/k3s/pull/10105) + +----- +## リリース [v1.30.0+k3s1](https://github.com/k3s-io/k3s/releases/tag/v1.30.0+k3s1) + + +このリリースは、v1.30 系列の K3S の最初のリリースです。このリリースでは Kubernetes を v1.30.0 に更新します。 + +詳細については、[Kubernetes リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.30.md#changelog-since-v1290)をご覧ください。 + +### v1.29.4+k3s1 以降の変更点: + +* Kubernetes V1.30.0-k3s1 [(#10063)](https://github.com/k3s-io/k3s/pull/10063) +* 安定チャンネルを v1.29.4+k3s1 に更新 [(#10031)](https://github.com/k3s-io/k3s/pull/10031) +* E2E Split Server を Drone に追加し、Drone での並列テストをサポート [(#9940)](https://github.com/k3s-io/k3s/pull/9940) +* E2E opensuse leap を 15.6 にバンプし、btrfs テストを修正 [(#10057)](https://github.com/k3s-io/k3s/pull/10057) +* 非推奨の `pod-infra-container-image` kubelet フラグを削除 [(#7409)](https://github.com/k3s-io/k3s/pull/7409) +* e2e テストを修正 [(#10061)](https://github.com/k3s-io/k3s/pull/10061) + +----- \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/security/hardening-guide.md b/i18n/ja/docusaurus-plugin-content-docs/current/security/hardening-guide.md new file mode 100644 index 000000000..1efe6e939 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/security/hardening-guide.md @@ -0,0 +1,852 @@ +--- +title: "CIS ハードニングガイド" +--- + +このドキュメントは、K3s の本番インストールをハードニングするための指針を提供します。これは、Center for Internet Security (CIS) の Kubernetes ベンチマークコントロールに対応するために必要な設定とコントロールを概説しています。 + +K3s には多くのセキュリティ緩和策がデフォルトで適用されており、変更なしで多くの Kubernetes CIS コントロールに合格します。ただし、CIS ベンチマークに完全に準拠するためには手動での介入が必要な例外もいくつかあります。 + +1. K3s はホストオペレーティングシステムを変更しません。ホストレベルの変更は手動で行う必要があります。 +2. `NetworkPolicies` および `PodSecurityStandards` (`v1.24` 以前では `PodSecurityPolicies`) に関する特定の CIS ポリシーコントロールは、クラスターの機能を制限します。これらを設定するには、コマンドラインフラグまたは設定ファイルに適切なオプション(アドミッションプラグインの有効化)を追加し、適切なポリシーを手動で適用する必要があります。詳細は以下のセクションに記載されています。 + +CIS ベンチマークの最初のセクション (1.1) は主にポッドマニフェストの権限と所有権に関するものです。K3s はコアコンポーネントにこれらを使用しません。すべてが単一のバイナリにパッケージ化されているためです。 + +## ホストレベルの要件 + +ホストレベルの要件には、カーネルパラメータと etcd プロセス/ディレクトリの設定の2つの領域があります。これらはこのセクションで概説されています。 + +### `protect-kernel-defaults` が設定されていることを確認する + +これは、必要なカーネルパラメータが未設定または kubelet のデフォルト値と異なる値に設定されている場合に kubelet が終了するようにする kubelet フラグです。 + +> **注:** `protect-kernel-defaults` は K3s のトップレベルフラグとして公開されています。 + +#### カーネルパラメータを設定する + +`/etc/sysctl.d/90-kubelet.conf` というファイルを作成し、以下のスニペットを追加します。その後、`sysctl -p /etc/sysctl.d/90-kubelet.conf` を実行します。 + +```bash +vm.panic_on_oom=0 +vm.overcommit_memory=1 +kernel.panic=10 +kernel.panic_on_oops=1 +``` + +## Kubernetes ランタイム要件 + +CIS ベンチマークに準拠するためのランタイム要件は、ポッドセキュリティ(PSP または PSA 経由)、ネットワークポリシー、および API サーバーの監査ログに集中しています。これらはこのセクションで概説されています。 + +デフォルトでは、K3s にはポッドセキュリティやネットワークポリシーは含まれていません。ただし、K3s にはネットワークポリシーを強制するコントローラーが付属しており、作成された場合に適用されます。K3s はデフォルトで監査を有効にしていないため、監査ログの設定と監査ポリシーを手動で作成する必要があります。デフォルトでは、K3s は `PodSecurity` および `NodeRestriction` アドミッションコントローラーを含む複数のアドミッションコントローラーを有効にして実行されます。 + +### ポッドセキュリティ + + + + +K3s v1.25 以降は、ポッドセキュリティを制御するための [Pod Security Admissions (PSAs)](https://kubernetes.io/docs/concepts/security/pod-security-admission/) をサポートしています。PSA は以下のフラグを K3s サーバーに渡すことで有効になります。 +``` +--kube-apiserver-arg="admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml" +``` + +ポリシーは `/var/lib/rancher/k3s/server` ディレクトリに `psa.yaml` という名前のファイルに書き込む必要があります。 + +以下は準拠した PSA の例です。 +```yaml +apiVersion: apiserver.config.k8s.io/v1 +kind: AdmissionConfiguration +plugins: +- name: PodSecurity + configuration: + apiVersion: pod-security.admission.config.k8s.io/v1beta1 + kind: PodSecurityConfiguration + defaults: + enforce: "restricted" + enforce-version: "latest" + audit: "restricted" + audit-version: "latest" + warn: "restricted" + warn-version: "latest" + exemptions: + usernames: [] + runtimeClasses: [] + namespaces: [kube-system, cis-operator-system] +``` + + + +K3s v1.24 以前は、ポッドセキュリティを制御するための [Pod Security Policies (PSPs)](https://kubernetes.io/docs/concepts/security/pod-security-policy/) をサポートしています。PSP は以下のフラグを K3s サーバーに渡すことで有効になります。 + +``` +--kube-apiserver-arg="enable-admission-plugins=NodeRestriction,PodSecurityPolicy" +``` +これにより、`NodeRestriction` プラグインを維持しつつ、`PodSecurityPolicy` を有効にします。 + +PSP が有効になると、CIS ベンチマークのセクション 5.2 で説明されている必要なコントロールを満たすためのポリシーを適用できます。 + +以下は準拠した PSP の例です。 + +```yaml +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: restricted-psp +spec: + privileged: false # CIS - 5.2.1 + allowPrivilegeEscalation: false # CIS - 5.2.5 + requiredDropCapabilities: # CIS - 5.2.7/8/9 + - ALL + volumes: + - 'configMap' + - 'emptyDir' + - 'projected' + - 'secret' + - 'downwardAPI' + - 'csi' + - 'persistentVolumeClaim' + - 'ephemeral' + hostNetwork: false # CIS - 5.2.4 + hostIPC: false # CIS - 5.2.3 + hostPID: false # CIS - 5.2.2 + runAsUser: + rule: 'MustRunAsNonRoot' # CIS - 5.2.6 + seLinux: + rule: 'RunAsAny' + supplementalGroups: + rule: 'MustRunAs' + ranges: + - min: 1 + max: 65535 + fsGroup: + rule: 'MustRunAs' + ranges: + - min: 1 + max: 65535 + readOnlyRootFilesystem: false +``` + +上記の PSP を有効にするためには、ClusterRole と ClusterRoleBinding を作成する必要があります。また、追加の特権を必要とするシステムレベルのポッドに必要な「システム無制限ポリシー」と、servicelb が正常に機能するために必要な sysctl を許可する追加のポリシーも含める必要があります。 + +上記の設定を次のセクションで説明する [ネットワークポリシー](#networkpolicies) と組み合わせて、単一のファイルを `/var/lib/rancher/k3s/server/manifests` ディレクトリに配置できます。以下は `policy.yaml` ファイルの例です。 + +```yaml +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: restricted-psp +spec: + privileged: false + allowPrivilegeEscalation: false + requiredDropCapabilities: + - ALL + volumes: + - 'configMap' + - 'emptyDir' + - 'projected' + - 'secret' + - 'downwardAPI' + - 'csi' + - 'persistentVolumeClaim' + - 'ephemeral' + hostNetwork: false + hostIPC: false + hostPID: false + runAsUser: + rule: 'MustRunAsNonRoot' + seLinux: + rule: 'RunAsAny' + supplementalGroups: + rule: 'MustRunAs' + ranges: + - min: 1 + max: 65535 + fsGroup: + rule: 'MustRunAs' + ranges: + - min: 1 + max: 65535 + readOnlyRootFilesystem: false +--- +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: system-unrestricted-psp + annotations: + seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' +spec: + allowPrivilegeEscalation: true + allowedCapabilities: + - '*' + fsGroup: + rule: RunAsAny + hostIPC: true + hostNetwork: true + hostPID: true + hostPorts: + - max: 65535 + min: 0 + privileged: true + runAsUser: + rule: RunAsAny + seLinux: + rule: RunAsAny + supplementalGroups: + rule: RunAsAny + volumes: + - '*' +--- +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: svclb-psp + annotations: + seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' +spec: + allowPrivilegeEscalation: false + allowedCapabilities: + - NET_ADMIN + allowedUnsafeSysctls: + - net.ipv4.ip_forward + - net.ipv6.conf.all.forwarding + fsGroup: + rule: RunAsAny + hostPorts: + - max: 65535 + min: 0 + runAsUser: + rule: RunAsAny + seLinux: + rule: RunAsAny + supplementalGroups: + rule: RunAsAny +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: psp:restricted-psp +rules: +- apiGroups: + - policy + resources: + - podsecuritypolicies + verbs: + - use + resourceNames: + - restricted-psp +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: psp:system-unrestricted-psp +rules: +- apiGroups: + - policy + resources: + - podsecuritypolicies + resourceNames: + - system-unrestricted-psp + verbs: + - use +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: psp:svclb-psp +rules: +- apiGroups: + - policy + resources: + - podsecuritypolicies + resourceNames: + - svclb-psp + verbs: + - use +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: default:restricted-psp +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: psp:restricted-psp +subjects: +- kind: Group + name: system:authenticated + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: system-unrestricted-node-psp-rolebinding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: psp:system-unrestricted-psp +subjects: +- apiGroup: rbac.authorization.k8s.io + kind: Group + name: system:nodes +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: system-unrestricted-svc-acct-psp-rolebinding + namespace: kube-system +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: psp:system-unrestricted-psp +subjects: +- apiGroup: rbac.authorization.k8s.io + kind: Group + name: system:serviceaccounts +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: svclb-psp-rolebinding + namespace: kube-system +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: psp:svclb-psp +subjects: +- kind: ServiceAccount + name: svclb +--- +kind: NetworkPolicy +apiVersion: networking.k8s.io/v1 +metadata: + name: intra-namespace + namespace: kube-system +spec: + podSelector: {} + ingress: + - from: + - namespaceSelector: + matchLabels: + name: kube-system +--- +kind: NetworkPolicy +apiVersion: networking.k8s.io/v1 +metadata: + name: intra-namespace + namespace: default +spec: + podSelector: {} + ingress: + - from: + - namespaceSelector: + matchLabels: + name: default +--- +kind: NetworkPolicy +apiVersion: networking.k8s.io/v1 +metadata: + name: intra-namespace + namespace: kube-public +spec: + podSelector: {} + ingress: + - from: + - namespaceSelector: + matchLabels: + name: kube-public +``` + + + +> **注意:** Kubernetes の重要な追加機能である CNI、DNS、および Ingress は `kube-system` ネームスペースでポッドとして実行されます。したがって、これらのコンポーネントが適切に動作するために、このネームスペースには制限が少ないポリシーが適用されます。 + +### NetworkPolicies + +CIS は、すべてのネームスペースに対して、ネームスペースおよびポッドへのトラフィックを合理的に制限するネットワークポリシーが適用されることを要求しています。 + +ネットワークポリシーは `/var/lib/rancher/k3s/server/manifests` ディレクトリに配置する必要があり、起動時に自動的にデプロイされます。 + +以下は、準拠したネットワークポリシーの例です。 + +```yaml +kind: NetworkPolicy +apiVersion: networking.k8s.io/v1 +metadata: + name: intra-namespace + namespace: kube-system +spec: + podSelector: {} + ingress: + - from: + - namespaceSelector: + matchLabels: + name: kube-system +``` + +適用された制限により、DNS は意図的に許可されない限りブロックされます。以下は、DNS のトラフィックを許可するネットワークポリシーです。 + +```yaml +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: default-network-dns-policy + namespace: +spec: + ingress: + - ports: + - port: 53 + protocol: TCP + - port: 53 + protocol: UDP + podSelector: + matchLabels: + k8s-app: kube-dns + policyTypes: + - Ingress +``` + +メトリクスサーバーおよび Traefik Ingress コントローラーは、アクセスを許可するネットワークポリシーが作成されない限り、デフォルトでブロックされます。K3s バージョン 1.20 およびそれ以前にパッケージ化された Traefik v1 は、Traefik v2 とは異なるラベルを使用します。クラスターに存在する Traefik のバージョンに関連するサンプル YAML のみを使用するようにしてください。 + + + + +```yaml +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: allow-all-metrics-server + namespace: kube-system +spec: + podSelector: + matchLabels: + k8s-app: metrics-server + ingress: + - {} + policyTypes: + - Ingress +--- +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: allow-all-svclbtraefik-ingress + namespace: kube-system +spec: + podSelector: + matchLabels: + svccontroller.k3s.cattle.io/svcname: traefik + ingress: + - {} + policyTypes: + - Ingress +--- +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: allow-all-traefik-v121-ingress + namespace: kube-system +spec: + podSelector: + matchLabels: + app.kubernetes.io/name: traefik + ingress: + - {} + policyTypes: + - Ingress +--- + +``` + + + + +```yaml +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: allow-all-metrics-server + namespace: kube-system +spec: + podSelector: + matchLabels: + k8s-app: metrics-server + ingress: + - {} + policyTypes: + - Ingress +--- +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: allow-all-svclbtraefik-ingress + namespace: kube-system +spec: + podSelector: + matchLabels: + svccontroller.k3s.cattle.io/svcname: traefik + ingress: + - {} + policyTypes: + - Ingress +--- +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: allow-all-traefik-v120-ingress + namespace: kube-system +spec: + podSelector: + matchLabels: + app: traefik + ingress: + - {} + policyTypes: + - Ingress +--- + +``` + + + +:::info +オペレーターは、作成された追加のネームスペースに対して通常通りネットワークポリシーを管理する必要があります。 +::: + + +### API サーバーの監査設定 + +CIS 要件 1.2.22 から 1.2.25 は、API サーバーの監査ログの設定に関連しています。K3s はデフォルトでログディレクトリと監査ポリシーを作成しません。監査要件は各ユーザーのポリシーと環境に依存するためです。 + +ログディレクトリは、理想的には K3s を開始する前に作成する必要があります。潜在的な機密情報の漏洩を防ぐために、制限されたアクセス権限を推奨します。 + +```bash +sudo mkdir -p -m 700 /var/lib/rancher/k3s/server/logs +``` + +リクエストメタデータをログに記録するための初期監査ポリシーを以下に示します。このポリシーは `/var/lib/rancher/k3s/server` ディレクトリに `audit.yaml` という名前のファイルに書き込む必要があります。API サーバーのポリシー設定に関する詳細情報は、Kubernetes の[ドキュメント](https://kubernetes.io/docs/tasks/debug-application-cluster/audit/)に記載されています。 + +```yaml +apiVersion: audit.k8s.io/v1 +kind: Policy +rules: +- level: Metadata +``` + +両方の設定は、API サーバーへの引数として渡す必要があります。 + +```bash +--kube-apiserver-arg='audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log' +--kube-apiserver-arg='audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml' +``` + +設定が K3s インストール後に作成された場合、それらは `/etc/systemd/system/k3s.service` の K3s の systemd サービスに追加する必要があります。 + +```bash +ExecStart=/usr/local/bin/k3s \ + server \ + '--kube-apiserver-arg=audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log' \ + '--kube-apiserver-arg=audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml' \ +``` + +新しい設定を読み込むために K3s を再起動する必要があります。 + +```bash +sudo systemctl daemon-reload +sudo systemctl restart k3s.service +``` + +## Kubernetes コンポーネントの設定 + +以下の設定は[設定ファイル](../installation/configuration.md#configuration-file)に配置する必要があり、Kubernetes コンポーネントを強化するために必要なすべての修正が含まれています。 + + + + +```yaml +protect-kernel-defaults: true +secrets-encryption: true +kube-apiserver-arg: + - 'admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml' + - 'audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log' + - 'audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml' + - 'audit-log-maxage=30' + - 'audit-log-maxbackup=10' + - 'audit-log-maxsize=100' + - 'request-timeout=300s' + - 'service-account-lookup=true' +kube-controller-manager-arg: + - 'terminated-pod-gc-threshold=10' + - 'use-service-account-credentials=true' +kubelet-arg: + - 'streaming-connection-idle-timeout=5m' + - 'make-iptables-util-chains=true' +``` + + + + + +```yaml +protect-kernel-defaults: true +secrets-encryption: true +kube-apiserver-arg: + - 'enable-admission-plugins=NodeRestriction,PodSecurityPolicy,NamespaceLifecycle,ServiceAccount' + - 'audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log' + - 'audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml' + - 'audit-log-maxage=30' + - 'audit-log-maxbackup=10' + - 'audit-log-maxsize=100' + - 'request-timeout=300s' + - 'service-account-lookup=true' +kube-controller-manager-arg: + - 'terminated-pod-gc-threshold=10' + - 'use-service-account-credentials=true' +kubelet-arg: + - 'streaming-connection-idle-timeout=5m' + - 'make-iptables-util-chains=true' +``` + + + + +## コントロールプレーンの実行と引数 + +以下に、K3s コントロールプレーンコンポーネントと、デフォルトで開始時に与えられる引数を示します。右側にコメントとして、それらが満たす CIS 1.6 コントロールが記載されています。 + +```bash +kube-apiserver + --advertise-port=6443 + --allow-privileged=true + --anonymous-auth=false # 1.2.1 + --api-audiences=unknown + --authorization-mode=Node,RBAC + --bind-address=127.0.0.1 + --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs + --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt # 1.2.31 + --enable-admission-plugins=NodeRestriction,PodSecurityPolicy # 1.2.17 + --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt # 1.2.32 + --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt # 1.2.29 + --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key # 1.2.29 + --etcd-servers=https://127.0.0.1:2379 + --insecure-port=0 # 1.2.19 + --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt + --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt + --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key + --profiling=false # 1.2.21 + --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt + --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key + --requestheader-allowed-names=system:auth-proxy + --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt + --requestheader-extra-headers-prefix=X-Remote-Extra- + --requestheader-group-headers=X-Remote-Group + --requestheader-username-headers=X-Remote-User + --secure-port=6444 # 1.2.20 + --service-account-issuer=k3s + --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key # 1.2.28 + --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key + --service-cluster-ip-range=10.43.0.0/16 + --storage-backend=etcd3 + --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt # 1.2.30 + --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key # 1.2.30 + --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 +``` + +```bash +kube-controller-manager + --address=127.0.0.1 + --allocate-node-cidrs=true + --bind-address=127.0.0.1 # 1.3.7 + --cluster-cidr=10.42.0.0/16 + --cluster-signing-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.crt + --cluster-signing-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key + --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig + --port=10252 + --profiling=false # 1.3.2 + --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt # 1.3.5 + --secure-port=0 +``` +```markdown + --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.key # 1.3.4 + --use-service-account-credentials=true # 1.3.3 +``` + +```bash +kube-scheduler + --address=127.0.0.1 + --bind-address=127.0.0.1 # 1.4.2 + --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig + --port=10251 + --profiling=false # 1.4.1 + --secure-port=0 +``` + +```bash +kubelet + --address=0.0.0.0 + --anonymous-auth=false # 4.2.1 + --authentication-token-webhook=true + --authorization-mode=Webhook # 4.2.2 + --cgroup-driver=cgroupfs + --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt # 4.2.3 + --cloud-provider=external + --cluster-dns=10.43.0.10 + --cluster-domain=cluster.local + --cni-bin-dir=/var/lib/rancher/k3s/data/223e6420f8db0d8828a8f5ed3c44489bb8eb47aa71485404f8af8c462a29bea3/bin + --cni-conf-dir=/var/lib/rancher/k3s/agent/etc/cni/net.d + --container-runtime-endpoint=/run/k3s/containerd/containerd.sock + --container-runtime=remote + --containerd=/run/k3s/containerd/containerd.sock + --eviction-hard=imagefs.available<5%,nodefs.available<5% + --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% + --fail-swap-on=false + --healthz-bind-address=127.0.0.1 + --hostname-override=hostname01 + --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig + --kubelet-cgroups=/systemd/system.slice + --node-labels= + --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests + --protect-kernel-defaults=true # 4.2.6 + --read-only-port=0 # 4.2.4 + --resolv-conf=/run/systemd/resolve/resolv.conf + --runtime-cgroups=/systemd/system.slice + --serialize-image-pulls=false + --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt # 4.2.10 + --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key # 4.2.10 +``` +CIS要件1.2.22から1.2.25に関する追加情報は以下に示されています。 + +## 既知の問題 +以下は、K3sがデフォルトでは現在パスしないコントロールです。各ギャップについて説明し、それが手動のオペレーター介入によってパスできるか、または将来のK3sリリースで対処されるかどうかについての注釈を付けます。 + +### コントロール 1.2.15 +`NamespaceLifecycle`アドミッションコントロールプラグインが設定されていることを確認します。 +
+理由 +アドミッションコントロールポリシーを`NamespaceLifecycle`に設定することで、存在しないネームスペースにオブジェクトが作成されないようにし、終了中のネームスペースが新しいオブジェクトの作成に使用されないようにします。これは、ネームスペース終了プロセスの整合性を確保し、新しいオブジェクトの可用性を確保するために推奨されます。 + +これは、`enable-admission-plugins=`の値としてこの引数を渡し、それを`--kube-apiserver-arg=`引数に渡して`k3s server`に渡すことで修正できます。以下に例を示します。 +
+ +### コントロール 1.2.16 +`PodSecurityPolicy`アドミッションコントロールプラグインが設定されていることを確認します。 +
+理由 +Pod Security Policyは、ポッドが実行できるアクションとアクセスできる内容を制御するクラスター レベルのリソースです。`PodSecurityPolicy`オブジェクトは、システムに受け入れられるためにポッドが従わなければならない条件のセットを定義します。Pod Security Policiesは、ポッドがアクセスできるセキュリティ機能を制御する設定と戦略で構成されているため、ポッドのアクセス許可を制御するために使用する必要があります。 + +これは、`enable-admission-plugins=`の値としてこの引数を渡し、それを`--kube-apiserver-arg=`引数に渡して`k3s server`に渡すことで修正できます。以下に例を示します。 +
+ +### コントロール 1.2.22 +`--audit-log-path`引数が設定されていることを確認します。 +
+理由 +Kubernetes APIサーバーの監査は、個々のユーザー、管理者、またはシステムの他のコンポーネントによってシステムに影響を与えたアクティビティの一連の記録を文書化するセキュリティ関連の時系列セットを提供します。現在、Kubernetesは基本的な監査機能しか提供していませんが、有効にする必要があります。適切な監査ログパスを設定することで有効にできます。 + +これは、`--kube-apiserver-arg=`引数にこの引数を値として渡すことで修正できます。以下に例を示します。 +
+ +### コントロール 1.2.23 +`--audit-log-maxage`引数が30または適切な値に設定されていることを確認します。 +
+理由 +ログを少なくとも30日間保持することで、過去に遡ってイベントを調査または関連付けることができます。監査ログの保持期間を30日またはビジネス要件に応じて設定します。 + +これは、`--kube-apiserver-arg=`引数にこの引数を値として渡すことで修正できます。以下に例を示します。 +
+ +### コントロール 1.2.24 +`--audit-log-maxbackup`引数が10または適切な値に設定されていることを確認します。 +
+理由 +Kubernetesはログファイルを自動的にローテーションします。古いログファイルを保持することで、調査や関連付けに十分なログデータを利用できるようになります。たとえば、ファイルサイズを100 MBに設定し、保持する古いログファイルの数を10に設定した場合、約1 GBのログデータを分析に使用できる可能性があります。 + +これは、`--kube-apiserver-arg=`引数にこの引数を値として渡すことで修正できます。以下に例を示します。 +
+ +### コントロール 1.2.25 +`--audit-log-maxsize`引数が100または適切な値に設定されていることを確認します。 +
+理由 +Kubernetesはログファイルを自動的にローテーションします。古いログファイルを保持することで、調査や関連付けに十分なログデータを利用できるようになります。ファイルサイズを100 MBに設定し、保持する古いログファイルの数を10に設定した場合、約1 GBのログデータを分析に使用できる可能性があります。 + +これは、`--kube-apiserver-arg=`引数にこの引数を値として渡すことで修正できます。以下に例を示します。 +
+ +### コントロール 1.2.26 +`--request-timeout`引数が適切に設定されていることを確認します。 +
+理由 +グローバルリクエストタイムアウトを設定することで、ユーザーの接続速度に応じてAPIサーバーのリクエストタイムアウト制限を延長できます。デフォルトでは60秒に設定されており、接続が遅い場合には問題が発生する可能性があります。リクエストのデータ量が60秒以内に送信できる量を超えると、クラスターリソースにアクセスできなくなる可能性があります。ただし、このタイムアウト制限を大きく設定しすぎると、APIサーバーのリソースが枯渇し、サービス拒否攻撃に対して脆弱になる可能性があります。したがって、この制限を適切に設定し、必要に応じてデフォルトの60秒の制限を変更することをお勧めします。 + +これは、`--kube-apiserver-arg=`引数にこの引数を値として渡すことで修正できます。以下に例を示します。 +
+ +### コントロール 1.2.27 +`--service-account-lookup`引数がtrueに設定されていることを確認します。 +
+理由 +`--service-account-lookup`が有効になっていない場合、apiserverは認証トークンが有効であることのみを確認し、リクエストに記載されているサービスアカウントトークンが実際にetcdに存在するかどうかを検証しません。これにより、対応するサービスアカウントが削除された後でもサービスアカウントトークンを使用できるようになります。これは、チェック時と使用時のセキュリティ問題の一例です。 + +これは、`--kube-apiserver-arg=`引数にこの引数を値として渡すことで修正できます。以下に例を示します。 +
+ +### コントロール 1.2.33 +`--encryption-provider-config`引数が適切に設定されていることを確認します。 +
+理由 +`etcd`は、KubernetesデプロイメントでそのすべてのREST APIオブジェクトの永続ストレージとして使用される高可用性のキー値ストアです。これらのオブジェクトは機密性が高いため、漏洩を防ぐために保存時に暗号化する必要があります。 + +K3sでシークレット暗号化を構成する方法の詳細な手順は[Secrets Encryption](secrets-encryption.md)にあります。 +
+ +### コントロール 1.2.34 +暗号化プロバイダーが適切に構成されていることを確認します。 +
+理由 +`etcd`暗号化が使用されている場合、適切な暗号化プロバイダーのセットが使用されていることを確認することが重要です。現在、`aescbc`、`kms`、および`secretbox`が適切なオプションである可能性が高いです。 + +これは、上記のように有効な構成を`k3s`に渡すことで修正できます。K3sでシークレット暗号化を構成する方法の詳細な手順は[Secrets Encryption](secrets-encryption.md)にあります。 +
+ +### コントロール 1.3.1 +`--terminated-pod-gc-threshold`引数が適切に設定されていることを確認します。 +
+理由 +ガベージコレクションは、十分なリソースの可用性を確保し、パフォーマンスと可用性の低下を防ぐために重要です。最悪の場合、システムがクラッシュするか、長時間使用できなくなる可能性があります。現在のガベージコレクションの設定は12,500個の終了したポッドであり、システムが維持するには多すぎる可能性があります。システムリソースとテストに基づいて、ガベージコレクションを有効にするための適切なしきい値を選択します。 + +これは、`--kube-apiserver-arg=`引数にこの引数を値として渡すことで修正できます。以下に例を示します。 +
+ +### コントロール 3.2.1 +最小限の監査ポリシーが作成されていることを確認します。 +
+理由 +ログ記録は、すべてのシステムにとって潜在的な不正アクセスを検出するための重要な探知コントロールです。 + +これは、コントロール1.2.22 - 1.2.25を渡し、その有効性を確認することで修正できます。 +
+ +### コントロール 4.2.7 +`--make-iptables-util-chains`引数がtrueに設定されていることを確認します。 +
+根拠 +Kubeletは、ポッドのネットワークオプションの選択に基づいて、iptablesの必要な変更を自動的に管理できます。iptablesの変更はkubeletに任せることを推奨します。これにより、iptablesの設定がポッドのネットワーク設定と同期した状態を保つことができます。動的なポッドネットワーク設定の変更に対して手動でiptablesを設定すると、ポッド/コンテナ間および外部との通信が妨げられる可能性があります。iptablesのルールが厳しすぎたり、逆に緩すぎたりすることがあります。 + +これを修正するには、この引数を `k3s server` の `--kube-apiserver-arg=` 引数に値として渡します。以下に例を示します。 +
+ +### コントロール 5.1.5 +デフォルトのサービスアカウントが積極的に使用されていないことを確認する +
+根拠 +Kubernetesは、ポッドに特定のサービスアカウントが割り当てられていない場合に使用される `default` サービスアカウントを提供します。 + +ポッドからKubernetes APIへのアクセスが必要な場合、そのポッド用に特定のサービスアカウントを作成し、そのサービスアカウントに権限を付与する必要があります。 + +デフォルトのサービスアカウントは、サービスアカウントトークンを提供せず、明示的な権限の割り当てがないように構成する必要があります。 + +これは、各ネームスペースの `default` サービスアカウントの `automountServiceAccountToken` フィールドを `false` に更新することで修正できます。 + +組み込みのネームスペース(`kube-system`、`kube-public`、`kube-node-lease`、および `default`)の `default` サービスアカウントについては、K3sは自動的にこれを行いません。これらのサービスアカウントのフィールドを手動で更新して、コントロールをパスすることができます。 +
+ +## 結論 + +このガイドに従った場合、K3sクラスターはCIS Kubernetesベンチマークに準拠するように構成されます。各ベンチマークのチェックの期待事項と、クラスターで同じことを行う方法を理解するために、[CIS 1.8 自己評価ガイド](self-assessment-1.8.md) を確認できます。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/security/secrets-encryption.md b/i18n/ja/docusaurus-plugin-content-docs/current/security/secrets-encryption.md new file mode 100644 index 000000000..d02608aba --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/security/secrets-encryption.md @@ -0,0 +1,59 @@ +--- +title: secretの暗号化 +--- + +# secretの暗号化設定 + +K3sは、保存時のsecretの暗号化を有効にすることをサポートしています。サーバーを初めて起動する際に、フラグ `--secrets-encryption` を渡すと、以下のことが自動的に行われます: + +- AES-CBCキーの生成 +- 生成されたキーを使用して暗号化設定ファイルの生成 +- 暗号化設定ファイルをKubeAPIに暗号化プロバイダー設定として渡す + +:::tip + +secretの暗号化は、サーバーを再起動せずに既存のサーバーで有効にすることはできません。 +スクリプトからインストールする場合は `curl -sfL https://get.k3s.io | sh -s - server --secrets-encryption` を使用するか、[設定オプション](../installation/configuration.md#configuration-with-install-script)に記載されている他の方法を使用してください。 + +::: + +暗号化設定ファイルの例: +```json +{ + "kind": "EncryptionConfiguration", + "apiVersion": "apiserver.config.k8s.io/v1", + "resources": [ + { + "resources": [ + "secrets" + ], + "providers": [ + { + "aescbc": { + "keys": [ + { + "name": "aescbckey", + "secret": "xxxxxxxxxxxxxxxxxxx" + } + ] + } + }, + { + "identity": {} + } + ] + } + ] +} +``` + +## secretの暗号化ツール + +K3sには `secrets-encrypt` というユーティリティツールが含まれており、以下の自動制御を可能にします: + +- secretの暗号化の無効化/有効化 +- 新しい暗号化キーの追加 +- 暗号化キーのローテーションおよび削除 +- secretの再暗号化 + +詳細については、[`k3s secrets-encrypt` コマンドのドキュメント](../cli/secrets-encrypt.md)を参照してください。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/security/security.md b/i18n/ja/docusaurus-plugin-content-docs/current/security/security.md new file mode 100644 index 000000000..7d109deca --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/security/security.md @@ -0,0 +1,17 @@ +--- +title: "セキュリティ" +--- + +このセクションでは、K3s クラスターを保護するための方法論と手段について説明します。2つのセクションに分かれています。これらのガイドは、k3s が埋め込み型 etcd で動作していることを前提としています。 + +まず、ハードニングガイドでは、K3s クラスターを保護するためのセキュリティベストプラクティスのリストを提供します。 + +* [ハードニングガイド](hardening-guide.md) + +次に、ハードニングされたクラスターを検証するための自己評価があります。現在、2つの異なる評価が利用可能です: + +* [CIS 1.24 ベンチマーク自己評価ガイド](self-assessment-1.24.md)、K3s v1.24 用の古いバージョンの CIS ベンチマーク + +* [CIS 1.7 ベンチマーク自己評価ガイド](self-assessment-1.7.md)、K3s バージョン v1.25-v1.26 用 + +* [CIS 1.8 ベンチマーク自己評価ガイド](self-assessment-1.8.md)、K3s バージョン v1.27-v1.29 用 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/security/self-assessment-1.23.md b/i18n/ja/docusaurus-plugin-content-docs/current/security/self-assessment-1.23.md new file mode 100644 index 000000000..5db047477 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/security/self-assessment-1.23.md @@ -0,0 +1,2985 @@ +```markdown +--- +title: CIS 1.23 自己評価ガイド +--- + +## 概要 + +このドキュメントは[K3sセキュリティ強化ガイド](hardening-guide.md)の補足資料です。強化ガイドはK3sの本番インストールを強化するための具体的な指針を提供し、このベンチマークガイドはCIS Kubernetesベンチマークの各コントロールに対して強化されたクラスターのセキュリティレベルを評価するのに役立ちます。K3sのオペレーター、セキュリティチーム、監査人、意思決定者が使用することを目的としています。 + +このガイドはK3sの**v1.22-v1.23**リリースラインおよびCIS Kubernetesベンチマークの**v1.23**リリースに特化しています。 + +各コントロールに関する詳細な説明やテスト失敗時の修正方法については、CIS Kubernetesベンチマークv1.6の該当セクションを参照してください。ベンチマークは[Center for Internet Security (CIS)](https://www.cisecurity.org/benchmark/kubernetes/)で無料アカウントを作成後にダウンロードできます。 + +### コントロールテストの方法論 + +CIS Kubernetesベンチマークの各コントロールは、付随する強化ガイドに従って設定されたK3sクラスターに対して評価されました。 + +コントロール監査が元のCISベンチマークと異なる場合、K3sに特化した監査コマンドがテスト用に提供されます。 + +各コントロールの結果は以下の通りです: + +- **合格** - テスト対象のK3sクラスターがベンチマークに記載された監査に合格しました。 +- **該当なし** - コントロールはK3sの設計上適用されません。修正セクションでその理由を説明します。 +- **警告** - コントロールはCISベンチマークで手動とされており、クラスターの使用ケースやその他の要因に依存します。これらのコントロールはK3sがその実装を妨げないことを確認するために評価されていますが、テスト対象のクラスターのさらなる設定や監査は行われていません。 + +このガイドは、K3sがSystemdユニットとして実行されていることを前提としています。インストール方法が異なる場合は、「監査」コマンドをシナリオに合わせて調整する必要があります。 + +> 注意: このガイドでは`自動化された`テスト(以前は`スコア付き`と呼ばれていたもの)のみを対象としています。 + +## 1.1 コントロールプレーンノードの設定ファイル +### 1.1.1 APIサーバーポッド仕様ファイルの権限が644以上に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:`chmod 644 /etc/kubernetes/manifests/kube-apiserver.yaml` + +### 1.1.2 APIサーバーポッド仕様ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:`chown root:root /etc/kubernetes/manifests/kube-apiserver.yaml` + +### 1.1.3 コントローラーマネージャーポッド仕様ファイルの権限が644以上に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:`chmod 644 /etc/kubernetes/manifests/kube-controller-manager.yaml` + +### 1.1.4 コントローラーマネージャーポッド仕様ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:`chown root:root /etc/kubernetes/manifests/kube-controller-manager.yaml` + +### 1.1.5 スケジューラーポッド仕様ファイルの権限が644以上に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:`chmod 644 /etc/kubernetes/manifests/kube-scheduler.yaml` + +### 1.1.6 スケジューラーポッド仕様ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:`chown root:root /etc/kubernetes/manifests/kube-scheduler.yaml` + +### 1.1.7 etcdポッド仕様ファイルの権限が644以上に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:`chmod 644 /etc/kubernetes/manifests/etcd.yaml` + +### 1.1.8 etcdポッド仕様ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:`chown root:root /etc/kubernetes/manifests/etcd.yaml` + +### 1.1.9 コンテナネットワークインターフェースファイルの権限が644以上に設定されていることを確認する(手動) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:`chmod 644 ` + +### 1.1.10 コンテナネットワークインターフェースファイルの所有者がroot:rootに設定されていることを確認する(手動) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:`chown root:root ` + +### 1.1.11 etcdデータディレクトリの権限が700以上に設定されていることを確認する(自動化) + +**結果:** 合格 + +**修正方法:** +etcdサーバーノードで、コマンド'ps -ef | grep etcd'から引数--data-dirとして渡されるetcdデータディレクトリを取得します。 +以下のコマンドを実行します(上記で見つかったetcdデータディレクトリに基づく)。例:chmod 700 /var/lib/etcd + +**監査スクリプト:** `check_for_k3s_etcd.sh` + +```bash +#!/bin/bash + +# このスクリプトは、k3sが実際にetcdを実行していること(sqlite3などの他のデータベースではないこと)を確認してから要件をチェックします +set -eE + +handle_error() { + echo "false" +} + +trap 'handle_error' ERR + +if [[ "$(journalctl -D /var/log/journal -u k3s | grep 'Managed etcd cluster initializing' | grep -v grep | wc -l)" -gt 0 ]]; then + case $1 in + "1.1.11") + echo $(stat -c %a /var/lib/rancher/k3s/server/db/etcd);; + "1.2.29") + echo $(journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-');; + "2.1") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.2") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.3") + echo $(grep 'auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.4") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.5") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.6") + echo $(grep 'peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.7") + echo $(grep 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config);; + esac +else +# 別のデータベースが実行されている場合、スキャンに合格するために必要なものを返します + case $1 in + "1.1.11") + echo "700";; + "1.2.29") + echo "--etcd-certfile AND --etcd-keyfile";; + "2.1") + echo "cert-file AND key-file";; + "2.2") + echo "--client-cert-auth=true";; + "2.3") + echo "false";; + "2.4") + echo "peer-cert-file AND peer-key-file";; + "2.5") + echo "--client-cert-auth=true";; + "2.6") + echo "--peer-auto-tls=false";; + "2.7") + echo "--trusted-ca-file";; + esac +fi +``` + +**監査実行:** + +```bash +./check_for_k3s_etcd.sh 1.1.11 +``` + +**期待される結果**: + +```console +'700' は '700' と等しい +``` + +**返された値**: + +```console +700 +``` + +### 1.1.12 etcdデータディレクトリの所有者がetcd:etcdに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +etcdサーバーノードで、コマンド'ps -ef | grep etcd'から引数--data-dirとして渡されるetcdデータディレクトリを取得します。 +以下のコマンドを実行します(上記で見つかったetcdデータディレクトリに基づく)。 +例:chown etcd:etcd /var/lib/etcd + +### 1.1.13 admin.confファイルの権限が600以上に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:chmod 600 /var/lib/rancher/k3s/server/cred/admin.kubeconfig + +### 1.1.14 admin.confファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:chown root:root /etc/kubernetes/admin.conf + +**監査:** + +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/admin.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/server/cred/admin.kubeconfig; fi' +``` + +**期待される結果**: + +```console +'root:root' は 'root:root' と等しい +``` + +**返された値**: + +```console +root:root +``` + +### 1.1.15 scheduler.confファイルの権限が644以上に設定されていることを確認する(自動化) + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例:chmod 644 scheduler + +**監査:** + +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; fi' +``` + +**期待される結果**: + +```console +permissionsは644の権限を持ち、期待される権限は644以上 +``` + +**返された値**: + +```console +permissions=644 +``` + +### 1.1.16 scheduler.confファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +``` +例えば、`chown root:root scheduler` + +**監査:** + +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; fi' +``` + +**期待される結果**: + +```console +'root:root' が存在する +``` + +**返された値**: + +```console +root:root +``` + +### 1.1.17 コントローラーマネージャー.confファイルのパーミッションが644またはそれ以上に制限されていることを確認する(自動化) + + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例えば、 +chmod 644 controllermanager + +**監査:** + +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/controller.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/controller.kubeconfig; fi' +``` + +**期待される結果**: + +```console +permissions が644のパーミッションを持ち、期待されるパーミッションは644またはそれ以上に制限されている +``` + +**返された値**: + +```console +permissions=644 +``` + +### 1.1.18 コントローラーマネージャー.confファイルの所有者がroot:rootに設定されていることを確認する(自動化) + + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例えば、 +chown root:root controllermanager + +**監査:** + +```bash +stat -c %U:%G /var/lib/rancher/k3s/server/tls +``` + +**期待される結果**: + +```console +'root:root' が 'root:root' と等しい +``` + +**返された値**: + +```console +root:root +``` + +### 1.1.19 Kubernetes PKIディレクトリおよびファイルの所有者がroot:rootに設定されていることを確認する(自動化) + + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例えば、 +chown -R root:root /etc/kubernetes/pki/ + +**監査:** + +```bash +find /var/lib/rancher/k3s/server/tls | xargs stat -c %U:%G +``` + +**期待される結果**: + +```console +'root:root' が存在する +``` + +**返された値**: + +```console +root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root root:root +``` + +### 1.1.20 Kubernetes PKI証明書ファイルのパーミッションが644またはそれ以上に制限されていることを確認する(手動) + + +**結果:** 警告 + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例えば、 +chmod -R 644 /etc/kubernetes/pki/*.crt + +**監査:** + +```bash +stat -c %n %a /var/lib/rancher/k3s/server/tls/*.crt +``` + +### 1.1.21 Kubernetes PKIキーのファイルパーミッションが600に設定されていることを確認する(手動) + + +**結果:** 警告 + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例えば、 +chmod -R 600 /etc/kubernetes/pki/*.key + +**監査:** + +```bash +stat -c %n %a /var/lib/rancher/k3s/server/tls/*.key +``` + +## 1.2 APIサーバー +### 1.2.1 --anonymous-auth引数がfalseに設定されていることを確認する(手動) + + +**結果:** 警告 + +**修正方法:** +コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、以下のパラメータを設定します。 +--anonymous-auth=false + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'anonymous-auth' +``` + +### 1.2.2 --token-auth-fileパラメータが設定されていないことを確認する(自動化) + + +**結果:** 合格 + +**修正方法:** +ドキュメントに従って認証のための代替メカニズムを構成します。その後、コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、`--token-auth-file=` パラメータを削除します。 + +**監査:** + +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**期待される結果**: + +```console +'--token-auth-file' が存在しない +``` + +**返された値**: + +```console +root 1616 1600 6 13:26 ? 00:01:28 containerd -c /var/lib/rancher/k3s/agent/etc/containerd/config.toml -a /run/k3s/containerd/containerd.sock --state /run/k3s/containerd --root /var/lib/rancher/k3s/agent/containerd root 2318 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id b41ec3297be4625c2406ad8b7b4f8b91cddd60850c420050c4c3273f809b3e7e -address /run/k3s/containerd/containerd.sock root 2341 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id e7999a65ae0a4e9969f32317ec48ae4f7071b62f92e5236696737973be77c2e1 -address /run/k3s/containerd/containerd.sock root 3199 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 90c4e63d6ee29d40a48c2fdaf2738c2472cba1139dde8a550466c452184f8528 -address /run/k3s/containerd/containerd.sock root 3923 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id be5f4b9bd1ed9239362b7000b47f353acb8bc8ca52a9c9145cba0e902ec1c4b9 -address /run/k3s/containerd/containerd.sock root 4559 1 0 13:28 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 04cd40ea6b6078797f177c902c89412c70e523ad2a687a62829bf1d16ff0e19c -address /run/k3s/containerd/containerd.sock root 4647 1 0 13:28 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 48f37a480315b6adce2d2a5c5d67a85412dd0ba7a2e82816434e0deb9fa75de9 -address /run/k3s/containerd/containerd.sock root 6610 1 0 13:47 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 1cf71c22f568468055e517ab363437c0e54e45274c64024d337cc5bcce66341d -address /run/k3s/containerd/containerd.sock +``` + +### 1.2.3 --DenyServiceExternalIPsが設定されていないことを確認する(自動化) + + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、`DenyServiceExternalIPs` を有効なアドミッションプラグインから削除します。 + +**監査:** + +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**期待される結果**: + +```console +'--enable-admission-plugins' が存在する または '--enable-admission-plugins' が存在しない +``` + +**返された値**: + +```console +root 1616 1600 6 13:26 ? 00:01:28 containerd -c /var/lib/rancher/k3s/agent/etc/containerd/config.toml -a /run/k3s/containerd/containerd.sock --state /run/k3s/containerd --root /var/lib/rancher/k3s/agent/containerd root 2318 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id b41ec3297be4625c2406ad8b7b4f8b91cddd60850c420050c4c3273f809b3e7e -address /run/k3s/containerd/containerd.sock root 2341 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id e7999a65ae0a4e9969f32317ec48ae4f7071b62f92e5236696737973be77c2e1 -address /run/k3s/containerd/containerd.sock root 3199 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 90c4e63d6ee29d40a48c2fdaf2738c2472cba1139dde8a550466c452184f8528 -address /run/k3s/containerd/containerd.sock root 3923 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id be5f4b9bd1ed9239362b7000b47f353acb8bc8ca52a9c9145cba0e902ec1c4b9 -address /run/k3s/containerd/containerd.sock root 4559 1 0 13:28 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 04cd40ea6b6078797f177c902c89412c70e523ad2a687a62829bf1d16ff0e19c -address /run/k3s/containerd/containerd.sock root 4647 1 0 13:28 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 48f37a480315b6adce2d2a5c5d67a85412dd0ba7a2e82816434e0deb9fa75de9 -address /run/k3s/containerd/containerd.sock root 6610 1 0 13:47 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 1cf71c22f568468055e517ab363437c0e54e45274c64024d337cc5bcce66341d -address /run/k3s/containerd/containerd.sock +``` + +### 1.2.4 --kubelet-https引数がtrueに設定されていることを確認する(自動化) + + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--kubelet-httpsパラメータを削除します。 + +### 1.2.5 --kubelet-client-certificateおよび--kubelet-client-key引数が適切に設定されていることを確認する(自動化) + + +**結果:** 合格 + +**修正方法:** +Kubernetesのドキュメントに従って、apiserverとkubelets間のTLS接続を設定します。その後、コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、以下のようにkubeletクライアント証明書とキーのパラメータを設定します。 +``` +--kubelet-client-certificate= +--kubelet-client-key= +``` + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'kubelet-certificate-authority' +``` + +**期待される結果**: + +```console +'--kubelet-client-certificate' が存在し、'--kubelet-client-key' が存在する +``` + +**返された値**: + +```console +``` +```markdown +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.6 Ensure that the --kubelet-certificate-authority argument is set as appropriate (Automated) + +**Result:** pass + +**Remediation:** +Follow the Kubernetes documentation and setup the TLS connection between +the apiserver and kubelets. Then, edit the API server pod specification file +/etc/kubernetes/manifests/kube-apiserver.yaml on the control plane node and set the +--kubelet-certificate-authority parameter to the path to the cert file for the certificate authority +`--kubelet-certificate-authority=`. + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'kubelet-certificate-authority' +``` + +**Expected Result**: + +```console +'--kubelet-certificate-authority' is present +``` + +**Returned Value**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.7 Ensure that the --authorization-mode argument is not set to AlwaysAllow (Automated) + +**Result:** pass + +**Remediation:** +Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml +on the control plane node and set the --authorization-mode parameter to values other than AlwaysAllow. +One such example could be as below. +--authorization-mode=RBAC + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode' +``` + +**Expected Result**: + +```console +'--authorization-mode' does not have 'AlwaysAllow' +``` + +**Returned Value**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.8 Ensure that the --authorization-mode argument includes Node (Automated) + +**Result:** pass + +**Remediation:** +Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml +on the control plane node and set the --authorization-mode parameter to a value that includes Node. +--authorization-mode=Node,RBAC + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode' +``` + +**Expected Result**: + +```console +'--authorization-mode' has 'Node' +``` + +**Returned Value**: + +```console +``` +```markdown +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.6 Ensure that the --kubelet-certificate-authority argument is set as appropriate (Automated) + +**Result:** pass + +**Remediation:** +Follow the Kubernetes documentation and setup the TLS connection between +the apiserver and kubelets. Then, edit the API server pod specification file +/etc/kubernetes/manifests/kube-apiserver.yaml on the control plane node and set the +--kubelet-certificate-authority parameter to the path to the cert file for the certificate authority +`--kubelet-certificate-authority=`. + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'kubelet-certificate-authority' +``` + +**Expected Result**: + +```console +'--kubelet-certificate-authority' is present +``` + +**Returned Value**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.7 Ensure that the --authorization-mode argument is not set to AlwaysAllow (Automated) + +**Result:** pass + +**Remediation:** +Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml +on the control plane node and set the --authorization-mode +```markdown +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.9 Ensure that the --authorization-mode argument includes RBAC (Automated) + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--authorization-mode パラメータをRBACを含む値に設定します。例えば `--authorization-mode=Node,RBAC`。 + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode' +``` + +**期待される結果**: + +```console +'--authorization-mode' に 'RBAC' が含まれている +``` + +**返された値**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.10 Ensure that the admission control plugin EventRateLimit is set (Manual) + +**結果:** 警告 + +**修正方法:** +Kubernetesのドキュメントに従い、設定ファイルに希望する制限を設定します。その後、APIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、以下のパラメータを設定します。 +``` +--enable-admission-plugins=...,EventRateLimit,... +--admission-control-config-file= +``` + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins' +``` + +**期待される結果**: + +```console +'--enable-admission-plugins' に 'EventRateLimit' が含まれている +``` + +**返された値**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.11 Ensure that the admission control plugin AlwaysAdmit is not set (Automated) + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--enable-admission-plugins パラメータを削除するか、AlwaysAdmitを含まない値に設定します。 + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins' +``` + +**期待される結果**: + +```console +'--enable-admission-plugins' に 'AlwaysAdmit' が含まれていない または '--enable-admission-plugins' が存在しない +``` + +**返された値**: + +```console +``` +``` +```markdown +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.12 Ensure that the admission control plugin AlwaysPullImages is set (Manual) + +**Result:** warn + +**Remediation:** +APIサーバーポッドの仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml をコントロールプレーンノードで編集し、--enable-admission-plugins パラメータに AlwaysPullImages を含めるように設定します。 +--enable-admission-plugins=...,AlwaysPullImages,... + +**Audit:** + +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**Expected Result**: + +```console +'--enable-admission-plugins' is present +``` + +**Returned Value**: + +```console +root 1616 1600 6 13:26 ? 00:01:28 containerd -c /var/lib/rancher/k3s/agent/etc/containerd/config.toml -a /run/k3s/containerd/containerd.sock --state /run/k3s/containerd --root /var/lib/rancher/k3s/agent/containerd root 2318 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id b41ec3297be4625c2406ad8b7b4f8b91cddd60850c420050c4c3273f809b3e7e -address /run/k3s/containerd/containerd.sock root 2341 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id e7999a65ae0a4e9969f32317ec48ae4f7071b62f92e5236696737973be77c2e1 -address /run/k3s/containerd/containerd.sock root 3199 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 90c4e63d6ee29d40a48c2fdaf2738c2472cba1139dde8a550466c452184f8528 -address /run/k3s/containerd/containerd.sock root 3923 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id be5f4b9bd1ed9239362b7000b47f353acb8bc8ca52a9c9145cba0e902ec1c4b9 -address /run/k3s/containerd/containerd.sock root 4559 1 0 13:28 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 04cd40ea6b6078797f177c902c89412c70e523ad2a687a62829bf1d16ff0e19c -address /run/k3s/containerd/containerd.sock root 4647 1 0 13:28 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 48f37a480315b6adce2d2a5c5d67a85412dd0ba7a2e82816434e0deb9fa75de9 -address /run/k3s/containerd/containerd.sock root 6610 1 0 13:47 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 1cf71c22f568468055e517ab363437c0e54e45274c64024d337cc5bcce66341d -address /run/k3s/containerd/containerd.sock +``` + +### 1.2.13 Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used (Manual) + +**Result:** warn + +**Remediation:** +APIサーバーポッドの仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml をコントロールプレーンノードで編集し、--enable-admission-plugins パラメータに SecurityContextDeny を含めるように設定します。ただし、PodSecurityPolicy が既に設定されている場合は除きます。 +--enable-admission-plugins=...,SecurityContextDeny,... + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins' +``` + +**Expected Result**: + +```console +'--enable-admission-plugins' has 'SecurityContextDeny' OR '--enable-admission-plugins' has 'PodSecurityPolicy' +``` + +**Returned Value**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.14 Ensure that the admission control plugin ServiceAccount is set (Automated) + +**Result:** pass + +**Remediation:** +ドキュメントに従い、環境に応じて ServiceAccount オブジェクトを作成します。その後、APIサーバーポッドの仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml をコントロールプレーンノードで編集し、--disable-admission-plugins パラメータが ServiceAccount を含まない値に設定されていることを確認します。 + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -v grep +``` + +**Expected Result**: + +```console +'--disable-admission-plugins' is present OR '--disable-admission-plugins' is not present +``` + +**Returned Value**: + +```console +``` +``` +```markdown +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.15 NamespaceLifecycle アドミッションコントロールプラグインが設定されていることを確認する (自動化) + + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードの API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--disable-admission-plugins パラメータを設定して NamespaceLifecycle が含まれていないことを確認します。 + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -v grep +``` + +**期待される結果**: + +```console +'--disable-admission-plugins' が存在するか '--disable-admission-plugins' が存在しない +``` + +**返された値**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.16 NodeRestriction アドミッションコントロールプラグインが設定されていることを確認する (自動化) + + +**結果:** 合格 + +**修正方法:** +Kubernetes のドキュメントに従い、kubelet に NodeRestriction プラグインを設定します。その後、コントロールプレーンノードの API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--enable-admission-plugins パラメータに NodeRestriction を含む値を設定します。 +--enable-admission-plugins=...,NodeRestriction,... + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins' +``` + +**期待される結果**: + +```console +'--enable-admission-plugins' に 'NodeRestriction' が含まれている +``` + +**返された値**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.17 --secure-port 引数が 0 に設定されていないことを確認する (自動化) + + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードの API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--secure-port パラメータを削除するか、0 以外の異なるポートに設定します。 + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'secure-port' +``` + +**期待される結果**: + +```console +'--secure-port' が 0 より大きいか '--secure-port' が存在しない +``` + +**返された値**: + +```console +``` +``` +```markdown +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.18 --profiling 引数が false に設定されていることを確認する (自動化) + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードの /etc/kubernetes/manifests/kube-apiserver.yaml ファイルを編集し、以下のパラメータを設定します。 +--profiling=false + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'profiling' +``` + +**期待される結果**: + +```console +'--profiling' が 'false' に等しい +``` + +**返された値**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.19 --audit-log-path 引数が設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの /etc/kubernetes/manifests/kube-apiserver.yaml ファイルを編集し、--audit-log-path パラメータを適切なパスとファイルに設定します。例えば、 +--audit-log-path=/var/log/apiserver/audit.log + +### 1.2.20 --audit-log-maxage 引数が 30 または適切な値に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの /etc/kubernetes/manifests/kube-apiserver.yaml ファイルを編集し、--audit-log-maxage パラメータを 30 または適切な日数に設定します。例えば、 +--audit-log-maxage=30 + +### 1.2.21 --audit-log-maxbackup 引数が 10 または適切な値に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの /etc/kubernetes/manifests/kube-apiserver.yaml ファイルを編集し、--audit-log-maxbackup パラメータを 10 または適切な値に設定します。例えば、 +--audit-log-maxbackup=10 + +### 1.2.22 --audit-log-maxsize 引数が 100 または適切な値に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの /etc/kubernetes/manifests/kube-apiserver.yaml ファイルを編集し、--audit-log-maxsize パラメータを適切なサイズ(MB単位)に設定します。例えば、100 MB に設定する場合、 +--audit-log-maxsize=100 + +### 1.2.24 --service-account-lookup 引数が true に設定されていることを確認する (自動化) + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードの /etc/kubernetes/manifests/kube-apiserver.yaml ファイルを編集し、以下のパラメータを設定します。 +--service-account-lookup=true +または、このファイルから --service-account-lookup パラメータを削除してデフォルトを有効にします。 + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -v grep +``` + +**期待される結果**: + +```console +'--service-account-lookup' が存在しない、または '--service-account-lookup' が存在する +``` + +**返された値**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.25 --request-timeout 引数が適切に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの /etc/kubernetes/manifests/kube-apiserver.yaml ファイルを編集し、--service-account-key-file パラメータをサービスアカウントの公開鍵ファイルに設定します。例えば、 +`--service-account-key-file=`。 + +### 1.2.26 --etcd-certfile および --etcd-keyfile 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**修正方法:** +Kubernetes のドキュメントに従って、apiserver と etcd 間の TLS 接続を設定します。その後、コントロールプレーンノードの /etc/kubernetes/manifests/kube-apiserver.yaml ファイルを編集し、etcd 証明書および鍵ファイルのパラメータを設定します。 +``` +--etcd-certfile= +--etcd-keyfile= +``` +``` +**監査スクリプト:** `check_for_k3s_etcd.sh` + +```bash +#!/bin/bash + +# このスクリプトは、k3sが実際にetcdを実行していること(sqlite3などの他のデータベースではないこと)を確認するために使用されます。 +# 要件を確認する前に +set -eE + +handle_error() { + echo "false" +} + +trap 'handle_error' ERR + + +if [[ "$(journalctl -D /var/log/journal -u k3s | grep 'Managed etcd cluster initializing' | grep -v grep | wc -l)" -gt 0 ]]; then + case $1 in + "1.1.11") + echo $(stat -c %a /var/lib/rancher/k3s/server/db/etcd);; + "1.2.29") + echo $(journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-');; + "2.1") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.2") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.3") + echo $(grep 'auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.4") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.5") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.6") + echo $(grep 'peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.7") + echo $(grep 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config);; + esac +else +# 別のデータベースが実行されている場合、スキャンを通過するために必要なものを返します + case $1 in + "1.1.11") + echo "700";; + "1.2.29") + echo "--etcd-certfile AND --etcd-keyfile";; + "2.1") + echo "cert-file AND key-file";; + "2.2") + echo "--client-cert-auth=true";; + "2.3") + echo "false";; + "2.4") + echo "peer-cert-file AND peer-key-file";; + "2.5") + echo "--client-cert-auth=true";; + "2.6") + echo "--peer-auto-tls=false";; + "2.7") + echo "--trusted-ca-file";; + esac +fi + +``` + +**監査実行:** + +```bash +./check_for_k3s_etcd.sh 1.2.29 +``` + +**期待される結果**: + +```console +'--etcd-certfile' が存在し、'--etcd-keyfile' が存在する +``` + +**返された値**: + +```console +--etcd-certfile AND --etcd-keyfile +``` + +### 1.2.27 `--tls-cert-file` および `--tls-private-key-file` 引数が適切に設定されていることを確認する (自動化) + + +**結果:** 合格 + +**修正方法:** +Kubernetesのドキュメントに従い、apiserverでTLS接続を設定します。 +次に、コントロールプレーンノードのAPIサーバーポッド仕様ファイル `/etc/kubernetes/manifests/kube-apiserver.yaml` を編集し、TLS証明書および秘密鍵ファイルのパラメータを設定します。 +``` +--tls-cert-file= +--tls-private-key-file= +``` + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep -A1 'Running kube-apiserver' | tail -n2 +``` + +**期待される結果**: + +```console +'--tls-cert-file' が存在し、'--tls-private-key-file' が存在する +``` + +**返された値**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/kube-scheduler --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259" +``` + +### 1.2.28 `--client-ca-file` 引数が適切に設定されていることを確認する (自動化) + + +**結果:** 合格 + +**修正方法:** +Kubernetesのドキュメントに従い、apiserverでTLS接続を設定します。 +次に、コントロールプレーンノードのAPIサーバーポッド仕様ファイル `/etc/kubernetes/manifests/kube-apiserver.yaml` を編集し、クライアント証明書認証局ファイルを設定します。 +`--client-ca-file=` + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'client-ca-file' +``` + +**期待される結果**: + +```console +'--client-ca-file' が存在する +``` + +**返された値**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.29 `--etcd-cafile` 引数が適切に設定されていることを確認する (自動化) + + +**結果:** 合格 + +**修正方法:** +Kubernetesのドキュメントに従い、apiserverとetcd間のTLS接続を設定します。 +次に、コントロールプレーンノードのAPIサーバーポッド仕様ファイル `/etc/kubernetes/manifests/kube-apiserver.yaml` を編集し、etcd証明書認証局ファイルのパラメータを設定します。 +`--etcd-cafile=` + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-cafile' +``` + +**期待される結果**: + +```console +'--etcd-cafile' が存在する +``` + +**返された値**: + +```console +``` +```markdown +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 1.2.30 Ensure that the --encryption-provider-config argument is set as appropriate (Manual) + +**Result:** warn + +**Remediation:** +Follow the Kubernetes documentation and configure a EncryptionConfig file. +Then, edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml +on the control plane node and set the --encryption-provider-config parameter to the path of that file. +For example, `--encryption-provider-config=` + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'encryption-provider-config' +``` + +### 1.2.31 Ensure that encryption providers are appropriately configured (Manual) + +**Result:** warn + +**Remediation:** +Follow the Kubernetes documentation and configure a EncryptionConfig file. +In this file, choose aescbc, kms or secretbox as the encryption provider. + +**Audit:** + +```bash +grep aescbc /path/to/encryption-config.json +``` + +### 1.2.32 Ensure that the API Server only makes use of Strong Cryptographic Ciphers (Manual) + +**Result:** warn + +**Remediation:** +Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml +on the control plane node and set the below parameter. +--tls-cipher-suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256, +TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, +TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, +TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, +TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, +TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305, +TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA, +TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384 + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'tls-cipher-suites' +``` + +## 1.3 Controller Manager +### 1.3.1 Ensure that the --terminated-pod-gc-threshold argument is set as appropriate (Manual) + +**Result:** warn + +**Remediation:** +Edit the Controller Manager pod specification file /etc/kubernetes/manifests/kube-controller-manager.yaml +on the control plane node and set the --terminated-pod-gc-threshold to an appropriate threshold, +for example, --terminated-pod-gc-threshold=10 + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'terminated-pod-gc-threshold' +``` + +### 1.3.2 Ensure that the --profiling argument is set to false (Automated) + +**Result:** pass + +**Remediation:** +Edit the Controller Manager pod specification file /etc/kubernetes/manifests/kube-controller-manager.yaml +on the control plane node and set the below parameter. +--profiling=false + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'profiling' +``` + +**Expected Result**: + +```console +'--profiling' is equal to 'false' +``` + +**Returned Value**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/kube-controller-manager --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,-service,-route,-cloud-node-lifecycle --feature-gates=JobTrackingWithFinalizers=true --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true" +``` + +### 1.3.3 Ensure that the --use-service-account-credentials argument is set to true (Automated) + +**Result:** pass + +**Remediation:** +Edit the Controller Manager pod specification file /etc/kubernetes/manifests/kube-controller-manager.yaml +on the control plane node to set the below parameter. +--use-service-account-credentials=true + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'use-service-account-credentials' +``` + +**Expected Result**: + +```console +'--use-service-account-credentials' is not equal to 'false' +``` + +**Returned Value**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/kube-controller-manager --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,-service,-route,-cloud-node-lifecycle --feature-gates=JobTrackingWithFinalizers=true --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true" +``` + +### 1.3.4 Ensure that the --service-account-private-key-file argument is set as appropriate (Automated) + +**Result:** pass + +**Remediation:** +Edit the Controller Manager pod specification file /etc/kubernetes/manifests/kube-controller-manager.yaml +on the control plane node and set the --service-account-private-key-file parameter +to the private key file for service accounts. For example, +`--service-account-private-key-file=`. + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'service-account-private-key-file' +``` + +**Expected Result**: + +```console +'--service-account-private-key-file' is present +``` + +**Returned Value**: + +```console +``` +```markdown + +### 1.2.30 適切に設定された --encryption-provider-config 引数を確認する (手動) + +**結果:** 警告 + +**修正方法:** +Kubernetesのドキュメントに従い、EncryptionConfigファイルを設定します。 +次に、コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、 +--encryption-provider-config パラメータをそのファイルのパスに設定します。 +例: `--encryption-provider-config=` + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'encryption-provider-config' +``` + +### 1.2.31 適切に設定された暗号化プロバイダーを確認する (手動) + +**結果:** 警告 + +**修正方法:** +Kubernetesのドキュメントに従い、EncryptionConfigファイルを設定します。 +このファイルで、暗号化プロバイダーとしてaescbc、kms、またはsecretboxを選択します。 + +**監査:** + +```bash +grep aescbc /path/to/encryption-config.json +``` + +### 1.2.32 APIサーバーが強力な暗号化スイートのみを使用していることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、 +以下のパラメータを設定します。 +--tls-cipher-suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256, +TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, +TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, +TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, +TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, +TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305, +TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA, +TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384 + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'tls-cipher-suites' +``` + +## 1.3 コントローラーマネージャー +### 1.3.1 適切に設定された --terminated-pod-gc-threshold 引数を確認する (手動) + +**結果:** 警告 + +**修正方法:** +コントロールプレーンノードのコントローラーマネージャーポッド仕様ファイル /etc/kubernetes/manifests/kube-controller-manager.yaml を編集し、 +--terminated-pod-gc-threshold を適切な閾値に設定します。 +例: --terminated-pod-gc-threshold=10 + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'terminated-pod-gc-threshold' +``` + +### 1.3.2 --profiling 引数が false に設定されていることを確認する (自動) + +**結果:** 合格 + +**修正方法:** +コントロールプレーンノードのコントローラーマネージャーポッド仕様ファイル /etc/kubernetes/manifests/kube-controller-manager.yaml を編集し、 +以下のパラメータを設定します。 +--profiling=false + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'profiling' +``` + +**期待される結果**: + +```console +'--profiling' が 'false' に等しい +``` + +**返された値**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/kube-controller-manager --cluster-cidr=10.42.0.0/16 +```markdown +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/kube-controller-manager --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,-service,-route,-cloud-node-lifecycle --feature-gates=JobTrackingWithFinalizers=true --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true" +``` + +### 1.3.5 Ensure that the --root-ca-file argument is set as appropriate (Automated) + +**Result:** pass + +**Remediation:** +Edit the Controller Manager pod specification file /etc/kubernetes/manifests/kube-controller-manager.yaml +on the control plane node and set the --root-ca-file parameter to the certificate bundle file. +`--root-ca-file=` + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'root-ca-file' +``` + +**Expected Result**: + +```console +'--root-ca-file' is present +``` + +**Returned Value**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/kube-controller-manager --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,-service,-route,-cloud-node-lifecycle --feature-gates=JobTrackingWithFinalizers=true --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --use-service-account-credentials=true" +``` + +### 1.3.6 Ensure that the RotateKubeletServerCertificate argument is set to true (Automated) + +**Result:** Not Applicable + +**Remediation:** +Edit the Controller Manager pod specification file /etc/kubernetes/manifests/kube-controller-manager.yaml +on the control plane node and set the --feature-gates parameter to include RotateKubeletServerCertificate=true. +--feature-gates=RotateKubeletServerCertificate=true + +### 1.3.7 Ensure that the --bind-address argument is set to 127.0.0.1 (Automated) + +**Result:** pass + +**Remediation:** +Edit the Controller Manager pod specification file /etc/kubernetes/manifests/kube-controller-manager.yaml +on the control plane node and ensure the correct value for the --bind-address parameter + +**Audit:** + +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**Expected Result**: + +```console +'--bind-address' is present OR '--bind-address' is not present +``` + +**Returned Value**: + +```console +root 1616 1600 6 13:26 ? 00:01:28 containerd -c /var/lib/rancher/k3s/agent/etc/containerd/config.toml -a /run/k3s/containerd/containerd.sock --state /run/k3s/containerd --root /var/lib/rancher/k3s/agent/containerd root 2318 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id b41ec3297be4625c2406ad8b7b4f8b91cddd60850c420050c4c3273f809b3e7e -address /run/k3s/containerd/containerd.sock root 2341 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id e7999a65ae0a4e9969f32317ec48ae4f7071b62f92e5236696737973be77c2e1 -address /run/k3s/containerd/containerd.sock root 3199 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 90c4e63d6ee29d40a48c2fdaf2738c2472cba1139dde8a550466c452184f8528 -address /run/k3s/containerd/containerd.sock root 3923 1 0 13:27 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id be5f4b9bd1ed9239362b7000b47f353acb8bc8ca52a9c9145cba0e902ec1c4b9 -address /run/k3s/containerd/containerd.sock root 4559 1 0 13:28 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 04cd40ea6b6078797f177c902c89412c70e523ad2a687a62829bf1d16ff0e19c -address /run/k3s/containerd/containerd.sock root 4647 1 0 13:28 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 48f37a480315b6adce2d2a5c5d67a85412dd0ba7a2e82816434e0deb9fa75de9 -address /run/k3s/containerd/containerd.sock root 6610 1 0 13:47 ? 00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 1cf71c22f568468055e517ab363437c0e54e45274c64024d337cc5bcce66341d -address /run/k3s/containerd/containerd.sock +``` + +## 1.4 Scheduler +### 1.4.1 Ensure that the --profiling argument is set to false (Automated) + +**Result:** pass + +**Remediation:** +Edit the Scheduler pod specification file /etc/kubernetes/manifests/kube-scheduler.yaml file +on the control plane node and set the below parameter. +--profiling=false + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-scheduler' | tail -n1 +``` + +**Expected Result**: + +```console +'--profiling' is equal to 'false' +``` + +**Returned Value**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/kube-scheduler --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259" +``` + +### 1.4.2 Ensure that the --bind-address argument is set to 127.0.0.1 (Automated) + +**Result:** pass + +**Remediation:** +Edit the Scheduler pod specification file /etc/kubernetes/manifests/kube-scheduler.yaml +on the control plane node and ensure the correct value for the --bind-address parameter + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-scheduler' | tail -n1 | grep 'bind-address' +``` + +**Expected Result**: + +```console +'--bind-address' is equal to '127.0.0.1' OR '--bind-address' is not present +``` + +**Returned Value**: + +```console +Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/kube-scheduler --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259" +``` + +## 2 Etcd Node Configuration +### 2.1 Ensure that the --cert-file and --key-file arguments are set as appropriate (Automated) + +**Result:** pass + +**Remediation:** +Follow the etcd service documentation and configure TLS encryption. +Then, edit the etcd pod specification file /etc/kubernetes/manifests/etcd.yaml +on the master node and set the below parameters. +``` +--cert-file= +--key-file= +``` + +**Audit Script:** `check_for_k3s_etcd.sh` + +```bash +#!/bin/bash + +# This script is used to ensure that k3s is actually running etcd (and not other databases like sqlite3) +# before it checks the requirement +set -eE + +handle_error() { + echo "false" +} + +trap 'handle_error' ERR + + +if [[ "$(journalctl -D /var/log/journal -u k3s | grep 'Managed etcd cluster initializing' | grep -v grep | wc -l)" -gt 0 ]]; then + case $1 in + "1.1.11") + echo $(stat -c %a /var/lib/rancher/k3s/server/db/etcd);; + "1.2.29") + echo $(journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-');; + "2.1") +``` +``` +```bash + echo "cert-file AND key-file";; + "2.2") + echo "--client-cert-auth=true";; + "2.3") + echo "false";; + "2.4") + echo "peer-cert-file AND peer-key-file";; + "2.5") + echo "--client-cert-auth=true";; + "2.6") + echo "--peer-auto-tls=false";; + "2.7") + echo "--trusted-ca-file";; + esac +fi + +``` + +**監査実行:** + +```bash +./check_for_k3s_etcd.sh 2.1 +``` + +**期待される結果**: + +```console +'cert-file' が存在し、かつ 'key-file' が存在する +``` + +**返される値**: + +```console +cert-file AND key-file cert-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.crt key-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.key cert-file AND key-file +``` + +### 2.2 --client-cert-auth 引数が true に設定されていることを確認する (自動化) + + +**結果:** 合格 + +**修正方法:** +マスターノードの etcd ポッド仕様ファイル /etc/kubernetes/manifests/etcd.yaml を編集し、以下のパラメータを設定します。 +--client-cert-auth="true" + +**監査スクリプト:** `check_for_k3s_etcd.sh` + +```bash +#!/bin/bash + +# このスクリプトは、k3s が実際に etcd を実行していること(sqlite3 などの他のデータベースではないこと)を確認するために使用されます +# 要件を確認する前に +set -eE + +handle_error() { + echo "false" +} + +trap 'handle_error' ERR + + +if [[ "$(journalctl -D /var/log/journal -u k3s | grep 'Managed etcd cluster initializing' | grep -v grep | wc -l)" -gt 0 ]]; then + case $1 in + "1.1.11") + echo $(stat -c %a /var/lib/rancher/k3s/server/db/etcd);; + "1.2.29") + echo $(journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-');; + "2.1") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.2") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.3") + echo $(grep 'auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.4") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.5") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.6") + echo $(grep 'peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.7") + echo $(grep 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config);; + esac +else +# 別のデータベースが実行されている場合、スキャンを通過するために必要なものを返します + case $1 in + "1.1.11") + echo "700";; + "1.2.29") + echo "--etcd-certfile AND --etcd-keyfile";; + "2.1") + echo "cert-file AND key-file";; + "2.2") + echo "--client-cert-auth=true";; + "2.3") + echo "false";; + "2.4") + echo "peer-cert-file AND peer-key-file";; + "2.5") + echo "--client-cert-auth=true";; + "2.6") + echo "--peer-auto-tls=false";; + "2.7") + echo "--trusted-ca-file";; + esac +fi + +``` + +**監査実行:** + +```bash +./check_for_k3s_etcd.sh 2.2 +``` + +**期待される結果**: + +```console +'--client-cert-auth' が存在する、または 'client-cert-auth' が 'true' に等しい +``` + +**返される値**: + +```console +--client-cert-auth=true client-cert-auth: true --client-cert-auth=true +``` + +### 2.3 --auto-tls 引数が true に設定されていないことを確認する (自動化) + + +**結果:** 合格 + +**修正方法:** +マスターノードの etcd ポッド仕様ファイル /etc/kubernetes/manifests/etcd.yaml を編集し、--auto-tls パラメータを削除するか、false に設定します。 + --auto-tls=false + +**監査スクリプト:** `check_for_k3s_etcd.sh` + +```bash +#!/bin/bash + +# このスクリプトは、k3s が実際に etcd を実行していること(sqlite3 などの他のデータベースではないこと)を確認するために使用されます +# 要件を確認する前に +set -eE + +handle_error() { + echo "false" +} + +trap 'handle_error' ERR + + +if [[ "$(journalctl -D /var/log/journal -u k3s | grep 'Managed etcd cluster initializing' | grep -v grep | wc -l)" -gt 0 ]]; then + case $1 in + "1.1.11") + echo $(stat -c %a /var/lib/rancher/k3s/server/db/etcd);; + "1.2.29") + echo $(journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-');; + "2.1") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.2") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.3") + echo $(grep 'auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.4") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.5") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.6") + echo $(grep 'peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.7") + echo $(grep 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config);; + esac +else +# 別のデータベースが実行されている場合、スキャンを通過するために必要なものを返します + case $1 in + "1.1.11") + echo "700";; + "1.2.29") + echo "--etcd-certfile AND --etcd-keyfile";; + "2.1") + echo "cert-file AND key-file";; + "2.2") + echo "--client-cert-auth=true";; + "2.3") + echo "false";; + "2.4") + echo "peer-cert-file AND peer-key-file";; + "2.5") + echo "--client-cert-auth=true";; + "2.6") + echo "--peer-auto-tls=false";; + "2.7") + echo "--trusted-ca-file";; + esac +fi + +``` + +**監査実行:** + +```bash +./check_for_k3s_etcd.sh 2.3 +``` + +**期待される結果**: + +```console +'ETCD_AUTO_TLS' が存在しない、または 'ETCD_AUTO_TLS' が存在する +``` + +**返される値**: + +```console +error: process ID list syntax error Usage: ps [options] Try 'ps --help ' or 'ps --help ' for additional help text. For more details see ps(1). cat: /proc//environ: No such file or directory error: process ID list syntax error Usage: ps [options] Try 'ps --help ' or 'ps --help ' for additional help text. For more details see ps(1). cat: /proc//environ: No such file or directory error: process ID list syntax error Usage: ps [options] Try 'ps --help ' or 'ps --help ' for additional help text. For more details see ps(1). cat: /proc//environ: No such file or directory +``` + +### 2.4 --peer-cert-file および --peer-key-file 引数が適切に設定されていることを確認する (自動化) + + +**結果:** 合格 + +**修正方法:** +etcd サービスのドキュメントに従い、etcd クラスターに適したピア TLS 暗号化を構成します。 +次に、マスターノードの etcd ポッド仕様ファイル /etc/kubernetes/manifests/etcd.yaml を編集し、以下のパラメータを設定します。 +``` +--peer-client-file= +--peer-key-file= +``` + +**監査スクリプト:** `check_for_k3s_etcd.sh` + +```bash +#!/bin/bash + +# このスクリプトは、k3s が実際に etcd を実行していること(sqlite3 などの他のデータベースではないこと)を確認するために使用されます +# 要件を確認する前に +set -eE + +handle_error() { + echo "false" +} + +trap 'handle_error' ERR + + +if [[ "$(journalctl -D /var/log/journal -u k3s | grep 'Managed etcd cluster initializing' | grep -v grep | wc -l)" -gt 0 ]]; then + case $1 in + "1.1.11") + echo $(stat -c %a /var/lib/rancher/k3s/server/db/etcd);; + "1.2.29") + echo $(journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-');; + "2.1") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.2") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.3") + echo $(grep 'auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.4") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.5") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.6") + echo $(grep 'peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.7") + echo $(grep 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config);; + esac +else +# 別のデータベースが実行されている場合、スキャンを通過するために必要なものを返します + case $1 in + "1.1.11") + echo "700";; + "1.2.29") + echo "--etcd-certfile AND --etcd-keyfile";; + "2.1") + echo "cert-file AND key-file";; + "2.2") + echo "--client-cert-auth=true";; + "2.3") + echo "false";; + "2.4") + echo "peer-cert-file AND peer-key-file";; + "2.5") + echo "--client-cert-auth=true";; + "2.6") + echo "--peer-auto-tls=false";; + "2.7") + echo "--trusted-ca-file";; + esac +fi + +``` + +**監査実行:** + +```bash +./check_for_k3s_etcd.sh 2.3 +``` + +**期待される結果**: + +```console +'ETCD_AUTO_TLS' が存在しない、または 'ETCD_AUTO_TLS' が存在する +``` + +**返される値**: + +```console +error: process ID list syntax error Usage: ps [options] Try 'ps --help ' or 'ps --help ' for additional help text. For more details see ps(1). cat: /proc//environ: No such file or directory error: process ID list syntax error Usage: ps [options] Try 'ps --help ' or 'ps --help ' for additional help text. For more details see ps(1). cat: /proc//environ: No such file or directory error: process ID list syntax error Usage: ps [options] Try 'ps --help ' or 'ps --help ' for additional help text. For more details see ps(1). cat: /proc//environ: No such file or directory +``` +```bash + echo "cert-file AND key-file";; + "2.2") + echo "--client-cert-auth=true";; + "2.3") + echo "false";; + "2.4") + echo "peer-cert-file AND peer-key-file";; + "2.5") + echo "--client-cert-auth=true";; + "2.6") + echo "--peer-auto-tls=false";; + "2.7") + echo "--trusted-ca-file";; + esac +fi + +``` + +**監査実行:** + +```bash +./check_for_k3s_etcd.sh 2.4 +``` + +**期待される結果**: + +```console +'cert-file' が存在し、かつ 'key-file' が存在する +``` + +**返される値**: + +```console +peer-cert-file AND peer-key-file cert-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt key-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key peer-cert-file AND peer-key-file +``` + +### 2.5 --peer-client-cert-auth 引数が true に設定されていることを確認する (自動化) + + +**結果:** 合格 + +**修正方法:** +マスターノードの etcd ポッド仕様ファイル /etc/kubernetes/manifests/etcd.yaml を編集し、以下のパラメータを設定します。 +--peer-client-cert-auth=true + +**監査スクリプト:** `check_for_k3s_etcd.sh` + +```bash +#!/bin/bash + +# このスクリプトは、k3s が実際に etcd を実行していること(sqlite3 などの他のデータベースではないこと)を確認するために使用されます +# 要件を確認する前に +set -eE + +handle_error() { + echo "false" +} + +trap 'handle_error' ERR + + +if [[ "$(journalctl -D /var/log/journal -u k3s | grep 'Managed etcd cluster initializing' | grep -v grep | wc -l)" -gt 0 ]]; then + case $1 in + "1.1.11") + echo $(stat -c %a /var/lib/rancher/k3s/server/db/etcd);; + "1.2.29") + echo $(journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-');; + "2.1") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.2") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.3") + echo $(grep 'auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.4") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.5") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.6") + echo $(grep 'peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.7") + echo $(grep 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config);; + esac +else +# 別のデータベースが実行されている場合、スキャンをパスするために必要なものを返します + case $1 in + "1.1.11") + echo "700";; + "1.2.29") + echo "--etcd-certfile AND --etcd-keyfile";; + "2.1") + echo "cert-file AND key-file";; + "2.2") + echo "--client-cert-auth=true";; + "2.3") + echo "false";; + "2.4") + echo "peer-cert-file AND peer-key-file";; + "2.5") + echo "--client-cert-auth=true";; + "2.6") + echo "--peer-auto-tls=false";; + "2.7") + echo "--trusted-ca-file";; + esac +fi + +``` + +**監査実行:** + +```bash +./check_for_k3s_etcd.sh 2.5 +``` + +**期待される結果**: + +```console +'--client-cert-auth' が存在する、または 'client-cert-auth' が 'true' と等しい +``` + +**返される値**: + +```console +--client-cert-auth=true client-cert-auth: true --client-cert-auth=true +``` + +### 2.6 --peer-auto-tls 引数が true に設定されていないことを確認する (自動化) + + +**結果:** 合格 + +**修正方法:** +マスターノードの etcd ポッド仕様ファイル /etc/kubernetes/manifests/etcd.yaml を編集し、--peer-auto-tls パラメータを削除するか、false に設定します。 +--peer-auto-tls=false + +**監査スクリプト:** `check_for_k3s_etcd.sh` + +```bash +#!/bin/bash + +# このスクリプトは、k3s が実際に etcd を実行していること(sqlite3 などの他のデータベースではないこと)を確認するために使用されます +# 要件を確認する前に +set -eE + +handle_error() { + echo "false" +} + +trap 'handle_error' ERR + + +if [[ "$(journalctl -D /var/log/journal -u k3s | grep 'Managed etcd cluster initializing' | grep -v grep | wc -l)" -gt 0 ]]; then + case $1 in + "1.1.11") + echo $(stat -c %a /var/lib/rancher/k3s/server/db/etcd);; + "1.2.29") + echo $(journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-');; + "2.1") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.2") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.3") + echo $(grep 'auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.4") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.5") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.6") + echo $(grep 'peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.7") + echo $(grep 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config);; + esac +else +# 別のデータベースが実行されている場合、スキャンをパスするために必要なものを返します + case $1 in + "1.1.11") + echo "700";; + "1.2.29") + echo "--etcd-certfile AND --etcd-keyfile";; + "2.1") + echo "cert-file AND key-file";; + "2.2") + echo "--client-cert-auth=true";; + "2.3") + echo "false";; + "2.4") + echo "peer-cert-file AND peer-key-file";; + "2.5") + echo "--client-cert-auth=true";; + "2.6") + echo "--peer-auto-tls=false";; + "2.7") + echo "--trusted-ca-file";; + esac +fi + +``` + +**監査実行:** + +```bash +./check_for_k3s_etcd.sh 2.6 +``` + +**期待される結果**: + +```console +'--peer-auto-tls' が存在しない、または '--peer-auto-tls' が 'false' と等しい +``` + +**返される値**: + +```console +--peer-auto-tls=false error: process ID list syntax error Usage: ps [options] Try 'ps --help ' or 'ps --help ' for additional help text. For more details see ps(1). cat: /proc//environ: No such file or directory --peer-auto-tls=false +``` + +### 2.7 etcd に対して一意の証明書認証局が使用されていることを確認する (手動) + + +**結果:** 合格 + +**修正方法:** +[手動テスト] +etcd のドキュメントに従い、etcd サービス用の専用証明書認証局セットアップを作成します。 +その後、マスターノードの etcd ポッド仕様ファイル /etc/kubernetes/manifests/etcd.yaml を編集し、以下のパラメータを設定します。 +`--trusted-ca-file=` + +**監査スクリプト:** `check_for_k3s_etcd.sh` + +```bash +#!/bin/bash + +# このスクリプトは、k3s が実際に etcd を実行していること(sqlite3 などの他のデータベースではないこと)を確認するために使用されます +# 要件を確認する前に +set -eE + +handle_error() { + echo "false" +} + +trap 'handle_error' ERR + + +if [[ "$(journalctl -D /var/log/journal -u k3s | grep 'Managed etcd cluster initializing' | grep -v grep | wc -l)" -gt 0 ]]; then + case $1 in + "1.1.11") + echo $(stat -c %a /var/lib/rancher/k3s/server/db/etcd);; + "1.2.29") + echo $(journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-');; + "2.1") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.2") + echo $(grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.3") + echo $(grep 'auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.4") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file');; + "2.5") + echo $(grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth');; + "2.6") + echo $(grep 'peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config);; + "2.7") + echo $(grep 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config);; + esac +else +# 別のデータベースが実行されている場合、スキャンをパスするために必要なものを返します + case $1 in + "1.1.11") + echo "700";; + "1.2.29") + echo "--etcd-certfile AND --etcd-keyfile";; + "2.1") + echo "cert-file AND key-file";; + "2.2") + echo "--client-cert-auth=true";; + "2.3") + echo "false";; + "2.4") + echo "peer-cert-file AND peer-key-file";; + "2.5") + echo "--client-cert-auth=true";; + "2.6") + echo "--peer-auto-tls=false";; + "2.7") + echo "--trusted-ca-file";; + esac +fi + +``` + +**監査実行:** + +```bash +./check_for_k3s_etcd.sh 2.7 +``` + +**期待される結果**: + +```console +'trusted-ca-file' が存在する +``` + +**返される値**: + +```console +--trusted-ca-file trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/server-ca.crt trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt --trusted-ca-file +``` + +## 3.1 認証と認可 +### 3.1.1 クライアント証明書認証はユーザーに対して使用されるべきではない (手動) + + +**結果:** 警告 + +**修正方法:** +クライアント証明書の代わりに、OIDC の使用など Kubernetes が提供する代替メカニズムを実装するべきです。 + +## 3.2 ロギング +### 3.2.1 最小限の監査ポリシーが作成されていることを確認する (手動) + + +**結果:** 警告 + +**修正方法:** +クラスター用の監査ポリシーファイルを作成します。 + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'audit-policy-file' +``` + +### 3.2.2 監査ポリシーが主要なセキュリティ問題をカバーしていることを確認する (手動) + + +**結果:** 警告 + +**修正方法:** +クラスターに提供される監査ポリシーを確認し、少なくとも以下の領域をカバーしていることを確認します。 +``` +- クラスターによって管理されるSecretsへのアクセス。Secrets、ConfigMaps、およびTokenReviewsへのリクエストのメタデータのみをログに記録するように注意し、機密データのログ記録のリスクを避ける。 +- PodおよびDeploymentオブジェクトの変更。 +- `pods/exec`、`pods/portforward`、`pods/proxy`、および`services/proxy`の使用。 +ほとんどのリクエストに対して、最低限メタデータレベルでのログ記録が推奨される(最も基本的なログ記録レベル)。 + +## 4.1 ワーカーノードの構成ファイル +### 4.1.1 kubeletサービスファイルのパーミッションが644またはそれ以上に制限されていることを確認する(自動化) + + +**結果:** 該当なし + +**修正方法:** +各ワーカーノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 644 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf + +### 4.1.2 kubeletサービスファイルの所有者がroot:rootに設定されていることを確認する(自動化) + + +**結果:** 該当なし + +**修正方法:** +各ワーカーノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: +chown root:root /etc/systemd/system/kubelet.service.d/10-kubeadm.conf + +### 4.1.3 プロキシkubeconfigファイルが存在する場合、パーミッションが644またはそれ以上に制限されていることを確認する(手動) + + +**結果:** 合格 + +**修正方法:** +各ワーカーノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: +chmod 644 /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig + +**監査:** + +```bash +stat -c %a /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig +``` + +**期待される結果**: + +```console +'permissions'が存在する または '/var/lib/rancher/k3s/agent/kubeproxy.kubeconfig'が存在しない +``` + +**返される値**: + +```console +644 644 +``` + +### 4.1.4 プロキシkubeconfigファイルが存在する場合、所有者がroot:rootに設定されていることを確認する(手動) + + +**結果:** 合格 + +**修正方法:** +各ワーカーノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig + +**監査:** + +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig; fi' +``` + +**期待される結果**: + +```console +'root:root'が存在する または '/var/lib/rancher/k3s/agent/kubeproxy.kubeconfig'が存在しない +``` + +**返される値**: + +```console +root:root root:root +``` + +### 4.1.5 --kubeconfig kubelet.confファイルのパーミッションが644またはそれ以上に制限されていることを確認する(自動化) + + +**結果:** 合格 + +**修正方法:** +各ワーカーノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: +chmod 644 /var/lib/rancher/k3s/server/cred/admin.kubeconfig + +**監査:** + +```bash +stat -c %a /var/lib/rancher/k3s/agent/kubelet.kubeconfig +``` + +**期待される結果**: + +```console +'644'が'644'と等しい +``` + +**返される値**: + +```console +644 644 +``` + +### 4.1.6 --kubeconfig kubelet.confファイルの所有者がroot:rootに設定されていることを確認する(自動化) + + +**結果:** 合格 + +**修正方法:** +各ワーカーノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: +chown root:root /var/lib/rancher/k3s/server/cred/admin.kubeconfig + +**監査:** + +```bash +stat -c %U:%G /var/lib/rancher/k3s/agent/kubelet.kubeconfig +``` + +**期待される結果**: + +```console +'root:root'が'root:root'と等しい +``` + +**返される値**: + +```console +root:root root:root +``` + +### 4.1.7 証明書認証局ファイルのパーミッションが644またはそれ以上に制限されていることを確認する(手動) + + +**結果:** 合格 + +**修正方法:** +--client-ca-fileのファイルパーミッションを変更するために以下のコマンドを実行します: `chmod 644 ` + +**監査:** + +```bash +stat -c %a /var/lib/rancher/k3s/server/tls/server-ca.crt +``` + +**期待される結果**: + +```console +'644'が存在する または '640'が存在する または '600'が'600'と等しい または '444'が存在する または '440'が存在する または '400'が存在する または '000'が存在する +``` + +**返される値**: + +```console +644 600 +``` + +### 4.1.8 クライアント証明書認証局ファイルの所有者がroot:rootに設定されていることを確認する(手動) + + +**結果:** 合格 + +**修正方法:** +--client-ca-fileの所有者を変更するために以下のコマンドを実行します: +`chown root:root `. + +**監査:** + +```bash +stat -c %U:%G /var/lib/rancher/k3s/server/tls/client-ca.crt +``` + +**期待される結果**: + +```console +'root:root'が'root:root'と等しい +``` + +**返される値**: + +```console +root:root root:root +``` + +### 4.1.9 kubelet --config構成ファイルのパーミッションが644またはそれ以上に制限されていることを確認する(自動化) + + +**結果:** 該当なし + +**修正方法:** +監査ステップで特定された構成ファイルの場所を使用して以下のコマンドを実行します +chmod 644 /var/lib/kubelet/config.yaml + +### 4.1.10 kubelet --config構成ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + + +**結果:** 該当なし + +**修正方法:** +監査ステップで特定された構成ファイルの場所を使用して以下のコマンドを実行します +chown root:root /var/lib/kubelet/config.yaml + +## 4.2 Kubelet +### 4.2.1 --anonymous-auth引数がfalseに設定されていることを確認する(自動化) + + +**結果:** 合格 + +**修正方法:** +Kubelet構成ファイルを使用している場合、ファイルを編集して`authentication: anonymous: enabled`を`false`に設定します。 +実行可能な引数を使用している場合、各ワーカーノードのkubeletサービスファイル +/etc/systemd/system/kubelet.service.d/10-kubeadm.confを編集し、以下のパラメータをKUBELET_SYSTEM_PODS_ARGS変数に設定します。 +`--anonymous-auth=false` +システムに基づいて、kubeletサービスを再起動します。例: +systemctl daemon-reload +systemctl restart kubelet.service + +**監査:** + +```bash +/bin/sh -c 'if test $(journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "anonymous-auth" | grep -v grep; else echo "--anonymous-auth=false"; fi' +``` + +**期待される結果**: + +```console +'--anonymous-auth'が'false'と等しい +``` + +**返される値**: + +```console +--anonymous-auth=false Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 4.2.2 --authorization-mode引数がAlwaysAllowに設定されていないことを確認する(自動化) + + +**結果:** 合格 + +**修正方法:** +Kubelet構成ファイルを使用している場合、ファイルを編集して`authorization.mode`をWebhookに設定します。実行可能な引数を使用している場合、各ワーカーノードのkubeletサービスファイル +/etc/systemd/system/kubelet.service.d/10-kubeadm.confを編集し、以下のパラメータをKUBELET_AUTHZ_ARGS変数に設定します。 +--authorization-mode=Webhook +システムに基づいて、kubeletサービスを再起動します。例: +systemctl daemon-reload +systemctl restart kubelet.service + +**監査:** + +```bash +/bin/sh -c 'if test $(journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "authorization-mode" | grep -v grep; else echo "--authorization-mode=Webhook"; fi' +``` + +**期待される結果**: + +```console +'--authorization-mode'に'AlwaysAllow'が含まれていない +``` + +**返される値**: + +```console + +```markdown +--authorization-mode=Webhook Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 4.2.3 Ensure that the --client-ca-file argument is set as appropriate (Automated) + +**Result:** pass + +**Remediation:** +If using a Kubelet config file, edit the file to set `authentication.x509.clientCAFile` to +the location of the client CA file. +If using command line arguments, edit the kubelet service file +/etc/systemd/system/kubelet.service.d/10-kubeadm.conf on each worker node and +set the below parameter in KUBELET_AUTHZ_ARGS variable. +`--client-ca-file=` +Based on your system, restart the kubelet service. For example, +systemctl daemon-reload +systemctl restart kubelet.service + +**Audit:** + +```bash +/bin/sh -c 'if test $(journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "client-ca-file" | grep -v grep; else echo "--client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt"; fi' +``` + +**Expected Result**: + +```console +'--client-ca-file' is present +``` + +**Returned Value**: + +```console +--client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt Sep 13 13:26:40 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:40Z" level=info msg="Running kube-apiserver --advertise-address=172.31.0.140 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` + +### 4.2.4 Ensure that the --read-only-port argument is set to 0 (Manual) + +**Result:** pass + +**Remediation:** +If using a Kubelet config file, edit the file to set `readOnlyPort` to 0. +If using command line arguments, edit the kubelet service file +/etc/systemd/system/kubelet.service.d/10-kubeadm.conf on each worker node and +set the below parameter in KUBELET_SYSTEM_PODS_ARGS variable. +--read-only-port=0 +Based on your system, restart the kubelet service. For example, +systemctl daemon-reload +systemctl restart kubelet.service + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kubelet' | tail -n1 | grep 'read-only-port' +``` + +**Expected Result**: + +```console +'--read-only-port' is equal to '0' OR '--read-only-port' is not present +``` + +**Returned Value**: + +```console +Sep 13 13:26:50 k3s-123-cis-pool2-98604672-hr9p5 k3s[1592]: time="2022-09-13T13:26:50Z" level=info msg="Running kubelet --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --healthz-bind-address=127.0.0.1 --hostname-override=k3s-123-cis-pool2-98604672-hr9p5 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --node-labels=rke.cattle.io/machine=00c4e7a0-5497-4367-a70c-0b836757eae8 --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" Sep 13 13:26:44 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:44Z" level=info msg="Running kubelet --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --healthz-bind-address=127.0.0.1 --hostname-override=k3s-123-cis-pool3-b403f678-bzdg5 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --node-labels=rke.cattle.io/machine=109d596c-89f5-4c10-8c7f-6b82a38edd8f --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" +``` + +### 4.2.5 Ensure that the --streaming-connection-idle-timeout argument is not set to 0 (Manual) + +**Result:** warn + +**Remediation:** +If using a Kubelet config file, edit the file to set `streamingConnectionIdleTimeout` to a +value other than 0. +If using command line arguments, edit the kubelet service file +/etc/systemd/system/kubelet.service.d/10-kubeadm.conf on each worker node and +set the below parameter in KUBELET_SYSTEM_PODS_ARGS variable. +--streaming-connection-idle-timeout=5m +Based on your system, restart the kubelet service. For example, +systemctl daemon-reload +systemctl restart kubelet.service + +**Audit:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kubelet' | tail -n1 | grep 'streaming-connection-idle-timeout' +``` + +### 4.2.6 Ensure that the --protect-kernel-defaults argument is set to true (Automated) + +**Result:** Not Applicable + +**Remediation:** +If using a Kubelet config file, edit the file to set `protectKernelDefaults` to `true`. +If using command line arguments, edit the kubelet service file +/etc/systemd/system/kubelet.service.d/10-kubeadm.conf on each worker node and +set the below parameter in KUBELET_SYSTEM_PODS_ARGS variable. +--protect-kernel-defaults=true +Based on your system, restart the kubelet service. For example: +systemctl daemon-reload +systemctl restart kubelet.service + +### 4.2.7 Ensure that the --make-iptables-util-chains argument is set to true (Automated) + +**Result:** Not Applicable + +**Remediation:** +``` + +もし Kubelet の設定ファイルを使用している場合は、ファイルを編集して `makeIPTablesUtilChains` を `true` に設定します。 +コマンドライン引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +`/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` を編集し、 +`KUBELET_SYSTEM_PODS_ARGS` 変数から `--make-iptables-util-chains` 引数を削除します。 +システムに基づいて、kubelet サービスを再起動します。例えば: +```bash +systemctl daemon-reload +systemctl restart kubelet.service +``` + +### 4.2.8 `--hostname-override` 引数が設定されていないことを確認する(手動) + +**結果:** 該当なし + +**修正方法:** +各ワーカーノードの kubelet サービスファイル `/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` を編集し、 +`KUBELET_SYSTEM_PODS_ARGS` 変数から `--hostname-override` 引数を削除します。 +システムに基づいて、kubelet サービスを再起動します。例えば: +```bash +systemctl daemon-reload +systemctl restart kubelet.service +``` + +### 4.2.9 `--event-qps` 引数が 0 または適切なイベントキャプチャを確保するレベルに設定されていることを確認する(手動) + +**結果:** 警告 + +**修正方法:** +Kubelet の設定ファイルを使用している場合は、ファイルを編集して `eventRecordQPS` を適切なレベルに設定します。 +コマンドライン引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +`/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` を編集し、 +以下のパラメータを `KUBELET_SYSTEM_PODS_ARGS` 変数に設定します。 +システムに基づいて、kubelet サービスを再起動します。例えば: +```bash +systemctl daemon-reload +systemctl restart kubelet.service +``` + +**監査:** + +```bash +/bin/ps -fC containerd +``` + +### 4.2.10 `--tls-cert-file` および `--tls-private-key-file` 引数が適切に設定されていることを確認する(手動) + +**結果:** 合格 + +**修正方法:** +Kubelet の設定ファイルを使用している場合は、ファイルを編集して `tlsCertFile` をこの Kubelet を識別するために使用する証明書ファイルの場所に設定し、 +`tlsPrivateKeyFile` を対応する秘密鍵ファイルの場所に設定します。 +コマンドライン引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +`/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` を編集し、 +以下のパラメータを `KUBELET_CERTIFICATE_ARGS` 変数に設定します。 +``` +--tls-cert-file= +--tls-private-key-file= +``` +システムに基づいて、kubelet サービスを再起動します。例えば: +```bash +systemctl daemon-reload +systemctl restart kubelet.service +``` + +**監査:** + +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kubelet' | tail -n1 +``` + +**期待される結果:** + +```console +'--tls-cert-file' が存在し、'--tls-private-key-file' が存在する +``` + +**返された値:** + +```console +Sep 13 13:26:50 k3s-123-cis-pool2-98604672-hr9p5 k3s[1592]: time="2022-09-13T13:26:50Z" level=info msg="Running kubelet --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --healthz-bind-address=127.0.0.1 --hostname-override=k3s-123-cis-pool2-98604672-hr9p5 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --node-labels=rke.cattle.io/machine=00c4e7a0-5497-4367-a70c-0b836757eae8 --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" Sep 13 13:26:44 k3s-123-cis-pool3-b403f678-bzdg5 k3s[1600]: time="2022-09-13T13:26:44Z" level=info msg="Running kubelet --address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --healthz-bind-address=127.0.0.1 --hostname-override=k3s-123-cis-pool3-b403f678-bzdg5 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --node-labels=rke.cattle.io/machine=109d596c-89f5-4c10-8c7f-6b82a38edd8f --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" +``` + +### 4.2.11 `--rotate-certificates` 引数が `false` に設定されていないことを確認する(自動) + +**結果:** 該当なし + +**修正方法:** +Kubelet の設定ファイルを使用している場合は、ファイルを編集して `rotateCertificates` を `true` に設定するか、 +デフォルト値を使用するために削除します。 +コマンドライン引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +`/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` を編集し、 +`KUBELET_CERTIFICATE_ARGS` 変数から `--rotate-certificates=false` 引数を削除します。 +システムに基づいて、kubelet サービスを再起動します。例えば: +```bash +systemctl daemon-reload +systemctl restart kubelet.service +``` + +### 4.2.12 `RotateKubeletServerCertificate` 引数が `true` に設定されていることを確認する(手動) + +**結果:** 該当なし + +**修正方法:** +各ワーカーノードの kubelet サービスファイル `/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` を編集し、 +以下のパラメータを `KUBELET_CERTIFICATE_ARGS` 変数に設定します。 +``` +--feature-gates=RotateKubeletServerCertificate=true +``` +システムに基づいて、kubelet サービスを再起動します。例えば: +```bash +systemctl daemon-reload +systemctl restart kubelet.service +``` + +### 4.2.13 Kubelet が強力な暗号化スイートのみを使用していることを確認する(手動) + +**結果:** 警告 + +**修正方法:** +Kubelet の設定ファイルを使用している場合は、ファイルを編集して `TLSCipherSuites` を +`TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256` +またはこれらの値のサブセットに設定します。 +実行可能な引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +`/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` を編集し、 +以下のように `--tls-cipher-suites` パラメータを設定します。またはこれらの値のサブセットに設定します。 +``` +--tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 +``` +システムに基づいて、kubelet サービスを再起動します。例えば: +```bash +systemctl daemon-reload +systemctl restart kubelet.service +``` + +**監査:** + +```bash +/bin/ps -fC containerd +``` + +## 5.1 RBAC とサービスアカウント +### 5.1.1 `cluster-admin` ロールが必要な場合にのみ使用されていることを確認する(手動) + +**結果:** 警告 + +**修正方法:** +`cluster-admin` ロールへのすべての `clusterrolebinding` を特定します。それらが使用されているかどうか、 +このロールが必要かどうか、またはより少ない権限のロールを使用できるかどうかを確認します。 +可能な場合は、まずユーザーを低権限のロールにバインドし、その後 `cluster-admin` ロールへの `clusterrolebinding` を削除します: +```bash +kubectl delete clusterrolebinding [name] +``` + +### 5.1.2 シークレットへのアクセスを最小限に抑える(手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、クラスター内のシークレットオブジェクトへの `get`、`list`、および `watch` アクセスを削除します。 + +### 5.1.3 ロールおよびクラスターロールでワイルドカードの使用を最小限に抑える(手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、クラスターロールおよびロールでのワイルドカードの使用を特定のオブジェクトまたはアクションに置き換えます。 + +### 5.1.4 ポッドの作成アクセスを最小限に抑える(手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、クラスター内のポッドオブジェクトへの作成アクセスを削除します。 + +### 5.1.5 デフォルトのサービスアカウントが積極的に使用されていないことを確認する(手動) + +**結果:** 警告 + +**修正方法:** +Kubernetes ワークロードが Kubernetes API サーバーへの特定のアクセスを必要とする場合は、明示的なサービスアカウントを作成します。 +各デフォルトのサービスアカウントの設定を変更して、この値を含めます: +```yaml +automountServiceAccountToken: false +``` + +### 5.1.6 サービスアカウントトークンが必要な場合にのみマウントされることを確認する(手動) + +**結果:** 警告 + +**修正方法:** +サービスアカウントトークンをマウントする必要がないポッドおよびサービスアカウントの定義を変更して無効にします。 + +### 5.1.7 `system:masters` グループの使用を避ける(手動) + +**結果:** 警告 + +**修正方法:** +クラスター内のすべてのユーザーから `system:masters` グループを削除します。 + +### 5.1.8 Kubernetes クラスター内での `Bind`、`Impersonate`、および `Escalate` 権限の使用を制限する(手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、`impersonate`、`bind`、および `escalate` 権限をサブジェクトから削除します。 + +## 5.2 ポッドセキュリティ基準 +### 5.2.1 クラスターに少なくとも1つのアクティブなポリシー制御メカニズムが存在することを確認する(手動) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むすべてのネームスペースに対して、Pod Security Admission または外部ポリシー制御システムが存在することを確認します。 + +### 5.2.2 特権コンテナの許可を最小限に抑える(自動) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むクラスター内の各ネームスペースにポリシーを追加して、 +特権コンテナの許可を制限します。 + +### 5.2.3 ホストプロセスIDネームスペースを共有しようとするコンテナの許可を最小限に抑える(自動) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むクラスター内の各ネームスペースにポリシーを追加して、 +`hostPID` コンテナの許可を制限します。 + +### 5.2.4 ホストIPCネームスペースを共有しようとするコンテナの許可を最小限に抑える(自動) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むクラスター内の各ネームスペースにポリシーを追加して、 +`hostIPC` コンテナの許可を制限します。 +**結果:** 警告 + +**修正方法:** +ユーザーのワークロードがあるクラスター内の各ネームスペースにポリシーを追加し、`hostIPC`コンテナのアドミッションを制限します。 + +### 5.2.5 ホストネットワークネームスペースを共有しようとするコンテナのアドミッションを最小限に抑える (自動化) + + +**結果:** 警告 + +**修正方法:** +ユーザーのワークロードがあるクラスター内の各ネームスペースにポリシーを追加し、`hostNetwork`コンテナのアドミッションを制限します。 + +### 5.2.6 allowPrivilegeEscalationを持つコンテナのアドミッションを最小限に抑える (自動化) + + +**結果:** 警告 + +**修正方法:** +ユーザーのワークロードがあるクラスター内の各ネームスペースにポリシーを追加し、`.spec.allowPrivilegeEscalation`が`true`に設定されているコンテナのアドミッションを制限します。 + +### 5.2.7 ルートコンテナのアドミッションを最小限に抑える (自動化) + + +**結果:** 警告 + +**修正方法:** +クラスター内の各ネームスペースにポリシーを作成し、`MustRunAsNonRoot`またはUIDの範囲に0を含まない`MustRunAs`が設定されていることを確認します。 + +### 5.2.8 NET_RAW機能を持つコンテナのアドミッションを最小限に抑える (自動化) + + +**結果:** 警告 + +**修正方法:** +ユーザーのワークロードがあるクラスター内の各ネームスペースにポリシーを追加し、`NET_RAW`機能を持つコンテナのアドミッションを制限します。 + +### 5.2.9 追加された機能を持つコンテナのアドミッションを最小限に抑える (自動化) + + +**結果:** 警告 + +**修正方法:** +`allowedCapabilities`が空の配列に設定されていない限り、クラスターのポリシーに存在しないことを確認します。 + +### 5.2.10 機能が割り当てられたコンテナのアドミッションを最小限に抑える (手動) + + +**結果:** 警告 + +**修正方法:** +クラスター上で実行されているアプリケーションの機能の使用を確認します。ネームスペースにLinux機能を必要としないアプリケーションが含まれている場合、すべての機能を削除しないコンテナのアドミッションを禁止するPSPを追加することを検討します。 + +### 5.2.11 Windows HostProcessコンテナのアドミッションを最小限に抑える (手動) + + +**結果:** 警告 + +**修正方法:** +ユーザーのワークロードがあるクラスター内の各ネームスペースにポリシーを追加し、`.securityContext.windowsOptions.hostProcess`が`true`に設定されているコンテナのアドミッションを制限します。 + +### 5.2.12 HostPathボリュームのアドミッションを最小限に抑える (手動) + + +**結果:** 警告 + +**修正方法:** +ユーザーのワークロードがあるクラスター内の各ネームスペースにポリシーを追加し、`hostPath`ボリュームを持つコンテナのアドミッションを制限します。 + +### 5.2.13 HostPortsを使用するコンテナのアドミッションを最小限に抑える (手動) + + +**結果:** 警告 + +**修正方法:** +ユーザーのワークロードがあるクラスター内の各ネームスペースにポリシーを追加し、`hostPort`セクションを使用するコンテナのアドミッションを制限します。 + +## 5.3 ネットワークポリシーとCNI +### 5.3.1 使用中のCNIがネットワークポリシーをサポートしていることを確認する (手動) + + +**結果:** 警告 + +**修正方法:** +使用中のCNIプラグインがネットワークポリシーをサポートしていない場合、別のプラグインを使用するか、Kubernetesクラスター内のトラフィックを制限するための代替メカニズムを検討します。 + +### 5.3.2 すべてのネームスペースにネットワークポリシーが定義されていることを確認する (手動) + + +**結果:** 警告 + +**修正方法:** +ドキュメントに従い、必要に応じてNetworkPolicyオブジェクトを作成します。 + +## 5.4 シークレット管理 +### 5.4.1 環境変数としてのシークレットよりもファイルとしてのシークレットを使用することを推奨する (手動) + + +**結果:** 警告 + +**修正方法:** +可能であれば、アプリケーションコードを変更して、環境変数ではなくマウントされたシークレットファイルからシークレットを読み取るようにします。 + +### 5.4.2 外部シークレットストレージを検討する (手動) + + +**結果:** 警告 + +**修正方法:** +クラウドプロバイダーやサードパーティのシークレット管理ソリューションが提供するシークレット管理オプションを参照します。 + +## 5.5 拡張可能なアドミッションコントロール +### 5.5.1 ImagePolicyWebhookアドミッションコントローラーを使用してイメージの出所を設定する (手動) + + +**結果:** 警告 + +**修正方法:** +Kubernetesのドキュメントに従い、イメージの出所を設定します。 + +## 5.7 一般的なポリシー +### 5.7.1 ネームスペースを使用してリソース間に管理境界を作成する (手動) + + +**結果:** 警告 + +**修正方法:** +ドキュメントに従い、デプロイメント内のオブジェクトに必要なネームスペースを作成します。 + +### 5.7.2 Pod定義でseccompプロファイルがdocker/defaultに設定されていることを確認する (手動) + + +**結果:** 警告 + +**修正方法:** +`securityContext`を使用して、Pod定義でdocker/default seccompプロファイルを有効にします。以下はその例です: + securityContext: + seccompProfile: + type: RuntimeDefault + +### 5.7.3 PodおよびコンテナにSecurityContextを適用する (手動) + + +**結果:** 警告 + +**修正方法:** +Kubernetesのドキュメントに従い、PodにSecurityContextを適用します。推奨されるSecurityContextのリストについては、CIS Security Benchmark for Docker Containersを参照してください。 + +### 5.7.4 デフォルトのネームスペースは使用しない (手動) + + +**結果:** 警告 + +**修正方法:** +Kubernetesリソースの適切な分離を可能にするためにネームスペースが作成されていることを確認し、すべての新しいリソースが特定のネームスペースに作成されるようにします。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/security/self-assessment-1.24.md b/i18n/ja/docusaurus-plugin-content-docs/current/security/self-assessment-1.24.md new file mode 100644 index 000000000..35df582c0 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/security/self-assessment-1.24.md @@ -0,0 +1,1647 @@ +--- +title: CIS 1.24 自己評価ガイド +--- + +## 概要 + +このドキュメントは[K3sセキュリティ強化ガイド](hardening-guide.md)の補足資料です。強化ガイドはK3sの本番環境インストールを強化するための具体的なガイダンスを提供し、このベンチマークガイドはCIS Kubernetesベンチマークの各コントロールに対して強化されたクラスターのセキュリティレベルを評価するのに役立ちます。K3sの運用者、セキュリティチーム、監査人、意思決定者が使用することを目的としています。 + +このガイドはK3sの**v1.24**リリースラインおよびCIS Kubernetesベンチマークの**v1.24**リリースに特化しています。 + +各コントロールの詳細な説明やテスト失敗時の修正方法については、CIS Kubernetesベンチマークv1.6の該当セクションを参照してください。ベンチマークは、無料アカウントを作成後に[Center for Internet Security (CIS)](https://www.cisecurity.org/benchmark/kubernetes/)からダウンロードできます。 + +### コントロールテストの方法論 + +CIS Kubernetesベンチマークの各コントロールは、付随する強化ガイドに従って設定されたK3sクラスターに対して評価されました。 + +コントロール監査が元のCISベンチマークと異なる場合、K3sに特化した監査コマンドがテスト用に提供されています。 + +各コントロールの結果は以下の通りです: + +- **合格** - テスト対象のK3sクラスターがベンチマークに記載された監査に合格しました。 +- **該当なし** - コントロールがK3sの設計上適用されない場合。この理由は修正セクションで説明されます。 +- **警告** - コントロールがCISベンチマークで手動であり、クラスターの使用ケースやその他の要因に依存する場合。これらのコントロールはK3sがその実装を妨げないことを確認するために評価されていますが、テスト対象のクラスターのさらなる設定や監査は行われていません。 + +このガイドは、K3sがSystemdユニットとして実行されていることを前提としています。インストール方法が異なる場合は、「監査」コマンドをシナリオに合わせて調整する必要があります。 + +:::note + +このガイドでは、`scored`テスト、つまり`自動化`テストのみを対象としています。 +::: + +## 1.1 コントロールプレーンノードの設定ファイル + +### 1.1.1 APIサーバーポッド仕様ファイルの権限が644以上に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 644 /etc/kubernetes/manifests/kube-apiserver.yaml + +### 1.1.2 APIサーバーポッド仕様ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /etc/kubernetes/manifests/kube-apiserver.yaml + +### 1.1.3 コントローラーマネージャーポッド仕様ファイルの権限が600以上に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /etc/kubernetes/manifests/kube-controller-manager.yaml + +### 1.1.4 コントローラーマネージャーポッド仕様ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /etc/kubernetes/manifests/kube-controller-manager.yaml + +### 1.1.5 スケジューラーポッド仕様ファイルの権限が600以上に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /etc/kubernetes/manifests/kube-scheduler.yaml + +### 1.1.6 スケジューラーポッド仕様ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /etc/kubernetes/manifests/kube-scheduler.yaml + +### 1.1.7 etcdポッド仕様ファイルの権限が600以上に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /var/lib/rancher/k3s/server/db/etcd/config + +### 1.1.8 etcdポッド仕様ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /var/lib/rancher/k3s/server/db/etcd/config + +### 1.1.9 コンテナネットワークインターフェイスファイルの権限が600以上に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 <path/to/cni/files> + +### 1.1.10 コンテナネットワークインターフェイスファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root <path/to/cni/files> + +### 1.1.11 etcdデータディレクトリの権限が700以上に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +stat -c %a /var/lib/rancher/k3s/server/db/etcd +``` + +**期待される結果:** '700' が '700' と等しい + +
+返された値: + +```console +700 +``` +
+ +### 1.1.12 etcdデータディレクトリの所有者がetcd:etcdに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +etcdサーバーノードで、コマンド 'ps -ef | grep etcd' から引数 --data-dir として渡されたetcdデータディレクトリを取得します。 +上記で見つかったetcdデータディレクトリに基づいて以下のコマンドを実行します。 +例: chown etcd:etcd /var/lib/etcd + +### 1.1.13 admin.confファイルの権限が600以上に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /var/lib/rancher/k3s/server/cred/admin.kubeconfig + +### 1.1.14 admin.confファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/admin.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/server/cred/admin.kubeconfig; fi' +``` + +**期待される結果:** 'root:root' が 'root:root' と等しい + +
+返された値: + +```console +root:root +``` +
+ +### 1.1.15 scheduler.confファイルの権限が600以上に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; fi' +``` + +**期待される結果:** permissions が 600 の権限を持ち、600以上の制限が期待される + +
+返された値: + +```console +permissions=600 +``` +
+ +### 1.1.16 scheduler.confファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; fi' +``` + +**期待される結果:** 'root:root' が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 1.1.17 controller-manager.confファイルの権限が600以上に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/controller.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/controller.kubeconfig; fi' +``` + +**期待される結果:** permissions が 600 の権限を持ち、600以上の制限が期待される + +
+返された値: + +```console +permissions=600 +``` +
+ +### 1.1.18 controller-manager.confファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +stat -c %U:%G /var/lib/rancher/k3s/server/tls +``` + +**期待される結果:** 'root:root' が 'root:root' と等しい + +
+返された値: + +```console +root:root +``` +
+ +### 1.1.19 Kubernetes PKIディレクトリおよびファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +find /var/lib/rancher/k3s/server/tls | xargs stat -c %U:%G +``` + +**期待される結果:** 'root:root' が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 1.1.20 Kubernetes PKI証明書ファイルの権限が600以上に設定されていることを確認する(自動化) + +**結果:** 警告 + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod -R 600 /etc/kubernetes/pki/*.crt + +### 1.1.21 Kubernetes PKIキーの権限が600に設定されていることを確認する(自動化) + +**結果:** 警告 + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod -R 600 /etc/kubernetes/pki/*.key + +## 1.2 APIサーバー + +### 1.2.1 --anonymous-auth引数がfalseに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'anonymous-auth' +``` + +**期待される結果:** '--anonymous-auth' が 'false' と等しい + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.2 --token-auth-fileパラメータが設定されていないことを確認する(自動化) + +**結果:** パス + +**監査:** +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**期待される結果:** '--token-auth-file'が存在しない + +
+返された値: + +```console +root 2335 2318 0 18:38 ? 00:00:00 containerd -c /var/lib/rancher/k3s/agent/etc/containerd/config.toml -a /run/k3s/containerd/containerd.sock --state /run/k3s/containerd --root /var/lib/rancher/k3s/agent/containerd +``` +
+ +### 1.2.3 --DenyServiceExternalIPsが設定されていないことを確認する(自動化) + +**結果:** パス + +**監査:** +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**期待される結果:** '--enable-admission-plugins'が存在する または '--enable-admission-plugins'が存在しない + +
+返された値: + +```console +root 2335 2318 0 18:38 ? 00:00:00 containerd -c /var/lib/rancher/k3s/agent/etc/containerd/config.toml -a /run/k3s/containerd/containerd.sock --state /run/k3s/containerd --root /var/lib/rancher/k3s/agent/containerd +``` +
+ +### 1.2.4 --kubelet-https引数がtrueに設定されていることを確認する(自動化) + +**結果:** 適用外 + +**修正:** +コントロールプレーンノード上のAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yamlを編集し、--kubelet-httpsパラメータを削除してください。 + +### 1.2.5 --kubelet-client-certificateと--kubelet-client-key引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'kubelet-certificate-authority' +``` + +**期待される結果:** '--kubelet-client-certificate'が存在し、かつ'--kubelet-client-key'が存在する + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.6 --kubelet-certificate-authority 引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'kubelet-certificate-authority' +``` + +**期待される結果:** '--kubelet-certificate-authority' が存在すること + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.7 --authorization-mode引数がAlwaysAllowに設定されていないことを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode' +``` + +**期待される結果:** '--authorization-mode'に'AlwaysAllow'が含まれていない + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.8 --authorization-mode引数にNodeが含まれていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode' +``` + +**期待される結果:** '--authorization-mode'に'Node'が含まれている + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.9 --authorization-mode引数にRBACが含まれていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode' +``` + +**期待される結果:** '--authorization-mode'に'RBAC'が含まれている + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.10 イベントレート制限のアドミッションコントロールプラグインが設定されていることを確認する (自動化) + +**結果:** WARN + +**修正方法:** +Kubernetesのドキュメントに従い、設定ファイルに希望の制限を設定します。 +次に、APIサーバーポッドの仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、以下のパラメータを設定します。 +--enable-admission-plugins=...,EventRateLimit,... +--admission-control-config-file=<path/to/configuration/file> + +### 1.2.11 AlwaysAdmitのアドミッションコントロールプラグインが設定されていないことを確認する (自動化) + +**結果:** PASS + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins' +``` + +**期待される結果:** '--enable-admission-plugins' に 'AlwaysAdmit' が含まれていない、または '--enable-admission-plugins' が存在しない + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.12 AlwaysPullImagesのアドミッションコントロールプラグインが設定されていることを確認する (自動化) + +**結果:** WARN + +**修正方法:** +コントロールプレーンノードのAPIサーバーポッドの仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--enable-admission-plugins パラメータに AlwaysPullImages を含めるように設定します。 +--enable-admission-plugins=...,AlwaysPullImages,... + +### 1.2.13 PodSecurityPolicyが使用されていない場合、SecurityContextDenyのアドミッションコントロールプラグインが設定されていることを確認する (自動化) + +**結果:** PASS + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins' +``` + +**期待される結果:** '--enable-admission-plugins' に 'SecurityContextDeny' が含まれている、または '--enable-admission-plugins' に 'PodSecurityPolicy' が含まれている + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+``` +### 1.2.14 サービスアカウントのアドミッションコントロールプラグインが設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -v grep +``` + +**期待される結果:** '--disable-admission-plugins' が存在するか、存在しない + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.15 NamespaceLifecycleのアドミッションコントロールプラグインが設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -v grep +``` + +**期待される結果:** '--disable-admission-plugins' が存在するか、存在しない + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.16 NodeRestrictionのアドミッションコントロールプラグインが設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins' +``` + +**期待される結果:** '--enable-admission-plugins' に 'NodeRestriction' が含まれている + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.17 --secure-port 引数が 0 に設定されていないことを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'secure-port' +``` + +**期待される結果:** '--secure-port' が 0 より大きいか、存在しない + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.18 --profiling引数がfalseに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'profiling' +``` + +**期待される結果:** '--profiling'が'false'である + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.19 --audit-log-path引数が設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--audit-log-pathパラメータを適切なパスとファイルに設定します。例えば、--audit-log-path=/var/log/apiserver/audit.log + +### 1.2.20 --audit-log-maxage引数が30または適切な値に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--audit-log-maxageパラメータを30または適切な日数に設定します。例えば、--audit-log-maxage=30 + +### 1.2.21 --audit-log-maxbackup引数が10または適切な値に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--audit-log-maxbackupパラメータを10または適切な値に設定します。例えば、--audit-log-maxbackup=10 + +### 1.2.22 --audit-log-maxsize引数が100または適切な値に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--audit-log-maxsizeパラメータを適切なサイズ(MB単位)に設定します。例えば、100 MBに設定する場合、--audit-log-maxsize=100 + +### 1.2.23 --request-timeout引数が適切に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +APIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、必要に応じて以下のパラメータを適切に設定します。例えば、--request-timeout=300s + +### 1.2.24 --service-account-lookup引数がtrueに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -v grep +``` + +**期待される結果:** '--service-account-lookup'が存在しない、または'--service-account-lookup'が'true'である + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.25 --service-account-key-file引数が適切に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--service-account-key-fileパラメータをサービスアカウントの公開鍵ファイルに設定します。例えば、 +--service-account-key-file=<filename> + +### 1.2.26 --etcd-certfileおよび--etcd-keyfile引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep -m1 'Running kube-apiserver' +``` + +**期待される結果:** '--etcd-certfile'が存在し、かつ'--etcd-keyfile'が存在する + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.27 --tls-cert-fileおよび--tls-private-key-file引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep -A1 'Running kube-apiserver' | tail -n2 +``` + +**期待される結果:** '--tls-cert-file'が存在し、かつ'--tls-private-key-file'が存在する + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259" +``` +
+ +### 1.2.28 --client-ca-file引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'client-ca-file' +``` + +**期待される結果:** '--client-ca-file' が存在する + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.29 --etcd-cafile 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-cafile' +``` + +**期待される結果:** '--etcd-cafile' が存在する + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.30 --encryption-provider-config 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'encryption-provider-config' +``` + +**期待される結果:** '--encryption-provider-config' が存在する + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.31 暗号化プロバイダーが適切に構成されていることを確認する (自動化) + +**結果:** 警告 + +**修正:** +Kubernetesのドキュメントに従い、EncryptionConfigファイルを構成します。 +このファイルで、aescbc、kms、またはsecretboxを暗号化プロバイダーとして選択します。 + +### 1.2.32 APIサーバーが強力な暗号化スイートのみを使用していることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'tls-cipher-suites' +``` + +**期待される結果:** '--tls-cipher-suites' は 'TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384' の有効な要素を含んでいる + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +## 1.3 コントローラーマネージャー + +### 1.3.1 --terminated-pod-gc-threshold 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'terminated-pod-gc-threshold' +``` + +**期待される結果:** '--terminated-pod-gc-threshold' が存在する + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --feature-gates=JobTrackingWithFinalizers=true --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.2 --profiling 引数が false に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'profiling' +``` + +**期待される結果:** '--profiling' が 'false' に等しい + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --feature-gates=JobTrackingWithFinalizers=true --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.3 --use-service-account-credentials 引数が true に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'use-service-account-credentials' +``` + +**期待される結果:** '--use-service-account-credentials' が 'false' に等しくない + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --feature-gates=JobTrackingWithFinalizers=true --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.4 --service-account-private-key-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'service-account-private-key-file' +``` + +**期待される結果:** '--service-account-private-key-file' が存在する + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --feature-gates=JobTrackingWithFinalizers=true --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.5 --root-ca-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'root-ca-file' +``` + +**期待される結果:** '--root-ca-file' が存在する + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --feature-gates=JobTrackingWithFinalizers=true --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.6 RotateKubeletServerCertificate 引数が true に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの Controller Manager ポッド仕様ファイル /etc/kubernetes/manifests/kube-controller-manager.yaml を編集し、--feature-gates パラメータに RotateKubeletServerCertificate=true を含めます。 +--feature-gates=RotateKubeletServerCertificate=true + +### 1.3.7 --bind-address 引数が 127.0.0.1 に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**期待される結果:** '--bind-address' が存在する OR '--bind-address' が存在しない + +
+返された値: + +```console +root 2335 2318 0 18:38 ? 00:00:00 containerd -c /var/lib/rancher/k3s/agent/etc/containerd/config.toml -a /run/k3s/containerd/containerd.sock --state /run/k3s/containerd --root /var/lib/rancher/k3s/agent/containerd +``` +
+ +## 1.4 スケジューラー + +### 1.4.1 --profiling 引数が false に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-scheduler' | tail -n1 +``` + +**期待される結果:** '--profiling' が 'false' に等しい + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259" +``` +
+ +### 1.4.2 --bind-address 引数が 127.0.0.1 に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-scheduler' | tail -n1 | grep 'bind-address' +``` + +**期待される結果:** '--bind-address' が '127.0.0.1' に等しい OR '--bind-address' が存在しない + +
+返された値: + +```console +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259" +``` +
+ +## 2 Etcd ノード構成 + +### 2.1 --cert-file および --key-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +grep -A 4 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file' +``` + +**期待される結果:** 'cert-file' が存在する AND 'key-file' が存在する + +
+返された値: + +```console + cert-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.crt + key-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.key +``` +
+ +### 2.2 --client-cert-auth 引数が true に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +grep -A 4 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth' +``` + +**期待される結果:** '--client-cert-auth' が存在する OR 'client-cert-auth' が 'true' に等しい + +
+返された値: + +```console + client-cert-auth: true +``` +
+ +### 2.3 --auto-tls 引数が true に設定されていないことを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +if grep -q '^auto-tls' /var/lib/rancher/k3s/server/db/etcd/config;then grep '^auto-tls' /var/lib/rancher/k3s/server/db/etcd/config;else echo 'notset';fi +``` + +**期待される結果:** '--auto-tls' が存在しない OR '--auto-tls' が存在する + +
+返された値: + +```console +notset +``` +
+ +### 2.4 --peer-cert-file および --peer-key-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +grep -A 4 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file' +``` + +**期待される結果:** 'cert-file' が存在する AND 'key-file' が存在する + +
+返された値: + +```console + cert-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt + key-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key +``` +
+ +### 2.5 --peer-client-cert-auth 引数が true に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +grep -A 4 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth' +``` + +**期待される結果:** '--client-cert-auth' が存在する OR 'client-cert-auth' が 'true' に等しい + +
+返された値: + +```console + client-cert-auth: true +``` +
+ +### 2.6 --peer-auto-tls 引数が true に設定されていないことを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +if grep -q '^peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config;then grep '^peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config;else echo 'notset';fi +``` + +**期待される結果:** '--peer-auto-tls' が存在しない OR '--peer-auto-tls' が存在する + +
+返された値: + +```console +notset +``` +
+ +### 2.7 Etcd に対して一意の証明書認証局が使用されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +if grep -q 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config;then grep 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config;else echo 'notset';fi +``` + +**期待される結果:** 'trusted-ca-file' が存在する + +
+返された値: + +```console + trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/server-ca.crt + trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt +``` +
+ +## 4.1 ワーカーノード構成ファイル + +### 4.1.1 kubelet サービスファイルの権限が 600 またはそれ以上に制限されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +各ワーカーノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf + +### 4.1.2 kubelet サービスファイルの所有者が root:root に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +各ワーカーノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: +chown root:root /etc/systemd/system/kubelet.service.d/10-kubeadm.conf + +### 4.1.3 プロキシ kubeconfig ファイルが存在する場合、パーミッションが 600 またはそれより制限されていることを確認する (手動) + +**結果:** WARN + +**修正方法:** +各ワーカーノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例えば、 +chmod 600 /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig + +### 4.1.4 プロキシ kubeconfig ファイルが存在する場合、所有者が root:root に設定されていることを確認する (手動) + +**結果:** PASS + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig; fi' +``` + +**期待される結果:** 'root:root' が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 4.1.5 --kubeconfig kubelet.conf ファイルのパーミッションが 600 またはそれより制限されていることを確認する (自動) + +**結果:** PASS + +**監査:** +```bash +stat -c %a /var/lib/rancher/k3s/agent/kubelet.kubeconfig +``` + +**期待される結果:** '600' が '600' と等しい + +
+返された値: + +```console +600 +``` +
+ +### 4.1.6 --kubeconfig kubelet.conf ファイルの所有者が root:root に設定されていることを確認する (自動) + +**結果:** PASS + +**監査:** +```bash +stat -c %U:%G /var/lib/rancher/k3s/agent/kubelet.kubeconfig +``` + +**期待される結果:** 'root:root' が 'root:root' と等しい + +
+返された値: + +```console +root:root +``` +
+ +### 4.1.7 証明書認証局ファイルのパーミッションが 600 またはそれより制限されていることを確認する (手動) + +**結果:** WARN + +**修正方法:** +以下のコマンドを実行して、--client-ca-file のファイルパーミッションを変更します。 +chmod 600 <filename> + +### 4.1.8 クライアント証明書認証局ファイルの所有者が root:root に設定されていることを確認する (手動) + +**結果:** PASS + +**監査:** +```bash +stat -c %U:%G /var/lib/rancher/k3s/server/tls/client-ca.crt +``` + +**期待される結果:** 'root:root' が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 4.1.9 kubelet config.yaml 設定ファイルが使用されている場合、パーミッションが 600 またはそれより制限されていることを確認する (手動) + +**結果:** 該当なし + +**修正方法:** +以下のコマンドを実行します(監査ステップで特定された設定ファイルの場所を使用)。 +chmod 600 /var/lib/kubelet/config.yaml + +### 4.1.10 kubelet config.yaml 設定ファイルが使用されている場合、ファイルの所有者が root:root に設定されていることを確認する (手動) + +**結果:** 該当なし + +**修正方法:** +以下のコマンドを実行します(監査ステップで特定された設定ファイルの場所を使用)。 +chown root:root /var/lib/kubelet/config.yaml + +## 4.2 Kubelet + +### 4.2.1 --anonymous-auth 引数が false に設定されていることを確認する (自動) + +**結果:** PASS + +**監査:** +```bash +/bin/sh -c 'if test $(journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "anonymous-auth" | grep -v grep; else echo "--anonymous-auth=false"; fi' +``` + +**期待される結果:** '--anonymous-auth' が 'false' と等しい + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 4.2.2 --authorization-mode 引数が AlwaysAllow に設定されていないことを確認する (自動) + +**結果:** PASS + +**監査:** +```bash +/bin/sh -c 'if test $(journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "authorization-mode" | grep -v grep; else echo "--authorization-mode=Webhook"; fi' +``` + +**期待される結果:** '--authorization-mode' に 'AlwaysAllow' が含まれていない + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 4.2.3 --client-ca-file 引数が適切に設定されていることを確認する (自動) + +**結果:** PASS + +**監査:** +```bash +/bin/sh -c 'if test $(journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "client-ca-file" | grep -v grep; else echo "--client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt"; fi' +``` + +**期待される結果:** '--client-ca-file' が存在する + +
+返された値: + +```console +May 15 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port= +2024年5月15日 18:38:23 server-0 k3s[2318]: time="2024-05-15T18:38:23Z" level=info msg="Running kube-apiserver --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,ServiceAccount,PodSecurityPolicy --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --feature-gates=JobTrackingWithFinalizers=true --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 4.2.4 --read-only-port 引数が 0 に設定されていることを確認する (手動) + +**結果:** PASS + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kubelet' | tail -n1 | grep 'read-only-port' +``` + +**期待される結果:** '--read-only-port' が '0' に等しい、または '--read-only-port' が存在しない + +
+返された値: + +```console +2024年5月15日 18:38:24 server-0 k3s[2318]: time="2024-05-15T18:38:24Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" +``` +
+ +### 4.2.5 --streaming-connection-idle-timeout 引数が 0 に設定されていないことを確認する (手動) + +**結果:** PASS + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kubelet' | tail -n1 | grep 'streaming-connection-idle-timeout' +``` + +**期待される結果:** '--streaming-connection-idle-timeout' が '0' に等しくない、または '--streaming-connection-idle-timeout' が存在しない + +
+返された値: + +```console +2024年5月15日 18:38:24 server-0 k3s[2318]: time="2024-05-15T18:38:24Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" +``` +
+ +### 4.2.6 --protect-kernel-defaults 引数が true に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +Kubelet 設定ファイルを使用している場合は、ファイルを編集して `protectKernelDefaults` を `true` に設定します。 +コマンドライン引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +/etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、KUBELET_SYSTEM_PODS_ARGS 変数に以下のパラメータを設定します。 +--protect-kernel-defaults=true +システムに基づいて、kubelet サービスを再起動します。例えば: +systemctl daemon-reload +systemctl restart kubelet.service + +### 4.2.7 --make-iptables-util-chains 引数が true に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +Kubelet 設定ファイルを使用している場合は、ファイルを編集して `makeIPTablesUtilChains` を `true` に設定します。 +コマンドライン引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +/etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、 +KUBELET_SYSTEM_PODS_ARGS 変数から --make-iptables-util-chains 引数を削除します。 +システムに基づいて、kubelet サービスを再起動します。例えば: +systemctl daemon-reload +systemctl restart kubelet.service + +### 4.2.8 --hostname-override 引数が設定されていないことを確認する (手動) + +**結果:** 該当なし + +**修正方法:** +各ワーカーノードの kubelet サービスファイル /etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、 +KUBELET_SYSTEM_PODS_ARGS 変数から --hostname-override 引数を削除します。 +システムに基づいて、kubelet サービスを再起動します。例えば: +systemctl daemon-reload +systemctl restart kubelet.service + +### 4.2.9 eventRecordQPS 引数が適切なイベントキャプチャを確保するレベルに設定されていることを確認する (手動) + +**結果:** WARN + +**修正方法:** +Kubelet 設定ファイルを使用している場合は、ファイルを編集して `eventRecordQPS` を適切なレベルに設定します。 +コマンドライン引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +/etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、 +KUBELET_SYSTEM_PODS_ARGS 変数に以下のパラメータを設定します。 +システムに基づいて、kubelet サービスを再起動します。例えば: +systemctl daemon-reload +systemctl restart kubelet.service + +### 4.2.10 --tls-cert-file および --tls-private-key-file 引数が適切に設定されていることを確認する (手動) + +**結果:** PASS + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kubelet' | tail -n1 +``` + +**期待される結果:** '--tls-cert-file' が存在し、かつ '--tls-private-key-file' が存在する + +
+返された値: + +```console +2024年5月15日 18:38:24 server-0 k3s[2318]: time="2024-05-15T18:38:24Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" +``` +
+``` + + +### 4.2.11 --rotate-certificates 引数が false に設定されていないことを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kubelet' | tail -n1 +``` + +**期待される結果:** '--rotate-certificates' が存在する、または '--rotate-certificates' が存在しない + +
+返された値: + +```console +May 15 18:38:24 server-0 k3s[2318]: time="2024-05-15T18:38:24Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" +``` +
+ +### 4.2.12 RotateKubeletServerCertificate 引数が true に設定されていることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +各ワーカーノードの kubelet サービスファイル /etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、KUBELET_CERTIFICATE_ARGS 変数に以下のパラメータを設定します。 +--feature-gates=RotateKubeletServerCertificate=true +システムに基づいて、kubelet サービスを再起動します。例: +systemctl daemon-reload +systemctl restart kubelet.service + +### 4.2.13 Kubelet が強力な暗号化スイートのみを使用することを確認する (手動) + +**結果:** 警告 + +**修正方法:** +Kubelet 設定ファイルを使用している場合、ファイルを編集して `TLSCipherSuites` を以下の値に設定します。 +TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 +またはこれらの値のサブセットに設定します。 +実行可能な引数を使用している場合、各ワーカーノードの kubelet サービスファイル /etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、--tls-cipher-suites パラメータを以下のように設定します。またはこれらの値のサブセットに設定します。 +--tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 +システムに基づいて、kubelet サービスを再起動します。例: +systemctl daemon-reload +systemctl restart kubelet.service + +## 5.1 RBAC とサービスアカウント + +### 5.1.1 cluster-admin ロールが必要な場合にのみ使用されていることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +cluster-admin ロールへのすべての clusterrolebinding を特定します。それらが使用されているかどうか、またこのロールが必要かどうか、またはより少ない特権のロールを使用できるかどうかを確認します。 +可能な場合は、まずユーザーを低特権のロールにバインドし、その後 cluster-admin ロールへの clusterrolebinding を削除します: +kubectl delete clusterrolebinding [name] + +### 5.1.2 シークレットへのアクセスを最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、クラスター内のシークレットオブジェクトへの get、list、および watch アクセスを削除します。 + +### 5.1.3 ロールおよびクラスターロールでのワイルドカードの使用を最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、clusterroles および roles でのワイルドカードの使用を特定のオブジェクトまたはアクションに置き換えます。 + +### 5.1.4 ポッドの作成アクセスを最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、クラスター内のポッドオブジェクトへの作成アクセスを削除します。 + +### 5.1.5 デフォルトのサービスアカウントが積極的に使用されていないことを確認する (手動) + +**結果:** 警告 + +**修正方法:** +Kubernetes ワークロードが Kubernetes API サーバーへの特定のアクセスを必要とする場合は、明示的なサービスアカウントを作成します。 +各デフォルトのサービスアカウントの設定を変更し、以下の値を含めます: +automountServiceAccountToken: false + +### 5.1.6 サービスアカウントトークンが必要な場合にのみマウントされることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +サービスアカウントトークンをマウントする必要がないポッドおよびサービスアカウントの定義を変更して無効にします。 + +### 5.1.7 system:masters グループの使用を避ける (手動) + +**結果:** 警告 + +**修正方法:** +クラスター内のすべてのユーザーから system:masters グループを削除します。 + +### 5.1.8 Kubernetes クラスターでの Bind、Impersonate、および Escalate 権限の使用を制限する (手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、サブジェクトから impersonate、bind、および escalate 権限を削除します。 + +## 5.2 ポッドセキュリティ基準 + +### 5.2.1 クラスターに少なくとも1つのアクティブなポリシー制御メカニズムが存在することを確認する (手動) + +**結果:** 警告 + +**修正方法:** +Pod Security Admission または外部ポリシー制御システムが、ユーザーワークロードを含むすべてのネームスペースに対して存在することを確認します。 + +### 5.2.2 特権コンテナの受け入れを最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むクラスター内の各ネームスペースにポリシーを追加し、特権コンテナの受け入れを制限します。 + +### 5.2.3 ホストプロセスIDネームスペースを共有しようとするコンテナの受け入れを最小限に抑える (自動化) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むクラスター内の各ネームスペースにポリシーを追加し、`hostPID` コンテナの受け入れを制限します。 + +### 5.2.4 ホストIPCネームスペースを共有しようとするコンテナの受け入れを最小限に抑える (自動化) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むクラスター内の各ネームスペースにポリシーを追加し、`hostIPC` コンテナの受け入れを制限します。 + +### 5.2.5 ホストネットワークネームスペースを共有しようとするコンテナの受け入れを最小限に抑える (自動化) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むクラスター内の各ネームスペースにポリシーを追加し、`hostNetwork` コンテナの受け入れを制限します。 + +### 5.2.6 allowPrivilegeEscalation を持つコンテナの受け入れを最小限に抑える (自動化) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むクラスター内の各ネームスペースにポリシーを追加し、`.spec.allowPrivilegeEscalation` が `true` に設定されているコンテナの受け入れを制限します。 + +### 5.2.7 ルートコンテナの受け入れを最小限に抑える (自動化) + +**結果:** 警告 + +**修正方法:** +クラスター内の各ネームスペースにポリシーを作成し、`MustRunAsNonRoot` または UID の範囲に 0 を含まない `MustRunAs` が設定されていることを確認します。 + +### 5.2.8 NET_RAW 権限を持つコンテナの受け入れを最小限に抑える (自動化) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むクラスター内の各ネームスペースにポリシーを追加し、`NET_RAW` 権限を持つコンテナの受け入れを制限します。 + +### 5.2.9 追加の権限を持つコンテナの受け入れを最小限に抑える (自動化) + +**結果:** 警告 + +**修正方法:** +`allowedCapabilities` が空の配列に設定されていない限り、クラスターのポリシーに `allowedCapabilities` が存在しないことを確認します。 + +### 5.2.10 割り当てられた権限を持つコンテナの受け入れを最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +クラスター上で実行されているアプリケーションの権限の使用を確認します。ネームスペースに Linux 権限を必要としないアプリケーションが含まれている場合、すべての権限を削除しないコンテナの受け入れを禁止する PSP を追加することを検討します。 + +### 5.2.11 Windows HostProcess コンテナの受け入れを最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むクラスター内の各ネームスペースにポリシーを追加し、`.securityContext.windowsOptions.hostProcess` が `true` に設定されているコンテナの受け入れを制限します。 + +### 5.2.12 HostPath ボリュームを使用するコンテナの受け入れを最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むクラスター内の各ネームスペースにポリシーを追加し、`hostPath` ボリュームを持つコンテナの受け入れを制限します。 + +### 5.2.13 HostPorts を使用するコンテナの受け入れを最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +ユーザーワークロードを含むクラスター内の各ネームスペースにポリシーを追加し、`hostPort` セクションを使用するコンテナの受け入れを制限します。 + +## 5.3 ネットワークポリシーと CNI + +### 5.3.1 使用中の CNI がネットワークポリシーをサポートしていることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +使用中の CNI プラグインがネットワークポリシーをサポートしていない場合、別のプラグインを使用するか、Kubernetes クラスター内のトラフィックを制限するための代替メカニズムを見つけることを検討します。 + +### 5.3.2 すべてのネームスペースにネットワークポリシーが定義されていることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +ドキュメントに従い、必要に応じて NetworkPolicy オブジェクトを作成します。 + +## 5.4 シークレット管理 + +### 5.4.1 環境変数としてのシークレットよりもファイルとしてのシークレットを使用することを推奨する (手動) + +**結果:** 警告 + +**修正方法:** +可能であれば、アプリケーションコードを再記述し、環境変数ではなくマウントされたシークレットファイルからシークレットを読み取るようにします。 + +### 5.4.2 外部シークレットストレージを検討する (手動) + +**結果:** 警告 + +**修正方法:** +クラウドプロバイダーやサードパーティのシークレット管理ソリューションが提供するシークレット管理オプションを参照します。 + +## 5.5 拡張可能なアドミッションコントロール + +### 5.5.1 ImagePolicyWebhook アドミッションコントローラーを使用してイメージの出所を設定する (手動) + +**結果:** 警告 + +**修正方法:** +Kubernetes のドキュメントに従い、イメージの出所を設定します。 + +## 5.7 一般的なポリシー +### 5.7.1 リソース間に名前空間を使用して管理境界を作成する(手動) + +**結果:** WARN + +**修正方法:** +ドキュメントに従い、必要に応じてデプロイメント内のオブジェクトに対して名前空間を作成してください。 + +### 5.7.2 Pod定義においてseccompプロファイルがdocker/defaultに設定されていることを確認する(手動) + +**結果:** WARN + +**修正方法:** +`securityContext`を使用して、Pod定義にdocker/default seccompプロファイルを有効にしてください。 +以下はその例です: + securityContext: + seccompProfile: + type: RuntimeDefault + +### 5.7.3 PodおよびコンテナにSecurityContextを適用する(手動) + +**結果:** WARN + +**修正方法:** +Kubernetesのドキュメントに従い、PodにSecurityContextを適用してください。推奨されるSecurityContextのリストについては、CIS Security Benchmark for Docker Containersを参照してください。 + +### 5.7.4 デフォルトの名前空間は使用しないこと(手動) + +**結果:** WARN + +**修正方法:** +Kubernetesリソースの適切な分離を可能にするために名前空間を作成し、すべての新しいリソースが特定の名前空間に作成されるようにしてください。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/security/self-assessment-1.7.md b/i18n/ja/docusaurus-plugin-content-docs/current/security/self-assessment-1.7.md new file mode 100644 index 000000000..d81b58aa0 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/security/self-assessment-1.7.md @@ -0,0 +1,1688 @@ +--- +title: CIS 1.7 セルフアセスメントガイド +--- + +## 概要 + +このドキュメントは [K3s セキュリティ強化ガイド](hardening-guide.md) の補足資料です。強化ガイドは K3s の本番環境インストールを強化するための具体的なガイダンスを提供し、このベンチマークガイドは、CIS Kubernetes ベンチマークの各コントロールに対して強化されたクラスターのセキュリティレベルを評価するのに役立ちます。これは K3s オペレーター、セキュリティチーム、監査人、および意思決定者によって使用されることを意図しています。 + +このガイドは K3s の **v1.25-v1.26** リリースラインおよび CIS Kubernetes ベンチマークの **v1.7.1** リリースに特化しています。 + +各コントロールに関する詳細な説明やテスト失敗時の修正方法については、CIS Kubernetes ベンチマーク v1.7.1 の該当セクションを参照してください。ベンチマークは、無料アカウントを作成した後に [Center for Internet Security (CIS)](https://www.cisecurity.org/benchmark/kubernetes/) からダウンロードできます。 + +### コントロールテストの方法論 + +CIS Kubernetes ベンチマークの各コントロールは、付随する強化ガイドに従って設定された K3s クラスターに対して評価されました。 + +コントロール監査が元の CIS ベンチマークと異なる場合、K3s に特化した監査コマンドがテスト用に提供されます。 + +各コントロールの結果は以下の通りです: + +- **合格** - テスト対象の K3s クラスターがベンチマークに記載された監査に合格しました。 +- **該当なし** - コントロールは K3s の設計上適用されません。修正セクションでその理由を説明します。 +- **警告** - コントロールは CIS ベンチマークで手動とされており、クラスターの使用ケースやその他の要因に依存します。これらのコントロールは K3s がその実装を妨げないことを確認するために評価されていますが、テスト対象のクラスターのさらなる設定や監査は行われていません。 + +このガイドは、K3s が Systemd ユニットとして実行されていることを前提としています。インストール方法が異なる場合は、シナリオに合わせて「監査」コマンドを調整する必要があります。 + +:::note + +このガイドでは、`scored` テスト、つまり `自動化` テストのみを対象としています。 +::: + +## 1.1 コントロールプレーンノードの設定ファイル + +### 1.1.1 API サーバーポッド仕様ファイルの権限が 600 以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /etc/kubernetes/manifests/kube-apiserver.yaml +該当なし。 + +### 1.1.2 API サーバーポッド仕様ファイルの所有者が root:root に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /etc/kubernetes/manifests/kube-apiserver.yaml +該当なし。 + +### 1.1.3 コントローラーマネージャーポッド仕様ファイルの権限が 600 以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /etc/kubernetes/manifests/kube-controller-manager.yaml +該当なし。 + +### 1.1.4 コントローラーマネージャーポッド仕様ファイルの所有者が root:root に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /etc/kubernetes/manifests/kube-controller-manager.yaml +該当なし。 + +### 1.1.5 スケジューラーポッド仕様ファイルの権限が 600 以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /etc/kubernetes/manifests/kube-scheduler.yaml +該当なし。 + +### 1.1.6 スケジューラーポッド仕様ファイルの所有者が root:root に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /etc/kubernetes/manifests/kube-scheduler.yaml +該当なし。 + +### 1.1.7 etcd ポッド仕様ファイルの権限が 600 以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /var/lib/rancher/k3s/server/db/etcd/config +該当なし。 + +### 1.1.8 etcd ポッド仕様ファイルの所有者が root:root に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /var/lib/rancher/k3s/server/db/etcd/config +該当なし。 + +### 1.1.9 コンテナネットワークインターフェイスファイルの権限が 600 以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 <path/to/cni/files> +該当なし。 + +### 1.1.10 コンテナネットワークインターフェイスファイルの所有者が root:root に設定されていることを確認する(手動) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root <path/to/cni/files> +該当なし。 + +### 1.1.11 etcd データディレクトリの権限が 700 以上の制限に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +stat -c %a /var/lib/rancher/k3s/server/db/etcd +``` + +**期待される結果:** '700' が '700' と等しい + +
+返された値: + +```console +700 +``` +
+ +### 1.1.12 etcd データディレクトリの所有者が etcd:etcd に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +etcd サーバーノードで、コマンド 'ps -ef | grep etcd' から引数 --data-dir として渡される etcd データディレクトリを取得します。 +上記で見つかった etcd データディレクトリに基づいて以下のコマンドを実行します。 +例: chown etcd:etcd /var/lib/etcd +該当なし。 + +### 1.1.13 admin.conf ファイルの権限が 600 以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /var/lib/rancher/k3s/server/cred/admin.kubeconfig + +### 1.1.14 admin.conf ファイルの所有者が root:root に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/admin.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/server/cred/admin.kubeconfig; fi' +``` + +**期待される結果:** 'root:root' が 'root:root' と等しい + +
+返された値: + +```console +root:root +``` +
+ +### 1.1.15 scheduler.conf ファイルの権限が 600 以上の制限に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; fi' +``` + +**期待される結果:** permissions が 600 であり、600 以上の制限が期待される + +
+返された値: + +```console +permissions=600 +``` +
+ +### 1.1.16 scheduler.conf ファイルの所有者が root:root に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; fi' +``` + +**期待される結果:** 'root:root' が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 1.1.17 controller-manager.conf ファイルの権限が 600 以上の制限に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/controller.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/controller.kubeconfig; fi' +``` + +**期待される結果:** permissions が 600 であり、600 以上の制限が期待される + +
+返された値: + +```console +permissions=600 +``` +
+ +### 1.1.18 controller-manager.conf ファイルの所有者が root:root に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +stat -c %U:%G /var/lib/rancher/k3s/server/cred/controller.kubeconfig +``` + +**期待される結果:** 'root:root' が 'root:root' と等しい + +
+返された値: + +```console +root:root +``` +
+ +### 1.1.19 Kubernetes PKI ディレクトリおよびファイルの所有者が root:root に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +stat -c %U:%G /var/lib/rancher/k3s/server/tls +``` + +**期待される結果:** 'root:root' が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 1.1.20 Kubernetes PKI 証明書ファイルの権限が 600 以上の制限に設定されていることを確認する(手動) + +**結果:** 警告 + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod -R 600 /etc/kubernetes/pki/*.crt + +### 1.1.21 Kubernetes PKI キーファイルの権限が 600 に設定されていることを確認する(手動) + +**結果:** 警告 + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod -R 600 /etc/kubernetes/pki/*.key + +## 1.2 API サーバー + +### 1.2.1 --anonymous-auth 引数が false に設定されていることを確認する(手動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'anonymous-auth' +``` + +**期待される結果:** '--anonymous-auth' が 'false' と等しい + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.2 `--token-auth-file`パラメータが設定されていないことを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**期待される結果:** '--token-auth-file'が存在しない + +
+返された値: + +```console +root 2335 2317 0 17:22 ? 00:00:08 containerd +root 3156 1 0 17:22 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id 0eff118b8646895c6dc4bd530114d320ccef7d44c9ffe7e90bd79fb484244b84 -address /run/k3s/containerd/containerd.sock +root 3179 1 0 17:22 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id ec6b2ac160de7aadf2c1b9e7e58c7413533f71764e58bf8ac79aef2c4c0bb914 -address /run/k3s/containerd/containerd.sock +root 3254 1 0 17:22 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id 0499640f2232b224f1ff1ffba2a5787f1d31956d9ffa22e2b6f3b424f22afbbd -address /run/k3s/containerd/containerd.sock +root 4425 1 0 17:23 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id 1fb515723128cd4294015fec56cb07c994ded503dcd8fd36b179dcb58f77a2be -address /run/k3s/containerd/containerd.sock +root 4512 1 0 17:23 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id b39e79cf734d3c5d0f1f7e502c46a45d78668bdc07a2fdda5a100a6fd9c100db -address /run/k3s/containerd/containerd.sock +``` +
+ +### 1.2.3 `--DenyServiceExternalIPs`が設定されていないことを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**期待される結果:** '--enable-admission-plugins'が存在するか、存在しない + +
+返された値: + +```console +root 2335 2317 0 17:22 ? 00:00:08 containerd +root 3156 1 0 17:22 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id 0eff118b8646895c6dc4bd530114d320ccef7d44c9ffe7e90bd79fb484244b84 -address /run/k3s/containerd/containerd.sock +root 3179 1 0 17:22 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id ec6b2ac160de7aadf2c1b9e7e58c7413533f71764e58bf8ac79aef2c4c0bb914 -address /run/k3s/containerd/containerd.sock +root 3254 1 0 17:22 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id 0499640f2232b224f1ff1ffba2a5787f1d31956d9ffa22e2b6f3b424f22afbbd -address /run/k3s/containerd/containerd.sock +root 4425 1 0 17:23 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id 1fb515723128cd4294015fec56cb07c994ded503dcd8fd36b179dcb58f77a2be -address /run/k3s/containerd/containerd.sock +root 4512 1 0 17:23 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id b39e79cf734d3c5d0f1f7e502c46a45d78668bdc07a2fdda5a100a6fd9c100db -address /run/k3s/containerd/containerd.sock +``` +
+ +### 1.2.4 `--kubelet-client-certificate`および`--kubelet-client-key`引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'kubelet-certificate-authority' +``` + +**期待される結果:** '--kubelet-client-certificate'が存在し、'--kubelet-client-key'が存在する + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.5 `--kubelet-certificate-authority`引数が適切に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正:** +Kubernetesのドキュメントに従い、apiserverとkubelet間のTLS接続を設定します。その後、コントロールプレーンノードのAPIサーバーポッド仕様ファイル +/etc/kubernetes/manifests/kube-apiserver.yamlを編集し、設定します。 +``` +--kubelet-certificate-authority パラメータを証明書認証局の証明書ファイルのパスに設定します。 +--kubelet-certificate-authority=<ca-string> +許容 - サービング証明書を生成する際、特定のクラウドプロバイダーに必要なホスト名のオーバーライドと組み合わせると機能が壊れる可能性があります。 + +### 1.2.6 --authorization-mode 引数が AlwaysAllow に設定されていないことを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode' +``` + +**期待される結果:** '--authorization-mode' に 'AlwaysAllow' が含まれていない + +
+返された値: + +```console +May 15 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.7 --authorization-mode 引数に Node が含まれていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode' +``` + +**期待される結果:** '--authorization-mode' に 'Node' が含まれている + +
+返された値: + +```console +May 15 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.8 --authorization-mode 引数に RBAC が含まれていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode' +``` + +**期待される結果:** '--authorization-mode' に 'RBAC' が含まれている + +
+返された値: + +```console +May 15 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.9 admission control プラグイン EventRateLimit が設定されていることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +Kubernetes のドキュメントに従い、設定ファイルに希望する制限を設定します。 +次に、API サーバーのポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、以下のパラメータを設定します。 +--enable-admission-plugins=...,EventRateLimit,... +--admission-control-config-file=<path/to/configuration/file> +### 1.2.10 常に許可するアドミッションコントロールプラグインが設定されていないことを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins' +``` + +**期待される結果:** '--enable-admission-plugins' に 'AlwaysAdmit' が含まれていない、または '--enable-admission-plugins' が存在しない + +
+返された値: + +```console +May 15 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.11 常にイメージをプルするアドミッションコントロールプラグインが設定されていることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +コントロールプレーンノードの API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--enable-admission-plugins パラメータに AlwaysPullImages を含めます。 +--enable-admission-plugins=...,AlwaysPullImages,... + +### 1.2.12 PodSecurityPolicy が使用されていない場合、SecurityContextDeny アドミッションコントロールプラグインが設定されていることを確認する (手動) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--enable-admission-plugins パラメータに SecurityContextDeny を含めます。ただし、PodSecurityPolicy が既に存在する場合は除きます。 +--enable-admission-plugins=...,SecurityContextDeny,... +許容 - Pod Security Policy を有効にすると、アプリケーションが予期せず失敗する可能性があります。 + +### 1.2.13 ServiceAccount アドミッションコントロールプラグインが設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -v grep +``` + +**期待される結果:** '--disable-admission-plugins' が存在する、または '--disable-admission-plugins' が存在しない + +
+返された値: + +```console +May 15 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.14 NamespaceLifecycle アドミッションコントロールプラグインが設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -v grep +``` + +**期待される結果:** '--disable-admission-plugins' が存在する、または '--disable-admission-plugins' が存在しない + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.15 ノード制限アドミッションコントロールプラグインが設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins' +``` + +**期待される結果:** '--enable-admission-plugins' に 'NodeRestriction' が含まれている + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.16 --secure-port 引数が 0 に設定されていないことを確認する - この推奨事項は時代遅れであり、合意プロセスに従って削除されます (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'secure-port' +``` + +**期待される結果:** '--secure-port' が 0 より大きいか、または '--secure-port' が存在しない + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.17 --profiling 引数が false に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'profiling' +``` + +**期待される結果:** '--profiling' が 'false' に等しい + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.18 --audit-log-path 引数が設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--audit-log-path パラメータを適切なパスとファイルに設定します。例えば、 +--audit-log-path=/var/log/apiserver/audit.log +許容。 + +### 1.2.19 --audit-log-maxage 引数が30または適切な値に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--audit-log-maxage パラメータを30または適切な日数に設定します。例えば、 +--audit-log-maxage=30 +許容。 + +### 1.2.20 --audit-log-maxbackup 引数が10または適切な値に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--audit-log-maxbackup パラメータを10または適切な値に設定します。例えば、 +--audit-log-maxbackup=10 +許容。 + +### 1.2.21 --audit-log-maxsize 引数が100または適切な値に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--audit-log-maxsize パラメータを適切なサイズ(MB単位)に設定します。例えば、100 MBに設定するには、--audit-log-maxsize=100 +許容。 + +### 1.2.22 --request-timeout 引数が適切に設定されていることを確認する (手動) + +**結果:** 該当なし + +**修正方法:** +API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、必要に応じて以下のパラメータを適切に設定します。例えば、--request-timeout=300s +許容。 + +### 1.2.23 --service-account-lookup 引数が true に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -v grep +``` + +**期待される結果:** '--service-account-lookup' が存在しないか、'--service-account-lookup' が 'true' に等しい + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.24 --service-account-key-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--service-account-key-file パラメータをサービスアカウントの公開鍵ファイルに設定します。例えば、 +--service-account-key-file=<filename> + +### 1.2.25 --etcd-certfile および --etcd-keyfile 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 +``` + +**期待される結果:** '--etcd-certfile' が存在し、'--etcd-keyfile' が存在する + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.26 --tls-cert-file および --tls-private-key-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep -A1 'Running kube-apiserver' | tail -n2 +``` + +**期待される結果:** '--tls-cert-file' が存在し、かつ '--tls-private-key-file' が存在する + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259" +``` +
+ +### 1.2.27 --client-ca-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'client-ca-file' +``` + +**期待される結果:** '--client-ca-file' が存在する + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.28 --etcd-cafile 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-cafile' +``` + +**期待される結果:** '--etcd-cafile' が存在する + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.29 適切に --encryption-provider-config 引数が設定されていることを確認する (手動) + +**結果:** 該当なし + +**修正方法:** +Kubernetesのドキュメントに従い、EncryptionConfigファイルを設定します。 +次に、コントロールプレーンノードのAPIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--encryption-provider-config パラメータをそのファイルのパスに設定します。 +例: --encryption-provider-config=</path/to/EncryptionConfig/File> +許容 - 暗号化を有効にすると、データが暗号化されるため、データの復旧方法が変更されます。 + +### 1.2.30 適切に暗号化プロバイダーが設定されていることを確認する (手動) + +**結果:** 該当なし + +**修正方法:** +Kubernetesのドキュメントに従い、EncryptionConfigファイルを設定します。 +このファイルで、暗号化プロバイダーとしてaescbc、kms、またはsecretboxを選択します。 +許容 - 暗号化を有効にすると、データが暗号化されるため、データの復旧方法が変更されます。 + +### 1.2.32 APIサーバーが強力な暗号スイートのみを使用していることを確認する (手動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'tls-cipher-suites' +``` + +**期待される結果:** '--tls-cipher-suites' が 'TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384' の有効な要素を含む + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +## 1.3 コントローラーマネージャー + +### 1.3.1 --terminated-pod-gc-threshold 引数が適切に設定されていることを確認する (手動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'terminated-pod-gc-threshold' +``` + +**期待される結果:** '--terminated-pod-gc-threshold' が存在する + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.2 --profiling 引数が false に設定されていることを確認する (自動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'profiling' +``` + +**期待される結果:** '--profiling' が 'false' に等しい + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.3 --use-service-account-credentials 引数が true に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'use-service-account-credentials' +``` + +**期待される結果:** '--use-service-account-credentials' が 'false' ではない + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.4 --service-account-private-key-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'service-account-private-key-file' +``` + +**期待される結果:** '--service-account-private-key-file' が存在する + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.5 --root-ca-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'root-ca-file' +``` + +**期待される結果:** '--root-ca-file' が存在する + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.6 RotateKubeletServerCertificate 引数が true に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの Controller Manager ポッド仕様ファイル /etc/kubernetes/manifests/kube-controller-manager.yaml を編集し、--feature-gates パラメータに RotateKubeletServerCertificate=true を含めます。 +--feature-gates=RotateKubeletServerCertificate=true +該当なし。 + +### 1.3.7 --bind-address 引数が 127.0.0.1 に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**期待される結果:** '--bind-address' が存在する OR '--bind-address' が存在しない + +
+返された値: + +```console +root 2335 2317 0 17:22 ? 00:00:08 containerd +root 3156 1 0 17:22 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id 0eff118b8646895c6dc4bd530114d320ccef7d44c9ffe7e90bd79fb484244b84 -address /run/k3s/containerd/containerd.sock +root 3179 1 0 17:22 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id ec6b2ac160de7aadf2c1b9e7e58c7413533f71764e58bf8ac79aef2c4c0bb914 -address /run/k3s/containerd/containerd.sock +root 3254 1 0 17:22 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id 0499640f2232b224f1ff1ffba2a5787f1d31956d9ffa22e2b6f3b424f22afbbd -address /run/k3s/containerd/containerd.sock +root 4425 1 0 17:23 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id 1fb515723128cd4294015fec56cb07c994ded503dcd8fd36b179dcb58f77a2be -address /run/k3s/containerd/containerd.sock +root 4512 1 0 17:23 ? 00:00:00 /var/lib/rancher/k3s/data/19eadf174fb6dfb5a92b12cd3045d81e09a334ba9af3c2afa5382675f3f6c918/bin/containerd-shim-runc-v2 -namespace k8s.io -id b39e79cf734d3c5d0f1f7e502c46a45d78668bdc07a2fdda5a100a6fd9c100db -address /run/k3s/containerd/containerd.sock +``` +
+ +## 1.4 スケジューラー + +### 1.4.1 --profiling 引数が false に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-scheduler' | tail -n1 +``` + +**期待される結果:** '--profiling' が 'false' である + +
+返された値: + +```console +May 15 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259" +``` +
+ +### 1.4.2 --bind-address 引数が 127.0.0.1 に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-scheduler' | tail -n1 | grep 'bind-address' +``` + +**期待される結果:** '--bind-address' が '127.0.0.1' に等しい、または '--bind-address' が存在しない + +
+返された値: + +```console +May 15 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259" +``` +
+ +## 2 Etcd ノード構成 + +### 2.1 --cert-file および --key-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +grep -A 4 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file' +``` + +**期待される結果:** 'cert-file' が存在し、'key-file' が存在する + +
+返された値: + +```console + cert-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.crt + key-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.key +``` +
+ +### 2.2 --client-cert-auth 引数が true に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +grep -A 4 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth' +``` + +**期待される結果:** '--client-cert-auth' が存在する、または 'client-cert-auth' が 'true' に等しい + +
+返された値: + +```console + client-cert-auth: true +``` +
+ +### 2.3 --auto-tls 引数が true に設定されていないことを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +if grep -q '^auto-tls' /var/lib/rancher/k3s/server/db/etcd/config;then grep '^auto-tls' /var/lib/rancher/k3s/server/db/etcd/config;else echo 'notset';fi +``` + +**期待される結果:** '--auto-tls' が存在しない、または '--auto-tls' が存在する + +
+返された値: + +```console +notset +``` +
+ +### 2.4 --peer-cert-file および --peer-key-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +grep -A 4 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file' +``` + +**期待される結果:** 'cert-file' が存在し、'key-file' が存在する + +
+返された値: + +```console + cert-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt + key-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key +``` +
+ +### 2.5 --peer-client-cert-auth 引数が true に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +grep -A 4 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth' +``` + +**期待される結果:** '--client-cert-auth' が存在する、または 'client-cert-auth' が 'true' に等しい + +
+返された値: + +```console + client-cert-auth: true +``` +
+ +### 2.6 --peer-auto-tls 引数が true に設定されていないことを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +if grep -q '^peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config;then grep '^peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config;else echo 'notset';fi +``` + +**期待される結果:** '--peer-auto-tls' が存在しない、または '--peer-auto-tls' が存在する + +
+返された値: + +```console +notset +``` +
+ +### 2.7 Etcd に対して一意の証明書認証局が使用されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +if grep -q 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config;then grep 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config;else echo 'notset';fi +``` + +**期待される結果:** 'trusted-ca-file' が存在する + +
+返された値: + +```console + trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/server-ca.crt + trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt +``` +
+ +## 4.1 ワーカーノード構成ファイル + +### 4.1.1 kubelet サービスファイルのパーミッションが 600 以上の制限に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正:** +各ワーカーノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf +該当なし - すべての構成はコンテナ実行時の引数として渡されます。 + +### 4.1.2 kubelet サービスファイルの所有者が root:root に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正:** +各ワーカーノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: +chown root:root /etc/systemd/system/kubelet.service.d/10-kubeadm.conf +該当なし。 +すべての構成はコンテナ実行時の引数として渡されます。 + +### 4.1.3 プロキシ kubeconfig ファイルが存在する場合、パーミッションが 600 以上の制限に設定されていることを確認する (手動) + +**結果:** 警告 + +**修正:** +各ワーカーノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: +chmod 600 /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig + +### 4.1.4 プロキシ kubeconfig ファイルが存在する場合、所有者が root:root に設定されていることを確認する (手動) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig; fi' +``` + +**期待される結果:** 'root:root' が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 4.1.5 --kubeconfig kubelet.conf ファイルのパーミッションが 600 以上の制限に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/admin.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/admin.kubeconfig; fi' +``` + +**期待される結果:** パーミッションが 600 であり、600 以上の制限が期待される + +
+返された値: + +```console +permissions=600 +``` +
+ +### 4.1.6 --kubeconfig kubelet.conf ファイルの所有者が root:root に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +stat -c %U:%G /var/lib/rancher/k3s/agent/kubelet.kubeconfig +``` + +**期待される結果:** 'root:root' が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 4.1.7 証明書認証局ファイルのパーミッションが 600 以上の制限に設定されていることを確認する (手動) + +**結果:** 警告 + +**修正:** +--client-ca-file のファイルパーミッションを変更するために以下のコマンドを実行します +chmod 600 <filename> + +### 4.1.8 クライアント証明書認証局ファイルの所有者が root:root に設定されていることを確認する (手動) + +**結果:** 合格 + +**監査:** +```bash +stat -c %U:%G /var/lib/rancher/k3s/server/tls/client-ca.crt +``` + +**期待される結果:** 'root:root' が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 4.1.9 kubelet --config 構成ファイルのパーミッションが 600 以上の制限に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正:** +監査ステップで特定された構成ファイルの場所を使用して以下のコマンドを実行します +chmod 600 /var/lib/kubelet/config.yaml + +### 4.1.10 kubelet --config 構成ファイルの所有者が root:root に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正:** +監査ステップで特定された構成ファイルの場所を使用して以下のコマンドを実行します +chown root:root /var/lib/kubelet/config.yaml +該当なし。 +すべての構成はコンテナ実行時の引数として渡されます。 + +## 4.2 Kubelet + +### 4.2.1 --anonymous-auth 引数が false に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test $(journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "anonymous-auth" | grep -v grep; else echo "--anonymous-auth=false"; fi' +``` + +**期待される結果:** '--anonymous-auth' が 'false' に等しい + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 4.2.2 --authorization-mode 引数が AlwaysAllow に設定されていないことを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test $(journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "authorization-mode" | grep -v grep; else echo "--authorization-mode=Webhook"; fi' +``` + +**期待される結果:** '--authorization-mode' に 'AlwaysAllow' が含まれていない + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 4.2.3 --client-ca-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test $(journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "client-ca-file" | grep -v grep; else echo "--client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt"; fi' +``` + +**期待される結果:** '--client-ca-file' が存在する + +
+返された値: + +```console +2024年5月15日 17:22:25 server-0 k3s[2317]: time="2024-05-15T17:22:25Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 4.2.4 --read-only-port 引数が 0 に設定されていることを確認する (手動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kubelet' | tail -n1 | grep 'read-only-port' +``` + +**期待される結果:** '--read-only-port' が '0' に等しい、または '--read-only-port' が存在しない + +
+返された値: + +```console +2024年5月15日 17:22:27 server-0 k3s[2317]: time="2024-05-15T17:22:27Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" +``` +
+ +### 4.2.5 `--streaming-connection-idle-timeout` 引数が 0 に設定されていないことを確認する (手動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kubelet' | tail -n1 | grep 'streaming-connection-idle-timeout' +``` + +**期待される結果:** '--streaming-connection-idle-timeout' が '0' でない、または '--streaming-connection-idle-timeout' が存在しない + +
+返された値: + +```console +2024年5月15日 17:22:27 server-0 k3s[2317]: time="2024-05-15T17:22:27Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" +``` +
+ +### 4.2.6 `--make-iptables-util-chains` 引数が true に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正方法:** +Kubelet 設定ファイルを使用している場合は、ファイルを編集して `makeIPTablesUtilChains` を `true` に設定します。 +コマンドライン引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +/etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、 +KUBELET_SYSTEM_PODS_ARGS 変数から --make-iptables-util-chains 引数を削除します。 +システムに基づいて、kubelet サービスを再起動します。例えば: +systemctl daemon-reload +systemctl restart kubelet.service +許容。 + +### 4.2.7 `--hostname-override` 引数が設定されていないことを確認する (手動) + +**結果:** 該当なし + +**修正方法:** +各ワーカーノードの kubelet サービスファイル /etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、 +KUBELET_SYSTEM_PODS_ARGS 変数から --hostname-override 引数を削除します。 +システムに基づいて、kubelet サービスを再起動します。例えば、 +systemctl daemon-reload +systemctl restart kubelet.service +該当なし。 + +### 4.2.8 eventRecordQPS 引数が適切なイベントキャプチャを確保するレベルに設定されていることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +Kubelet 設定ファイルを使用している場合は、ファイルを編集して `eventRecordQPS` を適切なレベルに設定します。 +コマンドライン引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +/etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、 +KUBELET_SYSTEM_PODS_ARGS 変数に以下のパラメータを設定します。 +システムに基づいて、kubelet サービスを再起動します。例えば、 +systemctl daemon-reload +systemctl restart kubelet.service + +### 4.2.9 `--tls-cert-file` および `--tls-private-key-file` 引数が適切に設定されていることを確認する (手動) + +**結果:** 該当なし + +**修正方法:** +Kubelet 設定ファイルを使用している場合は、ファイルを編集して `tlsCertFile` をこの Kubelet を識別するための証明書ファイルの場所に設定し、 +`tlsPrivateKeyFile` を対応する秘密鍵ファイルの場所に設定します。 +コマンドライン引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +/etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、 +KUBELET_CERTIFICATE_ARGS 変数に以下のパラメータを設定します。 +--tls-cert-file=<path/to/tls-certificate-file> +--tls-private-key-file=<path/to/tls-key-file> +システムに基づいて、kubelet サービスを再起動します。例えば、 +systemctl daemon-reload +systemctl restart kubelet.service +許容 - サービング証明書を生成する際、特定のクラウドプロバイダーに必要なホスト名オーバーライドと組み合わせて機能が壊れる可能性があります。 + +### 4.2.10 `--rotate-certificates` 引数が false に設定されていないことを確認する (手動) + +**結果:** 警告 + +**修正方法:** +Kubelet 設定ファイルを使用している場合は、ファイルを編集して `rotateCertificates` を `true` に設定するか、 +デフォルト値を使用するために削除します。 +コマンドライン引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +/etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、 +KUBELET_CERTIFICATE_ARGS 変数から --rotate-certificates=false 引数を削除します。 +システムに基づいて、kubelet サービスを再起動します。例えば、 +systemctl daemon-reload +systemctl restart kubelet.service + +### 4.2.11 RotateKubeletServerCertificate 引数が true に設定されていることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +各ワーカーノードの kubelet サービスファイル /etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、 +KUBELET_CERTIFICATE_ARGS 変数に以下のパラメータを設定します。 +--feature-gates=RotateKubeletServerCertificate=true +システムに基づいて、kubelet サービスを再起動します。例えば: +systemctl daemon-reload +systemctl restart kubelet.service +該当なし。 + +### 4.2.12 Kubelet が強力な暗号化スイートのみを使用していることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +Kubelet 設定ファイルを使用している場合は、ファイルを編集して `TLSCipherSuites` を +TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 +またはこれらの値のサブセットに設定します。 +実行可能な引数を使用している場合は、各ワーカーノードの kubelet サービスファイル +/etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、 +--tls-cipher-suites パラメータを以下のように設定します。またはこれらの値のサブセットに設定します。 +--tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 +システムに基づいて、kubelet サービスを再起動します。例えば: +systemctl daemon-reload +systemctl restart kubelet.service + +### 4.2.13 ポッドの PID に制限が設定されていることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +このパラメータの適切なレベルを決定し、 +--pod-max-pids コマンドラインパラメータまたは PodPidsLimit 設定ファイル設定を使用して設定します。 + +## 5.1 RBAC とサービスアカウント + +### 5.1.1 cluster-admin ロールが必要な場合にのみ使用されていることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +cluster-admin ロールへのすべての clusterrolebinding を特定します。それらが使用されているかどうか、 +およびこのロールが必要かどうか、またはより少ない権限のロールを使用できるかどうかを確認します。 +可能な場合は、最初にユーザーを低権限のロールにバインドし、その後 cluster-admin ロールへの +clusterrolebinding を削除します: +kubectl delete clusterrolebinding [name] + +### 5.1.2 シークレットへのアクセスを最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、クラスター内の Secret オブジェクトへの get、list、および watch アクセスを削除します。 + +### 5.1.3 ロールおよび ClusterRoles でのワイルドカードの使用を最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、clusterroles および roles でのワイルドカードの使用を特定のオブジェクトまたはアクションに置き換えます。 + +### 5.1.4 ポッドの作成アクセスを最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、クラスター内のポッドオブジェクトへの作成アクセスを削除します。 + +### 5.1.5 デフォルトのサービスアカウントが積極的に使用されていないことを確認する (手動) + +**結果:** 該当なし + +**修正方法:** +Kubernetes ワークロードが Kubernetes API サーバーへの特定のアクセスを必要とする場合は、明示的なサービスアカウントを作成します。 +各デフォルトのサービスアカウントの設定を変更して、この値を含めます +automountServiceAccountToken: false +許容 - Kubernetes はデフォルトのサービスアカウントを提供します。 + +### 5.1.6 サービスアカウントトークンが必要な場合にのみマウントされることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +サービスアカウントトークンをマウントする必要がないポッドおよびサービスアカウントの定義を変更して無効にします。 + +### 5.1.7 system:masters グループの使用を避ける (手動) + +**結果:** 警告 + +**修正方法:** +クラスター内のすべてのユーザーから system:masters グループを削除します。 + +### 5.1.8 Kubernetes クラスター内での Bind、Impersonate、および Escalate 権限の使用を制限する (手動) +``` +**結果:** WARN + +**修正方法:** +可能な限り、サブジェクトから偽装、バインド、およびエスカレート権限を削除します。 + +### 5.1.9 永続ボリュームの作成アクセスを最小限に抑える(手動) + +**結果:** WARN + +**修正方法:** +可能な限り、クラスター内のPersistentVolumeオブジェクトへの作成アクセスを削除します。 + +### 5.1.10 ノードのプロキシサブリソースへのアクセスを最小限に抑える(手動) + +**結果:** WARN + +**修正方法:** +可能な限り、ノードオブジェクトのプロキシサブリソースへのアクセスを削除します。 + +### 5.1.11 証明書署名要求オブジェクトの承認サブリソースへのアクセスを最小限に抑える(手動) + +**結果:** WARN + +**修正方法:** +可能な限り、証明書署名要求オブジェクトの承認サブリソースへのアクセスを削除します。 + +### 5.1.12 Webhook構成オブジェクトへのアクセスを最小限に抑える(手動) + +**結果:** WARN + +**修正方法:** +可能な限り、validatingwebhookconfigurationsまたはmutatingwebhookconfigurationsオブジェクトへのアクセスを削除します。 + +### 5.1.13 サービスアカウントトークンの作成アクセスを最小限に抑える(手動) + +**結果:** WARN + +**修正方法:** +可能な限り、serviceaccountオブジェクトのトークンサブリソースへのアクセスを削除します。 + +## 5.2 ポッドセキュリティ基準 + +### 5.2.1 クラスターに少なくとも1つのアクティブなポリシー制御メカニズムが存在することを確認する(手動) + +**結果:** WARN + +**修正方法:** +Pod Security Admissionまたは外部ポリシー制御システムが、ユーザーのワークロードを含むすべてのネームスペースに存在することを確認します。 + +### 5.2.2 特権コンテナの受け入れを最小限に抑える(手動) + +**結果:** WARN + +**修正方法:** +クラスター内のユーザーワークロードを持つ各ネームスペースにポリシーを追加し、特権コンテナの受け入れを制限します。 + +### 5.2.3 ホストプロセスIDネームスペースを共有するコンテナの受け入れを最小限に抑える(自動) + +**結果:** 該当なし + +**修正方法:** +クラスター内のユーザーワークロードを持つ各ネームスペースにポリシーを追加し、`hostPID`コンテナの受け入れを制限します。 +許容 - Pod Security Policyを有効にすると、アプリケーションが予期せず失敗する可能性があります。 + +### 5.2.4 ホストIPCネームスペースを共有するコンテナの受け入れを最小限に抑える(自動) + +**結果:** 該当なし + +**修正方法:** +クラスター内のユーザーワークロードを持つ各ネームスペースにポリシーを追加し、`hostIPC`コンテナの受け入れを制限します。 +許容 - Pod Security Policyを有効にすると、アプリケーションが予期せず失敗する可能性があります。 + +### 5.2.5 ホストネットワークネームスペースを共有するコンテナの受け入れを最小限に抑える(自動) + +**結果:** 該当なし + +**修正方法:** +クラスター内のユーザーワークロードを持つ各ネームスペースにポリシーを追加し、`hostNetwork`コンテナの受け入れを制限します。 +許容 - Pod Security Policyを有効にすると、アプリケーションが予期せず失敗する可能性があります。 + +### 5.2.6 allowPrivilegeEscalationを持つコンテナの受け入れを最小限に抑える(自動) + +**結果:** WARN + +**修正方法:** +クラスター内のユーザーワークロードを持つ各ネームスペースにポリシーを追加し、`.spec.allowPrivilegeEscalation`が`true`に設定されているコンテナの受け入れを制限します。 + +### 5.2.7 ルートコンテナの受け入れを最小限に抑える(自動) + +**結果:** WARN + +**修正方法:** +クラスター内の各ネームスペースにポリシーを作成し、`MustRunAsNonRoot`またはUIDの範囲に0を含まない`MustRunAs`が設定されていることを確認します。 + +### 5.2.8 NET_RAW機能を持つコンテナの受け入れを最小限に抑える(自動) + +**結果:** WARN + +**修正方法:** +クラスター内のユーザーワークロードを持つ各ネームスペースにポリシーを追加し、`NET_RAW`機能を持つコンテナの受け入れを制限します。 + +### 5.2.9 追加機能を持つコンテナの受け入れを最小限に抑える(自動) + +**結果:** WARN + +**修正方法:** +`allowedCapabilities`が空の配列に設定されていない限り、クラスターのポリシーに`allowedCapabilities`が存在しないことを確認します。 + +### 5.2.10 機能が割り当てられたコンテナの受け入れを最小限に抑える(手動) + +**結果:** WARN + +**修正方法:** +クラスターで実行されているアプリケーションの機能の使用を確認します。ネームスペースにLinux機能を必要としないアプリケーションが含まれている場合、すべての機能を削除しないコンテナの受け入れを禁止するPSPを追加することを検討します。 + +### 5.2.11 Windows HostProcessコンテナの受け入れを最小限に抑える(手動) + +**結果:** WARN + +**修正方法:** +クラスター内のユーザーワークロードを持つ各ネームスペースにポリシーを追加し、`.securityContext.windowsOptions.hostProcess`が`true`に設定されているコンテナの受け入れを制限します。 + +### 5.2.12 HostPathボリュームの受け入れを最小限に抑える(手動) + +**結果:** WARN + +**修正方法:** +クラスター内のユーザーワークロードを持つ各ネームスペースにポリシーを追加し、`hostPath`ボリュームを持つコンテナの受け入れを制限します。 + +### 5.2.13 HostPortsを使用するコンテナの受け入れを最小限に抑える(手動) + +**結果:** WARN + +**修正方法:** +クラスター内のユーザーワークロードを持つ各ネームスペースにポリシーを追加し、`hostPort`セクションを使用するコンテナの受け入れを制限します。 + +## 5.3 ネットワークポリシーとCNI + +### 5.3.1 使用中のCNIがネットワークポリシーをサポートしていることを確認する(手動) + +**結果:** WARN + +**修正方法:** +使用中のCNIプラグインがネットワークポリシーをサポートしていない場合、別のプラグインを使用するか、Kubernetesクラスター内のトラフィックを制限するための代替メカニズムを検討します。 + +### 5.3.2 すべてのネームスペースにネットワークポリシーが定義されていることを確認する(手動) + +**結果:** 該当なし + +**修正方法:** +ドキュメントに従い、必要に応じてNetworkPolicyオブジェクトを作成します。 +許容 - ネットワークポリシーを有効にすると、特定のアプリケーションが互いに通信できなくなる可能性があります。 + +## 5.4 シークレット管理 + +### 5.4.1 環境変数としてのシークレットよりもファイルとしてのシークレットを使用することを推奨(手動) + +**結果:** WARN + +**修正方法:** +可能であれば、アプリケーションコードを再記述し、環境変数ではなくマウントされたシークレットファイルからシークレットを読み取るようにします。 + +### 5.4.2 外部シークレットストレージを検討する(手動) + +**結果:** WARN + +**修正方法:** +クラウドプロバイダーやサードパーティのシークレット管理ソリューションが提供するシークレット管理オプションを参照します。 + +## 5.5 拡張可能なアドミッションコントロール + +### 5.5.1 ImagePolicyWebhookアドミッションコントローラーを使用してイメージの出所を設定する(手動) + +**結果:** WARN + +**修正方法:** +Kubernetesのドキュメントに従い、イメージの出所を設定します。 + +## 5.7 一般的なポリシー + +### 5.7.1 ネームスペースを使用してリソース間に管理境界を作成する(手動) + +**結果:** WARN + +**修正方法:** +ドキュメントに従い、必要に応じてデプロイメント内のオブジェクトのためにネームスペースを作成します。 + +### 5.7.2 Pod定義でseccompプロファイルがdocker/defaultに設定されていることを確認する(手動) + +**結果:** WARN + +**修正方法:** +`securityContext`を使用して、Pod定義でdocker/default seccompプロファイルを有効にします。以下はその例です: + securityContext: + seccompProfile: + type: RuntimeDefault + +### 5.7.3 PodおよびコンテナにSecurityContextを適用する(手動) + +**結果:** WARN + +**修正方法:** +Kubernetesのドキュメントに従い、PodにSecurityContextを適用します。推奨されるSecurityContextのリストについては、CIS Security Benchmark for Docker Containersを参照してください。 + +### 5.7.4 デフォルトのネームスペースは使用しない(手動) + +**結果:** 該当なし + +**修正方法:** +Kubernetesリソースの適切な分離を可能にするためにネームスペースを作成し、すべての新しいリソースが特定のネームスペースに作成されることを確認します。 +許容 - Kubernetesはデフォルトのネームスペースを提供します。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/security/self-assessment-1.8.md b/i18n/ja/docusaurus-plugin-content-docs/current/security/self-assessment-1.8.md new file mode 100644 index 000000000..8d58667e4 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/security/self-assessment-1.8.md @@ -0,0 +1,1826 @@ +--- +title: CIS 1.8 セルフアセスメントガイド +--- + +## 概要 + +このドキュメントは[K3sセキュリティ強化ガイド](hardening-guide.md)の補足資料です。強化ガイドはK3sの本番インストールを強化するための具体的なガイダンスを提供し、このベンチマークガイドはCIS Kubernetesベンチマークの各コントロールに対して強化されたクラスターのセキュリティレベルを評価するのに役立ちます。K3sのオペレーター、セキュリティチーム、監査人、意思決定者が使用することを目的としています。 + +このガイドはK3sの**v1.27-v1.29**リリースラインおよびCIS Kubernetesベンチマークの**v1.8**リリースに特化しています。 + +各コントロールの詳細な説明やテスト失敗時の修正方法については、CIS Kubernetesベンチマークv1.8の該当セクションを参照してください。ベンチマークは、無料アカウントを作成後に[Center for Internet Security (CIS)](https://www.cisecurity.org/benchmark/kubernetes/)からダウンロードできます。 + +### コントロールテストの方法論 + +CIS Kubernetesベンチマークの各コントロールは、付随する強化ガイドに従って設定されたK3sクラスターに対して評価されました。 + +コントロール監査が元のCISベンチマークと異なる場合、K3sに特化した監査コマンドがテスト用に提供されています。 + +各コントロールの結果は以下の通りです: + +- **合格** - テスト対象のK3sクラスターがベンチマークに記載された監査に合格しました。 +- **該当なし** - コントロールはK3sの設計上適用されません。修正セクションでその理由を説明します。 +- **警告** - コントロールはCISベンチマークで手動とされており、クラスターの使用ケースやその他の要因に依存します。これらのコントロールはK3sがその実装を妨げないことを確認するために評価されていますが、テスト対象のクラスターのさらなる設定や監査は行われていません。 + +このガイドは、K3sがSystemdユニットとして実行されていることを前提としています。インストール方法が異なる場合は、「監査」コマンドをシナリオに合わせて調整する必要があります。 + +:::note + +このガイドでは、`scored`テスト、つまり`自動化`テストのみを対象としています。 +::: + +## 1.1 コントロールプレーンノードの設定ファイル + +### 1.1.1 APIサーバーポッド仕様ファイルの権限が600以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /etc/kubernetes/manifests/kube-apiserver.yaml +該当なし。 + +### 1.1.2 APIサーバーポッド仕様ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /etc/kubernetes/manifests/kube-apiserver.yaml +該当なし。 + +### 1.1.3 コントローラーマネージャーポッド仕様ファイルの権限が600以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /etc/kubernetes/manifests/kube-controller-manager.yaml +該当なし。 + +### 1.1.4 コントローラーマネージャーポッド仕様ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /etc/kubernetes/manifests/kube-controller-manager.yaml +該当なし。 + +### 1.1.5 スケジューラーポッド仕様ファイルの権限が600以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /etc/kubernetes/manifests/kube-scheduler.yaml +該当なし。 + +### 1.1.6 スケジューラーポッド仕様ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /etc/kubernetes/manifests/kube-scheduler.yaml +該当なし。 + +### 1.1.7 etcdポッド仕様ファイルの権限が600以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /etc/kubernetes/manifests/etcd.yaml +該当なし。 + +### 1.1.8 etcdポッド仕様ファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root /etc/kubernetes/manifests/etcd.yaml +該当なし。 + +### 1.1.9 コンテナネットワークインターフェイスファイルの権限が600以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 <path/to/cni/files> +該当なし。 + +### 1.1.10 コンテナネットワークインターフェイスファイルの所有者がroot:rootに設定されていることを確認する(手動) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chown root:root <path/to/cni/files> +該当なし。 + +### 1.1.11 etcdデータディレクトリの権限が700以上の制限に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +stat -c %a /var/lib/rancher/k3s/server/db/etcd +``` + +**期待される結果:** '700' が '700' と等しい + +
+返された値: + +```console +700 +``` +
+ +### 1.1.12 etcdデータディレクトリの所有者がetcd:etcdに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +etcdサーバーノードで、コマンド 'ps -ef | grep etcd' から引数 --data-dir として渡されるetcdデータディレクトリを取得します。 +上記で見つかったetcdデータディレクトリに基づいて以下のコマンドを実行します。 +例: chown etcd:etcd /var/lib/etcd +該当なし。 + +### 1.1.13 admin.confファイルの権限が600以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: chmod 600 /var/lib/rancher/k3s/server/cred/admin.kubeconfig + +### 1.1.14 admin.confファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/admin.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/server/cred/admin.kubeconfig; fi' +``` + +**期待される結果:** 'root:root' が 'root:root' と等しい + +
+返された値: + +```console +root:root +``` +
+ +### 1.1.15 scheduler.confファイルの権限が600以上の制限に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; fi' +``` + +**期待される結果:** permissionsが600であり、600以上の制限が期待される + +
+返された値: + +```console +permissions=600 +``` +
+ +### 1.1.16 scheduler.confファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/server/cred/scheduler.kubeconfig; fi' +``` + +**期待される結果:** 'root:root' が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 1.1.17 controller-manager.confファイルの権限が600以上の制限に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/controller.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/controller.kubeconfig; fi' +``` + +**期待される結果:** permissionsが600であり、600以上の制限が期待される + +
+返された値: + +```console +permissions=600 +``` +
+ +### 1.1.18 controller-manager.confファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +stat -c %U:%G /var/lib/rancher/k3s/server/cred/controller.kubeconfig +``` + +**期待される結果:** 'root:root' が 'root:root' と等しい + +
+返された値: + +```console +root:root +``` +
+ +### 1.1.19 Kubernetes PKIディレクトリおよびファイルの所有者がroot:rootに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +stat -c %U:%G /var/lib/rancher/k3s/server/tls +``` + +**期待される結果:** 'root:root' が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 1.1.20 Kubernetes PKI証明書ファイルの権限が600以上の制限に設定されていることを確認する(手動) + +**結果:** 警告 + +**修正方法:** +マスターノードで以下のコマンドを実行します(システム上のファイルの場所に基づく)。 +例: find /var/lib/rancher/k3s/server/tls/ -type f -name '*.crt' -exec chmod -v 600 {} + + +### 1.1.21 Kubernetes PKIキーのファイル権限が600に設定されていることを確認する(手動) + +**結果:** 合格 + +**監査:** +```bash +find /var/lib/rancher/k3s/server/tls/ -type f -name '*.key' | xargs stat -c permissions=%a +``` + +**期待される結果:** permissionsが600であり、600以上の制限が期待される + +
+返された値: + +```console +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +permissions=600 +``` +
+ +## 1.2 APIサーバー + + +### 1.2.1 --anonymous-auth 引数が false に設定されていることを確認する(手動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'anonymous-auth' +``` + +**期待される結果:** '--anonymous-auth' が 'false' に等しい + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.2 --token-auth-file パラメータが設定されていないことを確認する(自動) + +**結果:** 合格 + +**監査:** +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**期待される結果:** '--token-auth-file' が存在しない + +
+返された値: + +```console +root 2415 2397 0 Apr22 ? 00:06:36 containerd +root 3162 1 0 Apr22 ? 00:00:30 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id d540dd74296e1dc069f7c25dc9e76690d9afb22b404cd87c7f6217889da7aa7e -address /run/k3s/containerd/containerd.sock +root 3215 1 0 Apr22 ? 00:00:29 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id 551b739eb5a7f61465027aaf2848954a29639e8ddf4f78a89fc9f881eb6b1378 -address /run/k3s/containerd/containerd.sock +root 3318 1 0 Apr22 ? 00:00:31 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id dbf0b3aadcbf40fd7dc27f340051fc58979d46c2174963967ae01170c7d88f2d -address /run/k3s/containerd/containerd.sock +root 4135 1 0 Apr22 ? 00:00:41 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id 21e58656877367076224111e51be5d30e8d316dbcb8c05a36a8432eda2d16ccb -address /run/k3s/containerd/containerd.sock +root 4300 1 0 Apr22 ? 00:00:30 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id c1db1ac0969a14f1addcc0295ec09fa9fa4c55edac1acc4701ac18326dcb8a51 -address /run/k3s/containerd/containerd.sock +``` +
+ +### 1.2.3 --DenyServiceExternalIPs が設定されていないことを確認する(自動) + +**結果:** 合格 + +**監査:** +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**期待される結果:** '--enable-admission-plugins' が存在するか、存在しない + +
+返された値: + +```console +root 2415 2397 0 Apr22 ? 00:06:36 containerd +root 3162 1 0 Apr22 ? 00:00:30 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id d540dd74296e1dc069f7c25dc9e76690d9afb22b404cd87c7f6217889da7aa7e -address /run/k3s/containerd/containerd.sock +root 3215 1 0 Apr22 ? 00:00:29 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id 551b739eb5a7f61465027aaf2848954a29639e8ddf4f78a89fc9f881eb6b1378 -address /run/k3s/containerd/containerd.sock +root 3318 1 0 Apr22 ? 00:00:31 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id dbf0b3aadcbf40fd7dc27f340051fc58979d46c2174963967ae01170c7d88f2d -address /run/k3s/containerd/containerd.sock +root 4135 1 0 Apr22 ? 00:00:41 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id 21e58656877367076224111e51be5d30e8d316dbcb8c05a36a8432eda2d16ccb -address /run/k3s/containerd/containerd.sock +root 4300 1 0 Apr22 ? 00:00:30 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id c1db1ac0969a14f1addcc0295ec09fa9fa4c55edac1acc4701ac18326dcb8a51 -address /run/k3s/containerd/containerd.sock +``` +
+ +### 1.2.4 --kubelet-client-certificate および --kubelet-client-key 引数が適切に設定されていることを確認する(自動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'kubelet-certificate-authority' +``` + +**期待される結果:** '--kubelet-client-certificate' が存在し、かつ '--kubelet-client-key' が存在する + +
+返された値: + +```console +2024-04-22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.5 --kubelet-certificate-authority 引数が適切に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**修正方法:** +Kubernetesのドキュメントに従って、apiserverとkubelet間のTLS接続を設定してください。その後、コントロールプレーンノード上のAPIサーバーポッド仕様ファイル +/etc/kubernetes/manifests/kube-apiserver.yamlを編集し、 +--kubelet-certificate-authorityパラメータを認証局の証明書ファイルへのパスに設定してください。 +--kubelet-certificate-authority=<ca-string> +寛容 - 提供証明書を生成する際、特定のクラウドプロバイダーに必要なホスト名の上書きと併せて機能が破損する可能性があります。 + +### 1.2.6 --authorization-mode 引数が AlwaysAllow に設定されていないことを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode' +``` + +**期待される結果:** '--authorization-mode' に 'AlwaysAllow' が含まれていない + +
+返された値: + +```console +2024-04-22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.7 --authorization-mode 引数に Node が含まれていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode' +``` + +**期待される結果:** '--authorization-mode' に 'Node' が含まれている + +
+返された値: + +```console +2024-04-22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.8 --authorization-mode 引数に RBAC が含まれていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'authorization-mode' +``` + +**期待される結果:** '--authorization-mode' に 'RBAC' が設定されている + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.9 入場制御プラグイン EventRateLimit が設定されていることを確認する (手動) + +**結果:** WARN + +**修正方法:** +Kubernetes のドキュメントに従い、設定ファイルに希望する制限を設定します。 +次に、API サーバーのポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、以下のパラメーターを設定します。 +--enable-admission-plugins=...,EventRateLimit,... +--admission-control-config-file=<path/to/configuration/file> + +### 1.2.10 入場制御プラグイン AlwaysAdmit が設定されていないことを確認する (自動) + +**結果:** PASS + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins' +``` + +**期待される結果:** '--enable-admission-plugins' に 'AlwaysAdmit' が含まれていない、または '--enable-admission-plugins' が存在しない + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.11 入場制御プラグイン AlwaysPullImages が設定されていることを確認する (手動) + +**結果:** WARN + +**修正方法:** +コントロールプレーンノードの API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--enable-admission-plugins パラメーターに AlwaysPullImages を含めるように設定します。 +--enable-admission-plugins=...,AlwaysPullImages,... + +### 1.2.12 PodSecurityPolicy が使用されていない場合、入場制御プラグイン SecurityContextDeny が設定されていることを確認する (手動) + +**結果:** 該当なし + +**修正方法:** +コントロールプレーンノードの API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--enable-admission-plugins パラメーターに SecurityContextDeny を含めるように設定します。ただし、PodSecurityPolicy が既に存在する場合は除きます。 +--enable-admission-plugins=...,SecurityContextDeny,... +許容 - Pod Security Policy を有効にすると、アプリケーションが予期せず失敗する可能性があります。 + +### 1.2.13 入場制御プラグイン ServiceAccount が設定されていることを確認する (自動) + +**結果:** PASS + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -v grep +``` + +**期待される結果:** '--disable-admission-plugins' が存在する、または '--disable-admission-plugins' が存在しない + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.14 NamespaceLifecycleアドミッションコントロールプラグインが設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -v grep +``` + +**期待される結果:** '--disable-admission-plugins'が存在するか、'--disable-admission-plugins'が存在しない + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.15 NodeRestrictionアドミッションコントロールプラグインが設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'enable-admission-plugins' +``` + +**期待される結果:** '--enable-admission-plugins'に'NodeRestriction'が含まれている + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.16 --profiling引数がfalseに設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'profiling' +``` + +**期待される結果:** '--profiling'が'false'に設定されている + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.17 Ensure that the --audit-log-path argument is set (Automated) + +**Result:** Not Applicable + +**Remediation:** +APIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--audit-log-path パラメータを適切なパスとファイルに設定します。例えば、 +--audit-log-path=/var/log/apiserver/audit.log +許容。 + +### 1.2.18 Ensure that the --audit-log-maxage argument is set to 30 or as appropriate (Automated) + +**Result:** Not Applicable + +**Remediation:** +APIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--audit-log-maxage パラメータを30または適切な日数に設定します。例えば、 +--audit-log-maxage=30 +許容。 + +### 1.2.19 Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate (Automated) + +**Result:** Not Applicable + +**Remediation:** +APIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--audit-log-maxbackup パラメータを10または適切な値に設定します。例えば、 +--audit-log-maxbackup=10 +許容。 + +### 1.2.20 Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate (Automated) + +**Result:** Not Applicable + +**Remediation:** +APIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--audit-log-maxsize パラメータを適切なサイズ(MB単位)に設定します。例えば、100 MBに設定するには、--audit-log-maxsize=100 +許容。 + +### 1.2.21 Ensure that the --request-timeout argument is set as appropriate (Manual) + +**Result:** Not Applicable + +**Remediation:** +APIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、必要に応じて以下のパラメータを適切に設定します。例えば、--request-timeout=300s +許容。 + +### 1.2.22 Ensure that the --service-account-lookup argument is set to true (Automated) + +**Result:** PASS + +**Audit:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep -v grep +``` + +**Expected Result:** '--service-account-lookup' が存在しないか、'--service-account-lookup' が 'true' に等しい + +
+Returned Value: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.23 --service-account-key-file 引数が適切に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**Remediation:** +APIサーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、--service-account-key-file パラメータをサービスアカウントの公開鍵ファイルに設定します。例えば、 +--service-account-key-file=<filename> + +### 1.2.24 --etcd-certfileと--etcd-keyfile引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 +``` + +**期待される結果:** '--etcd-certfile' が存在し、'--etcd-keyfile' が存在する + +
+返された値: + +``` +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver + + +--admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.25 --tls-cert-fileと--tls-private-key-file引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep -A1 'Running kube-apiserver' | tail -n2 +``` + +**期待される結果:** '--tls-cert-file'が存在し、かつ'--tls-private-key-file'が存在する + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259" +``` +
+ +### 1.2.26 --client-ca-file 引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'client-ca-file' +``` + +**期待される結果:** '--client-ca-file' が存在する + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.27 --etcd-cafile 引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'etcd-cafile' +``` + +**期待される結果:** '--etcd-cafile' が存在すること + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 1.2.28 --encryption-provider-config 引数が適切に設定されていることを確認する(手動) + +**結果:** 適用外 + +**修正方法:** +Kubernetes のドキュメントに従って EncryptionConfig ファイルを設定してください。 +その後、コントロールプレーンノード上の API サーバーポッド仕様ファイル /etc/kubernetes/manifests/kube-apiserver.yaml を編集し、 +--encryption-provider-config パラメータをそのファイルのパスに設定してください。 +例: --encryption-provider-config=</path/to/EncryptionConfig/File> +許容 - 暗号化を有効にすると、データが暗号化されるためデータの復旧方法が変更されます。 + +### 1.2.29 暗号化プロバイダーが適切に設定されていることを確認する(手動) + +**結果:** 適用外 + +**修正方法:** +Kubernetes のドキュメントに従って EncryptionConfig ファイルを設定してください。 +このファイルで、aescbc、kms、または secretbox を暗号化プロバイダーとして選択してください。 +許容 - 暗号化を有効にすると、データが暗号化されるためデータの復旧方法が変更されます。 + +### 1.2.30 API サーバーが強力な暗号化暗号スイートのみを使用していることを確認する(手動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-apiserver' | tail -n1 | grep 'tls-cipher-suites' +``` + +**期待される結果:** '--tls-cipher-suites' に 'TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384' からの有効な要素が含まれています + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ + +## 1.3 コントローラーマネージャー + +### 1.3.1 --terminated-pod-gc-threshold 引数が適切に設定されていることを確認する (手動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'terminated-pod-gc-threshold' +``` + +**期待される結果:** '--terminated-pod-gc-threshold' が存在する + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.2 --profiling 引数が false に設定されていることを確認する (自動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'profiling' +``` + +**期待される結果:** '--profiling' が 'false' である + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.3 --use-service-account-credentials 引数が true に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'use-service-account-credentials' +``` + +**期待される結果:** '--use-service-account-credentials' が 'false' ではない + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.4 --service-account-private-key-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'service-account-private-key-file' +``` + +**期待される結果:** '--service-account-private-key-file' が存在する + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.5 --root-ca-file 引数が適切に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-controller-manager' | tail -n1 | grep 'root-ca-file' +``` + +**期待される結果:** '--root-ca-file' が存在する + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --bind-address=127.0.0.1 --cluster-cidr=10.42.0.0/16 --cluster-signing-kube-apiserver-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kube-apiserver-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-client-cert-file=/var/lib/rancher/k3s/server/tls/client-ca.nochain.crt --cluster-signing-kubelet-client-key-file=/var/lib/rancher/k3s/server/tls/client-ca.key --cluster-signing-kubelet-serving-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-kubelet-serving-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --cluster-signing-legacy-unknown-cert-file=/var/lib/rancher/k3s/server/tls/server-ca.nochain.crt --cluster-signing-legacy-unknown-key-file=/var/lib/rancher/k3s/server/tls/server-ca.key --configure-cloud-routes=false --controllers=*,tokencleaner,-service,-route,-cloud-node-lifecycle --kubeconfig=/var/lib/rancher/k3s/server/cred/controller.kubeconfig --profiling=false --root-ca-file=/var/lib/rancher/k3s/server/tls/server-ca.crt --secure-port=10257 --service-account-private-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --terminated-pod-gc-threshold=10 --use-service-account-credentials=true" +``` +
+ +### 1.3.6 RotateKubeletServerCertificate 引数が true に設定されていることを確認する (自動化) + +**結果:** 該当なし + +**修正:** +コントロールプレーンノードの Controller Manager ポッド仕様ファイル /etc/kubernetes/manifests/kube-controller-manager.yaml を編集し、--feature-gates パラメータに RotateKubeletServerCertificate=true を含めます。 +--feature-gates=RotateKubeletServerCertificate=true +該当なし。 + +### 1.3.7 --bind-address 引数が 127.0.0.1 に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/ps -ef | grep containerd | grep -v grep +``` + +**期待される結果:** '--bind-address' が存在する OR '--bind-address' が存在しない + +
+返された値: + +```console +root 2415 2397 0 Apr22 ? 00:06:36 containerd +root 3162 1 0 Apr22 ? 00:00:30 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id d540dd74296e1dc069f7c25dc9e76690d9afb22b404cd87c7f6217889da7aa7e -address /run/k3s/containerd/containerd.sock +root 3215 1 0 Apr22 ? 00:00:29 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id 551b739eb5a7f61465027aaf2848954a29639e8ddf4f78a89fc9f881eb6b1378 -address /run/k3s/containerd/containerd.sock +root 3318 1 0 Apr22 ? 00:00:31 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id dbf0b3aadcbf40fd7dc27f340051fc58979d46c2174963967ae01170c7d88f2d -address /run/k3s/containerd/containerd.sock +root 4135 1 0 Apr22 ? 00:00:41 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id 21e58656877367076224111e51be5d30e8d316dbcb8c05a36a8432eda2d16ccb -address /run/k3s/containerd/containerd.sock +root 4300 1 0 Apr22 ? 00:00:30 /var/lib/rancher/k3s/data/124f36823e5696ab11a8a042537e1edbc6d69919dc7579be22caccc18ccc083f/bin/containerd-shim-runc-v2 -namespace k8s.io -id c1db1ac0969a14f1addcc0295ec09fa9fa4c55edac1acc4701ac18326dcb8a51 -address /run/k3s/containerd/containerd.sock +``` +
+ + +## 1.4 スケジューラー + +### 1.4.1 --profiling 引数が false に設定されていることを確認する (自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-scheduler' | tail -n1 +``` + +**期待される結果:** '--profiling' が 'false' である + +
+返された値: + +```console +``` +
+Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259" +``` + + +### 1.4.2 --bind-addressの引数が127.0.0.1に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s | grep 'Running kube-scheduler' | tail -n1 | grep 'bind-address' +``` + +**期待される結果:** '--bind-address'が'127.0.0.1'に等しい、または'--bind-address'が存在しない + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-scheduler --authentication-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --authorization-kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --bind-address=127.0.0.1 --kubeconfig=/var/lib/rancher/k3s/server/cred/scheduler.kubeconfig --profiling=false --secure-port=10259" +``` +
+ + +## 2 Etcdノードの設定 + +### 2.1 --cert-fileと--key-file引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file' +``` + +**期待される結果:** 'cert-file'が存在し、かつ'key-file'が存在する + +
+返された値: + +```console + cert-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.crt + key-file: /var/lib/rancher/k3s/server/tls/etcd/server-client.key +``` +
+ +### 2.2 --client-cert-auth引数がtrueに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +grep -A 5 'client-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth' +``` + +**期待される結果:** '--client-cert-auth'が存在する、もしくは'client-cert-auth'が'true'に等しい + +
+返された値: + +```console + client-cert-auth: true +``` +
+ +### 2.3 --auto-tls引数がtrueに設定されていないことを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +grep 'auto-tls' /var/lib/rancher/k3s/server/db/etcd/config | true +``` + +**期待される結果:** 'ETCD_AUTO_TLS'が存在しない、もしくは'ETCD_AUTO_TLS'が存在する + +
+返された値: + +```console +error: process ID list syntax error + +Usage: + ps [options] + + Try 'ps --help ' + or 'ps --help ' + for additional help text. + +For more details see ps(1). +cat: /proc//environ: No such file or directory +``` +
+ +### 2.4 --peer-cert-fileと--peer-key-file引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep -E 'cert-file|key-file' +``` + +**期待される結果:** 'cert-file'が存在し、かつ'key-file'が存在する + +
+返された値: + +```console + cert-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt + key-file: /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key +``` +
+ +### 2.5 --peer-client-cert-auth引数がtrueに設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +grep -A 5 'peer-transport-security' /var/lib/rancher/k3s/server/db/etcd/config | grep 'client-cert-auth' +``` + +**期待される結果:** '--client-cert-auth'が存在する、もしくは'client-cert-auth'が'true'に等しい + +
+返された値: + +```console + client-cert-auth: true +``` +
+ +### 2.6 --peer-auto-tls引数がtrueに設定されていないことを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +grep 'peer-auto-tls' /var/lib/rancher/k3s/server/db/etcd/config | true +``` + +**期待される結果:** 'ETCD_PEER_AUTO_TLS'が存在しない、もしくは'ETCD_PEER_AUTO_TLS'が存在する + +
+返された値: + +```console +error: process ID list syntax error + +Usage: + ps [options] + + Try 'ps --help ' + or 'ps --help ' + for additional help text. + +For more details see ps(1). +cat: /proc//environ: No such file or directory +``` +
+ +### 2.7 etcdに対して一意の認証局が使用されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +grep 'trusted-ca-file' /var/lib/rancher/k3s/server/db/etcd/config +``` + +**期待される結果:** 'trusted-ca-file'が存在する + +
+返された値: + +```console + trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/server-ca.crt + trusted-ca-file: /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt +``` +
+ +## 4.1 ワーカーノード設定ファイル + +### 4.1.1 kubeletサービスファイルのパーミッションが600以上の制限に設定されていることを確認する(自動化) + +**結果:** 該当なし + +**改善策:** +各ワーカーノードで以下のコマンドを実行してください(システムのファイル位置に基づいて)。 +例:chmod 600 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf +該当なし - すべての設定はコンテナ実行時に引数として渡されます。 + +### 4.1.2 kubeletサービスファイルの所有権がroot:rootに設定されていることを確認する(自動化) + +**結果:** 該当なし + +**改善策:** +各ワーカーノードで以下のコマンドを実行してください(システムのファイル位置に基づいて)。 +例: +chown root:root /etc/systemd/system/kubelet.service.d/10-kubeadm.conf +該当なし。 +すべての設定はコンテナ実行時に引数として渡されます。 + +### 4.1.3 プロキシkubeconfigファイルが存在する場合、パーミッションが600以上の制限に設定されていることを確認する(手動) + +**結果:** 警告 + +**改善策:** +各ワーカーノードで以下のコマンドを実行してください(システムのファイル位置に基づいて)。 +例: +chmod 600 /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig + +### 4.1.4 プロキシkubeconfigファイルが存在する場合、所有権がroot:rootに設定されていることを確認する(手動) + +**結果:** パス + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/agent/kubeproxy.kubeconfig; fi' +``` + +**期待される結果:** 'root:root'が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 4.1.5 --kubeconfig kubelet.confファイルのパーミッションが600以上の制限に設定されていることを確認する(自動化) + +**結果:** パス + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/server/cred/admin.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/server/cred/admin.kubeconfig; fi' +``` + +**期待される結果:** permissionsが600のパーミッションを持つ、期待される値は600以上の制限 + +
+返された値: + +```console +permissions=600 +``` +
+ +### 4.1.6 --kubeconfig kubelet.confファイルの所有権がroot:rootに設定されていることを確認する(自動化) + +**結果:** パス + +**監査:** +```bash +stat -c %U:%G /var/lib/rancher/k3s/agent/kubelet.kubeconfig +``` + +**期待される結果:** 'root:root'が存在する + +
+返された値: + +```console +root:root +``` +
+ +### 4.1.7 認証局ファイルのパーミッションが600以上の制限に設定されていることを確認する(手動) + +**結果:** パス + +**監査:** +```bash +stat -c permissions=%a /var/lib/rancher/k3s/agent/client-ca.crt +``` + +**期待される結果:** permissionsが600のパーミッションを持つ、期待される値は600以上の制限 + +
+返された値: + +```console +permissions=600 +``` +
+ +### 4.1.8 クライアント認証局ファイルの所有権がroot:rootに設定されていることを確認する(手動) + +**結果:** パス + +**監査:** +```bash +stat -c %U:%G /var/lib/rancher/k3s/agent/client-ca.crt +``` + +**期待される結果:** 'root:root'が'root:root'と等しい + +
+返された値: + +```console +root:root +``` +
+ +### 4.1.9 kubelet --config設定ファイルのパーミッションが600以上の制限に設定されていることを確認する(自動化) + +**結果:** パス + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/agent/kubelet.kubeconfig; then stat -c permissions=%a /var/lib/rancher/k3s/agent/kubelet.kubeconfig; fi' +``` + +**期待される結果:** permissionsが600のパーミッションを持つ、期待される値は600以上の制限 + +
+返された値: + +```console +permissions=600 +``` +
+ +### 4.1.10 kubelet --config設定ファイルの所有権がroot:rootに設定されていることを確認する(自動化) + +**結果:** パス + +**監査:** +```bash +/bin/sh -c 'if test -e /var/lib/rancher/k3s/agent/kubelet.kubeconfig; then stat -c %U:%G /var/lib/rancher/k3s/agent/kubelet.kubeconfig; fi' +``` + +**期待される結果:** 'root:root'が存在する + +
+返された値: + +```console +root:root +``` +
+ +## 4.2 Kubelet + +### 4.2.1 --anonymous-auth 引数が false に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test $(journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "anonymous-auth" | grep -v grep; else echo "--anonymous-auth=false"; fi' +``` + +**期待される結果:** '--anonymous-auth' が 'false' に等しい + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 4.2.2 --authorization-modeの引数がAlwaysAllowに設定されていないことを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test $(journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "authorization-mode" | grep -v grep; else echo "--authorization-mode=Webhook"; fi' +``` + +**期待される結果:** '--authorization-mode'に'AlwaysAllow'が含まれていない + +
+返された値: + +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 4.2.3 --client-ca-file 引数が適切に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +/bin/sh -c 'if test $(journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | wc -l) -gt 0; then journalctl -D /var/log/journal -u k3s | grep "Running kube-apiserver" | tail -n1 | grep "client-ca-file" | grep -v grep; else echo "--client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt"; fi' +``` + +**期待される結果:** '--client-ca-file' が存在する + +
+返された値: +```console +Apr 22 20:12:19 server-0 k3s[2397]: time="2024-04-22T20:12:19Z" level=info msg="Running kube-apiserver --admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml --advertise-address=10.10.10.100 --advertise-port=6443 --allow-privileged=true --anonymous-auth=false --api-audiences=https://kubernetes.default.svc.cluster.local,k3s --audit-log-maxage=30 --audit-log-maxbackup=10 --audit-log-maxsize=100 --audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log --audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml --authorization-mode=Node,RBAC --bind-address=127.0.0.1 --cert-dir=/var/lib/rancher/k3s/server/tls/temporary-certs --client-ca-file=/var/lib/rancher/k3s/server/tls/client-ca.crt --egress-selector-config-file=/var/lib/rancher/k3s/server/etc/egress-selector-config.yaml --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=true --enable-bootstrap-token-auth=true --encryption-provider-config=/var/lib/rancher/k3s/server/cred/encryption-config.json --encryption-provider-config-automatic-reload=true --etcd-cafile=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --etcd-certfile=/var/lib/rancher/k3s/server/tls/etcd/client.crt --etcd-keyfile=/var/lib/rancher/k3s/server/tls/etcd/client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt --kubelet-client-certificate=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt --kubelet-client-key=/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --profiling=false --proxy-client-cert-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt --proxy-client-key-file=/var/lib/rancher/k3s/server/tls/client-auth-proxy.key --requestheader-allowed-names=system:auth-proxy --requestheader-client-ca-file=/var/lib/rancher/k3s/server/tls/request-header-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6444 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/rancher/k3s/server/tls/service.key --service-account-lookup=true --service-account-signing-key-file=/var/lib/rancher/k3s/server/tls/service.current.key --service-cluster-ip-range=10.43.0.0/16 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --tls-private-key-file=/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key" +``` +
+ +### 4.2.4 --read-only-portの引数が0に設定されていることを確認する(手動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s -u k3s-agent | grep 'Running kubelet' | tail -n1 | grep 'read-only-port' +``` + +**期待される結果:** '--read-only-port'が'0'に等しい、または'--read-only-port'が存在しない + +
+返された値: + +```console +Apr 22 20:12:21 server-0 k3s[2397]: time="2024-04-22T20:12:21Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" +``` +
+ +### 4.2.5 --streaming-connection-idle-timeout 引数が0に設定されていないことを確認する(手動) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s -u k3s-agent | grep 'Running kubelet' | tail -n1 | grep 'streaming-connection-idle-timeout' +``` + +**期待される結果:** '--streaming-connection-idle-timeout' が '0' に等しくない、または '--streaming-connection-idle-timeout' が存在しない + +
+返された値: + +```console +Apr 22 20:12:21 server-0 k3s[2397]: time="2024-04-22T20:12:21Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" +``` +
+ +### 4.2.6 --make-iptables-util-chains 引数が true に設定されていることを確認する(自動化) + +**結果:** 合格 + +**監査:** +```bash +journalctl -D /var/log/journal -u k3s -u k3s-agent | grep 'Running kubelet' | tail -n1 | grep 'make-iptables-util-chains' +``` + +**期待される結果:** '--make-iptables-util-chains' が 'true' に等しい、または '--make-iptables-util-chains' が存在しない + +
+返された値: + +```console +Apr 22 20:12:21 server-0 k3s[2397]: time="2024-04-22T20:12:21Z" level=info msg="Running kubelet --address=0.0.0.0 --allowed-unsafe-sysctls=net.ipv4.ip_forward,net.ipv6.conf.all.forwarding --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --client-ca-file=/var/lib/rancher/k3s/agent/client-ca.crt --cloud-provider=external --cluster-dns=10.43.0.10 --cluster-domain=cluster.local --container-runtime-endpoint=unix:///run/k3s/containerd/containerd.sock --containerd=/run/k3s/containerd/containerd.sock --event-qps=0 --eviction-hard=imagefs.available<5%,nodefs.available<5% --eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10% --fail-swap-on=false --feature-gates=CloudDualStackNodeIPs=true --healthz-bind-address=127.0.0.1 --hostname-override=server-0 --kubeconfig=/var/lib/rancher/k3s/agent/kubelet.kubeconfig --make-iptables-util-chains=true --node-ip=10.10.10.100 --node-labels= --pod-infra-container-image=rancher/mirrored-pause:3.6 --pod-manifest-path=/var/lib/rancher/k3s/agent/pod-manifests --protect-kernel-defaults=true --read-only-port=0 --resolv-conf=/run/systemd/resolve/resolv.conf --serialize-image-pulls=false --streaming-connection-idle-timeout=5m --tls-cert-file=/var/lib/rancher/k3s/agent/serving-kubelet.crt --tls-private-key-file=/var/lib/rancher/k3s/agent/serving-kubelet.key" +``` +
+ +### 4.2.7 --hostname-override 引数が設定されていないことを確認する(手動) + +**結果:** 適用外 + +**改善策:** +各ワーカーノードの kubelet サービスファイル /etc/systemd/system/kubelet.service.d/10-kubeadm.conf を編集し、 +KUBELET_SYSTEM_PODS_ARGS 変数から --hostname-override 引数を削除してください。 +システムに応じて、kubelet サービスを再起動します。例えば、 +systemctl daemon-reload +systemctl restart kubelet.service +適用外。 + +### 4.2.8 適切なイベントキャプチャを確保するレベルに eventRecordQPS 引数が設定されていることを確認する(手動) + +**結果:** 合格 + +**監査:** +```bash +/bin/ps -fC containerd +``` + +**期待される結果:** 'eventRecordQPS' が存在する、または 'eventRecordQPS' が存在しない + +
+返された値: + +```console +apiVersion: v1 +clusters: +- cluster: + server: https://127.0.0.1:6443 + certificate-authority: /var/lib/rancher/k3s/agent/server-ca.crt + name: local +contexts: +- context: + cluster: local + namespace: default + user: user + name: Default +current-context: Default +kind: Config +preferences: {} +users: +- name: user + user: + client-certificate: /var/lib/rancher/k3s/agent/client-kubelet.crt + client-key: /var/lib/rancher/k3s/agent/client-kubelet.key +``` +
+ +### 4.2.9 --tls-cert-fileと--tls-private-key-file引数が適切に設定されていることを確認する(手動) + +**結果:** 該当なし + +**修正方法:** +Kubelet設定ファイルを使用している場合、ファイルを編集して`tlsCertFile`をこのKubeletを識別するために使用する証明書ファイルの場所に、`tlsPrivateKeyFile`を対応する秘密鍵ファイルの場所に設定します。 +コマンドライン引数を使用している場合、各ワーカーノードの/etc/systemd/system/kubelet.service.d/10-kubeadm.confにあるkubeletサービスファイルを編集し、KUBELET_CERTIFICATE_ARGS変数に以下のパラメータを設定します。 +--tls-cert-file=<path/to/tls-certificate-file> +--tls-private-key-file=<path/to/tls-key-file> +システムに応じて、kubeletサービスを再起動します。例えば、 +systemctl daemon-reload +systemctl restart kubelet.service +許容 - サービス証明書を生成する際、特定のクラウドプロバイダーに必要なホスト名オーバーライドと併用すると機能が破壊される可能性があります。 + +### 4.2.10 --rotate-certificates引数がfalseに設定されていないことを確認する(手動) + +**結果:** 合格 + +**監査:** +```bash +/bin/ps -fC containerd +``` + +**期待される結果:** 'rotateCertificates'が存在する または 'rotateCertificates'が存在しない + +
+返された値: + +```console +apiVersion: v1 +clusters: +- cluster: + server: https://127.0.0.1:6443 + certificate-authority: /var/lib/rancher/k3s/agent/server-ca.crt + name: local +contexts: +- context: + cluster: local + namespace: default + user: user + name: Default +current-context: Default +kind: Config +preferences: {} +users: +- name: user + user: + client-certificate: /var/lib/rancher/k3s/agent/client-kubelet.crt + client-key: /var/lib/rancher/k3s/agent/client-kubelet.key +``` +
+ +### 4.2.11 RotateKubeletServerCertificate 引数が true に設定されていることを確認する(手動) + +**結果:** 合格 + +**監査:** +```bash +/bin/ps -fC containerd +``` + +**期待される結果:** 'featureGates.RotateKubeletServerCertificate' が存在する、または 'featureGates.RotateKubeletServerCertificate' が存在しない + +
+返された値: + +```console +apiVersion: v1 +clusters: +- cluster: + server: https://127.0.0.1:6443 + certificate-authority: /var/lib/rancher/k3s/agent/server-ca.crt + name: local +contexts: +- context: + cluster: local + namespace: default + user: user + name: Default +current-context: Default +kind: Config +preferences: {} +users: +- name: user + user: + client-certificate: /var/lib/rancher/k3s/agent/client-kubelet.crt + client-key: /var/lib/rancher/k3s/agent/client-kubelet.key +``` +
+ +### 4.2.12 Kubeletが強力な暗号化暗号のみを使用することを確認する(手動) + +**結果:** 警告 + +**修正方法:** +Kubelet設定ファイルを使用している場合、ファイルを編集して`TLSCipherSuites`を +TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 +または、これらの値のサブセットに設定します。 +実行可能引数を使用している場合、各ワーカーノードの/etc/systemd/system/kubelet.service.d/10-kubeadm.confにあるkubeletサービスファイルを編集し、 +--tls-cipher-suites パラメータを以下のように、または、これらの値のサブセットに設定します。 +--tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 +システムに応じて、kubeletサービスを再起動します。例: +systemctl daemon-reload +systemctl restart kubelet.service + +### 4.2.13 ポッドのPIDに制限が設定されていることを確認する(手動) + +**Result:** 警告 + +**Remediation:** +このパラメータの適切なレベルを決定し、--pod-max-pids コマンドラインパラメータまたは PodPidsLimit 設定ファイル設定を介して設定します。 + +## 5.1 RBAC とサービスアカウント + +### 5.1.1 クラスター管理者ロールが必要な場合にのみ使用されていることを確認する (手動) + +**結果:** 警告 + +**修正方法:** +クラスター管理者ロールへのすべてのクラスター役割バインディングを特定します。それらが使用されているかどうか、またはこのロールが必要かどうか、またはより少ない特権のロールを使用できるかどうかを確認します。可能な場合は、最初にユーザーを低特権のロールにバインドし、その後クラスター管理者ロールへのクラスター役割バインディングを削除します: +kubectl delete clusterrolebinding [name] + +### 5.1.2 シークレットへのアクセスを最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、クラスター内のシークレットオブジェクトへの get、list、および watch アクセスを削除します。 + +### 5.1.3 ロールおよびクラスター役割でのワイルドカードの使用を最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、クラスター役割およびロールでのワイルドカードの使用を特定のオブジェクトまたはアクションに置き換えます。 + +### 5.1.4 ポッドの作成アクセスを最小限に抑える (手動) + +**結果:** 警告 + +**修正方法:** +可能な場合は、クラスター内のポッドオブジェクトへの作成アクセスを削除します。 + +### 5.1.5 デフォルトのサービスアカウントが積極的に使用されていないことを確認する (手動) + +**結果:** WARN + +**修正方法:** +Kubernetes ワークロードが Kubernetes API サーバーへの特定のアクセスを必要とする場合は、明示的なサービスアカウントを作成します。各デフォルトのサービスアカウントの設定を変更して、この値を含めます: +automountServiceAccountToken: false + +### 5.1.6 サービスアカウントトークンが必要な場合にのみマウントされることを確認する (手動) + +**結果:** WARN + +**修正方法:** +サービスアカウントトークンをマウントする必要のないポッドおよびサービスアカウントの定義を変更して無効にします。 + +### 5.1.7 system:masters グループの使用を避ける (手動) + +**結果:** WARN + +**修正方法:** +クラスター内のすべてのユーザーから system:masters グループを削除します。 + +### 5.1.8 Kubernetes クラスターでの Bind、Impersonate、および Escalate 権限の使用を制限する (手動) + +**結果:** WARN + +**修正方法:** +可能な場合は、サブジェクトから impersonate、bind、および escalate 権限を削除します。 + +### 5.1.9 永続ボリュームの作成アクセスを最小限に抑える (手動) + +**結果:** WARN + +**修正方法:** +可能な場合は、クラスター内の PersistentVolume オブジェクトへの作成アクセスを削除します。 + +### 5.1.10 ノードのプロキシサブリソースへのアクセスを最小限に抑える (手動) + +**結果:** WARN + +**修正方法:** +可能な場合は、ノードオブジェクトのプロキシサブリソースへのアクセスを削除します。 + +### 5.1.11 証明書署名要求オブジェクトの承認サブリソースへのアクセスを最小限に抑える (手動) + +**結果:** WARN + +**修正方法:** +可能な場合は、証明書署名要求オブジェクトの承認サブリソースへのアクセスを削除します。 + +### 5.1.12 Webhook 設定オブジェクトへのアクセスを最小限に抑える (手動) + +**結果:** WARN + +**修正方法:** +可能な場合は、validatingwebhookconfigurations または mutatingwebhookconfigurations オブジェクトへのアクセスを削除します。 + +### 5.1.13 サービスアカウントトークンの作成アクセスを最小限に抑える (手動) + +**結果:** WARN + +**修正方法:** +可能な場合は、サービスアカウントオブジェクトのトークンサブリソースへのアクセスを削除します。 + +## 5.2 ポッドセキュリティ基準 + +### 5.2.1 クラスターに少なくとも1つのアクティブなポリシー制御メカニズムが存在することを確認する (手動) + +**結果:** WARN + +**修正方法:** +ユーザーワークロードを含むすべてのネームスペースに対して、Pod Security Admission または外部ポリシー制御システムが存在することを確認します。 + +### 5.2.2 特権コンテナの許可を最小限に抑える (手動) + +**結果:** WARN + +**修正方法:** +ユーザーワークロードを持つクラスター内の各ネームスペースにポリシーを追加して、特権コンテナの許可を制限します。 + +### 5.2.3 ホストプロセスIDネームスペースを共有するコンテナの許可を最小限に抑える (自動) + +**結果:** WARN + +**修正方法:** +ユーザーワークロードを持つクラスター内の各ネームスペースにポリシーを追加して、`hostPID` コンテナの許可を制限します。 + +### 5.2.4 ホストIPCネームスペースを共有するコンテナの許可を最小限に抑える (自動) + +**結果:** WARN + +**修正方法:** +ユーザーワークロードを持つクラスター内の各ネームスペースにポリシーを追加して、`hostIPC` コンテナの許可を制限します。 + +### 5.2.5 ホストネットワークネームスペースを共有するコンテナの許可を最小限に抑える (自動) + +**結果:** WARN + +**修正方法:** +ユーザーワークロードを持つクラスター内の各ネームスペースにポリシーを追加して、`hostNetwork` コンテナの許可を制限します。 + +### 5.2.6 allowPrivilegeEscalation を持つコンテナの許可を最小限に抑える (自動) + +**結果:** WARN + +**修正方法:** +ユーザーワークロードを持つクラスター内の各ネームスペースにポリシーを追加して、`.spec.allowPrivilegeEscalation` が `true` に設定されているコンテナの許可を制限します。 + +### 5.2.7 ルートコンテナの許可を最小限に抑える (自動) + +**結果:** WARN + +**修正方法:** +クラスター内の各ネームスペースにポリシーを作成し、`MustRunAsNonRoot` または UID の範囲に 0 を含まない `MustRunAs` が設定されていることを確認します。 + +### 5.2.8 NET_RAW 権限を持つコンテナの許可を最小限に抑える (自動) + +**結果:** WARN + +**修正方法:** +ユーザーワークロードを持つクラスター内の各ネームスペースにポリシーを追加して、`NET_RAW` 権限を持つコンテナの許可を制限します。 + +### 5.2.9 追加の権限を持つコンテナの許可を最小限に抑える (自動) + +**結果:** WARN + +**修正方法:** +クラスターのポリシーに `allowedCapabilities` が存在しないことを確認するか、空の配列に設定されていることを確認します。 + +### 5.2.10 権限が割り当てられたコンテナの許可を最小限に抑える (手動) + +**結果:** WARN + +**修正方法:** +クラスター上で実行されているアプリケーションの権限の使用を確認します。ネームスペースに Linux 権限を必要としないアプリケーションが含まれている場合、すべての権限を削除しないコンテナの許可を禁止する PSP を追加することを検討します。 + +### 5.2.11 Windows HostProcess コンテナの許可を最小限に抑える (手動) + +**結果:** WARN + +**修正方法:** +ユーザーワークロードを持つクラスター内の各ネームスペースにポリシーを追加して、`.securityContext.windowsOptions.hostProcess` が `true` に設定されているコンテナの許可を制限します。 + +### 5.2.12 HostPath ボリュームの許可を最小限に抑える (手動) + +**結果:** WARN + +**修正方法:** +ユーザーワークロードを持つクラスター内の各ネームスペースにポリシーを追加して、`hostPath` ボリュームを持つコンテナの許可を制限します。 + +### 5.2.13 HostPorts を使用するコンテナの許可を最小限に抑える (手動) + +**結果:** WARN + +**修正方法:** +ユーザーワークロードを持つクラスター内の各ネームスペースにポリシーを追加して、`hostPort` セクションを使用するコンテナの許可を制限します。 + +## 5.3 ネットワークポリシーと CNI + +### 5.3.1 使用中の CNI がネットワークポリシーをサポートしていることを確認する (手動) + +**結果:** WARN + +**修正方法:** +使用中の CNI プラグインがネットワークポリシーをサポートしていない場合は、別のプラグインの使用を検討するか、Kubernetes クラスター内のトラフィックを制限するための代替メカニズムを見つけることを検討します。 + +### 5.3.2 すべてのネームスペースにネットワークポリシーが定義されていることを確認する (手動) + +**結果:** WARN + +**修正方法:** +ドキュメントに従い、必要に応じて NetworkPolicy オブジェクトを作成します。 + +## 5.4 シークレット管理 + +### 5.4.1 環境変数としてのシークレットよりもファイルとしてのシークレットを使用することを推奨する (手動) + +**結果:** WARN + +**修正方法:** +可能であれば、アプリケーションコードを再記述して、環境変数ではなくマウントされたシークレットファイルからシークレットを読み取るようにします。 + +### 5.4.2 外部シークレットストレージを検討する (手動) + +**結果:** WARN + +**修正方法:** +クラウドプロバイダーまたはサードパーティのシークレット管理ソリューションが提供するシークレット管理オプションを参照します。 + +## 5.5 拡張可能なアドミッションコントロール + +### 5.5.1 ImagePolicyWebhook アドミッションコントローラーを使用してイメージの出所を設定する (手動) + +**結果:** WARN + +**修正方法:** +Kubernetes のドキュメントに従い、イメージの出所を設定します。 + +## 5.7 一般的なポリシー + +### 5.7.1 ネームスペースを使用してリソース間に管理境界を作成する (手動) + +**結果:** WARN + +**修正方法:** +ドキュメントに従い、必要に応じてデプロイメント内のオブジェクトのためにネームスペースを作成します。 + +### 5.7.2 Pod 定義で seccomp プロファイルが docker/default に設定されていることを確認する (手動) + +**結果:** WARN + +**修正方法:** +Pod 定義で docker/default seccomp プロファイルを有効にするために `securityContext` を使用します。以下はその例です: + securityContext: + seccompProfile: + type: RuntimeDefault + +### 5.7.3 Pod およびコンテナに SecurityContext を適用する (手動) + +**結果:** WARN + +**修正方法:** +Kubernetes のドキュメントに従い、Pod に SecurityContext を適用します。推奨される SecurityContext のリストについては、CIS Security Benchmark for Docker Containers を参照してください。 + +### 5.7.4 デフォルトのネームスペースを使用しない (手動) + +**結果:** WARN + +**修正方法:** +Kubernetes リソースの適切な分離を可能にするためにネームスペースを作成し、すべての新しいリソースが特定のネームスペースに作成されることを確認します。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/storage.md b/i18n/ja/docusaurus-plugin-content-docs/current/storage.md new file mode 100644 index 000000000..48898c05d --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/storage.md @@ -0,0 +1,167 @@ +--- +title: "ボリュームとストレージ" +--- + +データを保持する必要があるアプリケーションをデプロイする際には、永続ストレージを作成する必要があります。永続ストレージを使用すると、アプリケーションのデータをアプリケーションを実行しているポッドの外部に保存できます。このストレージの方法により、アプリケーションのポッドが失敗してもアプリケーションデータを保持できます。 + +永続ボリューム(PV)はKubernetesクラスター内のストレージの一部であり、永続ボリュームクレーム(PVC)はストレージの要求です。PVとPVCの動作の詳細については、公式Kubernetesドキュメントの[ストレージ](https://kubernetes.io/docs/concepts/storage/volumes/)を参照してください。 + +このページでは、ローカルストレージプロバイダーまたは[Longhorn](#setting-up-longhorn)を使用して永続ストレージを設定する方法について説明します。 + +## K3sストレージの違いは何ですか? + +K3sは、いくつかのオプションのボリュームプラグインとすべての組み込み(「インツリー」とも呼ばれる)クラウドプロバイダーを削除します。これにより、バイナリサイズを小さくし、多くのK3sの使用ケースで利用できない可能性のあるサードパーティのクラウドやデータセンター技術およびサービスへの依存を避けることができます。これらの削除は、Kubernetesのコア機能や適合性に影響を与えないため可能です。 + +以下のボリュームプラグインはK3sから削除されました: + +* cephfs +* fc +* flocker +* git_repo +* glusterfs +* portworx +* quobyte +* rbd +* storageos + +両方のコンポーネントには、K3sで使用できるアウトオブツリーの代替手段があります:Kubernetesの[コンテナストレージインターフェース(CSI)](https://github.com/container-storage-interface/spec/blob/master/spec.md)および[クラウドプロバイダーインターフェース(CPI)](https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/)です。 + +Kubernetesのメンテナは、インツリーボリュームプラグインをCSIドライバーに積極的に移行しています。この移行に関する詳細については、[こちら](https://kubernetes.io/blog/2021/12/10/storage-in-tree-to-csi-migration-status-update/)を参照してください。 + +## ローカルストレージプロバイダーの設定 +K3sにはRancherのLocal Path Provisionerが付属しており、これにより、対応するノード上のローカルストレージを使用して永続ボリュームクレームをすぐに作成する機能が有効になります。以下に簡単な例を示します。詳細については、公式ドキュメントを[こちら](https://github.com/rancher/local-path-provisioner/blob/master/README.md#usage)で参照してください。 + +hostPathをバックにした永続ボリュームクレームとそれを利用するポッドを作成します: + +### pvc.yaml + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: local-path-pvc + namespace: default +spec: + accessModes: + - ReadWriteOnce + storageClassName: local-path + resources: + requests: + storage: 2Gi +``` + +### pod.yaml + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: volume-test + namespace: default +spec: + containers: + - name: volume-test + image: nginx:stable-alpine + imagePullPolicy: IfNotPresent + volumeMounts: + - name: volv + mountPath: /data + ports: + - containerPort: 80 + volumes: + - name: volv + persistentVolumeClaim: + claimName: local-path-pvc +``` + +yamlを適用します: + +```bash +kubectl create -f pvc.yaml +kubectl create -f pod.yaml +``` + +PVとPVCが作成されたことを確認します: + +```bash +kubectl get pv +kubectl get pvc +``` + +ステータスはそれぞれBoundである必要があります。 + +## Longhornの設定 + +:::warning + +LonghornはARM32をサポートしていません。 + +::: + +K3sは、Kubernetes用のオープンソースの分散ブロックストレージシステムである[Longhorn](https://github.com/longhorn/longhorn)をサポートしています。 + +以下に簡単な例を示します。詳細については、[公式ドキュメント](https://longhorn.io/docs/latest/)を参照してください。 + +longhorn.yamlを適用してLonghornをインストールします: + +```bash +kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.6.0/deploy/longhorn.yaml +``` + +Longhornは`longhorn-system`という名前空間にインストールされます。 + +PVCとポッドを作成するためにyamlを適用します: + +```bash +kubectl create -f pvc.yaml +kubectl create -f pod.yaml +``` + +### pvc.yaml + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: longhorn-volv-pvc +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 2Gi +``` + +### pod.yaml + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: volume-test + namespace: default +spec: + containers: + - name: volume-test + image: nginx:stable-alpine + imagePullPolicy: IfNotPresent + volumeMounts: + - name: volv + mountPath: /data + ports: + - containerPort: 80 + volumes: + - name: volv + persistentVolumeClaim: + claimName: longhorn-volv-pvc +``` + +PVとPVCが作成されたことを確認します: + +```bash +kubectl get pv +kubectl get pvc +``` + +ステータスはそれぞれBoundである必要があります。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/upgrades/automated.md b/i18n/ja/docusaurus-plugin-content-docs/current/upgrades/automated.md new file mode 100644 index 000000000..3feb4d758 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/upgrades/automated.md @@ -0,0 +1,164 @@ +--- +title: "自動アップグレード" +--- + +### 概要 + +Rancherのsystem-upgrade-controllerを使用してK3sクラスターのアップグレードを管理できます。これはKubernetesネイティブのクラスターアップグレードアプローチです。これには、[カスタムリソース定義(CRD)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#custom-resources)、`plan`、および[コントローラー](https://kubernetes.io/docs/concepts/architecture/controller/)が含まれます。 + +プランはアップグレードポリシーと要件を定義します。また、[ラベルセレクター](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/)を使用して、どのノードをアップグレードするかを定義します。K3sクラスターのアップグレードに適したデフォルト設定のプランについては、以下を参照してください。より高度なプラン設定オプションについては、[CRD](https://github.com/rancher/system-upgrade-controller/blob/master/pkg/apis/upgrade.cattle.io/v1/types.go)を確認してください。 + +コントローラーはプランを監視し、アップグレード[ジョブ](https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/)を実行するノードを選択してアップグレードをスケジュールします。ジョブが正常に完了すると、コントローラーは実行されたノードにラベルを付けます。 + +:::note +起動されるアップグレードジョブは高い特権を持つ必要があります。以下の設定が必要です: +- ホストの`IPC`、`NET`、および`PID`ネームスペース +- `CAP_SYS_BOOT`キャパビリティ +- 読み書き権限を持つホストルートが`/host`にマウントされていること + +::: + +この方法でアップグレードを自動化するには、以下の手順を実行する必要があります: + +1. クラスターにsystem-upgrade-controllerをインストールする +1. プランを設定する + +:::warning +K3sクラスターがRancherによって管理されている場合、アップグレードの管理にはRancher UIを使用する必要があります。 +- K3sクラスターがRancherにインポートされた場合、Rancherはsystem-upgrade-controllerのデプロイメントとプランを管理します。このページの手順に従わないでください。 +- K3sクラスターがRancherによってプロビジョニングされた場合、Rancherはバージョンアップグレードを管理するためにシステムエージェントを使用します。このページの手順に従わないでください。 +- K3sクラスターがRancherによって管理されていない場合、以下の手順に従ってください。 + +::: + +system-upgrade-controllerの設計とアーキテクチャ、またはK3sとの統合の詳細については、以下のGitリポジトリを参照してください: + +- [system-upgrade-controller](https://github.com/rancher/system-upgrade-controller) +- [k3s-upgrade](https://github.com/k3s-io/k3s-upgrade) + +:::tip +K3sの新しいバージョンにアップグレードする際には、[Kubernetesバージョンスキューポリシー](https://kubernetes.io/docs/setup/release/version-skew-policy/)が適用されます。アップグレード時に中間のマイナーバージョンをスキップしないようにプランを設定してください。system-upgrade-controller自体は、Kubernetesバージョンのサポートされていない変更を防ぎません。 +::: + +### system-upgrade-controllerのインストール + +system-upgrade-controllerはクラスターにデプロイメントとしてインストールできます。デプロイメントにはサービスアカウント、clusterRoleBinding、およびconfigmapが必要です。これらのコンポーネントをインストールするには、以下のコマンドを実行します: + +```bash +kubectl apply -f https://github.com/rancher/system-upgrade-controller/releases/latest/download/system-upgrade-controller.yaml +``` +コントローラーは前述のconfigmapを介して設定およびカスタマイズできますが、変更を適用するにはコントローラーを再デプロイする必要があります。 + +プランを適用できるようにするためには、system-upgrade-controller CRDをデプロイする必要があります: + +```bash +kubectl apply -f https://github.com/rancher/system-upgrade-controller/releases/latest/download/crd.yaml +``` + +### プランの設定 +少なくとも2つのプランを作成することをお勧めします:サーバー(コントロールプレーン)ノードをアップグレードするプランと、エージェントノードをアップグレードするプランです。必要に応じて追加のプランを作成し、ノード全体のアップグレードの展開を制御できます。プランが作成されると、コントローラーはそれを検出し、クラスターのアップグレードを開始します。 + +以下の2つの例プランは、クラスターをK3s v1.24.6+k3s1にアップグレードします: + +```yaml +# サーバープラン +apiVersion: upgrade.cattle.io/v1 +kind: Plan +metadata: + name: server-plan + namespace: system-upgrade +spec: + concurrency: 1 + cordon: true + nodeSelector: + matchExpressions: + - key: node-role.kubernetes.io/control-plane + operator: In + values: + - "true" + serviceAccountName: system-upgrade + upgrade: + image: rancher/k3s-upgrade + version: v1.24.6+k3s1 +--- +# エージェントプラン +apiVersion: upgrade.cattle.io/v1 +kind: Plan +metadata: + name: agent-plan + namespace: system-upgrade +spec: + concurrency: 1 + cordon: true + nodeSelector: + matchExpressions: + - key: node-role.kubernetes.io/control-plane + operator: DoesNotExist + prepare: + args: + - prepare + - server-plan + image: rancher/k3s-upgrade + serviceAccountName: system-upgrade + upgrade: + image: rancher/k3s-upgrade + version: v1.24.6+k3s1 +``` + +これらのプランに関して重要な点をいくつか挙げます: + +1) プランはコントローラーがデプロイされたのと同じネームスペースに作成する必要があります。 + +2) `concurrency`フィールドは、同時にアップグレードできるノードの数を示します。 + +3) server-planは`node-role.kubernetes.io/control-plane`ラベルを持つノードを選択するラベルセレクターを指定してサーバーノードをターゲットにします。agent-planはそのラベルを持たないノードを選択するラベルセレクターを指定してエージェントノードをターゲットにします。 + +4) agent-planの`prepare`ステップは、そのプランのアップグレードジョブがserver-planの完了を待ってから実行されるようにします。 + +5) 両方のプランには`version`フィールドがv1.24.6+k3s1に設定されています。代わりに`version`フィールドを省略し、`channel`フィールドをK3sのリリースに解決されるURLに設定することもできます。これにより、コントローラーはそのURLを監視し、新しいリリースに解決されるたびにクラスターをアップグレードします。これは[リリースチャンネル](manual.md#release-channels)とよく連携します。したがって、次のチャンネルでプランを設定して、クラスターが常に最新の安定版K3sリリースに自動的にアップグレードされるようにすることができます: +```yaml +apiVersion: upgrade.cattle.io/v1 +kind: Plan +... +spec: + ... + channel: https://update.k3s.io/v1-release/channels/stable + +``` + +述べたように、プランが作成されるとコントローラーがそれを検出し、アップグレードが開始されます。プランを更新すると、コントローラーはプランを再評価し、別のアップグレードが必要かどうかを判断します。 + +kubectlを使用してプランとジョブを表示することで、アップグレードの進行状況を監視できます: +```bash +kubectl -n system-upgrade get plans -o yaml +kubectl -n system-upgrade get jobs -o yaml +``` + +## ダウングレード防止 + +:::info バージョンゲート +2023年7月のリリース([v1.27.4+k3s1](https://github.com/k3s-io/k3s-upgrade/releases/tag/v1.27.4%2Bk3s1)、[v1.26.7+k3s1](https://github.com/k3s-io/k3s-upgrade/releases/tag/v1.26.7%2Bk3s1)、[v1.25.12+k3s1](https://github.com/k3s-io/k3s-upgrade/releases/tag/v1.25.12%2Bk3s1)、[v1.24.16+k3s1](https://github.com/k3s-io/k3s-upgrade/releases/tag/v1.24.16%2Bk3s1))から適用されます。 +::: + +Kubernetesはコントロールプレーンコンポーネントのダウングレードをサポートしていません。アップグレードプランで使用されるk3s-upgradeイメージはK3sのダウングレードを拒否し、プランが失敗し、ノードがコードンされたままになります。 + +以下は、失敗したアップグレードポッドとコードンされたノードを示す例です: + +```console +ubuntu@user:~$ kubectl get pods -n system-upgrade +NAME READY STATUS RESTARTS AGE +apply-k3s-server-on-ip-172-31-0-16-with-7af95590a5af8e8c3-2cdc6 0/1 Error 0 9m25s +apply-k3s-server-on-ip-172-31-10-23-with-7af95590a5af8e8c-9xvwg 0/1 Error 0 14m +apply-k3s-server-on-ip-172-31-13-213-with-7af95590a5af8e8-8j72v 0/1 Error 0 18m +system-upgrade-controller-7c4b84d5d9-kkzr6 1/1 Running 0 20m +ubuntu@user:~$ kubectl get nodes +NAME STATUS ROLES AGE VERSION +ip-172-31-0-16 Ready,SchedulingDisabled control-plane,etcd,master 19h v1.27.4+k3s1 +ip-172-31-10-23 Ready,SchedulingDisabled control-plane,etcd,master 19h v1.27.4+k3s1 +ip-172-31-13-213 Ready,SchedulingDisabled control-plane,etcd,master 19h v1.27.4+k3s1 +ip-172-31-2-13 Ready 19h v1.27.4+k3s1 +``` +コードンされたノードをサービスに戻すには、次のいずれかの方法を使用します: +* プランのバージョンまたはチャンネルを変更して、クラスターで現在実行されているものと同じかそれ以上のリリースをターゲットにし、プランが成功するようにします。 +* プランを削除し、ノードを手動でアンコードンします。 + `kubectl get plan -n system-upgrade`を使用してプラン名を見つけ、`kubectl delete plan -n system-upgrade PLAN_NAME`を使用してプランを削除します。プランが削除されたら、`kubectl uncordon NODE_NAME`を使用して各ノードをアンコードンします。 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/upgrades/killall.md b/i18n/ja/docusaurus-plugin-content-docs/current/upgrades/killall.md new file mode 100644 index 000000000..21536ea1f --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/upgrades/killall.md @@ -0,0 +1,73 @@ +--- +title: K3sの停止 +--- + + +アップグレード中の高可用性を確保するために、K3sサービスが停止してもK3sコンテナは引き続き実行されます。 + + +## K3sサービス + +K3sの停止と再起動は、systemdおよびOpenRCのインストールスクリプトによってサポートされています。 + + + + +サーバーを停止するには: +```sh +sudo systemctl stop k3s +``` + +サーバーを再起動するには: +```sh +sudo systemctl start k3s +``` + +エージェントを停止するには: +```sh +sudo systemctl stop k3s-agent +``` + +エージェントを再起動するには: +```sh +sudo systemctl start k3s-agent +``` + + + + +サーバーを停止するには: +```sh +sudo rc-service k3s stop +``` + +サーバーを再起動するには: +```sh +sudo rc-service k3s restart +``` + +エージェントを停止するには: +```sh +sudo rc-service k3s-agent stop +``` + +エージェントを再起動するには: +```sh +sudo rc-service k3s-agent restart +``` + + + + + +## Killallスクリプト + +すべてのK3sコンテナを停止し、containerdの状態をリセットするには、`k3s-killall.sh`スクリプトを使用できます。 + +killallスクリプトは、コンテナ、K3sディレクトリ、およびネットワーキングコンポーネントをクリーンアップし、関連するすべてのルールを持つiptablesチェーンを削除します。クラスターのデータは削除されません。 + +サーバーノードからkillallスクリプトを実行するには、次のコマンドを実行します: + +```bash +/usr/local/bin/k3s-killall.sh +``` \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/upgrades/manual.md b/i18n/ja/docusaurus-plugin-content-docs/current/upgrades/manual.md new file mode 100644 index 000000000..8c30f59bb --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/upgrades/manual.md @@ -0,0 +1,73 @@ +--- +title: "手動アップグレード" +--- + +K3sをアップグレードするには、インストールスクリプトを使用するか、希望するバージョンのバイナリを手動でインストールすることができます。 + +:::note +アップグレードする際は、まずサーバーノードを1つずつアップグレードし、その後にエージェントノードをアップグレードしてください。 +::: + +### リリースチャンネル + +インストールスクリプトを使用したアップグレードや、[自動アップグレード](automated.md)機能を使用したアップグレードは、異なるリリースチャンネルに結びつけることができます。以下のチャンネルが利用可能です: + +| チャンネル | 説明 | +|----------------|---------| +| stable | (デフォルト) Stableは本番環境に推奨されます。これらのリリースはコミュニティによるハードニング期間を経ています。 | +| latest | Latestは最新の機能を試すのに推奨されます。これらのリリースはまだコミュニティによるハードニング期間を経ていません。 | +| v1.26 (例) | 各Kubernetesのマイナーバージョンに結びついたリリースチャンネルがあり、サポート終了バージョンも含まれます。これらのチャンネルは最新のパッチを選択しますが、必ずしも安定版リリースではありません。 | + +チャンネルの包括的かつ最新のリストについては、[k3sチャンネルサービスAPI](https://update.k3s.io/v1-release/channels)を参照してください。チャンネルの動作に関する技術的な詳細については、[channelserverプロジェクト](https://github.com/rancher/channelserver)を参照してください。 + +:::tip +K3sの新しいバージョンにアップグレードする際には、[Kubernetesバージョンスキューポリシー](https://kubernetes.io/docs/setup/release/version-skew-policy/)が適用されます。アップグレード時に中間のマイナーバージョンをスキップしないように計画を立ててください。system-upgrade-controller自体は、Kubernetesバージョンのサポートされていない変更を防ぐことはありません。 +::: + +### インストールスクリプトを使用してK3sをアップグレードする + +古いバージョンのK3sをアップグレードするには、インストールスクリプトを再実行し、最初にインストールスクリプトを実行したときと同じ構成オプションを使用します。 + +:::info Note +`INSTALL_K3S_EXEC`変数、`K3S_`変数、および末尾のシェル引数はすべて、インストールスクリプトによってsystemdユニットおよび環境ファイルを生成するために使用されます。 +最初にインストールスクリプトを実行したときに設定を行った場合でも、再実行時に再設定しないと、元の値は失われます。 + +[構成ファイル](../installation/configuration.md#configuration-file)の内容はインストールスクリプトによって管理されません。 +インストールスクリプトから独立した構成を希望する場合は、環境変数や引数をインストールスクリプトに渡すのではなく、構成ファイルを使用するべきです。 +::: + +インストールスクリプトを実行すると、以下のことが行われます: + +1. 新しいk3sバイナリをダウンロード +2. インストールスクリプトに渡された引数を反映するようにsystemdユニットまたはopenrc initスクリプトを更新 +3. k3sサービスを再起動 + +例えば、現在の安定版リリースにアップグレードするには: + +```sh +curl -sfL https://get.k3s.io | sh -s - +``` + +特定のチャンネル(例えばlatest)の新しいバージョンにアップグレードしたい場合は、チャンネルを指定できます: +```sh +curl -sfL https://get.k3s.io | INSTALL_K3S_CHANNEL=latest sh -s - +``` + +特定のバージョンにアップグレードしたい場合は、以下のコマンドを実行できます: + +```sh +curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=vX.Y.Z+k3s1 sh -s - +``` + +:::tip +新しいバージョンのk3sをダウンロードするだけで起動しない場合は、`INSTALL_K3S_SKIP_START=true`環境変数を使用できます。 +::: + +### バイナリを使用してK3sをアップグレードする + +K3sを手動でアップグレードするには、希望するバージョンのK3sバイナリをダウンロードし、既存のバイナリを新しいものに置き換えます。 + +1. [リリース](https://github.com/k3s-io/k3s/releases)から希望するバージョンのK3sバイナリをダウンロード +2. ダウンロードしたバイナリを`/usr/local/bin/k3s`(または希望する場所)にコピー +3. 古いk3sバイナリを停止 +4. 新しいk3sバイナリを起動 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/upgrades/upgrades.md b/i18n/ja/docusaurus-plugin-content-docs/current/upgrades/upgrades.md new file mode 100644 index 000000000..dd901b787 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/upgrades/upgrades.md @@ -0,0 +1,21 @@ +--- +title: "アップグレード" +--- + +### K3s クラスターのアップグレード + +[手動アップグレード](manual.md)では、クラスターを手動でアップグレードするためのいくつかの技術について説明しています。また、[Terraform](https://www.terraform.io/)のようなサードパーティのInfrastructure-as-Codeツールを使用してアップグレードするための基礎としても使用できます。 + +[自動アップグレード](automated.md)では、Rancherの[system-upgrade-controller](https://github.com/rancher/system-upgrade-controller)を使用してKubernetesネイティブの自動アップグレードを実行する方法について説明しています。 + +### バージョン固有の注意点 + +- **Traefik:** Traefikが無効化されていない場合、K3sバージョン1.20以前ではTraefik v1がインストールされ、K3sバージョン1.21以降ではv1が存在しない場合にTraefik v2がインストールされます。古いTraefik v1からTraefik v2にアップグレードするには、[Traefikのドキュメント](https://doc.traefik.io/traefik/migration/v1-to-v2/)を参照し、[移行ツール](https://github.com/traefik/traefik-migration-tool)を使用してください。 + +- **K3sブートストラップデータ:** 外部SQLデータストアを使用したHA構成でK3sを使用している場合、サーバー(コントロールプレーン)ノードが`--token` CLIフラグを使用して起動されていないと、トークンを指定せずに追加のK3sサーバーをクラスターに追加することができなくなります。このトークンのコピーを保持しておくことが重要です。バックアップから復元する際に必要です。以前は、外部SQLデータストアを使用する場合、K3sはトークンの使用を強制していませんでした。 + - 影響を受けるバージョンは <= v1.19.12+k3s1, v1.20.8+k3s1, v1.21.2+k3s1; 修正されたバージョンは v1.19.13+k3s1, v1.20.9+k3s1, v1.21.3+k3s1 です。 + + - クラスターに既に参加している任意のサーバーからトークン値を取得するには、以下のコマンドを実行します: +```bash +cat /var/lib/rancher/k3s/server/token +``` \ No newline at end of file diff --git a/i18n/ja/docusaurus-theme-classic/navbar.json b/i18n/ja/docusaurus-theme-classic/navbar.json new file mode 100644 index 000000000..1f4323a20 --- /dev/null +++ b/i18n/ja/docusaurus-theme-classic/navbar.json @@ -0,0 +1,14 @@ +{ + "item.label.Docs": { + "message": "ドキュメント", + "description": "Navbar item with label Docs" + }, + "item.label.GitHub": { + "message": "GitHub", + "description": "Navbar item with label GitHub" + }, + "logo.alt": { + "message": "logo", + "description": "The alt text of navbar logo" + } +}