コンテナ化されたアプリケーションの公開
Compute Cloud@Customerの外部からワーカー・ノード・アプリケーションにアクセスできるように、アプリケーション・デプロイメントを公開するには、次を実行します:
-
外部ロード・バランサを作成します。
-
必要に応じてイングレスおよびエグレス・ルールを更新して、コンテナ化されたアプリケーションのポート要件をサポートします。たとえば、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
–flex-min
およびflex-max
注釈も指定する必要があります。
ロード・バランサのシェイプ値を変更するために、アプリケーション・デプロイメント・ファイルの編集が必要になる場合があります。これらの値の設定方法の詳細および例は、代替Load Balancerシェイプの指定およびフレキシブルLoad Balancerシェイプの指定を参照してください。
プライベート・クラスタ(プライベート・ワーカー・ロード・バランサ・サブネットを持つクラスタ)にサービス・ロード・バランサを作成するには、外部ロード・バランサ・テンプレートで次の注釈を使用します:
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アドレスは、Compute Cloud@Customerの外部からノード・アプリケーションにアクセスするために使用されるIPアドレスです。Compute Cloud@Customerコンソールでは、LoadBalancerイングレスIPアドレスが、ロード・バランサの詳細ページの最初の列の下部にある「IPアドレス」という見出しの下に表示され、その後に「(パブリック)」というラベルが付きます。
# 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の保持」を参照してください。
次のコマンドを使用して、外部ロード・バランサの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
次の手順: