はじめに
Operator SDKのインストール時の作業記録。 インストール方法は以下の3つあるが、ここではGitHubのReleaseからのインストールを実施する。
環境
# cat /etc/os-release | grep PRETTY_NAME PRETTY_NAME="Ubuntu 20.04.1 LTS"
事前準備
動作要件としてdockerとkubectlが必要なので、事前に準備しておく。 ここでは詳細は割愛する。
インストール
Operator SDKのWebサイトで示されているインストール手順通りに進める。
(1) バージョンの指定
インストールするバージョンを変数で指定しておく。
$ RELEASE_VERSION=v1.2.0
(2) コマンドのバイナリのダウンロード
コマンドのバイナリをダウンロードする。 コマンドはシングルバイナリになっている。
$ curl -LO https://github.com/operator-framework/operator-sdk/releases/download/${RELEASE_VERSION}/operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu $ curl -LO https://github.com/operator-framework/operator-sdk/releases/download/${RELEASE_VERSION}/ansible-operator-${RELEASE_VERSION}-x86_64-linux-gnu $ curl -LO https://github.com/operator-framework/operator-sdk/releases/download/${RELEASE_VERSION}/helm-operator-${RELEASE_VERSION}-x86_64-linux-gnu
(3) バイナリの検証
まずascファイルをダウンロードする。
$ curl -LO https://github.com/operator-framework/operator-sdk/releases/download/${RELEASE_VERSION}/operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu.asc $ curl -LO https://github.com/operator-framework/operator-sdk/releases/download/${RELEASE_VERSION}/ansible-operator-${RELEASE_VERSION}-x86_64-linux-gnu.asc $ curl -LO https://github.com/operator-framework/operator-sdk/releases/download/${RELEASE_VERSION}/helm-operator-${RELEASE_VERSION}-x86_64-linux-gnu.asc
以下のコマンドを実行することで検証できるが、後述の注意がある。
$ gpg --verify operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu.asc $ gpg --verify ansible-operator-${RELEASE_VERSION}-x86_64-linux-gnu.asc $ gpg --verify helm-operator-${RELEASE_VERSION}-x86_64-linux-gnu.asc
ここで注意点だが、単に上記のコマンドを実行すると、おそらく以下のように検証が失敗する。
$ gpg --verify operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu.asc gpg: 署名されたデータが'operator-sdk-v1.2.0-x86_64-linux-gnu'にあると想定します gpg: 2020年11月11日 08時54分26秒 JSTに施された署名 gpg: RSA鍵0CF50BEE7E4DF6445E08C0EA9AFDE59E90D2B445を使用 gpg: 発行者"joe.lanford@gmail.com" gpg: 署名を検査できません: 公開鍵がありません
その場合は、上記の実行結果の「RSA鍵」の後に表示されている文字列(Key ID)で示される公開鍵を取得する必要がある。 今回の場合は、以下のようにコマンドを実行する。
$ gpg --keyserver keyserver.ubuntu.com --recv-key "0CF50BEE7E4DF6445E08C0EA9AFDE59E90D2B445"
そして、最初に示した検証をやり直してみると、警告付きだが一応は成功する。
$ gpg --verify operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu.asc gpg: 署名されたデータが'operator-sdk-v1.2.0-x86_64-linux-gnu'にあると想定します gpg: 2020年11月11日 08時54分26秒 JSTに施された署名 gpg: RSA鍵0CF50BEE7E4DF6445E08C0EA9AFDE59E90D2B445を使用 gpg: 発行者"joe.lanford@gmail.com" gpg: "Joe Lanford <joe.lanford@gmail.com>"からの正しい署名 [不明の] gpg: *警告*: この鍵は信用できる署名で証明されていません! gpg: この署名が所有者のものかどうかの検証手段がありません。 主鍵フィンガープリント: 0CF5 0BEE 7E4D F644 5E08 C0EA 9AFD E59E 90D2 B445
(4) コマンドの配置
以下のコマンドを実行する。
複雑に見えるが、実行のパーミッションをつけて/usr/local/bin
にコピーしているだけ。
$ chmod +x operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu && sudo mkdir -p /usr/local/bin/ && sudo cp operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu /usr/local/bin/operator-sdk && rm operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu $ chmod +x ansible-operator-${RELEASE_VERSION}-x86_64-linux-gnu && sudo mkdir -p /usr/local/bin/ && sudo cp ansible-operator-${RELEASE_VERSION}-x86_64-linux-gnu /usr/local/bin/ansible-operator && rm ansible-operator-${RELEASE_VERSION}-x86_64-linux-gnu $ chmod +x helm-operator-${RELEASE_VERSION}-x86_64-linux-gnu && sudo mkdir -p /usr/local/bin/ && sudo cp helm-operator-${RELEASE_VERSION}-x86_64-linux-gnu /usr/local/bin/helm-operator && rm helm-operator-${RELEASE_VERSION}-x86_64-linux-gnu
動作確認
各コマンドのバージョンを表示してみる。
$ operator-sdk version operator-sdk version: "v1.2.0", commit: "215fc50b2d4acc7d92b36828f42d7d1ae212015c", kubernetes version: "v1.18.8", go version: "go1.15.3", GOOS: "linux", GOARCH: "amd64" $ ansible-operator version ansible-operator version: "v1.2.0", commit: "215fc50b2d4acc7d92b36828f42d7d1ae212015c", kubernetes version: "v1.18.8", go version: "go1.15.3", GOOS: "linux", GOARCH: "amd64" $ helm-operator version helm-operator version: "v1.2.0", commit: "215fc50b2d4acc7d92b36828f42d7d1ae212015c", kubernetes version: "v1.18.8", go version: "go1.15.3", GOOS: "linux", GOARCH: "amd64"
参考
- Operator SDK Documentation > Installation