Hexadite/acs-keyvault-agentを試す必要があり、2時間を使ってしまったので、その過程で発生した AKS 関連のデバッグのためのコマンド等を自分のためにメモしておきたい。

代表的なデバッグコマンド

Pod のログを見る

kubectl logs <Pod name>

Pod の詳細を見る

ちなみに他のリソースを見たい場合も、Pod 部分を変えればよい

kubectl describe pod <PodName>

k8s クラスターのイベントを見る

Podのログで分からないケースでもこちらで分かる場合もあり。

kubectl get events

コンテナにログイン

kubectl exec -it <Pod Name> -c <Container Name> /bin/bash

Initialize Container のログ

Pod にコンテナが二つあるケースと同じ

kubectl logs <Pod name> -c <Initialize Container name> 

Service Principal の取得

AKS をデプロイすると、どの Service Principal だったか忘れる場合がある。 Service Principal は各nodeの/ect/kubernetes/azure.json の下に配置している。であるので、次のような、yamlを作ってデプロイして、ログインするとよい。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test-sp
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: keyvault
    spec:
      containers:
      - image: alpine:latest
        name: test-app
        command: ["/bin/sh", "-c", "--"]
        args: ["while true; do sleep 5; done;"]
        volumeMounts:
        - name: host-sp
          mountPath: /host/azure.json
          readOnly: true
      volumes:
      - name: host-sp
        hostPath:
          # this file contains the cluster service-principal, it exists on every node by default
          path: /etc/kubernetes/azure.json
          type: File

これを作って、下記のようにすれば、どの Service Principal だったかわかります。

kubectl create -f some.yaml
kubectl exec -it <podname> /bin/bash
# cat /host/azure.json

ちなみに、上記のリポジトリは、Azure keyVault にサービスプリンシパルを渡すことなく、KeyVault からSecretsを引っ張ってくれて、volume 経由でアクセスできるようにするものです。

$ kubectl exec -ti test-keyvault-f849dd45c-2bcgc -c test-app /bin/sh
/ # cat /secrets/secrets/hello
world
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.