機械翻訳について

クラスタAPIテンプレート

Oracle CNEのKubernetesクラスタAPIテンプレート・ファイルについて説明します。

デフォルトのOCIクラスタは、追加の引数なしでociプロバイダを使用して作成できます。 たとえば:

ocne cluster start --provider oci

デフォルトのクラスタ設定によって有用なクラスタが作成されますが、追加の構成が必要になる可能性があります。 デプロイメントをカスタマイズするには、クラスタのベースとして使用するクラスタ・テンプレートを生成します。

ocne cluster templateコマンドは、クラスタ・テンプレートを作成するために使用され、テンプレートを生成するために設定したデフォルト構成およびクラスタ構成を使用します。 また、構成済コンパートメントからコンピュート・イメージOCIDsなどのものが自動的にフェッチされます。 クラスタ・テンプレートを作成してファイルに保存できます。次に例を示します:

ocne cluster template > mytemplate.yaml

結果のYAMLファイルには、ローカル・システム上にあるすべての構成を使用して、クラスタを作成するためのKubernetesクラスタAPIのクラスタ・リソースが含まれます。

たとえば、デプロイメントへのカスタマイズを含むクラスタ構成ファイル(この例ではmyconfig.yamlという名前)を作成し、次のものを含めることができます:

provider: oci
name: mycluster
controlPlaneNodes: 3
workerNodes: 3
clusterDefinition: /home/username/mytemplate.yaml
providers:
  oci:
    compartment: ocid1.compartment.oc1..uniqueID

この例では、clusterDefinitionファイルはKubernetesクラスタAPIテンプレートのロケーションです。このテンプレートは、このクラスタ構成ファイルの構成に基づいて生成されます。 このテンプレートは、クラスタの作成時に使用します。 ocne cluster templateコマンドを再度実行し、構成ファイルを指定して、この新しい構成を使用するようにクラスタ・テンプレートを更新できます。 たとえば:

ocne cluster template --config myconfig.yaml > $HOME/mytemplate.yaml

テンプレート・ファイルを編集して、クラスタ構成ファイルで指定されていないKubernetes「クラスタAPI」オプションを構成します。 テンプレートに問題がない場合は、クラスタ構成ファイルを使用してクラスタを作成します。 このクラスタ構成ファイルにはclusterDefinitionのクラスタ・テンプレートへのリンクが含まれているため、テンプレートはクラスタの作成に使用されます。 たとえば:

ocne cluster start --config myconfig.yaml

クラスタAPIテンプレート・ファイル

KubernetesクラスタAPIテンプレート・ファイルの内容について説明します。

KubernetesクラスタAPIテンプレート・ファイルを生成できます。このテンプレート・ファイルには、KubernetesクラスタAPIを使用してKubernetesクラスタを作成するために必要なすべての情報が含まれています。 ocne cluster templateコマンドを使用して、このファイルを作成します。 KubernetesクラスタAPIを使用してクラスタを作成するために、このテンプレートを保存および編集します。

オプションで、作成するクラスタにあわせてテンプレート内のカスタム・リソースを編集します。 使用可能なオプションについては、「Oracle Cloud Infrastructureドキュメント用のアップストリームKubernetesクラスタAPIプロバイダ」を参照してください。

テンプレート・ファイルには、クラスタの各コンポーネントのカスタム・リソースが含まれ、次のものが含まれます:

apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
  labels:
    cluster.x-k8s.io/cluster-name: "ocne"
  name: "ocne"
  namespace: "ocne"
spec:
...
---
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
kind: OCICluster
metadata:
  labels:
    cluster.x-k8s.io/cluster-name: "ocne"
  name: "ocne"
  namespace: "ocne"
spec:
...
---
kind: KubeadmControlPlane
apiVersion: controlplane.cluster.x-k8s.io/v1beta1
metadata:
  name: "ocne-control-plane"
  namespace: "ocne"
spec:
...
---
kind: OCIMachineTemplate
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
metadata:
  name: "ocne-control-plane"
  namespace: "ocne"
spec:
...
---
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
kind: OCIMachineTemplate
metadata:
  name: "ocne-md-0"
  namespace: "ocne"
spec:
...
---
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
kind: KubeadmConfigTemplate
metadata:
  name: "ocne-md-0"
  namespace: "ocne"
spec:
...

クラスタAPIテンプレートの作成

ocne cluster templateコマンドを使用して、KubernetesクラスタAPIテンプレートを作成します。

