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
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
場所:
<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
でメッシュを更新するには:
- 必要に応じて、メッシュの既存のYAML構成ファイルを変更します。
- ファイルを保存します。
apply
コマンドを再度実行します:kubectl apply -f mesh.yaml
メッシュの移動
メッシュを別のコンパートメントに移動するには:
- コンパートメントOCIDを、メッシュの既存のYAML構成ファイル内のターゲット・コンパートメントの値に更新します。
- ファイルを保存します。
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ネームスペースを削除する前に、メッシュ子リソースを削除してからメッシュを削除してください。