このブログを検索

この記事の内容は、個人の見解、検証の範囲のものであり、誤りがある可能性があります。
個人の責任において情報活用をお願いします。


ラベル SNT の投稿を表示しています。 すべての投稿を表示
ラベル SNT の投稿を表示しています。 すべての投稿を表示

2023年8月31日木曜日

Rancherでkubernetesの管理をしてみる 第5回 RancharからPodとServiceを作って外部から接続してみる

今回は、RancherからPodやServiceを作って外部からのアクセスをできるようにしてみたいと思います。
事前準備として、KubernetesにはMetalLBを構築してServiceでタイプLoadBarancerを作成した際に、IPアドレスを払い出してくれるようにしてあります。

早速、今回の作業用として新しく名前空間demoを作成するところから開始していきたいところですが、Rancherではプロジェクトという単位で管理ができるのでこれから作成する名前空間を管理するプロジェクトを作成したいと思います。
『Create Project』から新しくプロジェクトを作っていきましょう
プロジェクト名demoを設定し、せっかくなので前に作ったユーザーもアクセスできるようにしてみます。
これは名前空間ではなく、Rancher上の設定になりますので実機の方ではまだ変化はありません。
(一応、新しいリソースでProjectとかないか確認しましたが、見当たらなかったのでRancher側だけのはず・・・)
表示が見づらくなるので、作成したProject:demoだけ表示するように上部のプルダウンから切り替えます。
ここから『Create Namespace』をクリックして名前空間の作成に入ります。
名前空間名にdemoを入力してCreateします。 特にリミットは設定しません。
名前空間demoが作成できたので、実機の方もsshでログインして確認してみます。
続いてPodの作成をしますが、Podから作るのではなくDeploymentを使用して作ってみましょう。
『Workload』を展開し、『Deployments』から『Create』をクリックします。
ここで使用するイメージはデモでよく使われているkuardをお借りします。
先ほど作成した名前空間を指定し、Deploymentsの名前を設定し、レプリカ数はとりあえず1にしておきます。
このアプリケーションはポート番号8080を使うので『Add Port』をクリックします。
ここで一緒に外部と接続するためのリソースのServiceを作成することができるようなので、コンテナが待ち受けるポート8080とプロトコル、外部から待ち受けるポート80を設定します。
PodとServiceを紐付けるためにラベルが必要なので『pod』に表示を切り替えてラベルの設定をしましょう。
手動で設定かなと思ったら自動で入ってましたのでこれを使ってみることにしました。
この辺は普段yamlを書いている人なら使いたい値だけ入れればいいのですが、何も知らない人が使ってもさっぱりわからないと思うのでKubernetesの経験者が扱うツールなのだなぁと実感しますね。
『Create』から作成します。
作成を実行すると以下のように、DeploymentsとPodにそれぞれリソースが作成されます。
作成したら実機を見てみましょう。
それぞれリソースが作成されていますね。
Podにはラベルが付与されています。
ServiceにはPodに付与されたラベルがSELECTORにセットされています。
では、ちゃんと接続できるかEXTERNAL-IPに表示されているIPへブラウザからアクセスしてみます。
ちゃんと動いていてくれていますね。
動くかどうか若干不安ではあったんですが問題がないようでほっとしました。
結構素直に動いてくれてありがたいです。
私は正直もうyamlを書くことの方に慣れてしまったのでyamlを書いたほうがしっくりくる体質になっているのですが、GUIで完結できそうなのはいろんな人が使う上ではいいのかなと思います。

今回は以上です。

参考情報
https://github.com/kubernetes-up-and-running/kuard

2023年7月31日月曜日

Rancharでkubernetesの管理をしてみる 第4回 制限付き管理者を確認してみる

