ここでは、ServiceAccount トークンを使用したマネージド Kubernetes クラスターへのアクセス方法を解説します。

このタスクについて

手順

  1. 以下のコマンドを実行して、API サーバーイントラネットエンドポイントを取得してください:
    $ kubectl get endpoints kubernetes
  2. "kubernetes-public-service.yaml" という名称のファイルを作成し、 Step 1 で取得したイントラネットエンドポイントのパラメーター ip を設定します。
    kind: Service
    apiVersion: v1
    metadata:
      name: kubernetes-public
    spec:
      type: LoadBalancer
      ports:
      - name: https
        port: 443
        protocol: TCP
        targetPort: 6443
    ---
    apiVersion: v1
    kind: Endpoints
    metadata:
      name: kubernetes-public
      namespace: default
    subsets:
    - addresses:
      - ip: <API Service address>  # このパラメーターには Step 1 で取得したイントラネットエンドポイントを設定してください。
      ports:
      - name: https
        port: 6443
        protocol: TCP
  3. 以下のコマンドを実行し、API サーバーインターネットエンドポイントをデプロイします:
    $ kubectl apply -f kubernetes-public-service.yaml
  4. 以下のコマンドを実行し、インターネット SLB アドレス EXTERNAL-IP を取得します:
    $ kubectl get service name
    コマンドでのパラメーター とStep 2 で作成した "kubernetes-public-service.yaml" でのパラメーター は同じ値である必要があります。 このページの例では、このパラメーターを kubernetes-public にセットします。
  5. 以下のコマンドを実行し、 ServiceAccount の 対応するシークレットを参照します (このページの例では、パラメーター 名前空間 を "default" と設定しています):
    $ kubectl get secret --namespace=namespace
  6. 以下のコマンドを実行し、トークンを取得します:
    $ kubectl get secret -n --namespace=namespace -o jsonpath={.data.token} | base64 -d
    このコマンドでのパラメーター 名前空間 と Step 5 でのパラメーター 名前空間 は同じ値である必要があります。
  7. 以下のコマンドを実行し、マネージド Kubernetes クラスターへアクセスします:
    $ curl -k -H 'Authorization: Bearer token' https://service-ip
    • token の値は Step 6 で取得したトークンの値です。
    • service-ip の値は Step 4 で取得したインターネット SLB アドレスであり、EXTERNAL-IP となります。

タスクの結果

このコマンドを実行後、以下のメッセージが表示され、クラスターへの接続が行われていることがわかります。