OCIストレージ
SUSE® Rancher Prime Continuous DeliveryはデフォルトでetcdにKubernetesバンドルリソースを保存します。しかし、etcdには厳しいサイズ制限があり、大規模なワークロードには最適化されていません。ターゲットクラスターのバンドルリソースがetcdのサイズ制限を超える場合は、OCIレジストリをストレージバックエンドとして使用することを検討してください。
|
バンドルサイズを削減するために、OCIレジストリにアップロードする前にバンドルコンテンツを圧縮し、base64エンコードしてください。 |
OCIレジストリを使用すると、次のことが可能になります:
-
大きなバンドルコンテンツをオフロードすることでetcdの負荷を軽減します。
-
大規模なマニフェストやHelmチャートのために標準化されたストレージバックエンドを使用します。
|
SUSE® Rancher Prime Continuous DeliveryはOCIアーティファクトの整合性をチェックし、OCIアーティファクトに`latest`としてタグを付けます。 |
前提条件
-
稼働中のOCIレジストリ。
-
有効な資格情報を持つKubernetesシークレット。
-
SUSE® Rancher Prime Continuous Deliveryのインストール(v2.12.0以降)。
OCIストレージを有効にする方法
OCIストレージを有効にするには、OCIレジストリのための必要な情報とアクセスオプションを含むシークレットを作成します。シークレットを定義する方法は2つあります:
-
グローバルシークレット:
GitRepo`と同じネームスペースに正確に名付けられたシークレット`ocistorage。-
これはフォールバックシークレットです。`GitRepo`レベルのシークレットが指定されていない場合、SUSE® Rancher Prime Continuous Deliveryはネームスペース内のすべての`GitRepo`にこのシークレットを使用します。
-
-
*GitRepoレベルのシークレット:*特定の`GitRepo`リソース用のカスタムシークレットです。
-
これはユーザー定義のシークレットで、任意の名前を持つことができ、`GitRepo`リソースで参照する必要があります。
-
`ociRegistrySecret`仕様の`GitRepo`フィールドにシークレットの名前を設定してください。
-
|
シークレットが欠落しているか無効な場合、SUSE® Rancher Prime Continuous Deliveryはetcdにフォールバックしません。その代わりに、エラーをログに記録し、デプロイメントをスキップします。 |
レジストリアドレスとオプションの認証情報を含むKubernetesシークレットを作成します:
apiVersion: v1
kind: Secret
metadata:
name: ocistorage
namespace: fleet-local
type: fleet.cattle.io/bundle-oci-storage/v1alpha1
data:
reference: <base64-encoded-registry-url> # Only the reference field is required. All other fields are optional.
username: <base64-encoded-user>
password: <base64-encoded-password>
insecureSkipTLS: <base64-encoded-true/false>
basicHTTP: <base64-encoded-true/false>
agentUsername: <base64-encoded-readonly-user>
agentPassword: <base64-encoded-password>
|
シークレットはタイプ: `fleet.cattle.io/bundle-oci-storage/v1alpha1`を持っている必要があります。SUSE® Rancher Prime Continuous Deliveryはこの値を要求し、異なるタイプのシークレットを拒否します。 |
シークレットを変更しても再デプロイメントはトリガーされません。SUSE® Rancher Prime Continuous DeliveryはGitの更新または手動の強制更新後に新しいレジストリを使用します。
シークレットフィールドの参照
設定できるフィールドは次のとおりです:
| フィールド | 説明 | Format | 備考 |
|---|---|---|---|
|
OCIレジストリのURL。 |
Base64エンコードされた文字列 |
`oci://`や類似のプレフィックスは使用しないでください。 |
|
レジストリへの書き込みアクセスを持つユーザー名。 |
Base64エンコードされた文字列 |
指定されていない場合、SUSE® Rancher Prime Continuous Deliveryは認証なしでレジストリにアクセスします。 |
|
書き込みアクセスユーザーのパスワード。 |
Base64エンコードされた文字列 |
指定されていない場合、SUSE® Rancher Prime Continuous Deliveryは認証なしでレジストリにアクセスします。 |
|
エージェント用の読み取り専用ユーザー名。 |
Base64エンコードされた文字列 |
エージェントのセキュリティを強化するために、読み取り専用の認証情報を使用してください。これらの認証情報を設定しない場合、エージェントはそのユーザー名を使用します。 |
|
エージェント用の読み取り専用パスワード。 |
Base64エンコードされた文字列 |
エージェントのセキュリティを強化するために、読み取り専用の認証情報を使用してください。これらの認証情報を設定しない場合、エージェントはそのユーザーパスワードを使用します。 |
|
TLS証明書の検証をスキップします。 |
Base64エンコードされた`true/false` |
開発またはテストのみに使用してください。デフォルトでは、`insecureSkipTLS`は`false`に設定されています。 |
|
HTTPSの代わりにHTTPを有効にします。 |
Base64エンコードされた`true/false` |
お勧めしません。安全でないトラフィックを許可します。デフォルトでは、`basicHTTP`は`false`に設定されています。 |
SUSE® Rancher Prime Continuous Delivery 例
次の`GitRepo`ファイルを考慮してください:
apiVersion: fleet.cattle.io/v1alpha1
kind: GitRepo
metadata:
name: frontend-oci
namespace: fleet-local
spec:
repo: https://github.com/your-org/fleet-oci-example.git
branch: main
paths:
- ./frontend
ociRegistrySecret: ocistorage
上記の例に似たレジストリアドレスとオプションの認証情報を含むYAMLファイルを作成して適用することができます。続いて、実行します:
kubectl apply -f secrets/oci-secret.yaml
または、`kubectl`を使用して、エンコードされていないテキストでシークレットを作成することもできます。Kubernetesは自動的に値をbase64に変換します。
kubectl -n fleet-local create secret generic ocistorage \
--type=fleet.cattle.io/bundle-oci-storage/v1alpha1 \
--from-literal=username=fleet-ci \
--from-literal=password=fleetRocks \
--from-literal=reference=192.168.1.39:8082 \
--from-literal=insecureSkipTLS=true \
--from-literal=basicHTTP=false \
--from-literal=agentUsername=fleet-ci-readonly \
--from-literal=agentPassword=readonlypass
シークレットを検証するには、次を実行します:
kubectl get secret ocistorage -n fleet-local -o yaml
シークレットを復号化して表示するには:
kubectl get secret ocistorage -n fleet-local -o json | jq '.data | map_values(@base64d)'