Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerAnypoint Service Mesh を使用してサービスを管理する前に、Anypoint Service Mesh アダプターをプロビジョニングして名前空間を準備する必要があります。プロビジョニングでは、Anypoint Service Mesh 構成で使用する名前空間を準備します。Anypoint Service Mesh で API を保護するすべての名前空間に対して、アダプターをプロビジョニングする必要があります。
アダプターは、Anypoint Platform からポリシーを取得し、ポリシーを満足しているかどうかを確認して、分析データを Anypoint Platform に返すポリシー適用コンポーネントとして機能します。
アダプターをプロビジョニングしたら、Kubernetes クラスターの各ポッドに Envoy サイドカーが挿入されるように、名前空間で istio-injection
ラベルを設定し、その名前空間のすべての既存アプリケーションを再デプロイする必要があります。
Anypoint Service Mesh と Red Hat OpenShift をインストールしている場合、アプリケーションを実行する名前空間で istio-cni
ネットワークアタッチメント定義を設定する必要があります。
アダプターをプロビジョニングするときは、Anypoint Service Mesh で管理するシステムの CPU 数とメモリ量に応じたアダプターサイズを指定する必要があります。現在サポートされているアダプタープランは次のとおりです。
プラン | CPU (コア数) | メモリ (GiB) | API 制限 |
---|---|---|---|
small |
.5 |
1 |
25 |
medium |
1 |
1.5 |
50 |
large |
2 |
2 |
100 |
アダプターのサイズは、プロビジョニング後でも変更できます。サイズプランを変更すると、アダプターデプロイメントが適切に更新されます。そして Kubernetes は、新しい情報でポッドを作成します。ただし、新しいポッドの準備ができるまで、古いアダプターが要求を引き続き処理します。
新しいアダプターの準備ができると、古いポッドは終了し、すべての要求は新しいアダプターに送られます。更新時にスペース不足で新しいポッドを開始できない場合や、ポッドが準備できていない場合は、Kubernetes イベントにエラーメッセージが記録されます。この場合は、新しいポッドが使用できないため、古いアダプターが要求の処理を継続します。
不要になったアダプターは削除できます。ただし、アダプターを削除する前に、そのアダプターの既存のバインドをすべて削除する必要があります。
アダプターをプロビジョニングしたりアプリケーションにバインドしたりすると、アダプターコマンドの実行後にメッセージが表示されます。メッセージは、アダプターが、正常に作成、削除、または変更されたことを示します。
さらに、アダプターの状況を確認することで、アダプターの詳細を調べることができます。アダプターの状況を見るには、次のコマンドを実行します。
asmctl adapter list
状況の値には次のようなものがあります。
Ready
: アダプターを使用する準備ができています。
Failed
: アダプターが正常に作成されませんでした。エラーが発生しました。
Provisioning
: アダプターはプロビジョニング中です。
DeprovisionBlockedByExisingCredentials
: アダプターに使用中のバインドがあります。
アダプターを削除する前に、関連付けられているすべてのバインドを削除する必要があります。
CRD を使用して Anypoint Service Mesh アダプターをプロビジョニングする手順は次のとおりです。
アダプター定義ファイルを作成し、.yaml ファイル拡張子を付けて保存します。
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
name: <adapter name> # example: bookinfo-service-mesh-adapter
namespace: <namespace name> # example: default
labels:
service-mesh.mulesoft.com/kind: adapter
spec:
clusterServiceClassExternalName: anypoint-service-mesh-adapter
clusterServicePlanExternalName: <plan size > # example: small.
parameters:
clientId: <client id> # example: 4bc55ee4cfc84a2ddddbb2c1109d1123c5c4
clientSecret: <client secret> # example: 8E5ae17BbB664Eddd9ab32A5fA869874Be7
replication:
replicas: <amount of replicas> # example: 2
次のコマンドを使用して CRD を適用します。
kubectl apply -f my-adapter.yaml
次のコマンドを使用して、アダプター状況を確認します。
asmctl adapter list
名前空間で Istio のラベルを設定します。
kubectl label ns <namespace> istio-injection=enabled
Anypoint Service Mesh と Red Hat OpenShift をインストールしている場合、アプリケーションを実行する名前空間で次のコマンドを実行します。
kubectl -n <namespace> apply -f - <<EOF
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: istio-cni
EOF
このコマンドにより、名前空間で Istio CNI プラグインを有効にするリソースが作成されます。
名前空間のすべての既存アプリケーションを再デプロイします。
Anypoint Service Mesh では、ユーザーログイン情報などの機密情報を保存して管理するために Kubernetes シークレットの使用がサポートされています。
タスクの前提条件
Kubernetes シークレットを作成するのに必要な権限が割り当てられている必要があります。
Kubernetes シークレットにクライアントログイン情報を保存する手順は、次のとおりです。
YAML ファイルで、重要な情報を格納するシークレットを作成します (例: bookinfo-service-mesh-adapter-config.yaml
)。
apiVersion: v1
kind: Secret
metadata:
name: <secret name> # example: bookinfo-service-mesh-adapter-config
namespace: <namespace name> # example: default
type: Opaque
stringData:
config: |
{
"clientId": "<replace-with-clientId>",
"clientSecret": "<replace-with-clientSecret>"
}
シークレットを適用します。
kubectl apply -f bookinfo-service-mesh-adapter-config.yaml
シークレットが正しく適用されると、secret/bookinfo-service-mesh-adapter-config created
というメッセージが表示されます。
次の例に示すように、アダプター CRD で (clientId および clientSecret パラメーターの代わりに) シークレットを参照します。
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
name: <adapter name> # example: bookinfo-service-mesh-adapter
namespace: <namespace name> # example: default
labels:
service-mesh.mulesoft.com/kind: adapter
spec:
clusterServiceClassExternalName: anypoint-service-mesh-adapter
clusterServicePlanExternalName: <plan size > # example: small.
parameters:
replication:
replicas: <amount of replicas> # example: 2
parametersFrom: # The element specifies the secret name and configuration required for retrieving the parameters
- secretKeyRef:
name: <secret name> # example: bookinfo-service-mesh-adapter-config
key: config