@@ -20,6 +20,7 @@ import (
2020 "fmt"
2121 "github.com/aws/aws-sdk-go/aws"
2222 "github.com/aws/aws-sdk-go/aws/awserr"
23+ "github.com/aws/aws-sdk-go/service/ec2"
2324 "github.com/aws/aws-sdk-go/service/s3"
2425 "github.com/aws/aws-sdk-go/service/s3/s3manager"
2526 "github.com/aws/aws-sdk-go/service/sts"
@@ -69,6 +70,7 @@ type Config struct {
6970 STS * sts.STS
7071 S3Uploader * s3manager.Uploader
7172 clusterConfigPath string
73+ EC2 * ec2.EC2
7274}
7375
7476func (c * Config ) Create (ctx context.Context , substrate * v1alpha1.Substrate ) (reconcile.Result , error ) {
@@ -95,7 +97,7 @@ func (c *Config) Create(ctx context.Context, substrate *v1alpha1.Substrate) (rec
9597 if err := c .generateStaticPodManifests (cfg , substrate ); err != nil {
9698 return reconcile.Result {}, fmt .Errorf ("generating manifests, %w" , err )
9799 }
98- if err := c .kubeletSystemService (cfg , substrate ); err != nil {
100+ if err := c .kubeletSystemService (ctx , cfg , substrate ); err != nil {
99101 return reconcile.Result {}, fmt .Errorf ("generating kubelet service config, %w" , err )
100102 }
101103 // deploy aws IAM authenticator
@@ -224,7 +226,15 @@ func (c *Config) ensureBucket(ctx context.Context, substrate *v1alpha1.Substrate
224226 }
225227 return nil
226228}
227- func (c * Config ) kubeletSystemService (cfg * kubeadm.InitConfiguration , substrate * v1alpha1.Substrate ) error {
229+ func (c * Config ) kubeletSystemService (ctx context.Context , cfg * kubeadm.InitConfiguration , substrate * v1alpha1.Substrate ) error {
230+ instancesOutput , err := c .EC2 .DescribeInstancesWithContext (ctx , & ec2.DescribeInstancesInput {
231+ InstanceIds : []* string {substrate .Status .Infrastructure .MasterInstanceID }})
232+ if err != nil {
233+ return fmt .Errorf ("describing ec2 instance, %w" , err )
234+ }
235+ if len (instancesOutput .Reservations ) != 1 || len (instancesOutput .Reservations [0 ].Instances ) != 1 {
236+ return fmt .Errorf ("finding the ec2 instance" )
237+ }
228238 localDir := path .Join (c .clusterConfigPath , aws .StringValue (discovery .Name (substrate )), kubeletSystemdPath )
229239 if _ , err := os .Stat (localDir ); err != nil {
230240 if ! os .IsNotExist (err ) {
@@ -239,8 +249,8 @@ After=docker.service iptables-restore.service
239249Requires=docker.service
240250
241251[Service]
242- ExecStart=/usr/bin/kubelet --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --hostname-override=%s --pod-manifest-path=/etc/kubernetes/manifests --kubeconfig=/etc/kubernetes/kubelet.conf --cgroup-driver=systemd --container-runtime=docker --network-plugin=cni --pod-infra-container-image=public.ecr.aws/eks-distro/kubernetes/pause:v1.18.9-eks-1-18-1 --node-labels=kit.aws/substrate=control-plane
243- Restart=always` , substrate .Name )), 0644 ); err != nil {
252+ ExecStart=/usr/bin/kubelet --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --hostname-override=%s --pod-manifest-path=/etc/kubernetes/manifests --kubeconfig=/etc/kubernetes/kubelet.conf --cgroup-driver=systemd --container-runtime=docker --network-plugin=cni --pod-infra-container-image=public.ecr.aws/eks-distro/kubernetes/pause:v1.18.9-eks-1-18-1 --provider-id=aws:///%s/%s --node-labels=kit.aws/substrate=control-plane
253+ Restart=always` , substrate .Name , aws . StringValue ( instancesOutput . Reservations [ 0 ]. Instances [ 0 ]. Placement . AvailabilityZone ), aws . StringValue ( substrate . Status . Infrastructure . MasterInstanceID ) )), 0644 ); err != nil {
244254 return fmt .Errorf ("writing kubelet configuration, %w" , err )
245255 }
246256 return nil
0 commit comments