ksaitoの日記

日々試したことの覚え書き

yamlの書き換え

設定ファイルの雛形がyamlで提供されることが多くなりました。

これまでは、提供される雛形の書き換えが必要な箇所をsedで書き換えていましたが、yqを使ったほうが良さそうです。

aws-auth-cm.yaml

AWS EKSのワーカーノードをAWSマネージメントコンソールでセットアップする手順では、aws-auth-cm.yamlをダウンロードしてdata.mapRolesrolearnにワーカーノードのインスタンスロールのARNを設定する必要があります。

下記のようにすることでAWSが提供するテンプレートから直接、必要な設定を作ることができます。

$ curl -s curl -o aws-auth-cm.yaml https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-02-11/aws-auth-cm.yaml | yq -r -c '.data.mapRoles' | yq -y '(.[] | .rolearn)="arn:aaa/bbb"' > mapRoles
$ cat mapRoles 
- rolearn: arn:aaa/bbb
  username: system:node:{{EC2PrivateDNSName}}
  groups:
  - system:bootstrappers
  - system:nodes

あとは、これをデプロイするだけです。

$ kubectl --namespace=kube-system create configmap aws-auth --from-file=mapRoles 
configmap/aws-auth created
$ kubectl --namespace=kube-system get configmaps aws-auth -o yaml
apiVersion: v1
data:
  mapRoles: |
    - rolearn: arn:aaa/bbb
      username: system:node:{{EC2PrivateDNSName}}
      groups:
      - system:bootstrappers
      - system:nodes
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system