8 KubernetesサービスのexternalIPsへのアクセスの設定
この章では、KubernetesサービスでのexternalIPs
へのアクセス権の設定について説明します。 externalIPs
の詳細については、アップストリーム「Kubernetesドキュメント」を参照してください。
Kubernetesをデプロイすると、KubernetesサービスのexternalIPs
へのアクセスを制御するクラスタにサービスがデプロイされます。 このサービスはexternalip-validation-webhook-service
という名前で、externalip-validation-system
ネームスペースで実行されます。
Kubernetesのデプロイ後、次を使用してサービスが実行されていることを確認できます:
kubectl get services --namespace externalip-validation-system
出力は次のようになります:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
externalip-validation-webhook-service ClusterIP 10.100.79.236 <none> 443/TCP 15m
このKubernetesサービスでは、Kubernetesをデプロイする前にX.509証明書を設定する必要があります。 Vault、CA証明書で生成された証明書を使用することも、gen-certs-helper.sh
スクリプトを使用して証明書を生成することもできます。 これらの証明書の設定の詳細は、「インストール」を参照してください。
Kubernetesをデプロイする場合は、olcnectl module create
コマンドでこれらの証明書のロケーションを指定する必要があります。 Kubernetesモジュールの作成および証明書のロケーションの設定の例を「Kubernetesモジュールの作成」に示します。
CIDRブロックへのアクセスの有効化
オプションで、モジュールの作成時にKubernetesサービスがアクセスできる外部IPアドレスを設定できます。 これを設定するには、olcnectl module create
コマンドの--restrict-service-externalip-cidrs
オプションを使用します。 この例では、許可されるIP範囲は、192.0.2.0/24
および198.51.100.0/24
CIDRブロック内にあります。
olcnectl module create \
--environment-name myenvironment \
--module kubernetes \
--name mycluster \
...
--restrict-service-externalip-ca-cert /etc/olcne/certificates/restrict_external_ip/ca.cert \
--restrict-service-externalip-tls-cert /etc/olcne/certificates/restrict_external_ip/node.cert \
--restrict-service-externalip-tls-key /etc/olcne/certificates/restrict_external_ip/node.key \
--restrict-service-externalip-cidrs 192.0.2.0/24,198.51.100.0/24
CIDRブロックへのアクセスの変更
許可するように構成されたCIDRブロックを持つKubernetesモジュールがある場合、olcnectl module update
コマンドの--restrict-service-externalip-cidrs
オプションを使用してこの構成を変更できます。 これにより、構成されるCIDRSを変更できます。 たとえば、既存のKubernetesモジュールの192.0.2.0/24
にアクセスできるCIDRブロックを設定するには:
olcnectl module update \
--environment-name myenvironment \
--name mycluster \
--restrict-service-externalip-cidrs 192.0.2.0/24
CIDRブロックへのアクセスを削除する(つまり、externalIPs
へのアクセスが許可されない)には、--restrict-service-externalip-cidrs
オプションをnullに設定します。次に例を示します:
olcnectl module update \
--environment-name myenvironment \
--name mycluster \
--restrict-service-externalip-cidrs ""
externalIPsへのアクセスの無効化
KubernetesサービスによるexternalIPs
へのアクセスを制限するには、Kubernetesモジュールの作成時に許可されるCIDRブロックを設定しないでください。 そのため、olcnectl module create
コマンドの--restrict-service-externalip-cidrs
オプションは使用しないでください。 externalip-validation-webhook-service
Kubernetesサービスはデプロイされますが、externalIPs
へのアクセスは許可されません。 たとえば:
olcnectl module create \
--environment-name myenvironment \
--module kubernetes \
--name mycluster \
...
--restrict-service-externalip-ca-cert /etc/olcne/certificates/restrict_external_ip/ca.cert \
--restrict-service-externalip-tls-cert /etc/olcne/certificates/restrict_external_ip/node.cert \
--restrict-service-externalip-tls-key /etc/olcne/certificates/restrict_external_ip/node.key
既存のKubernetesモジュールがあり、すべての構成済CIDRブロックへのアクセス権を削除する場合は、モジュールを更新し、「CIDRブロックへのアクセスの変更」に示すように--restrict-service-externalip-cidrs
オプションをnullに設定します。
すべてのexternalIPsへのアクセスの有効化
すべてのKubernetesサービスがすべてのexternalIPs
にアクセスできるようにする場合は、olcnectl module create
コマンドの--restrict-service-externalip false
オプションを使用して、この機能を無効にできます。 この機能を無効にすると、すべてのKubernetesサービスがクラスタ内のすべてのexternalIPs
にアクセスできることになります。
この機能を無効にすると、externalip-validation-webhook-service
Kubernetesサービスはクラスタにデプロイされません。つまり、Kubernetesサービスに対して外部IPアドレスの検証が実行されず、すべてのCIDRブロックに対してアクセスが許可されます。 たとえば、Kubernetesモジュールを作成する場合は、--restrict-service-externalip false
オプションを含めます:
olcnectl module create \
--environment-name myenvironment \
--module kubernetes \
--name mycluster \
...
--restrict-service-externalip false
olcnectl module update
コマンドの--restrict-service-externalip false
オプションを使用して、Kubernetesクラスタでこの機能を無効にできます。 この方法でKubernetesモジュールを変更すると、クラスタからexternalip-validation-webhook-service
Kubernetesサービスが削除されるため、検証は実行されません。 たとえば:
olcnectl module update \
--environment-name myenvironment \
--name mycluster \
--restrict-service-externalip false
逆に、olcnectl module update
コマンドの--restrict-service-externalip true
オプションを使用してKubernetesクラスタでこの機能を有効にすると、externalip-validation-webhook-service
Kubernetesサービスがクラスタにデプロイされるため、検証が実行されます。 たとえば:
olcnectl module update \
--environment-name myenvironment \
--name mycluster \
--restrict-service-externalip true