今回は、新しくユーザーを作成して「制限付き管理者」の権限を与えてみたいと思います。
早速管理者権限のユーザーでログインして、新規ユーザーuser02を作っていきましょう。
作成が終わったらログアウトしてuser02としてログインします。
おや、特にメンバーに追加した覚えはないですが kubernetesクラスターが見えていますね。
念のためにこのクラスターのメンバーを確認してみましょう、制限付きとはいえ管理者なので自動で追加されているかもしれませんしね。
と、思いましたが個別に追加はされていなかった。
もともと存在しているDefault Admin が何かいい感じにしてくれてるのかもしれません。
今はそういうものかと思っておきましょう。
コマンドも実行可能ですね。
クラスターに対して操作可能な内容も確認していってみましょう。
一画面に収まらなかったですが、見覚えのあるリソース名が色々確認できます。
「Pods」からは各名前空間に作成されているPodが一覧で確認できます。
これは、結構見やすくていいですね。
「Create」があるのでもしかしてここからPodが作成できるのでしょうか・・・
できるみたいですね、これはすごい。
yamlを書かなくてもPod作れちゃうんですね。
テストでPodを一つ作ってみましょうか。
作成できたみたいです。
実際にクラスタノードの方にアクセスしてkubectl getを実行してみましょう。
付与されているIPアドレスからGUI操作で作成したPodと判断できます。
いやー、すごいですねこれは。
最後に何が制限されているのかというところを確認して今回は終わろうと思います。
管理者の権限でログインした場合と見比べてみたところ、クラスターの『local』と『Extensions』だけが項目としては出てこないようです。
メンバーの作成や削除といったユーザー管理も制限付き管理者で作成が行えるようなので、ほとんどのことは制限付き管理者でやれてしまいそうですね。
では、次回もよろしくお願いします。

2023年6月30日金曜日

Rancharでkubernetesの管理をしてみる 第3回 デフォルトで作成したユーザーは思っていた以上にできることが少なかった・・・

今回は、前回作成したデフォルト設定のユーザーが管理者権限と比べてどんなことが制限されているのか見ていきたいと思います。
まずログインしてみると、メンバー追加したクラスターだけが確認できます。
では、このクラスターへ実行可能な操作を確認してみましょう。


とはいえ、この辺の操作は問題なくできると思っています。
kubectlshellでコマンドが実行できることは確認できました。


新しく名前空間を作成し、ローカルのYAMLファイルを読み込ませてPodやServiceを作成してみましょう。


あ、名前空間作るための権限ついてないっぽいw
うーん、defaultの名前空間だったらリソースは作れるのか・・・?
『Import YAML』ボタンからYAMLファイルを読み込ませてみましょう


『Read from File』から読み込ませるYAMLファイルを選びます。


内容が表示されたら『Import』で・・・えぇ・・・


あー、ダメなんですね・・・
なるほど、デフォルト状態では操作はできないみたいですね。
defaultの名前空間でも、このユーザーは作成しようとしたリソースの操作を許可されてないと怒られてしまったようです。 ユーザー作ったり権限与えたりとかその辺ができないとイメージしていましたが、考えが甘かったようです。


せっかくなので、ほかにもできないことを調べたいと思います。
メニュー画面からやはりユーザーに対する管理、クラスタに対しての管理もできないようです。


この辺はイメージ通りではありました。
ちょっと思った通りではなくて思いのほかショックを受けてしまいましたが、よい確認ができたと思っておきます。

次回は、どうやったら今回できなかったPodの作成などができるのかについて調べてみたいと思います。

2023年5月26日金曜日

Rancharでkubernetesの管理をしてみる 第2回 ユーザーの作成とクラスタメンバーへの追加

前回、Rancharを構築してKubernetesを管理下に置いてみました。
今回は、作業用のユーザーをデフォルトの設定で作成してクラスタが操作できるようにクラスタのメンバーに追加する作業を行ってみます。

