1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

NUCで始めるVMware Tanzu - TKGの準備(Bootstrapマシン)

ではお待ちかねのTKG導入編です!さっそくTKGをやってみましょう!

踏み台サーバのデプロイ

Day 12でも少し触れましたが、最初に親ガメ(Bootstrapマシン)が必要です。この環境は、Windows/Mac/Linuxと幅広いOSに対応していて、更にいうとノートPCとかでも全然問題ないのですが、せっかくvSphereを建てたので、踏み台サーバを使って綺麗な状態からインストールを行いたいと思います。

踏み台サーバは、物理NUC側に入れたいと思います。オススメVMはUbuntuです。公式サイトからOVAが配布されてるので、手軽です。「OVFテンプレートのデプロイ」を選んでみます。
スクリーンショット 2020-12-13 0 02 43
1では、20.04 LTS 最新のOVAイメージのパス を指定します。
スクリーンショット 2020-12-13 0 06 22
2では、「bastion01」というサーバ名にして、3では、「192.168.5.13」のリソースを指定しました。
5では、では、リソース節約のため「シンプロビジョニング」にすることを忘れないで下さい。
スクリーンショット 2020-12-13 0 20 40
7では、hostnameをVM名に合わせ、ssh public keyは「~/.ssh/id_rsa.pub」に持っているものを流し込みます。また、Default User's passwordも指定します。
スクリーンショット 2020-12-13 0 23 48
はい、しばらく待つと出来上がり。続いて、HW設定を行います。
スクリーンショット 2020-12-13 0 28 40
CPU:1、「CPUホットアドの有効化」にチェック、「ハードウェアアシストによる〜」にチェック、「メモリホットプラグ」にチェック、ハードディスク30GB、と、変更していきました。
スクリーンショット 2020-12-13 0 35 48
おぉ、めちゃサクッと起動しました!細かいインストールプロセスもありません。
初回は、「ubuntu」ユーザと先ほどのステップで指定したパスワードを指定します。続いて、パスワードの変更を求められます。
スクリーンショット 2020-12-13 0 41 23
パスワード変更後は、先ほど設定したssh keyによってローカルPCのターミナルからログイン可能となります。ついでに、IPも固定アドレスにしちゃいましょう。

踏み台
$ ip a
# 編集対象のインターフェイス名を確認。私の場合は「ens192」だった。
$ sudo vi /etc/netplan/99_config.yaml
# 編集開始。ご自身の環境に合わせて書き換えて下さい
network:
  version: 2
  renderer: networkd
  ethernets:
    ens192:
      dhcp4: false
      dhcp6: false
      addresses: [192.168.5.41/24]
      gateway4: 192.168.5.1
      nameservers:
        addresses: [192.168.5.1, 8.8.8.8, 8.8.4.4]
# 編集ここまで
$ sudo netplan apply
# 設定が反映されると、今までのIPアドレスでは通信できなくなるので、端末が固まる

再び端末を立ち上げて、新しいアドレスに接続してみる

ローカルPC
% ssh ubuntu@192.168.5.41
# ログイン成功! ここから踏み台
$ ip a
# 念のため、意図通りの設定になったか確認

必要コンポーネントのインストール

まずはMy VMwareに行き、以下の2つをダウンロードします。

  • VMware Tanzu Kubernetes Grid CLI for Linux
  • kubectl cluster cli v1.19.3 for Linux (←バージョンはその時による)

落としたものを、踏み台に上げておきましょう。

ローカルPC
$ cd ~/Downloads/
# 自分の環境に合わせてダウンロード先に移動
$ scp kubectl-linux-v1.19.3-vmware.1.gz tkg-linux-amd64-v1.2.1-vmware.1.tar.gz ubuntu@192.168.5.41:~
# 上記のコピー元やコピー先は一例です

TKG CLIのインストール

なお、ここで出てくる「tkg」コマンドは、Cluster APIが持つ「clusterctl」コマンドの拡張です。なので、基本的な使い方やオプションなどは一緒です。また、マニュアルではファイル名を変えて、/usr/local/bin に mv しているが、元のファイル名の情報を残したかったので、ln -s を用いてみました。

踏み台
$ tar zxvf tkg-linux-amd64-v1.2.1-vmware.1.tar.gz
$ ls tkg
# 出力例。tkg以外にも、Carvel Toolsが同梱されていた。
imgpkg-linux-amd64-v0.2.0+vmware.1  kbld-linux-amd64-v0.24.0+vmware.1  ytt-linux-amd64-v0.30.0+vmware.1
kapp-linux-amd64-v0.33.0+vmware.1   tkg-linux-amd64-v1.2.1+vmware.1

