This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第21章 シークレット
21.1. シークレットの使用 リンクのコピーリンクがクリップボードにコピーされました!
このトピックでは、シークレットの重要なプロパティーについて説明し、開発者がこれらを使用する方法の概要を説明します。
				Secret オブジェクトタイプはパスワード、OpenShift Container Platform クライアント設定ファイル、dockercfg ファイル、プライベートソースリポジトリーの認証情報などの機密情報を保持するメカニズムを提供します。シークレットは機密内容を Pod から切り離します。シークレットはボリュームプラグインを使用してコンテナーにマウントすることも、システムが Pod の代わりにシークレットを使用して各種アクションを実行することもできます。
			
YAML シークレットオブジェクト定義
- 1
 - シークレットのキー名および値の構造を示しています。
 - 2
 - 3
 dataマップのキーに関連付けられる値は base64 でエンコーディングされている必要があります。- 4
 stringDataマップのキーに関連付けられた値は単純なテキスト文字列で構成されます。- 5
 stringDataマップのエントリーが base64 に変換され、このエントリーは自動的にdataマップに移動します。このフィールドは書き込み専用です。 この値はdataフィールドでのみ返されます。ローカルの .docker/config.json ファイルからシークレットを作成します。
oc create secret generic dockerhub \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson$ oc create secret generic dockerhub \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドにより、
dockerhubという名前のシークレットの JSON 仕様が生成され、オブジェクトが作成されます。
YAML の不透明なシークレットオブジェクトの定義
- 1
 - opaque シークレットを指定します。
 
Docker 設定の JSON ファイルシークレットオブジェクトの定義
21.1.1. シークレットのプロパティー リンクのコピーリンクがクリップボードにコピーされました!
キーのプロパティーには以下が含まれます。
- シークレットデータはその定義とは別に参照できます。
 - シークレットデータのボリュームは一時ファイルストレージ機能 (tmpfs) でサポートされ、ノードで保存されることはありません。
 - シークレットデータは namespace 内で共有できます。
 
21.1.2. シークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
シークレットに依存する Pod を作成する前に、シークレットを作成する必要があります。
シークレットの作成時に以下を実行します。
- シークレットデータでシークレットオブジェクトを作成します。
 - Pod のサービスアカウントをシークレットの参照を許可するように更新します。
 - 
							シークレットを環境変数またはファイルとして使用する Pod を作成します (
secretボリュームを使用)。 
作成コマンドを使用して JSON または YAML ファイルのシークレットオブジェクトを作成できます。
oc create -f <filename>
$ oc create -f <filename>
21.1.3. シークレットの種類 リンクのコピーリンクがクリップボードにコピーされました!
					type フィールドの値で、シークレットのキー名と値の構造を指定します。このタイプを使用して、シークレットオブジェクトにユーザー名とキーの配置を実行できます。検証の必要がない場合には、デフォルト設定の opaque タイプを使用してください。
				
以下のタイプから 1 つ指定して、サーバー側で最小限の検証をトリガーし、シークレットデータに固有のキー名が存在することを確認します。
- 
							
kubernetes.io/service-account-token。サービスアカウントトークン。 - 
							
kubernetes.io/dockercfg。必須の Docker 認証情報に .dockercfg file を使用します。 - 
							
kubernetes.io/dockerconfigjson。必須の Docker 認証情報に .docker/config.json ファイルを使用します。 - 
							
kubernetes.io/basic-auth。Basic 認証で使用します。 - 
							
kubernetes.io/ssh-auth。SSH キー認証で使用します。 - 
							
kubernetes.io/tls。TLS 認証局で使用します。 
					検証が必要ない場合には type= Opaque と指定します。これは、シークレットがキー名または値の規則に準拠しないという意味です。 opaque シークレットでは、任意の値を含む、体系化されていない key:value ペアも使用できます。
				
						example.com/my-secret-type などの他の任意のタイプを指定できます。これらのタイプはサーバー側では実行されませんが、シークレットの作成者はその種類のキー/値の要件に従うことが意図されていることを示します。
					
異なるシークレットタイプの例については、シークレットの使用のコードサンプルを参照してください。
21.1.4. シークレットの更新 リンクのコピーリンクがクリップボードにコピーされました!
シークレットの値を変更する場合、値 (すでに実行されている Pod で使用される値) は動的に変更されません。シークレットを変更するには、元の Pod を削除してから新規の Pod を作成する必要があります (同じ PodSpec を使用する場合があります)。
					シークレットの更新は、新規コンテナーイメージのデプロイと同じワークフローで実行されます。kubectl rolling-update コマンドを使用できます。
				
					シークレットの resourceVersion 値は参照時に指定されません。したがって、シークレットが Pod の起動と同じタイミングで更新される場合、Pod に使用されるシークレットのバージョンは定義されません。
				
						現時点で、Pod の作成時に使用されるシークレットオブジェクトのリソースバージョンを確認することはできません。今後はコントローラーが古い resourceVersion を使用して再起動できるよう Pod がこの情報を報告できるようにすることが予定されています。それまでは既存シークレットのデータを更新せずに別の名前で新規のシークレットを作成します。