8.5. 3scale Operator が、カスタムリソースのリンク先となるテナントを識別する方法
3scale カスタムリソース (CR) をデプロイして、さまざまな 3scale オブジェクトを管理できます。3scale CR は、1 つのテナントにのみリンクします。
3scale operator が 3scale と同じ namespace にインストールされている場合には、3scale CR がその 3scale インスタンスのデフォルトテナントにリンクされるのがデフォルトの動作です。3scale CR を異なるテナントにリンクするには、以下のいずれかを行います。
3scale CR が含まれる namespace に
threescale-provider-account
シークレットを作成します。3scale CR のデプロイ時に、Operator はこのシークレットを読み取り、CR がリンクするテナントを特定します。Operator がこのシークレットを使用するには、以下のいずれかが true である必要があります。-
3scale CR は
spec.providerAccountRef
フィールドを null として指定します。 3scale CR は
spec.providerAccountRef
フィールドを省略します。threescale-provider-account
シークレットは、CR のリンク先のテナントを識別します。シークレットには、URL の形式で 3scale インスタンスへの参照が含まれ、トークン形式でその 3scale インスタンス内のテナントにアクセスするためのクレデンシャルが含まれている必要があります。以下に例を示します。oc create secret generic threescale-provider-account --from-literal=adminURL=https://3scale-admin.example.com --from-literal=token=123456
threescale-provider-account
シークレットは、HTTP 接続が利用可能であれば、任意の 3scale インスタンスのすべてのテナントを特定できます。つまり、3scale CR および CR がリンクするテナントを含む 3scale インスタンスは、異なる namespace にあるか、異なる OpenShift クラスターにある可能性があります。
-
3scale CR は
3scale CR で、
spec.providerAccountRef
を指定し、テナントを識別する OpenShiftシークレット
へのローカル参照の名前に設定します。以下の 3scaleDeveloperAccount
CR の例では、mytenant
がシークレットです。apiVersion: capabilities.3scale.net/v1beta1 kind: DeveloperAccount metadata: name: developeraccount-simple-sample spec: orgName: Ecorp providerAccountRef: name: mytenant
シークレットでは、以下が行われます。
-
AdminURL
は、任意の namespace にある 3scale インスタンスの URL を指定します。 token
は、その 3scale インスタンス内の 1 つのテナントにアクセスするためのクレデンシャルを指定します。このテナントは、デフォルトのテナントまたはそのインスタンス内の他のテナントに指定できます。通常、テナントカスタムリソースをデプロイするときに、このシークレットを作成します。以下に例を示します。
apiVersion: v1 kind: Secret metadata: name: mytenant type: Opaque stringData: adminURL: https://my3scale-admin.example.com:443 token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
-
3scale Operator が、CR がリンクするテナントを特定できない場合、Operator はエラーメッセージを生成します。