設定ファイルの雛形がyamlで提供されることが多くなりました。
これまでは、提供される雛形の書き換えが必要な箇所をsedで書き換えていましたが、yqを使ったほうが良さそうです。
例 aws-auth-cm.yaml
AWS EKSのワーカーノードをAWSマネージメントコンソールでセットアップする手順では、aws-auth-cm.yamlをダウンロードしてdata.mapRoles
のrolearn
にワーカーノードのインスタンスロールの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