業務で EKS を使用したインフラ構築の案件があった。EKS 自体は他の案件でやったことがあったので今回もおなじように構築しようとしたら、「プロキシ設定しないとインターネットに接続できません。」と言われた。ほぅ、プロキシの設定ってどうやるねん、もっというと、EKS のワーカーノードにプロキシの設定ってどうやんねん、と大変困った。まぁ、ワーカノードってEC2インスタンス群なので、ユーザデータにプロキシ設定書いてあげればいいかって感じだったが、EKS のワーカノード設定画面にユーザデータ設定項目がない!!もしかして、ワーカノードのインスタンにユーザデータの設定って出来ないの?
CloudFormationを使用してワーカノードにユーザデータを設定する
ワーカノードにどうやってユーザデータを設定すればいいかは、そのものずばりでプロキシの設定方法とともに公式ページに記載がある。よくあるケースなのかな?
つまりは CloudFormation を利用してユーザデータを設定するのである。CloudFormation を使用したワーカノードの作成サンプルも提供されているのでそれを参考にしユーザデータの挿入の箇所をプロキシ設定用に変更すればよい。
~~省略~~
InstanceType: !Ref NodeInstanceType
KeyName: !Ref KeyName
SecurityGroups:
- Ref: NodeSecurityGroup
UserData: !Base64
"Fn::Sub": |
Content-Type: multipart/mixed; boundary="==BOUNDARY=="
MIME-Version: 1.0
--==BOUNDARY==
Content-Type: text/cloud-boothook; charset="us-ascii"
#Set the proxy hostname and port
PROXY="proxy.local:3128"
MAC=$(curl -s http://169.254.169.254/latest/meta-data/mac/)
VPC_CIDR=$(curl -s http://169.254.169.254/latest/meta-data/network/interfaces/macs/$MAC/vpc-ipv4-cidr-blocks | xargs | tr ' ' ',')
#Create the docker systemd directory
mkdir -p /etc/systemd/system/docker.service.d
#Configure yum to use the proxy
cloud-init-per instance yum_proxy_config cat << EOF >> /etc/yum.conf
proxy=http://$PROXY
EOF
~~省略~~
CloudFormation 楽しい
実は CloudFormation を触るのは今回が始めてだった。名前と機能は知っていたが覚えることが多そうで学習コストが高めたっだので敬遠していた。今回しかたなく触ってみたのだが、こりゃ便利だわ。各サービスの設定値や依存関係がぱっと見で把握できし、コードで管理しているので、いつ・誰が作成しても同じ構成になる。これからは IaC も勉強しなきゃですな。