Learn クラスタ要件
-
- Version
- 1.2.0
-
- Author
- Exastro Developer
-
- Release date
- 2022/03/18
-
- Last modified
- 2023/05/24
はじめに
本書ではデプロイツールを用いて構築されたKuberneteクラスタ上へExastro EPOCH(以下EPOCH)をインストールする場合に、クラスタに求められる要件を扱います。これには以下の内容が含まれます。
本書の対象読者
kubeadm、kops、kubesprayその他のKubernetesデプロイツールを用いて、クラウドもしくはオンプレミス上のデータセンタにデプロイされたKubernetes上へEPOCHをインストールする方が対象です。
クラウドプロパイダーが提供するマネージドKubernetes(Amazon EKS, Azure Kubernetes Service, Google Kubernetes Engineなど)を利用する場合、別途Learn一覧からそれらのサービス向けのドキュメントを参照してください。
構成イメージ
下記はKubernetesクラスタへEPOCHをインストールした場合の構成イメージです。 青の矢印はEPOCHのインストール作業を表しています。EPOCHのインストールではマニフェストファイルをクラスタに適用し、各種リソースを作成します。 その他の矢印の詳細については本書「ネットワーク構成の要件」項で説明します。
凡例 | 意味 |
---|---|
EPOCHのインストールを実行するクラスター管理者 | |
EPOCHのUIにアクセスする利用者 | |
EPOCHのインストール作業 | |
EPOCHの利用者からGUIへのアクセス | |
Github から送出されたWebhook |
Kubernetesクラスタの要件
kubectl
のインストールと権限設定
kubectl
はKubernetesクラスターを操作するためのコマンドラインツールです。
EPOCHのインストールやその後の管理作業に利用されます。したがって、Kubernetesクラスタにアクセス可能なマシンにkubectl
がインストールされている必要があります。
kubectl
のインストール
コマンドの有無を事前に確認する
既にkubectl
がインストールされている場合、インストール作業を実行する必要はありません。下記のコマンドが成功する場合、コマンドがインストール済みであることが確認できます。
kubectl
のインストール確認コマンド
kubectl version --client --short
出力例(インストール済みの場合)
Client Version: v1.24.11
インストールを実行する
下記はLinux環境にkubectl v1.24
をインストールする場合のコマンドです。
Linux環境以外の場合においては、Kubernetes公式のインストール手順を参考に、kubectl
をインストールしてください。
コマンド(Linuxにkubectl v1.24
をインストールする場合)
# バイナリファイルのダウンロード
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.24.0/bin/linux/amd64/kubectl
# バイナリへの実行アクセス許可
chmod +x ./kubectl
# バイナリを PATH のフォルダにコピーする
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl
とKubernetesクラスタのバージョンを確認する
Kubernetesクラスタと、ここでインストールしたkubectl
はマイナーバージョンの差が1以内である必要があります。
たとえばKubernetesクラスタがv1.24である場合、kubectl
は1.23,1.24,1,25のいずれかでなければなりません。
※2023年5月現在、EPOCHが対応しているKubernetesクラスターバージョンは1.21 ~ 1.24です。
コマンド
kubectl version --short
出力例(バージョンが共にv1.21である場合)
Client Version: v1.21.1
Server Version: v1.21.8
権限設定
EPOCHのインストールを実行するとき、クラスタ管理者は複数のkubectl
コマンドを実行する必要があります。
その際kubectl
コマンドが利用するユーザーには、デフォルトのClusterRoleであるcluster-admin
(もしくは同等の権限を持つClusterRoleリソース)が割り当てられている必要があります。
下記のコマンドでkubectl
コマンドを利用するユーザの実行権限を確認することができます。
コマンド
kubectl auth can-i --list
下記のような権限設定が表示に含まれている場合、EPOCHのインストールに必要な権限を有していることが確認できます。
出力例(必要な権限を有している場合)
Resources Non-Resource URLs Resource Names Verbs
*.* [] [] [*]
[*] [] [*]
適切な権限がない場合、RBAC認可についてのKubernetes公式のドキュメントを参照し、kubectl
やユーザ権限の必要な設定を行ってください。
cluster-admin
ClusterRoleは全Namespaceを含むクラスタ内の全てのリソースを管理可能な権限です。扱いには十分な注意を払ってください。
構成ノードの要件
サーバリソース
Kubernetesクラスタに要求されるサーバリソースについては、 インストール手順より、「要求スペック」項を参照してください。
CPUアーキテクチャ
2023年5月現在、EPOCHを構成するコンテナイメージが対応しているCPUアーキテクチャはamd64
のみであり、マルチCPUアーキテクチャには未対応です。
したがって、Kubernetes構成ノードのCPUアーキテクチャはamd64
である必要があります。
下記のコマンドを実行すると、ノード毎のCPUアーキテクチャが表示されます。表示が全てamd64
であることを確認してください。
コマンド
kubectl get nodes -o=jsonpath='{range .items[*]}{.metadata.name}{": "}{.status.nodeInfo.architecture}{"\n"}{end}'
出力例(クラスタ構成ノードが2台の場合)
sample-k8s-master: amd64
sample-k8s-worker: amd64
ネットワーク構成の要件
下記はKubernetesクラスタへEPOCHをインストールした場合の構成イメージです。
凡例 | 意味 |
---|---|
EPOCHのインストールを実行するクラスター管理者 | |
EPOCHのUIにアクセスする利用者 | |
EPOCHのインストール作業 | |
EPOCHの利用者からGUIへのアクセス | |
Github から送出されたWebhook |
EPOCHのUIへのアクセスに用いるNodePort
EPOCHはArgoCD、Exastro ITA、TEKTONなどのソフトウェアをPodとして内包しており、これらのUIへのアクセスにはKubernetesのNodePortを利用します。(図内茶色の矢印を参照)また、EPOCHの認証プロセスにはKeycloakを利用しており、同様にNodePortを利用してアクセスします。
したがって、インストール後にEPOCHを利用するためには、利用者のブラウザからKubernetesクラスタのNodePortへアクセスできるネットワーク環境が必要となります。 下記のNodePortがKubernetesクラスタで利用可能であり、利用者からアクセス可能であることを確認してください。
30443
31183
下記のコマンドを実行すると、Kubernetesクラスタが既に利用しているNodeportの一覧が表示されます。出力はService名とNodePortの番号で構成されています。
NodePort30443
と31183
が含まれていないことを確認してください。
コマンド
kubectl get svc -A -o jsonpath='{range .items[?(@.spec.type=="NodePort")]}{.metadata.name}{": "}{.spec.ports[
*].nodePort}{"\n"}{end}'
出力例
example-Nodeport1: 31189
example-Nodeport2: 32714
Github WebhookからEPOCHへのアクセスに用いるNodePort
EPOCHはコードリポジトリからのWebhookをNodeportで受信し、EPOCH内のTEKTONにCIパイプラインを実行させます。
Githubをコードリポジトリとして利用する場合、Github Webhookから送出されるPOSTリクエストをNodePortが受け取ることのできるネットワーク環境が必要となります。(図内緑色の矢印を参照)
下記のNodePortがKubernetesクラスタで利用可能であり、Github Webhookのリクエストを受け取り可能であることを確認してください。確認方法のコマンドはEPOCHのUIへのアクセスに用いるNodePortを参照してください。
30443
Github Webhookの詳細については下記をご参照ください。
ーーー
Github Webhookの詳細: Github Docs / About Webhooks
Githubが利用するIPアドレス情報: Github Docs / GitHub’s IP addresses
EPOCHのインストール
インストール手順は下記の記事を参照してください。
本書の内容は以上です。