まずは、ユーザーの作成を行います。
「CONFIGURATION」から「Users&Authentication」を選択します
「Create」からユーザーの作成を行います。
作成自体はユーザー名を入れて、パスワードを設定し「Create」をするだけで可能です。
今回は使用しませんでしたが、チェックボックスで次回ログイン時にパスワードを変更させたり、ランダムでパスワードを生成したりもできるようですね。
細かい権限設定もできるようですが、それはまた今度調べたいと思います。
今回は「user01」を作成してみます。
作成したuser01で再ログインしてみます。
作っただけではログインしても以下のように何も操作できない状態となります。
では、このユーザーにアクセスを行わせるクラスタへ権限の付与を行いましょう。
adminでログインしなおします。
ユーザーに操作させたいKubernetesクラスタをクリックします。
「Cluster Members」を表示し「Add」をクリックします。
「Select Member」で追加したいユーザー検索して設定します。
今回は先ほど作成した「user01」になります。
user01がクラスタのメンバーとして追加されました。
この状態で改めてログインすると、先ほど権限をくっつけたk8s-1クラスタが表示されました。
今回はここまでにします。
次回は、管理者権限と比べてどんなことが制限されているのか見ていきたいと思います。

2023年4月28日金曜日

Rancharでkubernetesの管理をしてみる 第1回 『Rancharの構築とkubernetesの追加』

kubernetesでいろいろと構築することを過去にやってきましたので、今回からは管理系のお勉強をしたいと思います。
早速導入ですが、これはDockerのコマンド一発でできてしまいました。
世の中便利になりましたね・・・

公式ドキュメント:https://www.rancher.co.jp/quick-start/

ただ、それを知っているかどうかとそれを見つけられるかどうかなど、いろいろなものがありすぎて複雑だなぁと感じる私は地球の重力に魂を引かれているのでしょう。
Dockerの入っているマシンを用意したら以下のコマンドを実行して下さい。
このあとkubernetesのクラスタを追加するので、各ノードと通信できるマシンという点だけ注意してください。
# docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher
これだけで作業完了です。
コンテナ起動時にホストへのhttps通信をコンテナに転送するように設定されているので、ブラウザでアクセス可能ですがそのままだとパスワードがわからないので確認しておきましょう。

パスワードの確認はコンテナのlogから確認するので、コンテナのIDを確認します。
# sudo docker ps
CONTAINER ID   IMAGE             COMMAND           CREATED          STATUS          PORTS                                                                      NAMES
977d197a93b5   rancher/rancher   "entrypoint.sh"   41 seconds ago   Up 35 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   frosty_meninsky
この「CONTAINER ID」を使ってログを表示するとその中にパスワードが入っているので以下のコマンドでそれを抽出します。
# docker logs 977d197a93b5 2>&1 | grep "Bootstrap Passwor ログイン後は、パスワードの再設定を行います。
12文字以上という結構長いパスワード要求でちょっと困りました(個人的にはNSX以外で初めてでしたね。)

ログインすると画面はこんな感じです。
ここからkubernetesの構築を行うこともできるようなのですが、既存のkubernetesをこのRancharに追加してみたいと思います。
クラスターのページから、『Inport Existing』を実行します。
『Import any Kubernetes cluster』の『Generic』をクリックします。
登録するクラスタの名前を設定します。
ここでは k8s-1 と設定しました『Create』をクリックします。
そうすると、クラスターの追加を行う Kubectl のコマンドが表示されます。
証明書の問題が発生した場合は2つ目のコマンドを使うように案内されるため、そちらを使いましょう
実際に実行してみると、以下のものが作られます。
clusterrole.rbac.authorization.k8s.io/proxy-clusterrole-kubeapiserver created
clusterrolebinding.rbac.authorization.k8s.io/proxy-role-binding-kubernetes-master created
namespace/cattle-system created
serviceaccount/cattle created
clusterrolebinding.rbac.authorization.k8s.io/cattle-admin-binding created
secret/cattle-credentials-7e1f7cb created
clusterrole.rbac.authorization.k8s.io/cattle-admin created
Warning: spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].key: beta.kubernetes.io/os is deprecated since v1.14; use "kubernetes.io/os" instead
deployment.apps/cattle-cluster-agent created
正常に展開できた場合はしばらくして、RancherのUIに戻ると『Active』と追加スタクラスターで表示されます。
Rancherのホームを表示すると、クラスターの右端のボタンからなんとkubectlを実行可能なshellが起動可能です。

先ほどクラスターを追加した際に作成された名前空間『cattle-system』にあるpodを確認してみましょう。
こんな感じで複数k8sクラスターがあってもここからk8sの切り替えてkubectlコマンドが実行できるので楽でいいですね。