GitLab システム管理者 - ハンズオンラボ: GitLab Kubernetes インスタンスの探索
目的
このラボでは、GitLab インスタンスに SSH 接続し、インスタンスで使用可能なさまざまなコマンドラインツールを操作します。これにより、GitLab インストールを操作するさまざまな方法を理解できます。
タスク A. GitLab インスタンスへのアクセス
SSH を使用して GitLab インストールにアクセスします。このクラスの一部として、SSH キーとインスタンス IP が提供されています。提供されたインスタンスは、Kubernetes クラスターへの helm 経由のアクティブな接続を持っています。インスタンスに SSH 接続するには、以下の手順を使用します。
ローカルコンピューターでターミナルウィンドウを開きます。
サーバーの SSH キーファイルが含まれているディレクトリに移動します。
SSH 接続では、プライベートキーファイルに他のユーザーがアクセスできないようにする必要があります。Linux および MacOS では、次のコマンドで設定できます。
chmod 400 <keyfile_name>Windows では、次のコマンドで設定できます。
icacls .\keyname.pem /inheritance:r割り当てられた IP アドレスと SSH キーファイルを使用して、GitLab Omnibus インストールをホストするサーバーにログインします。
ssh -i <keyfile_name> student-user@<vm_ip_address>WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! というエラーが表示された場合は、SSH の known hosts をリセットする必要があるかもしれません。これを行うには、
ssh-keygen -R <vm_ip_address>コマンドを実行してください。Enter キーを押します。
システムに認証警告が表示された場合は、
yesと入力して Enter キーを押します。yes と入力すると、サーバーに接続されます。
タスク B. kubectl の操作
kubectl コマンドラインツールは、GitLab インスタンスのステータスを確認・検証する主な方法の一つです。このセクションでは、GitLab インスタンスのステータスを確認するさまざまな方法を探ります。
インスタンスで
kubectl get podsコマンドを実行します。以下のような出力が表示されます。NAME READY STATUS RESTARTS AGE gitlab-certmanager-7c799d587-9czfz 1/1 Running 0 4m5s gitlab-certmanager-cainjector-9485f8595-976d7 1/1 Running 0 4m3s gitlab-certmanager-webhook-dcf65786c-kfvhg 1/1 Running 0 4m3s gitlab-gitaly-0 1/1 Running 0 4m3s gitlab-gitlab-exporter-76db6c9754-pcscv 1/1 Running 0 4m2s gitlab-gitlab-shell-557686d7fc-x6rhm 1/1 Running 0 4m5s gitlab-issuer-e45fa94-dp584 0/1 Completed 0 4m3s gitlab-kas-5474bdbfdf-p6qw4 1/1 Running 4 (2m59s ago) 4m5s gitlab-kas-5474bdbfdf-pzqwm 1/1 Running 4 (2m57s ago) 3m50s gitlab-migrations-92d5ea2-x6lc5 0/1 Completed 1 4m2s gitlab-minio-5d646cdfb7-cdgw7 1/1 Running 0 4m5s gitlab-minio-create-buckets-5359da5-rccp6 0/1 Completed 0 4m3s gitlab-nginx-ingress-controller-5dd6f5f49-9k2cq 1/1 Running 0 4m5s gitlab-nginx-ingress-controller-5dd6f5f49-dgvft 1/1 Running 0 4m3s gitlab-postgresql-0 2/2 Running 0 4m3s gitlab-prometheus-server-c7f9d89dc-wz48w 2/2 Running 0 4m5s gitlab-redis-master-0 2/2 Running 0 4m3s gitlab-registry-79f74497dd-bk8gw 1/1 Running 0 4m3s gitlab-registry-79f74497dd-g9s84 1/1 Running 0 3m50s gitlab-sidekiq-all-in-1-v2-54dfb45f84-d5gbq 1/1 Running 0 4m2s gitlab-toolbox-9cdd66dc5-pz4gz 1/1 Running 0 4m2s gitlab-webservice-default-67f8cbfd9b-cmn7p 2/2 Running 0 4m3sstatus コマンドにより、サーバー上で実行されている GitLab コンポーネントの概要が表示されます。ここに示されているものとコンポーネント名が異なる場合があります。
次に、特定の Pod の詳細を確認してみましょう。これを行うには、
kubectl describe pod <your-webservice-pod-name>コマンドを実行します。この出力では、webservice Pod に関する詳細情報が表示されます。この出力は、GitLab インスタンスコンポーネントのトラブルシューティングと監視に役立ちます。
タスク C. helm の操作
Kubernetes を操作する場合、管理タスクの多くは helm を通じて実行されます。まず、helm デプロイメントの値を取得し、設定に若干の調整を加えます。
helm の値を取得するには、
helm get values gitlabコマンドを実行します。すべての helm 値の出力が表示されます。helm get values gitlab > values.ymlコマンドを使用してファイルにコピーします。お好みのテキストエディターで
values.ymlファイルを開きます。先頭行に書かれた
USER-SUPPLIED VALUES:を削除します。結果のファイルを保存します。
これらの値が正常にデプロイされることを確認するために、値ファイルをデプロイしてみましょう。これを行うには、
helm upgrade gitlab gitlab/gitlab --version 9.4.3 -f values.ymlコマンドを実行します。このコマンドの実行には数分かかる場合があります。
コマンドが完了したら、
kubectl get podsを実行します。すべての Pod が正常にデプロイを完了していることを確認します。
タスク D. GitLab Rails の操作
GitLab Rails は、Ruby on Rails を通じて GitLab と直接やり取りできるコマンドラインツールです。このツールは、インスタンスエラーのトラブルシューティングと修正に役立ちます。
GitLab Rails にアクセスするには、
kubectl get pods -lapp=toolboxコマンドを実行して toolbox Pod を見つけます。toolbox Pod を使用して、
kubectl exec -it -c toolbox <toolbox-pod-name> -- gitlab-rails consoleコマンドでgitlab-railsのインスタンスを起動します。コマンドが完了したら、
u = User.find_by_username('root')を実行します。このコマンドにより、GitLab でユーザー名が
rootのユーザーを検索し、変数uに格納します。pp u.attributesを使用してユーザーの属性を表示します。pp u.usernameを使用してユーザーのユーザー名を表示します。完了したら、
quitと入力して Rails コンソールを終了します。
ラボガイド完了
このラボ演習を完了しました。このコースの他のラボガイドを参照できます。
ご提案はありますか?
ラボに変更を加えたい場合は、マージリクエストを通じて変更内容を送信してください。
