19.6. OpenStack をインストールした後のネットワーク設定の設定
インストール後に、Red Hat OpenStack Platform (RHOSP) クラスター上の OpenShift Container Platform のネットワーク設定を設定できます。
19.6.1. Floating IP アドレスを使用したアプリケーションアクセスの設定
OpenShift Container Platform をインストールした後に、アプリケーションネットワークトラフィックを許可するように Red Hat OpenStack Platform (RHOSP) を設定します。
インストール中に、install-config.yaml
ファイルの platform.openstack.apiFloatingIP
および platform.openstack.ingressFloatingIP
に値を指定した場合、または inventory.yaml
Playbook の os_api_fip
および os_ingress_fip
に値を指定した場合は、この手順を実行する必要はありません。Floating IP アドレスはすでに設定されています。
前提条件
- OpenShift Container Platform クラスターがインストールされている必要があります。
- OpenShift Container Platform の RHOSP へのインストールに関するドキュメントで説明されているように、Floating IP アドレスが有効にされます。
手順
OpenShift Container Platform クラスターをインストールした後に、Floating IP アドレスを Ingress ポートに割り当てます。
ポートを表示します。
$ openstack port show <cluster_name>-<cluster_ID>-ingress-port
ポートを IP アドレスに接続します。
$ openstack floating ip set --port <ingress_port_ID> <apps_FIP>
*apps.
のワイルドカードA
レコードを DNS ファイルに追加します。*.apps.<cluster_name>.<base_domain> IN A <apps_FIP>
DNS サーバーを制御せず、非実稼働環境でアプリケーションアクセスを有効にする必要がある場合は、これらのホスト名を /etc/hosts
に追加できます。
<apps_FIP> console-openshift-console.apps.<cluster name>.<base domain> <apps_FIP> integrated-oauth-server-openshift-authentication.apps.<cluster name>.<base domain> <apps_FIP> oauth-openshift.apps.<cluster name>.<base domain> <apps_FIP> prometheus-k8s-openshift-monitoring.apps.<cluster name>.<base domain> <apps_FIP> <app name>.apps.<cluster name>.<base domain>
19.6.2. OVS ハードウェアオフロードの有効化
Red Hat OpenStack Platform (RHOSP) で実行されるクラスターの場合、Open vSwitch(OVS) ハードウェアオフロードを有効にすることができます。
OVS は、大規模なマルチサーバーネットワークの仮想化を可能にするマルチレイヤー仮想スイッチです。
前提条件
- Single-root Input/Output Virtualization (SR-IOV) 用に設定された RHOSP にクラスターをインストールしている。
- SR-IOV Network Operator がクラスターにインストールされている。
-
クラスターに 2 つの
hw-offload
タイプの Virtual Function (VF) インターフェイスを作成している。
アプリケーション層のゲートウェイフローは、OpenShift Container Platform バージョン 4.10、4.11、および 4.12 では機能しません。また、OpenShift Container Platform バージョン 4.13 のアプリケーション層のゲートウェイフローをオフロードすることはできません。
手順
クラスターにある 2 つの
hw-offload
タイプの VF インターフェイスのSriovNetworkNodePolicy
ポリシーを作成します。1 番目の Virtual Function インターフェイス
apiVersion: sriovnetwork.openshift.io/v1 kind: SriovNetworkNodePolicy 1 metadata: name: "hwoffload9" namespace: openshift-sriov-network-operator spec: deviceType: netdevice isRdma: true nicSelector: pfNames: 2 - ens6 nodeSelector: feature.node.kubernetes.io/network-sriov.capable: 'true' numVfs: 1 priority: 99 resourceName: "hwoffload9"
2 番目の Virtual Function インターフェイス
apiVersion: sriovnetwork.openshift.io/v1 kind: SriovNetworkNodePolicy 1 metadata: name: "hwoffload10" namespace: openshift-sriov-network-operator spec: deviceType: netdevice isRdma: true nicSelector: pfNames: 2 - ens5 nodeSelector: feature.node.kubernetes.io/network-sriov.capable: 'true' numVfs: 1 priority: 99 resourceName: "hwoffload10"
2 つのインターフェイス用に
NetworkAttachmentDefinition
リソースを作成します。1 番目のインターフェイス用
NetworkAttachmentDefinition
リソースapiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: annotations: k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload9 name: hwoffload9 namespace: default spec: config: '{ "cniVersion":"0.3.1", "name":"hwoffload9","type":"host-device","device":"ens6" }'
2 番目のインターフェイス用
NetworkAttachmentDefinition
リソースapiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: annotations: k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload10 name: hwoffload10 namespace: default spec: config: '{ "cniVersion":"0.3.1", "name":"hwoffload10","type":"host-device","device":"ens5" }'
Pod で作成したインターフェイスを使用します。以下に例を示します。
2 つの OVS オフロードインターフェイスを使用する Pod
apiVersion: v1 kind: Pod metadata: name: dpdk-testpmd namespace: default annotations: irq-load-balancing.crio.io: disable cpu-quota.crio.io: disable k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload9 k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload10 spec: restartPolicy: Never containers: - name: dpdk-testpmd image: quay.io/krister/centos8_nfv-container-dpdk-testpmd:latest
19.6.3. OVS ハードウェアオフロードネットワークの接続
Open vSwitch (OVS) ハードウェアオフロードネットワークをクラスターに接続できます。
前提条件
- クラスターがインストールされ、実行されている。
- クラスターで使用するために、Red Hat OpenStack Platform (RHOSP) で OVS ハードウェアオフロードネットワークをプロビジョニングしている。
手順
次のテンプレートから
network.yaml
という名前のファイルを作成します。spec: additionalNetworks: - name: hwoffload1 namespace: cnf rawCNIConfig: '{ "cniVersion": "0.3.1", "name": "hwoffload1", "type": "host-device","pciBusId": "0000:00:05.0", "ipam": {}}' 1 type: Raw
ここでは、以下のようになります。
pciBusId
オフロードネットワークに接続されているデバイスを指定します。この値がわからない場合は、次のコマンドを実行してこの値を見つけることができます。
$ oc describe SriovNetworkNodeState -n openshift-sriov-network-operator
コマンドラインから次のコマンドを入力して、ファイルを使用してクラスターにパッチを適用します。
$ oc apply -f network.yaml
19.6.4. RHOSP で Pod への IPv6 接続を有効にする
異なるノード上にある追加のネットワークを持つ Pod 間の IPv6 接続を有効にするには、サーバーの IPv6 ポートのポートセキュリティーを無効にします。ポートセキュリティーを無効にすると、Pod に割り当てられた IPv6 アドレスごとに許可されたアドレスペアを作成する必要がなくなり、セキュリティーグループのトラフィックが有効になります。
次の IPv6 追加ネットワーク設定のみがサポートされています。
- SLAAC とホストデバイス
- SLAAC と MACVLAN
- DHCP ステートレスおよびホストデバイス
- DHCP ステートレスおよび MACVLAN
19.6.5. RHOSP で IPv6 接続を持つ Pod の作成
Pod の IPv6 接続を有効にして Pod に追加したら、セカンダリー IPv6 接続を持つ Pod を作成します。
手順
IPv6 namespace とアノテーション
k8s.v1.cni.cncf.io/networks: <additional_network_name>
を使用する Pod を定義します。ここで、<additional_network_name
は追加のネットワークの名前になります。たとえば、Deployment
オブジェクトの一環として、以下を行います。apiVersion: apps/v1 kind: Deployment metadata: name: hello-openshift namespace: ipv6 spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - hello-openshift replicas: 2 selector: matchLabels: app: hello-openshift template: metadata: labels: app: hello-openshift annotations: k8s.v1.cni.cncf.io/networks: ipv6 spec: securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault containers: - name: hello-openshift securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL image: quay.io/openshift/origin-hello-openshift ports: - containerPort: 8080
Pod を作成します。たとえば、コマンドラインで次のコマンドを入力します。
$ oc create -f <ipv6_enabled_resource> 1
- 1
- リソース定義を含むファイルを指定します。
19.6.6. RHOSP 上の Pod への IPv6 接続の追加
Pod で IPv6 接続を有効にしたら、Container Network Interface (CNI) 設定を使用して Pod に接続を追加します。
手順
Cluster Network Operator (CNO) を編集するには、次のコマンドを入力します。
$ oc edit networks.operator.openshift.io cluster
spec
フィールドで CNI 設定を指定します。たとえば、次の設定では、MACVLAN で SLAAC アドレスモードを使用します。... spec: additionalNetworks: - name: ipv6 namespace: ipv6 1 rawCNIConfig: '{ "cniVersion": "0.3.1", "name": "ipv6", "type": "macvlan", "master": "ens4"}' 2 type: Raw
注記ステートフルアドレスモードを使用している場合は、CNI 設定に IP アドレス管理 (IPAM) を含めます。
Multus は DHCPv6 をサポートしていません。
- 変更を保存し、テキストエディターを終了して、変更をコミットします。
検証
コマンドラインで、次のコマンドを入力します。
$ oc get network-attachment-definitions -A
出力例
NAMESPACE NAME AGE ipv6 ipv6 21h
セカンダリー IPv6 接続を持つ Pod を作成できるようになりました。