Uncategorizedソフトウェア

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
タイトルとURLをコピーしました