8 コンテナ化されたアプリケーションの公開
ワーカー・ノード・アプリケーションにPrivate Cloud Applianceの外部からアクセスできるように、アプリケーション・デプロイメントを公開するには、次の手順を実行します:
-
外部ロード・バランサを作成します。
-
必要に応じてイングレスおよびエグレス・ルールを更新して、コンテナ化されたアプリケーションのポート要件をサポートします。 たとえば、アプリケーションがTCPポート3000を使用している場合は、イングレス・ルールをポート3000とともに追加する必要があります。
外部ロード・バランサの作成
外部ロード・バランサは、LoadBalancerタイプのサービスです。 このサービスは、複数の実行中のインスタンスがあるアプリケーションのロード・バランシングを提供します。
--service-lb-defined-tags
または--service-lb-flexible-tags
オプションを使用して、外部ロード・バランサに適用されるタグを指定する場合は、該当する動的グループに次のポリシーが含まれていることを確認してください。 「クラスタ動的グループの作成」を参照してください。
allow dynamic-group dynamic-group-name to use tag-namespaces in compartment compartment-name
ロード・バランサのシェイプ・パラメータに次のいずれかの値があることを確認してください: 400Mbps
またはflexible
のいずれか。 flexible
を指定する場合は、flex-min
およびflex-max
注釈も指定する必要があります。 アプリケーション・デプロイメント・ファイルを編集して、ロード・バランサのシェイプ値を変更する必要がある場合があります。 これらの値の設定方法の詳細および例は、「代替ロード・バランサ・シェイプの指定」および「柔軟なロード・バランサ・シェイプの指定」を参照してください。
プライベート・クラスタ(プライベート・ワーカー・ロード・バランサ・サブネットを持つクラスタ)にサービス・ロード・バランサを作成する場合は、外部ロード・バランサ・テンプレートで次の注釈を使用します:
service.beta.kubernetes.io/oci-load-balancer-internal: "true"
次のコマンドを使用して、外部ロード・バランサを作成します:
# kubectl create -f expose_lb
次に、expose_lb
ファイルの内容を示します:
apiVersion: v1 kind: Service metadata: name: my-nginx-svc labels: app: nginx annotations: oci.oraclecloud.com/load-balancer-type: "lb" service.beta.kubernetes.io/oci-load-balancer-shape: "400Mbps" spec: type: LoadBalancer ports: - port: 80 selector: app: nginx
次のコマンドは、この外部ロード・バランサの詳細情報を表示します。 LoadBalancerイングレスIPアドレスは、Private Cloud Applianceの外部からノード・アプリケーションにアクセスするために使用されるIPアドレスです。 「コンピュートWeb UI」では、LoadBalancerイングレスIPアドレスが、ロード・バランサの詳細ページの最初の列の下部にある「IPアドレス」という見出しの下に表示され、その後にラベル"(Public)が続きます。
# kubectl describe svc my-nginx-svc Name: my-nginx-svc Namespace: default Labels: app=nginx Annotations: oci.oraclecloud.com/load-balancer-type: lb service.beta.kubernetes.io/oci-load-balancer-shape: 400Mbps Selector: app=nginx Type: LoadBalancer IP Family Policy: SingleStack IP Families: IPv4 IP: IP_address IPs: IP_address LoadBalancer Ingress: Load_Balancer_IP_address Port: <unset> 80/TCP TargetPort: 80/TCP NodePort: <unset> 32145/TCP Endpoints: IP_address:port, IP_address+1:port, IP_address+2:port Session Affinity: None External Traffic Policy: Cluster Events: Type Reason Age From Message ---- Normal EnsuringLoadBalancer 7m48s service-controller Ensuring load balancer Normal EnsuredLoadBalancer 6m40s service-controller Ensured load balancer
次のコマンドを使用して、外部ロード・バランサのIPアドレスおよびポートをリストします:
# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP IP_address <none> 443/TCP 6h17m my-nginx-svc LoadBalancer IP_address Load_Balancer_IP_address 80:32145/TCP 5h5m