Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EKSを操作するためのツールをコンテナ化した

Last updated at Posted at 2018-07-25

概要

EKSの使用開始 に従ってセットアップすると、以下の3つをローカルにインストールすることになります。

  • kubectl
  • heptio-authenticator-aws
  • AWS CLI

PCを変えるたびにこれらをセットアップをしないで済むよう、コンテナ化しました。

構築

Dockerイメージ作成

以下のDockerfileを作成します。

FROM alpine:3.8

RUN apk add --no-cache curl python

RUN curl -o /usr/local/bin/kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-06-05/bin/linux/amd64/kubectl \
    && chmod +x /usr/local/bin/kubectl

RUN curl -o /usr/local/bin/heptio-authenticator-aws https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-06-05/bin/linux/amd64/heptio-authenticator-aws \
    && chmod +x /usr/local/bin/heptio-authenticator-aws

RUN curl https://bootstrap.pypa.io/get-pip.py | python \
    && pip install awscli

ENTRYPOINT ["kubectl"]

Dockerイメージをビルドします。

docker build -t eks-kubectl .

コンテナ実行のシェルスクリプト化

eks-kubectl.shというシェルスクリプトを作成します。

#!/bin/bash -eu

IMAGE_NAME=eks-kubectl

HOST_AWS_DIR=`pwd`/.aws
CONTAINER_AWS_DIR=/root/.aws

HOST_KUBE_DIR=`pwd`/.kube
CONTAINER_KUBE_DIR=/root/.kube

docker run \
    --rm \
    -v $HOST_AWS_DIR:$CONTAINER_AWS_DIR \
    -v $HOST_KUBE_DIR:$CONTAINER_KUBE_DIR \
    $IMAGE_NAME \
    $@

パーミッションを変更します。

chmod +x eks-kubectl.sh

動作確認

EKSの使用開始 に従って、EKSを起動します。

任意のディレクトリに .aws/config、.aws/credentials、.kube/config を配置し、そのディレクトリで eks-kubectl.sh を実行します。

例えば、以下のようになります。

$ ./eks-kubectl.sh get node
NAME                                           STATUS    ROLES     AGE       VERSION
ip-192-168-182-25.us-west-2.compute.internal   Ready     <none>    5m        v1.10.3
ip-192-168-231-64.us-west-2.compute.internal   Ready     <none>    5m        v1.10.3
ip-192-168-76-116.us-west-2.compute.internal   Ready     <none>    5m        v1.10.3

まとめ

EKSの操作に必要なコマンドをコンテナ化することができました。
コマンドをコンテナ化することで、ポータビリティが非常に高くなります。
また、.awsや.kubeをボリュームとすることで、今どの環境を操作しているのかも分かりやすくなります。

ソースコードは以下です。
https://github.com/os1ma/eks-sample/tree/master/eks-kubectl

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?