Anthos(GKE Enterprise):CCMを利用してニフクラ ロードバランサー(L4)を接続する
クラスターにnifcloud-cloud-controller-manager(CCM)をインストールし、ニフクラ ロードバランサー(L4)を接続する方法を説明します。
ステップ1:CCMを有効にしてクラスターを作成
本手順では、管理クラスターにロードバランサー(L4)を接続する方法を説明していますが、ユーザークラスターでも同様の手順で接続できます。
コントロールパネルにログインし、Catalogのダッシュボードへ移動します。
リソースグループを作成します。 リソースグループの作成方法は以下をご確認ください。
Anthos(GKE Enterprise):クイックスタート ステップ4:リソースグループ作成作成したリソースグループに対し、CCMを有効にしてクラスターの初期設定をします。
設定完了までしばらく待ちます。
ステップ2:Secretリソース作成
管理ワークステーションにSSHログインします。
Secretのyamlを作成します。
下記のような
secret.yaml
を作成します。指定するアクセスキー、シークレットアクセスキーの取得方法は、API活用ガイド の「認証情報の取得方法」を参照してください。apiVersion: v1 kind: Secret metadata: name: nifcloud-cloud-controller-manager-secret namespace: kube-system stringData: access_key_id: <アクセスキー> secret_access_key: <シークレットアクセスキー>
Secretのyamlの適用します。
作成した
secret.yaml
をクラスターに適用します。$ kubectl apply -f secret.yaml
ステップ3:Helmインストール
https://helm.sh/ja/docs/intro/install/ の手順に従い、管理ワークステーションへHelmをインストールします。
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 \ && chmod 700 get_helm.sh \ && ./get_helm.sh
helm
コマンドが利用可能か確認します。下記のコマンドでバージョン情報が出力されれば、正常にHelmのインストールができています。$ helm version version.BuildInfo{Version:"v3.15.2", GitCommit:"1a500d5625419a524fdae4b33de351cc4f58ec35", GitTreeState:"clean", GoVersion:"go1.22.4"}
ステップ4:CCMインストール
Helmリポジトリにnifcloud-cloud-controller-managerを追加します。
$ helm repo add nifcloud-cloud-controller-manager https://nifcloud.github.io/nifcloud-cloud-controller-manager $ helm repo update
クラスターを作成したリージョンを指定して、CCMをインストールします。 リージョンを指定する名前は、ニフクラAPI(エンドポイント) > コンピューティング を参照してください。
$ helm upgrade --install nifcloud-cloud-controller-manager nifcloud-cloud-controller-manager/nifcloud-cloud-controller-manager \ --namespace kube-system \ --set nifcloud.region=<リージョン> \ --set nifcloud.accessKeyId.secretName=nifcloud-cloud-controller-manager-secret \ --set nifcloud.accessKeyId.key=access_key_id \ --set nifcloud.secretAccessKey.secretName=nifcloud-cloud-controller-manager-secret \ --set nifcloud.secretAccessKey.key=secret_access_key
ステップ5:Deploymentの作成
アプリケーション用Deploymentのyaml作成します。
下記のような
deployment.yaml
を作成します。下記の例は「Hello Kubernetes!」を返却するだけのシンプルなアプリケーションです。apiVersion: apps/v1 kind: Deployment metadata: name: hello spec: selector: matchLabels: run: hello replicas: 3 template: metadata: labels: run: hello spec: containers: - name: hello image: gcr.io/google-samples/node-hello:1.0 ports: - containerPort: 8080
Deploymentのyamlを適用します。
作成した
deployment.yaml
をクラスターに適用します。$ kubectl apply -f deployment.yaml
Podの動作を確認します。
下記で適用したアプリケーションのPodのSTAUSが、Runningになることを確認します。
$ kubectl get pod NAME READY STATUS RESTARTS AGE hello-5c74f54cf7-89hbh 1/1 Running 0 39s hello-5c74f54cf7-lrj9x 1/1 Running 0 39s hello-5c74f54cf7-zxf9g 1/1 Running 0 39s
ステップ6:Serviceの作成
type: LoadBalancer Serviceのyamlを作成します。
アプリケーションに対してロードバランサーを作成するために、下記のような
load-balancer.yaml
を作成します。apiVersion: v1 kind: Service metadata: name: hellolb labels: run: hello spec: type: LoadBalancer ports: - port: 80 protocol: TCP targetPort: 8080 name: http selector: run: hello
Serviceのyamlを適用します。
作成した
load-balancer.yaml
を適用します。適用すると、設定内容に従ってロードバランサー(L4)が作成されます。ロードバランサー(L4)は、別途料金が発生しますのでご注意ください。$ kubectl apply -f load-balancer.yaml
Serviceを確認します。
下記で作成したロードバランサーの情報が確認できます。EXTERNAL-IPに表示されるIP(例ではx.x.x.x)がロードバランサーのIPです。
$ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hellolb LoadBalancer 10.102.213.44 x.x.x.x 80:30374/TCP 5m kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 1h
ステップ7:Serviceにアクセス
ステップ6で作成したロードバランサーのIPに接続すると、作成したアプリケーションからレスポンスが返却されます。
$ curl http://x.x.x.x Hello Kubernetes!