# これら、最初のハイフン前までの名前に変更して、/usr/local/binに設置したいので、ワンライナーで書いてみる
$ for I in `ls -1 tkg`; do NAME=`echo $I | awk -F"-" '{print $1}'`; sudo ln -s ~/tkg/$I /usr/local/bin/$NAME; done
$ ls -l /usr/local/bin/
# 出力例
lrwxrwxrwx 1 root root 51 Dec 13 05:25 imgpkg -> /home/ubuntu/tkg/imgpkg-linux-amd64-v0.2.0+vmware.1
lrwxrwxrwx 1 root root 50 Dec 13 05:25 kapp -> /home/ubuntu/tkg/kapp-linux-amd64-v0.33.0+vmware.1
lrwxrwxrwx 1 root root 50 Dec 13 05:25 kbld -> /home/ubuntu/tkg/kbld-linux-amd64-v0.24.0+vmware.1
lrwxrwxrwx 1 root root 48 Dec 13 05:25 tkg -> /home/ubuntu/tkg/tkg-linux-amd64-v1.2.1+vmware.1
lrwxrwxrwx 1 root root 49 Dec 13 05:25 ytt -> /home/ubuntu/tkg/ytt-linux-amd64-v0.30.0+vmware.1

# 動作確認
$ tkg version
Client:
    Version: v1.2.1
    Git commit: 9d15a485f2ccc462622f8df6a81e5fa831c51895

kubectlのインストール

踏み台
$ gunzip kubectl-linux-v1.19.3-vmware.1.gz
$ chmod +x kubectl-linux-v1.19.3-vmware.1
# tkgディレクトリに一緒に入れて置いてみる。
$ mv kubectl-linux-v1.19.3-vmware.1 tkg/
$ sudo ln -s ~/tkg/kubectl-linux-v1.19.3-vmware.1 /usr/local/bin/kubectl
$ ls -l /usr/local/bin/kubectl
# 出力例
lrwxrwxrwx 1 root root 47 Dec 13 05:42 /usr/local/bin/kubectl -> /home/ubuntu/tkg/kubectl-linux-v1.19.3-vmware.1

# 動作確認
$ kubectl version --short
Client Version: v1.19.3+vmware.1
The connection to the server localhost:8080 was refused - did you specify the right host or port?

kubernetesに接続できないエラーが出ているけど、現時点では何も入ってないので、気にしなくて大丈夫。

dockerのインストール

Prerequisitesに書いてある通り、Dockerも必要です。Docker公式通りにやってみます。

踏み台
$ sudo apt-get update
# Reading package lists... Done を確認
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
# 途中、続けていいか聞かれるので、「Y」キーを押す。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# OK を確認
$ sudo apt-key fingerprint 0EBFCD88
# 一つ前で追加したGPG公開鍵が確認できることを確認。以下、出力例
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
# Reading package lists... Done を確認
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
# 途中、続けていいか聞かれるので、「Y」キーを押す。

# 動作確認
$ docker -v
Docker version 20.10.0, build 7287ab3

(2020/12/13追記)
dockerの権限が足りなかったので、以下を実行してあげる

$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json: dial unix /var/run/docker.sock: connect: permission denied
# こんな感じのエラーが出ていたので、dockerグループにubuntuユーザを追加してあげる
$ sudo gpasswd -a $(whoami) docker
Adding user ubuntu to group docker
# docker.sockをdockerグループにする
$ sudo chgrp docker /var/run/docker.sock
# この後ログインし直したら正常に実行できた
$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

TKG CLIの初期化

踏み台
$ tkg get mc
 MANAGEMENT-CLUSTER-NAME  CONTEXT-NAME  STATUS

なお、ここで指定している「mc」とは、「management-cluster」のショートハンドです。毎回フルネームで打つと大変なので、覚えておくと良いでしょう。
ここで、初めてtkgコマンドを打ったことが重要で、初回の動作時に、~/.tkg フォルダが生成され、TKGの設定ファイルが格納されます。これらのファイルを編集することで、特定のTKGやkubernetesバージョンのみを利用することが可能となります。

  • ~/.tkg/config.yaml:クラスタ設定ファイル
  • ~/.tkg/bom/bom-*.yaml:TKCが必要とするパッケージ情報が格納される。

長くなってきたので、本日はここで終わります。お疲れさまでした!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?