kubectlを使用したメッシュの管理

kubectlコマンドを使用すると、メッシュを作成、更新、移動、リスト、表示および削除できます。次のトピックでは、kubectlを使用してこれらの操作を管理する方法について説明します。

メッシュに必要なIAMポリシー

メッシュを使用するには、管理者がポリシー(IAM)で必要なアクセス・タイプを付与する必要があります。コンソール、REST API、SDK、CLI、Kubernetes kubectlまたはその他のツールのいずれを使用している場合でも、適切な権限が必要です。

アクションによって権限が拒否または認可されていないメッセージが生成される場合は、管理者にポリシー設定を確認してください。管理者は、適切なタイプのアクセス権が付与され、正しいコンパートメントが指定されていることを確認する必要があります。

たとえば、グループMeshAdminsのユーザーがコンパートメントsales-app内のすべてのメッシュを作成、更新および削除できるようにするには:

Allow group MeshAdmins to manage service-meshes in compartment sales-app

各リソースのサービス・メッシュIAMポリシー・リファレンスの詳細は、サービス・メッシュIAMポリシーを参照してください。

サービス・メッシュに必要なすべてのIAMポリシーを設定するステップバイステップ・ガイドは、サービス・メッシュに必要なポリシーの設定を参照してください

メッシュのKubernetes構成オプションの表示

カスタム・リソース定義(CRD)を表示することで、Kubernetes CLIメッシュYAML構成オプションを表示できます。次のコマンドを使用します:

kubectl get crd meshes.servicemesh.oci.oracle.com -o yaml

CRDでは、spec:schema:openAPIV3Schema:properties:specの下のYAML構成ファイルで使用されているフィールドが表示されます。CRD出力には、フィールド・タイプ、範囲および制限に関する情報も含まれます。次の項では、YAML構成ファイルの例を示します。

メッシュの作成

メッシュを作成するには、kubectl applyコマンドを使用します。次に例を示します。

kubectl apply -f mesh.yaml
サンプルmesh.yaml
apiVersion: servicemesh.oci.oracle.com/v1beta1
kind: Mesh
metadata:
  name: <meshName>  # Name of the mesh
  namespace: <k8sAppNamespace>
spec:
  compartmentId: ocid1.compartment.oc1..aaa...
  displayName: <yourDisplayName>  # UI DisplayName of the mesh
  description: <description>
  certificateAuthorities:
	- id: ocid1.certificateauthority.oc1...
  mtls:
    minimum: PERMISSIVE

ヒント

サービス・メッシュKubernetesカスタム・リソース・ステータスの詳細は、「サービス・メッシュKubernetesリソース条件」を参照してください。

場所:

  • <name>: 新しいメッシュの名前。この値は、作成後に変更できます。名前は、文字またはアンダースコアで始まり、文字、数字、ハイフンまたはアンダースコアが続く必要があります。長さは1から255文字です。機密情報を入力しないでください。
  • <description>メッシュの説明。機密情報を入力しないでください。
  • <compartmentId>: 新しいメッシュが属するコンパートメントのOCID。
  • <certificateAuthorities> (不変): リーフ証明書の作成に使用される認証局の配列。
    • id: 認証局のOCID。
  • <mtls> (オプション): メッシュ内のサービス通信間のmTLS認証最小モードを設定します。子リソースのmTLS認証は、この最小モードを満たす必要があります。

    • <minimum>:
      • DISABLED: raw TCPトラフィックを受け入れます。このメッシュ内の最小仮想サービスまたはイングレス・ゲートウェイでは、mTLS認証モードを使用できません。
      • PERMISSIVE: mTLSトラフィックとRAW TCPトラフィックの両方を受け入れます。このメッシュ内の仮想サービスおよびイングレス・ゲートウェイは、PERMISSIVEまたはSTRICTモードのいずれかです。
      • STRICT: mTLSトラフィックを受け入れます。このメッシュ内のすべての仮想サービスおよびイングレスでは、STRICTモードを使用する必要があります。

      サービス・メッシュでのmTLSの使用の詳細は、サービス・メッシュでのmTLSの使用を参照してください。

メッシュの更新

kubectlでメッシュを更新するには:

  1. 必要に応じて、メッシュの既存のYAML構成ファイルを変更します。
  2. ファイルを保存します。
  3. applyコマンドを再度実行します:

    kubectl apply -f mesh.yaml

メッシュの移動

メッシュを別のコンパートメントに移動するには:

  1. コンパートメントOCIDを、メッシュの既存のYAML構成ファイル内のターゲット・コンパートメントの値に更新します。
  2. ファイルを保存します。
  3. applyコマンドを再度実行します:

    kubectl apply -f mesh.yaml

メッセージのリスト

ネームスペース内のメッシュのリストを取得するには、次のコマンドを使用します。

kubectl get meshes -n <namespace>

メッシュの詳細の取得

ネームスペース内の特定のメッシュの詳細を表示するには、次のコマンドを使用します。

kubectl describe mesh <name> -n <namespace>

メッシュの削除

ネームスペース内の特定のメッシュを削除するには、次のコマンドを使用します。

kubectl delete mesh <name> -n <namespace>
重要

アクセス・ポリシー、イングレス・ゲートウェイ、仮想サービスなど、メッシュ内に子リソースが存在する場合、削除操作は失敗します。
重要

メッシュ・リソースを作成したKubernetesネームスペースを削除しても、メッシュ・リソースは削除されません。かわりに、Kubernetesネームスペースを削除する前に、メッシュ子リソースを削除してからメッシュを削除してください。