10.5.2. SPIRE Server のデプロイ
SpireServer カスタムリソース (CR) を設定して、SPIRE サーバーをデプロイします。これにより、クラスター内のワークロードを管理し、ID を発行する中央機関が確立されます。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - クラスターに Zero Trust Workload Identity Manager をインストールした。
手順
SpireServerCR を作成します。SpireServerCR を定義する YAML ファイル (例:SpireServer.yaml) を作成します。SpireServer.yamlの例apiVersion: operator.openshift.io/v1alpha1 kind: SpireServer metadata: name: cluster spec: logLevel: "info" logFormat: "text" jwtIssuer: "https://oidc-discovery.apps.cluster.example.com" caValidity: "24h" defaultX509Validity: "1h" defaultJWTValidity: "5m" jwtKeyType: "rsa-2048" caSubject: country: "US" organization: "Example Corporation" commonName: "SPIRE Server CA" persistence: size: "5Gi" accessMode: "ReadWriteOnce" storageClass: "gp3-csi" datastore: databaseType: "sqlite3" connectionString: "/run/spire/data/datastore.sqlite3" tlsSecretName: "" maxOpenConns: 100 maxIdleConns: 10 connMaxLifetime: 0 disableMigration: "false"ここでは、以下のようになります。
metadata.name-
値が
クラスターでなければならないことを指定します。 spec.logLevel-
SPIRE サーバーのログレベルを指定します。有効なオプションは、
debug、info、warn、errorです。 spec.logFormat-
SPIRE サーバーのログ記録フォーマットを指定します。有効なオプションは、
textとjsonです。 spec.jwtIssuer- JWT 発行者の URL を指定します。有効な HTTPS または HTTP URL である必要があり、最大長は 512 文字です。
spec.ca の有効性-
SPIRE サーバーの CA 証明書の有効期間 (有効期限 (TTL)) を指定します。これは、サーバーのルート証明書または中間証明書の有効期間を決定します。形式は期間を表す文字列です (例:
24h、168h)。 spec.defaultX509 有効性- ワークロードに発行される X.509 SVID のデフォルトの有効期間 (TTL) を指定します。この値は、登録エントリーに対して特定の TTL が設定されていない場合に使用されます。
spec.defaultJWTValidity- ワークロードに発行される JWT SVID のデフォルトの有効期間 (TTL) を指定します。この値は、登録エントリーに対して特定の TTL が設定されていない場合に使用されます。
spec.wtKeyType-
JWT 署名に使用するキーの種類を指定します。有効なオプションは、
rsa-2048、rsa-4096、ec-p256、およびec-p384です。このフィールドは任意です。 spec.caSubject.country- SPIRE サーバーの認証局 (CA) の国を指定します。ISO 3166-1 alpha-2 国コード (2 文字) である必要があります。
spec.caSubject.organization- SPIRE サーバー CA の組織を指定します。最大文字数は 64 文字です。
spec.caSubject.commonName- SPIRE サーバー CA の共通名を指定します。最大文字数は 255 文字です。
仕様の永続性サイズ-
永続ボリュームのサイズを指定します (例:
1Gi、5Gi)。一度設定されると、このフィールドは変更できません。 spec.persistence.accessMode-
永続ボリュームのアクセスモードを指定します。有効なオプションは
ReadWriteOnce、ReadWriteOncePod、ReadWriteManyです。一度設定されると、このフィールドは変更できません。 spec.persistence.storageClass- PVC に使用するストレージクラスを指定します。一度設定されると、このフィールドは変更できません。
spec.datastore.databaseType-
データストアに使用するデータベースの種類を指定します。有効なオプションは、
sql、sqlite3、postgres、mysql、aws_postgresql、およびaws_mysqlです。 spec.datastore.connectionString-
データベースへの接続文字列を指定します。SSL を使用する PostgreSQL の場合は、
sslmodeと証明書のパスを含めます (例:dbname=spire user=spire host=postgres.example.com sslmode=verify-full)。 spec.datastore.tlsSecretName-
データベース接続用の TLS 証明書を含む Kubernetes Secret の名前を指定します。シークレットは
/run/spire/db/certsにマウントされます。このフィールドは任意です。 spec.datastore.maxOpenConns- 開いているデータベース接続の最大数を指定します。1 から 10000 までの値でなければなりません。
spec.datastore.maxIdleConns- プール内のアイドル状態のデータベース接続の最大数を指定します。0 から 10000 までの値でなければなりません。
spec.datastore.connMaxLifetime- データベース接続の最大有効期間を秒単位で指定します。値が 0 の場合は、接続が経過年数によって切断されていないことを意味します。
spec.datastore.disableMigration-
自動データベース移行を無効にするかどうかを指定します。有効なオプションは
trueとfalseです。
以下のコマンドを実行して設定を適用します。
$ oc apply -f SpireServer.yaml
検証
次のコマンドを実行して、SPIRE Server のステートフルセットが準備完了状態であり、利用可能であることを確認します。
$ oc get statefulset -l app.kubernetes.io/name=server -n zero-trust-workload-identity-manager出力例
NAME READY AGE spire-server 1/1 65s次のコマンドを実行して、SPIRE Server Pod のステータスが
Runningであることを確認します。$ oc get po -l app.kubernetes.io/name=server -n zero-trust-workload-identity-manager出力例
NAME READY STATUS RESTARTS AGE spire-server-0 2/2 Running 1 (108s ago) 111s次のコマンドを実行して、永続ボリューム要求 (PVC) がバインドされていることを確認します。
$ oc get pvc -l app.kubernetes.io/name=server -n zero-trust-workload-identity-manager出力例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTECLASS AGE spire-data-spire-server-0 Bound pvc-27a36535-18a1-4fde-ab6d-e7ee7d3c2744 5Gi RW0 gp3-csi <unset> 22m