KubernetesクラスタAPIテンプレートは、KubernetesクラスタAPIを使用してクラスタをデプロイする場合に使用できます。

クラスタAPIテンプレートは、ローカル・システムに設定されているデフォルトを使用するか、クラスタ構成ファイルを使用して生成できます。

  1. クラスタ・テンプレートを作成します。

    ocne cluster templateコマンドを使用して、KubernetesクラスタAPIを使用してクラスタを作成するためのテンプレートを含むYAMLファイルを生成します。 構文は次のとおりです。

    ocne cluster template 
    [{-c|--config} path] 
    [{-P|--provider} provider]

    構文オプションの詳細は、Oracle Cloud Native Environment: CLIを参照してください。

    たとえば:

    ocne cluster template --config myconfig.yaml > mytemplate.yaml
  2. (オプション)テンプレートを編集します。

    作成するクラスタの要件にあわせてファイルを編集します。 使用可能なオプションについては、「Oracle Cloud Infrastructureドキュメント用のアップストリームKubernetesクラスタAPIプロバイダ」を参照してください。

既存のVCNの使用

クラスタAPIテンプレートを編集して、既存のOCI Virtual Cloud Network (VCN)を使用します。

KubernetesクラスタをOCIにデプロイする際に既存のVCNを使用するには、VCN情報を含めるようにクラスタAPIテンプレートを生成および編集します。 次のOCIDsを指定する必要があります:

  • VCN. クラスタ・ノードに使用するVCN。

  • ネットワーク・セキュリティ・グループ。 これは、VCNへのイングレス・ルールを含むネットワーク・セキュリティ・グループです。

  • サブネット これはVCNのサブネットです。

VCNおよびサブネットに指定された値は、デプロイメント中にOCI Cloud Controller Managerによって、コントロール・プレーン・ロード・バランサを構成するためにも使用されます。

  1. クラスタAPIテンプレートを作成します。

    クラスタを作成するための構成ファイル(関連するすべてのOCIDsを含む)を設定し、クラスタAPIテンプレートを生成します。 クラスタAPIテンプレートの作成の詳細は、「クラスタAPIテンプレートの作成」を参照してください。

  2. OCIDsを環境変数として設定します。

    各行のOCIDを、ネットワーク・オブジェクトのOCIDに置き換えます。

    export VCN=OCID
    export SECGROUP=OCID
    export SUBNET=OCID
  3. VCN情報を含むYAMLファイルを作成します。

    環境変数を使用して、VCN情報を含めるファイルを生成します。

    envsubst > vcn_config.yaml << EOF
      networkSpec:
        skipNetworkManagement: true
        vcn:
          id: $VCN 
          networkSecurityGroup:
            skip: true
            list:
            - name: control-plane-endpoint
              role: control-plane-endpoint
              id: $SECGROUP
            - name: control-plane
              role: control-plane
              id: $SECGROUP
            - name: worker
              role: worker
              id: $SECGROUP
            - name: service-lb
              role: service-lb
              id: $SECGROUP
          internetGateway:
            skip: true
          natGateway:
            skip: true
          serviceGateway:
            skip: true
          routeTable:
            skip: true
          subnets:
          - name: control-plane-endpoint
            role: control-plane-endpoint
            id: $SUBNET
            type: private
          - name: control-plane
            role: control-plane
            id: $SUBNET
            type: private
          - name: worker
            role: worker
            id: $SUBNET
            type: private
          - name: service-lb
            role: service-lb
            id: $SUBNET
            type: private
    EOF
  4. クラスタAPIテンプレートを編集します。

    VCN情報を含むファイル(この例ではvcn_config.yaml)を開き、コンテンツをコピーして、クラスタAPIテンプレートに貼り付けます。 情報は、specセクションのOCIClusterカスタム・リソースに含まれている必要があります。 たとえば:

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
    kind: OCICluster
    metadata:
      labels:
        cluster.x-k8s.io/cluster-name: "mycluster"
      name: "mycluster"
      namespace: "ocne"
    spec:
      compartmentId: "ocid1.compartment.oc1..."
      # Paste the VCN information here.
      networkSpec:
        skipNetworkManagement: true
        vcn: ...
  5. Cluster APIテンプレートを使用してクラスタを作成します。

    クラスタの作成時に、クラスタ構成ファイルにクラスタAPIテンプレートのロケーションを含めてください。 構成ファイルには、clusterDefinitionオプションを使用してテンプレートのロケーションを含める必要があります。 たとえば:

    clusterDefinition: /home/username/mytemplate.yaml