以下をもとにKubernetes The Hard Wayの事前準備をします。
https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/docs
まずは、作業PCにGCPのSDKとkubectlとcfsslを入れようと思います。
以下2つを対象としています。
- 01-prerequisites.md
- 02-client-tools.md
前提として、以下のような条件で進めます。
- 事前に、GCPのアカウントを作成しておきましょう
- 本手順はMacOSで動作確認しています
- GCPでKubernetesを動かせればいい!が目標です
公式ドキュメントを見ながら進めます。
https://cloud.google.com/sdk/docs/downloads-versioned-archives
アーカイブをダウンロードする
ターミナルで以下のコマンドを実行します。
getconf LONG_BIT
64
が結果で返ってきたので、macOS 64 ビット(x86_64)
をダウンロードします。
ダウンロード完了したら、アーカイブを展開しておきます。
インストールスクリプトを実行する
ターミナルで、先ほどインストールしたディレクトリまで移動します。 移動後、インストールスクリプトを実行します。
cd google-cloud-sdk
sh install.sh
SDKを初期化する
インストールスクリプト実行後、SDKを初期化します。
./google-cloud-sdk/bin/gcloud init
コマンド実行後、ブラウザが起動して、以下のような表示がされたらGoogle Cloud Platform リソースにアクセスする権限が付与されます。
コマンドプロンプトに移動すると、以下のようになっていました。
You are logged in as: [sample@gmail.com]. Pick cloud project to use: [1] api-project-274393732609 [2] api-project-527724764603 [3] clean-abode-282305 [4] keen-autumn-668 [5] Create a new project Please enter numeric choice or text value (must exactly match list item):
プロジェクト作った覚えないけど、いくつかできてる、、 今回はとりあえず5
を選択してみます。
Updates are available for some Cloud SDK components. To install them, please run: $ gcloud components update
ひとまず、SDKの初期化はできました。
設定状況を確認するコマンドがあるみたいなので、現状どんな設定がされているか確認しておきます。
- 認証情報がローカル システムに保存されているアカウントのリストを表示する
gcloud auth list
- 有効な SDK 構成のプロパティのリストを表示する
gcloud config list
gcloudコマンドのパスを通しておく
~/.bash_profile
に~/.bash_profile
のパスを追加します。
追加したら、source
で変更を反映させます。
vi ~/.bash_profile source ~/.bash_profile
Cloud SDK ツールの承認
GCPにアクセスするには、Google Cloud SDK ツールを承認する必要があります。
アカウントには、2つのタイプがあります。
- ユーザアカウント
- エンドユーザーが自分のアプリケーションに対して、直接認証するための Google アカウント
- 以下の場合に使用する
- Cloud SDK ツールをコマンドラインで使用する
- スクリプト化して 1 台のマシンで使用する
- サービスアカウント
- GCP プロジェクトに関連付けられている Google アカウント
- 特定のユーザではない
- 以下の場合に使用する
- Cloud SDK を本番環境へのマシンのデプロイの一環としてインストールして設定する
- すべてのユーザーが root にアクセスできる Google Compute Engine 仮想マシン インスタンスで使用する
ユーザアカウントを使用して承認する
gcloud auth login で、ユーザー アカウントの承認のみを行います。
gcloud auth login
コマンド実行後、ブラウザが起動するので、Googleアカウントでログインします。
ターミナルに戻って、gcloud auth list
を実行して、先ほどログインしたGoogleアカウントが表示されたら完了です。
gcloud auth list
ACTIVE ACCOUNT
* sample@gmail.com
サービス アカウントを使用して承認する
Google Cloud Console の [サービス アカウント] ページに移動します。
[サービス アカウントを作成] をクリックします。
[操作] -> [鍵を作成] -> JSONを指定して[作成]をクリックします。
しばらくすると、認証キー(JSON)がダウンロードされます。
ターミナルを開いて、ダウンロードされた認証キーのあるディレクトリ、または任意のディレクトリに認証キーを移動しておきます。
先ほどダウンロードした認証キーを指定して、gcloud auth activate-service-account
を実行します。
gcloud auth activate-service-account [ACCOUNT] --key-file=[KEY_FILE]
[ACCOUNT]はGoogleアカウントのメールアドレス、[KEY_FILE]はダウンロードした認証キーを指定します。
gcloud auth list
を実行して、先ほどログインしたGoogleアカウントが表示されたら完了です。
gcloud auth list
ACTIVE ACCOUNT
* sample@gmail.com
実行後、gcloud CLIに認証キーが保存されるので、[KEY_FILE]で指定した認証キーは削除しておきましょう。
プロキシ / ファイアウォールの構成
今回は、プロキシがある環境で作業していないので、スキップします。
ドキュメントは以下になります。
https://cloud.google.com/sdk/docs/proxy-settings
SDK 構成の管理
ここでは設定しない
SDKコンポーネントの管理
コンポーネントとは
公式より
コンポーネントとは、個別にインストール可能な SDK の構成要素です。コマンドライン ツール(gcloud、bq、gsutil)、アルファ版 / ベータ版リリースレベルの gcloud CLI コマンドや、SDK の特定のツールとの依存関係を含むパッケージなどがあります。
最も一般的なコンポーネントは、デフォルトでインストールされます。gcloud alpha または gcloud beta コマンドをインタラクティブに実行する際に、alpha コンポーネントや beta コンポーネントがインストールされていない場合、インストールするかどうか尋ねるメッセージが gcloud CLI に表示されます。 インストールを選択すると、コンポーネントがインストールされて、コマンドが実行されます。その他のコンポーネントは、それらを要求するコマンドを実行すると、gcloud CLI によってオンデマンドでインストールされます。
Cloud SDK のコンポーネントの管理
必要に応じて、Google Cloud SDK のコンポーネントの一覧表示、インストール、更新、削除を行うことができます。
コンポーネントの一覧を表示する
使用可能なコンポーネントと現在インストールされているコンポーネントのリストを表示するには、gcloud components list
を実行します。
$ gcloud components list
Your current Cloud SDK version is: 298.0.0
The latest available version is: 301.0.0
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Components │
├──────────────────┬──────────────────────────────────────────────────────┬──────────────────────────┬──────────┤
│ Status │ Name │ ID │ Size │
├──────────────────┼──────────────────────────────────────────────────────┼──────────────────────────┼──────────┤
│ Update Available │ Cloud SDK Core Libraries │ core │ 14.9 MiB │
│ Not Installed │ App Engine Go Extensions │ app-engine-go │ 4.8 MiB │
│ Not Installed │ Appctl │ appctl │ 18.5 MiB │
│ Not Installed │ Cloud Bigtable Command Line Tool │ cbt │ 7.6 MiB │
│ Not Installed │ Cloud Bigtable Emulator │ bigtable │ 6.6 MiB │
│ Not Installed │ Cloud Datalab Command Line Tool │ datalab │ < 1 MiB │
│ Not Installed │ Cloud Datastore Emulator │ cloud-datastore-emulator │ 18.4 MiB │
│ Not Installed │ Cloud Firestore Emulator │ cloud-firestore-emulator │ 40.8 MiB │
│ Not Installed │ Cloud Pub/Sub Emulator │ pubsub-emulator │ 34.9 MiB │
│ Not Installed │ Cloud SQL Proxy │ cloud_sql_proxy │ 3.7 MiB │
│ Not Installed │ Emulator Reverse Proxy │ emulator-reverse-proxy │ 14.5 MiB │
│ Not Installed │ Google Cloud Build Local Builder │ cloud-build-local │ 5.9 MiB │
│ Not Installed │ Google Container Registry's Docker credential helper │ docker-credential-gcr │ 1.8 MiB │
│ Not Installed │ Kind │ kind │ 4.4 MiB │
│ Not Installed │ Kustomize │ kustomize │ 22.8 MiB │
│ Not Installed │ Minikube │ minikube │ 23.1 MiB │
│ Not Installed │ Skaffold │ skaffold │ 15.3 MiB │
│ Not Installed │ anthos-auth │ anthos-auth │ 15.9 MiB │
│ Not Installed │ gcloud Alpha Commands │ alpha │ < 1 MiB │
│ Not Installed │ gcloud Beta Commands │ beta │ < 1 MiB │
│ Not Installed │ gcloud app Java Extensions │ app-engine-java │ 61.0 MiB │
│ Not Installed │ gcloud app PHP Extensions │ app-engine-php │ 21.9 MiB │
│ Not Installed │ gcloud app Python Extensions │ app-engine-python │ 6.1 MiB │
│ Not Installed │ gcloud app Python Extensions (Extra Libraries) │ app-engine-python-extras │ 27.1 MiB │
│ Not Installed │ kpt │ kpt │ 20.9 MiB │
│ Not Installed │ kubectl │ kubectl │ < 1 MiB │
│ Installed │ BigQuery Command Line Tool │ bq │ < 1 MiB │
│ Installed │ Cloud Storage Command Line Tool │ gsutil │ 3.5 MiB │
└──────────────────┴──────────────────────────────────────────────────────┴──────────────────────────┴──────────┘
To install or remove components at your current SDK version [298.0.0], run:
$ gcloud components install COMPONENT_ID
$ gcloud components remove COMPONENT_ID
To update your SDK installation to the latest version [301.0.0], run:
$ gcloud components update
あー、なんかいっぱい出てきた。
コンポーネントをインストールする
現在インストールされている Cloud SDK のバージョンのコンポーネントをインストールするには、gcloud components install
を実行します。
試しに、kubectl
をインストールしてみます。
$ gcloud components install kubectl
Your current Cloud SDK version is: 298.0.0
Installing components from version: 298.0.0
ERROR: (gcloud.components.install) Your current working directory is inside the Cloud SDK install root: /Users/user_name/Downloads/google-cloud-sdk. In order to perform this update, run the command from outside of this directory.
おっと、エラーが出てしまいました。
注意: インストールを変更するときは、ターミナルの現在のディレクトリを SDK のインストール ディレクトリ google-cloud-sdk の外部にする必要があります。
これか、ディレクトリをgoogle-cloud-sdkの外に移動して再度実行します。
$ gcloud components install kubectl
Your current Cloud SDK version is: 298.0.0
Installing components from version: 298.0.0
┌─────────────────────────────────────────────────────────────────────┐
│ These components will be installed. │
├─────────────────────┬────────────────────────┬──────────────────────┤
│ Name │ Version │ Size │
├─────────────────────┼────────────────────────┼──────────────────────┤
│ kubectl │ 2020.05.01 │ < 1 MiB │
│ kubectl │ 1.15.11 │ 74.7 MiB │
└─────────────────────┴────────────────────────┴──────────────────────┘
For the latest full release notes, please visit:
https://cloud.google.com/sdk/release_notes
╔════════════════════════════════════════════════════════════╗
╠═ Creating update staging area ═╣
╠════════════════════════════════════════════════════════════╣
╠═ Installing: kubectl ═╣
╠════════════════════════════════════════════════════════════╣
╠═ Installing: kubectl ═╣
╠════════════════════════════════════════════════════════════╣
╠═ Creating backup and activating new installation ═╣
╚════════════════════════════════════════════════════════════╝
Performing post processing steps...done.
Update done!
WARNING: There are other instances of Google Cloud Platform tools on your system PATH.
Please remove the following to avoid confusion or accidental invocation:
/Applications/Docker.app/Contents/Resources/bin/kubectl
ワーニング出てるけど、気にせず gcloud components list
してみます。
$ gcloud components list
Your current Cloud SDK version is: 298.0.0
The latest available version is: 301.0.0
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Components │
├──────────────────┬──────────────────────────────────────────────────────┬──────────────────────────┬──────────┤
│ Status │ Name │ ID │ Size │
├──────────────────┼──────────────────────────────────────────────────────┼──────────────────────────┼──────────┤
│ Update Available │ Cloud SDK Core Libraries │ core │ 14.9 MiB │
│ Not Installed │ App Engine Go Extensions │ app-engine-go │ 4.8 MiB │
│ Not Installed │ Appctl │ appctl │ 18.5 MiB │
│ Not Installed │ Cloud Bigtable Command Line Tool │ cbt │ 7.6 MiB │
│ Not Installed │ Cloud Bigtable Emulator │ bigtable │ 6.6 MiB │
│ Not Installed │ Cloud Datalab Command Line Tool │ datalab │ < 1 MiB │
│ Not Installed │ Cloud Datastore Emulator │ cloud-datastore-emulator │ 18.4 MiB │
│ Not Installed │ Cloud Firestore Emulator │ cloud-firestore-emulator │ 40.8 MiB │
│ Not Installed │ Cloud Pub/Sub Emulator │ pubsub-emulator │ 34.9 MiB │
│ Not Installed │ Cloud SQL Proxy │ cloud_sql_proxy │ 3.7 MiB │
│ Not Installed │ Emulator Reverse Proxy │ emulator-reverse-proxy │ 14.5 MiB │
│ Not Installed │ Google Cloud Build Local Builder │ cloud-build-local │ 5.9 MiB │
│ Not Installed │ Google Container Registry's Docker credential helper │ docker-credential-gcr │ 1.8 MiB │
│ Not Installed │ Kind │ kind │ 4.4 MiB │
│ Not Installed │ Kustomize │ kustomize │ 22.8 MiB │
│ Not Installed │ Minikube │ minikube │ 23.1 MiB │
│ Not Installed │ Skaffold │ skaffold │ 15.3 MiB │
│ Not Installed │ anthos-auth │ anthos-auth │ 15.9 MiB │
│ Not Installed │ gcloud Alpha Commands │ alpha │ < 1 MiB │
│ Not Installed │ gcloud Beta Commands │ beta │ < 1 MiB │
│ Not Installed │ gcloud app Java Extensions │ app-engine-java │ 61.0 MiB │
│ Not Installed │ gcloud app PHP Extensions │ app-engine-php │ 21.9 MiB │
│ Not Installed │ gcloud app Python Extensions │ app-engine-python │ 6.1 MiB │
│ Not Installed │ gcloud app Python Extensions (Extra Libraries) │ app-engine-python-extras │ 27.1 MiB │
│ Not Installed │ kpt │ kpt │ 20.9 MiB │
│ Installed │ BigQuery Command Line Tool │ bq │ < 1 MiB │
│ Installed │ Cloud Storage Command Line Tool │ gsutil │ 3.5 MiB │
│ Installed │ kubectl │ kubectl │ < 1 MiB │
└──────────────────┴──────────────────────────────────────────────────────┴──────────────────────────┴──────────┘
To install or remove components at your current SDK version [298.0.0], run:
$ gcloud components install COMPONENT_ID
$ gcloud components remove COMPONENT_ID
To update your SDK installation to the latest version [301.0.0], run:
$ gcloud components update
kubectl が Installed になりました。
コンポーネントを更新する
インストールされている Cloud SDK のすべてのコンポーネントを、使用可能な最新バージョンに更新するには、gcloud components update
コマンドを使用します。
コンポーネントを削除する
コンポーネントを削除するには、ID を指定して gcloud components remove
コマンドを実行します。
CFSSLをインストールする
コマンドラインユーティリティを提供するために使用されるPKIインフラストラクチャおよびTLS証明書を生成します。
$ curl -o cfssl https://storage.googleapis.com/kubernetes-the-hard-way/cfssl/1.4.1/darwin/cfssl
$ curl -o cfssljson https://storage.googleapis.com/kubernetes-the-hard-way/cfssl/1.4.1/darwin/cfssljson
$ chmod +x cfssl cfssljson
$ sudo mv cfssl cfssljson /usr/local/bin/
バージョンが表示されたらインストール完了です。
$ cfssl version
Version: 1.4.1
Runtime: go1.12.12
$ cfssljson --version
Version: 1.4.1
Runtime: go1.12.12
kubectlをインストールする
kubectlコマンドラインユーティリティは、Kubernetes API Serverと対話するために使用されます。kubectl公式リリースバイナリからダウンロードしてインストールします。
$ curl -o kubectl https://storage.googleapis.com/kubernetes-release/release/v1.18.6/bin/darwin/amd64/kubectl
$ chmod +x kubectl
$ sudo mv kubectl /usr/local/bin/
バージョンが表示されたらインストール完了です。
$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.9", GitCommit:"a17149e1a189050796ced469dbd78d380f2ed5ef", GitTreeState:"clean", BuildDate:"2020-04-16T11:44:51Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"darwin/amd64"}
これで事前準備は完了です。
これから実際にGCPでKubernetesをやっていきます。