Container

KubernetesのRESTAPIを叩く!

2019/02/09

エンタープライズ向けのサービスのインフラにkubernetesを使っています。
そのサービスの中で、あるPodからPodを作成する必要が出てきました。
AdminPodがkubernetesのMasterサーバのAPIを叩くと、同じNamespaceに”CreatedPod1”ができるといったイメージです。

ゴール

RBAC認証を設定して、ポッド内からmasterのAPIを叩いて同じNamespace内にPodを作成する。

前提

kubernetesのクラスタを物理マシンに構築済み
構築していない方はこちらを参考に
ansibleでkubernetes環境の構築 1
ansibleでkubernetes環境の構築 2

説明しないこと

kubernetesの使い方
kubernetesの基本的なサービスの説明(Podとはなんぞや。みたいな)

環境

物理マシン
Ubuntu18.04
kubernetes 1.10

必要知識

RBACとは

RBAC(Role-based access control)とは、役割ベースのアクセス制御機能のことです。 kubernetesのRBACリソースは4つのリソースがあります。
Role、ClusterRole、RoleBinding、ClusterRoleBinding。 RoleとClusterRoleは権限の設定を行って、RoleBindingとClusterRoleBindingはどのRole/ClusterRoleをどのServiceAcctountに紐付けるかを定義するためのリソースになります。 RBACについては下記の記事が非常に参考になりました。
https://qiita.com/kawasima/items/8dd7eda743f2fdcad78e

やっていく

ServiceAccountとRoleとRoleBindingを作成

createEnv.yamlというyamlファイルを作成します。
内容は、admin-saというServiceAccountをtestnsというNamespaceに作成します。
admin-roleで権限の設定を行い、admin-rolebindingでadmin-saとadmin-roleを紐づけます。
 
上記のyamlファイルを実行します。
これでRBAC周りの設定は終わりです。

AdiminPodの作成

次に、AdminPodを作成します。
deploymentのspecのserviceAccountNameで先程作成したadmin-saを指定します。
createAdminPod.yaml
これでAdminPodの作成が完了しました。

AdminPodからcurlでRESTAPI叩く

Deploymentを作成するために、AdminPodからcurlでRESTAPIにアクセスします。
Podにはenvironmentがあらかじめ設定されているので、こちらを使います。

下準備

最後のコマンドで、"ok"が返ってきたらOKです!

curlでDeploymentを作成する

curlコマンドを実行して、Deploymentを作成します。

curlでDeploymentを削除する

もちろん削除もできます!

参考サイト

APIのDocumentはここにまとまってます! いつもyamlで書いてるので、ツールを使ってjsonに変換しました!
http://phiary.me/yaml2json/
以上です!

Docker,Kubernetesについてもっと知りたい方はココナラからご連絡ください!


 

-Container
-

Translate »