Kubernetes Secret は、キーや証明書などの機密情報を保存および管理するために使用されるリソースの一種です。イメージを使用してアプリケーションをデプロイする際に機密構成が公開されるのを防ぐために、Serverless App Engine(SAE)の名前空間レベルの Secret を使用することをお勧めします。Secret を構成すると、アプリケーションの作成またはデプロイ時に、イメージを使用して機密構成をコンテナに挿入できます。Secret を変更する場合は、アプリケーションを再デプロイするだけで済みます。
背景
Serverless App Engine (SAE) 環境では、SAE の ConfigMap と Secret は構成データを保存するように設計されたリソースです。どちらもコンテナイメージから構成を分離できるため、アプリケーション構成の管理が効率化されます。ただし、構成項目とシークレットでは、異なるシナリオで使用されます。
構成項目には、通常、ファイルの内容、コマンドラインパラメータ、その他の機密ではないデータなどの一般的な構成が保持されます。これらはファイルとしてマウントしたり、環境変数またはコマンドラインパラメータとしてポッド内のコンテナに挿入したりできるため、コンテナイメージを再構築することなくアプリケーション構成を更新できます。
Secret は、主にパスワード、証明書、SSH キーペアなどの機密データを対象としています。構成項目と同様に、Secret はファイルとしてマウントしたり、環境変数としてポッド内のコンテナに挿入したりできます。Kubernetes は、Secret データを暗号化し、メモリ内で安全に処理することで、データ侵害のリスクを軽減します。
前提条件
名前空間が作成されていること。詳細については、「参照ドキュメント」をご参照ください。
注意事項
SAE は通常、パスワードなしのプル方法を使用してイメージをデプロイします。ただし、Secret を使用してアプリケーションをデプロイする場合、この機能は無効になります。パスワードなしのイメージプルを再度有効にするには、Secret 機能を使用せずにアプリケーションを再デプロイします。
Secret を変更すると新しいバージョンが生成されます。これは、変更後に手動スケーリングまたは自動スケーリングによって作成された新しいインスタンスに対してのみ有効になります。既存のインスタンスは影響を受けません。すべてのアプリケーションインスタンスで Secret のバージョンを同期するには、Secret を変更した後にアプリケーションを手動で再起動または再デプロイします。
Secret を削除すると、関連付けられているアプリケーションが中断される可能性があります。削除する前に、アプリケーションから Secret の関連付けを解除してください。
構成を暗号化する必要がない場合は、Secret 機能を使用する必要はありません。代わりに、SAE の構成項目機能を使用して構成情報を管理できます。詳細については、「構成項目(Kubernetes ConfigMap)の管理と使用方法」をご参照ください。
Secret の作成
SAE コンソール にログインします。
左側のナビゲーションバーで、[名前空間] をクリックします。上部のメニューバーで、デスティネーションリージョンを選択し、デスティネーション名前空間の名前をクリックします。
左側のナビゲーションバーで、[Secret] をクリックします。[Secret] ページで、[作成] をクリックします。
表示される [作成] パネルで、ニーズに基づいて Secret タイプを選択し、次の表の説明に従ってパラメータ構成を完了します。次に、[確認] をクリックします。
説明Secret を作成するときは、保存する情報に基づいてタイプを選択します。
Opaque タイプ:デフォルトの Secret タイプである Opaque は、パスワードや API キーなど、特定の形式のないさまざまな機密情報を保存するのに適しています。キーと値のペアとしてデータを柔軟に保存できます。
TLS 証明書タイプ:このカテゴリは、TLS 証明書データを保存するために指定されています。サービスで HTTPS アクセスが必要な場合は、この Secret タイプを使用して TLS 証明書を安全に保存および管理できます。TLS 証明書は、SAE 環境内のポッドに実装され、安全なデータ転送を保証します。
プライベートイメージリポジトリログオンキタイプ:このキタイプは、プライベートコンテナイメージリポジトリにアクセスするための資格情報を保存し、プライベートイメージをプルするときに Kubernetes が認証できるようにします。アプリケーションがプライベートリポジトリのコンテナイメージに依存している場合は、必要な資格情報を提供する必要があります。この Secret タイプは、リポジトリのユーザー名とパスワード、またはアクセストークンを保持し、SAE がアプリケーションのデプロイ中にプライベートイメージを正常にプルできるようにします。
Opaque タイプ
設定項目
説明
名前
カスタム Secret 名を指定します。
タイプ
Opaque タイプを選択します。
キーと値のペア
データ値を Base64 でエンコード:デフォルトで選択されています。SAE はプレーンテキストデータを Base64 でエンコードします。
キーと値のペア:機密情報のキーと値。
説明[+ 追加] をクリックして、複数のキーと値のペアを定義します。
TLS 証明書タイプ
設定項目
説明
名前
カスタム Secret 名を指定します。
タイプ
TLS 証明書 タイプを選択します。
証明書
TLS 証明書の公開鍵。
キー
TLS 証明書の秘密鍵。
プライベートイメージリポジトリログオンキタイプ
設定項目
説明
名前
カスタム Secret 名を指定します。
タイプ
プライベートイメージリポジトリログオンキー タイプを選択します。
イメージリポジトリアドレス
イメージリポジトリアドレス:機密情報が保存されているイメージリポジトリに対応する VPC の内部同一リージョンエンドポイントを入力します。例:
******-vpc.cn-beijing.aliyuncs.com
。詳細については、「イメージリポジトリ」をご参照ください。ユーザー名
イメージリポジトリへのアクセスに使用するユーザー名。
パスワード
イメージリポジトリへのアクセスに使用するパスワード。
作成された Secret は、[Secret] ページに表示されます。Secret リストの [アクション] 列で、[編集]、[コピー]、または [削除] 操作を実行できます。
Secret を使用したイメージのプル
Secret を使用してイメージをプルするには、まず プライベートイメージリポジトリログオンキー タイプの Secret を作成する必要があります。このセクションでは、Secret を構成するための基本的な手順について説明します。設定項目の詳細については、「WAR パッケージを使用した Java アプリケーションのデプロイ」をご参照ください。
このセクションでは、主要な手順のみを説明します。
アプリケーションの作成時に Secret を構成する
アプリケーションの作成または更新時に Secret を構成できます。
SAE コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。表示されるページで、上部のナビゲーションバーでリージョンを選択し、[名前空間] ドロップダウンリストから名前空間を選択して、[アプリケーションの作成] をクリックします。
[アプリケーションのデプロイ方法] で [イメージデプロイメントの選択] を選択し、[イメージの指定] をクリックします。
表示される [イメージの指定] パネルで、指示に従ってパラメータを構成し、[OK] をクリックします。
[テクノロジスタックプログラミング言語] を選択します。Java と PHP に適切な環境バージョンを選択できます。たとえば、Java を選択した場合は、Java 環境 パラメータに Open JDK 8 を選択できます。
[他の Alibaba Cloud アカウントのプライベートイメージ] をクリックします。
[他の Alibaba Cloud アカウントのプライベートイメージ] タブで、Container Registry Edition として [Container Registry Personal Edition] または [Container Registry Enterprise Edition] を選択します。
[Container Registry Personal Edition] の場合、[イメージタイプ] を [静的ユーザー名とパスワード] に設定し、[イメージリポジトリのユーザー名とパスワードの Secret] と [完全なイメージリポジトリアドレス] を入力します。
[Container Registry Enterprise Edition] の場合、[イメージタイプ] を [静的ユーザー名とパスワード] に設定し、[Enterprise Edition インスタンス ID]、[イメージリポジトリのユーザー名とパスワードの Secret]、および [完全なイメージリポジトリアドレス] を入力します。
残りのパラメータ設定をプロンプトに従って完了し、[次へ:詳細設定] をクリックします。
[詳細設定] ページで、詳細パラメータを構成します。詳細については、「詳細設定」をご参照ください。
[アプリケーションの作成] をクリックします。
タスクテンプレートの作成時に Secret を構成する
SAE コンソール にログインします。
左側のナビゲーションバーで、[タスクテンプレートリスト] をクリックし、上部のメニューバーでデスティネーションリージョンを選択します。
[タスクテンプレートリスト] ページで、[タスクテンプレートの作成] をクリックします。
タスクの基本情報ページで、プロンプトに従ってパラメータ構成を完了し、[次へ:デプロイ構成] をクリックします。
デプロイ構成ページで、手順に従ってパラメータ構成を完了します。
[テクノロジスタックプログラミング言語] を選択します。Java と PHP に適切な環境バージョンを選択できます。たとえば、Java を選択した場合は、Java 環境 パラメータに Open JDK 8 を選択できます。
[他の Alibaba Cloud アカウントのプライベートイメージ] をクリックします。
[他の Alibaba Cloud アカウントのプライベートイメージ] タブで、Container Registry Edition として [Container Registry Personal Edition] または [Container Registry Enterprise Edition] を選択します。
[Container Registry Personal Edition] の場合、[イメージタイプ] を [静的ユーザー名とパスワード] に設定し、[イメージリポジトリのユーザー名とパスワードの Secret] と [完全なイメージリポジトリアドレス] を入力します。
[Container Registry Enterprise Edition] の場合、[イメージタイプ] を [静的ユーザー名とパスワード] に設定し、[Enterprise Edition インスタンス ID]、[イメージリポジトリのユーザー名とパスワードの Secret]、および [完全なイメージリポジトリアドレス] を入力します。
プロンプトに従って残りのパラメータを構成し、[次へ:タスク設定] をクリックします。
プロンプトに従ってタスク設定を完了し、[次へ:仕様の確認] をクリックします。
[仕様の確認] ページで、構成情報を確認し、[作成の確認] をクリックします。
タスクテンプレートを作成した後、タスクテンプレートリストページで詳細を表示できます。