0
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?

nerdctlでCalicoを動かす(環境構築編)

Last updated at Posted at 2024-08-17

はじめに

はじめまして。普段はシステムソフトウェアを研究している修士学生です。
この記事は、自分の研究でCalicoを改変する予定なので、その実行環境を作ったときの副産物みたいなものです。興味があれば見ていってください。

きっかけ

研究で使うので、Calicoプラグインを動かしたいんだけど、Kubernetesで用いることがほとんどで、nerdctlでCalico動かすブログなどを見つけらませんでした。
なら自分で動かせばいいじゃない。

注意書き

  • 実行環境に関して、長々と書いていますが、ansibleでも用意してあるのでめんどくさい方はそちらをご利用ください…。

  • まだ勉強中なため、至らぬ点もあるかと思いますが、その際は指摘などしていただけると助かります。

Calicoのアーキテクチャ

さて、まずは動かすにあたってCalicoに必要なものを列挙します。
calico_architecture.png

  • nerdctl:コンテナランタイムやCalico Pluginに対して命令
  • コンテナランタイム:コンテナの実行や削除(今回はcontainerd+runc)
  • Calico Plugin:CNIプラグイン
  • calicoctl:calico-nodeを組み立てるやつ
  • etcd:設定を持つデータストア
  • calico-node:Calicoを動かす色々をもってる

こんなところです。色々必要なんだなーという印象を受けました。

実行環境

今回はvagreant+virtualboxで2個ノードを立てています。
実行環境はホストとVMともにUbuntu22.04です。

Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "generic/ubuntu2204"
  config.ssh.insert_key = false
  config.ssh.private_key_path = "~/.vagrant.d/insecure_private_key"
  config.vm.provision "file", source: "~/.vagrant.d/insecure_private_key", destination: "/home/vagrant/.ssh/id_rsa"
  config.vm.provision "shell", privileged: false, inline: <<-SHELL
    chmod 600 $HOME/.ssh/id_rsa
  SHELL

  config.vm.define "calico-node1" do |node|
    node.vm.network :private_network, ip: "192.168.22.10"
    node.vm.network :forwarded_port, guest: 22, host: 2210, host_ip: '127.0.0.1', id: "ssh"
  end

  config.vm.define "calico-node2" do |node|
    node.vm.network :private_network, ip: "192.168.22.11"
    node.vm.network :forwarded_port, guest: 22, host: 2211, host_ip: '127.0.0.1', id: "ssh"
  end
end

コンテナイメージはこちらを利用しています。
普通のUbuntu22.04でもいいんですが、ネットワークの確認用にipだとかpingだとかがほしいので。
ということで、ポン

host
$ vagrant up
$ vagrant status
Current machine states:

calico-node1              running (virtualbox)
calico-node2              running (virtualbox)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.

インストール

バージョンやビルド方法などは個人的な趣味も含まれます。
(普段はFreeBSDを使っているのでGNU makeが好きではないなど)

runc

node1 & node2
$ git clone https://github.com/opencontainers/runc.git -b release-1.0
$ cd ~/runc
$ go build -o ./bin/ .
$ sudo install -o 0 -g 0 bin/runc /usr/local/bin

containerd

node1 & node2
$ git clone https://github.com/containerd/containerd.git -b v1.7.1
$ cd ~/containerd
$ go build -o ./bin/ ./cmd/containerd
$ sudo install -o 0 -g 0 bin/

nerdctl

node1 & node2
$ git clone https://github.com/containerd/nerdctl.git -b release/1.7
$ cd ~/nerdctl
$ go build -o ./bin/ ./cmd/nerdctl
$ sudo install -o 0 -g 0 bin/nerdctl /usr/local/bin

calico plugin

node1 & node2
$ git clone https://github.com/projectcalico/calico.git -b release-v3.28
$ cd ~/calico
$ go build -o ./bin/ ./cni-plugin/cmd/calico
$ sudo mkdir -p /opt/cni/bin
$ sudo install -o 0 -g 0 bin/calico /opt/cni/bin

calico-ipam plugin

node1 & node2
$ cd ~/calico
$ go build -o ./bin/ ./node/cmd/calico-ipam
$ sudo install -o 0 -g 0 bin/calico-ipam /opt/cni/bin

calicoctl

node1 & node2
$ curl -O -L https://github.com/projectcalico/calico/releases/download/v3.28.0/calicoctl-linux-amd64
$ mv calicoctl-linux-amd64 calicoctl
$ sudo install -o 0 g 0 calicoctl /usr/local/bin

docker

calccoctlがdockerコマンドを呼び出すため必要。
ここら辺を参考にインストール。

dockerで入るcontainerd.ioやruncを使っても大丈夫ですが、バージョンなどを合わせたい場合は先ほど入れたcontainedを使うと良いでしょう。

etcd

node1 & node2
$ curl -O -L https://storage.googleapis.com/etcd/v3.5.14/etcd-v3.5.14-linux-amd64.tar.gz
$ tar -xzvf etcd-v3.5.14-linux-amd64.tar.gz
$ sudo install -o 0 -g 0 etcd-v3.5.14-linux-amd64/etcd /usr/local/bin

今回はここまで

長い事色々インストールやらビルドやらして疲れました。あとは実際に動かすところになるので、nerdctlでCalicoを動かす(実行編)でお会いしましょう。

上の方でも触れていますが、ここまでの内容も含めたansibleを用意しているので、めんどくさがりなあなたはそちらを使ってください。

参考文献

0
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
0
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?