コンテナレジストリへイメージをpush
コンテナレジストリが [HOSTNAME]/[PROJECT-ID]/[IMAGE]の場合
# gcpの認証ヘルパーを使う
gcloud auth configure-docker
# イメージ作成: docker build -t sample-image -f Dockerfile .
docker build -t [IMAGE]:[TAG] -f [FILE_NAME] [CONTEXT]
# 作成したイメージからコンテナリポジトリのタグ名(イメージ名)で作る
docker tag [SOURCE_IMAGE] [HOSTNAME]/[PROJECT-ID]/[IMAGE]
# または
docker tag [SOURCE_IMAGE] [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
# 作成したイメージをプッシュする
docker push [HOSTNAME]/[PROJECT-ID]/[IMAGE]
# または
docker push [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
# イメージ一覧取得
gcloud container images list
# イメージのタグ情報を確認する
gcloud container images list-tags [HOSTNAME]/[PROJECT-ID]/[IMAGE]
コンテナレジストリのイメージをpull
docker pull [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
# または
docker pull [HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]
詳しくは「GCP-イメージのpushとpull」を参照してください。
k8sからコンテナを作成する
kubectlクライアントをインストール
gcloud
コンポーネントからインストール
# コンポーネント一覧取得
gcloud components list
# kubectlをインストール(更新)
sudo gcloud components update kubectl
-
~/.zshrc
または~/.bashrc
に下記を追加
~/.zshrc
export PATH=$PATH:/usr/local/share/google/google-cloud-sdk/bin/
- 反映
# ~/.bashrc の場合は source ~/.bashrc
source ~/.zshrc
対象のクラスタを設定
# クラスタ一覧取得
gcloud container clusters list
# 一覧からクラスタをセット
gcloud container clusters get-credentials [CLUSTER_NAME] --zone=[ZONE_NAME]
# クラスタが切り替わったことを確認する
gcloud container clusters list
- namespaceをセット
# namespaceを取得
kubectl get namespaces
# なければ作成
kubectl create namespace [NAME_SPACE]
リソースオブジェクトを作成
これによりリソースオブジェクトがコンテナを作成してくれます
kubectl apply -f FILE_PATH
よくつかうコマンド
GKEを利用する際にはクラスタを指定したり、名前空間を利用したり、シークレットを利用したり、Podの状態を監視します。
そのようなよく使うコマンドを書きにまとめてみました。
# クラスタ関連
gcloud container clusters list
gcloud container clusters get-credentials [CLUSTER_NAME] --zone=[ZONE_NAME]
# 名前空間関連
kubestl get namespaces
kubestl get namespaces [NAME_SPACE]
kubectl create namespace [NAME_SPACE]
kubectl delete namespace [NAME_SPACE]
kubestl describe namespaces [NAME_SPACE]
# リソース生成
kubectl apply -f FILE_PATH
# リソース削除
kubectl delete -f FILE_PATH
# 状態を確認する
kubectl get [RESOURCE_TYPE] -n [NAME_SPACE]
# リソースを削除
kubectl delete [RESOURCE_TYPE] -n [NAME_SPACE]
# リソースの詳細情報を取得
kubectl describe [RESOURCE_TYPE] -n [NAME_SPACE]
# Podのログを取得する
kubectl get [POD_NAME] -n [NAME_SPACE]
# イベントを取得する
kubectl get ev -n [NAME_SPACE]
# シークレット関連
kubctl create secret [TYPE] [NAME] [DATA] -n [NAME_SPACE]
kubctl create secret generic my-secret-key --from_file=キー名=my-secret-key.json -n my-space
kubectl get secrets -n [NAME_SPACE]
kubectl delete secret [NAME] -n [NAME_SPACE]
kubectl describe secret [NAME] -n [NAME_SPACE]