AWS Lambdaでkubectlを使用する方法について

この記事を書いたチーム:chocochip
AWS Lambdaでkubectlを使用する方法について

目的

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

AWS Lambdaからkubectlを使用したかったため
ここに手順をまとめておきます。

前提

  • AWSアカウントを取得済みであること
  • Dockerが使用可能な環境であること
  • AWSCLIが使用可能な環境であること

 

作成手順

以下はAWSコンソール上で操作します。

【1】Lambda Layerのzipファイルを格納するS3を作成します。

①S3バケットを作成します。

S3バケット名:dev-lambda-layer-tmp
バケット名以外は全てデフォルトのままにしました。

以下はDocker、AWSCLIが動作する端末上で操作します。

【2】Lambda Layerを作成します。

①Layer用のkubectlをダウンロードするDockerfileを作成します。

作成ファイル:Dockerfile

 

 

※今回はバージョン「1.23.0」としました。

②Dockerfileを実行し、Layer用のzipを取り出すシェルを作成します。

作成ファイル:build.sh

 

③シェルに実行権限を付与します。

 

④シェルを実行します。

「>> layer.zip is ready」と表示され、「layer.zip」が作成されていれば成功です。

⑤AWSCLIを使用して「layer.zip」をS3にアップロードします。

ファイルがS3にアップロードされたことを確認します。

⑥AWSCLIを使用してLambda Layerを作成します。

AWSコンソールでlambdalayerの画面で作成されていることを確認します。
上記の画面でバージョンが「3」となっていますが、事前時やり直ししたため
バージョンが上がっています。
初回はバージョン「1」となります。

【3】Lambdaを作成します。

①AWSコンソールでLambdaを作成します。

関数名:dev-kubectl-lambda
ランタイム:Amazon Linux 2 でユーザー独自のブートストラップを提供する

上記以外はデフォルトのまま作成しました。

②LambdaのLayerを設定します。

③lambdaのコードタブで「bootstrap.sample」を「bootstrap」にファイル名を変更します。

④lambdaのコードタブで「hello.sh.sample」を「hello.sh」にファイル名を変更します。

⑤「bootstrap」を編集します。

12行目~14行目を追記します。

 

⑥編集後の保存して「Deploy」を行います。

⑦Lambdaのテストを作成します。

イベント名:test
上記以外の項目はデフォルトのままとしました。

⑧テストを実行します。

ログにkubectlのバージョンが表示されれば成功です。
Client Version: version.info {Major:”1″, Minor:”23″, GitVersion:”v1.23.0″~

※ここには記載していませんが、configファイルを作成して「bootstrap」で
「export KUBECONFIG=config」を追記することでkubernetesの操作も可能になります。

以上

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス