KubernetesDevOpsお久しぶりです。@mosuke5です。ようにkubectlを使うことがまず多いのかなと思います。自分もそのようにデプロイすることがおおいです。今日はAnsibleを用いてKubernetes上のリソースを管理することを試してみたいと思います。KubernetesモジュールAnsibleにはKubernetes上のリソースを操作するためのモジュールが用意されています。Documentation似たモジュールにkubernetesというのがあるのですが、こちらはDepricatedになっており、Ansible2.9以降で削除される予定とのことなので、上のものを利用しましょう。AnsibleでKubernetes上のリソースを管理するそれでは早速k8sモジュールを使って行きたいと思います。このモジュールではいくつかrequirementがあります。内部ではopenshiftのpythonライブラリを利用しているようなので忘れずインストールしましょう。openshift認証の方法も一通り用意されています。基本的にAnsibleを実行する端末でkubeconfigなりtokenを使ってkubectlが使える環境であれば問題ないです。内部的にはkubectlを使うわけではないですが、認証の方法は同じです。試すまずはスタンダードにansibleのtaskに直接リソース情報を書いてみます。基本的にはresource_definitionの部分にmanifestのyamlが入るイメージです。この程度の量なら問題ないですが、行数が増えてくるとだいぶ辛いですね。{}既存のmanifestファイルを利用する上の方法では、辛いケースも多く出てくると思います。書いてあるmanifestもあることも多いと思いますので、既存のmanifestファイルから読みたいです。このようにファイルから読み出すことももちろん可能です。./templates/nginx-from-file.ymlは通常通りのmanifestファイルです。./templates/nginx-from-file.ymlTemplateを使ってmanifestを生成して利用するmanifestファイルをそのまま利用するのであればAnsibleを使うメリットは少なくなってしまうかなと思います。AnsibleではJinja2を使ったテンプレートの機能があるのでこれを活用しない手はありません。Nginxのデプロイメントのレプリカ数を変数にしてmanifestファイルをテンプレート化して使ってみます。}}"./templates/nginx-from-template.yml.j2内で変数展開などが可能。環境ごとでの(例えばProductionとTest環境)とで挙動や値を変えることももちろん可能です。Ansibleで管理するメリットについて考えるそれではAnsibleを使ってKubernetesを管理するメリットについてもう少し考えてみたいと思います。基本的にAnsibleの機能をどう活かすかというところにつきるわけですが、どんな活用法があるでしょうか。Template機能を利用できる上の例でも見てきましたが、Template機能を使えることはまず1つメリットとして考えられると思います。Helmなど他のツールでもKubernetesのmanifestのテンプレート化などは可能ですが、Ansibleでも同様に可能です。AnsibleではJinja2のテンプレートエンジンを利用していますが、変数展開はもちろんif文なども利用でき活用の幅は大きいと思います。ansible-vaultを利用してシークレット情報の管理ができるAnsibleにはシークレット情報を暗号化できるansible-vaultという機能・コマンドがあります。こちらを使うことで、Kubernetesのsecretリソースの管理にも活用できる点は良いポイントかもしれません。credential情報をvar_fileとして記述しansible-vaultで暗号化して保存しておくとします。するとKubernetesのSecretを作る際に下記のように展開して作成することも可能です。他の作業の流れに組み込みやすいAnsibleはもとはサーバのプロビジョニングツールとしての位置づけが強いツールですが、今となっては今回のKubernetesやクラウドサービスなど様々なツールのプロビジョニングに活用されています。そのため、他のツールやサーバ上の管理の流れと一部としてKubernetesの制御しやすいのは特徴的なポイントです。Kubernetes上にリソースをデプロイ後に、DNSの設定を追加・変更するなどのKubernetes以外の操作と組み合わせしやすいかと思います。まとめAnsibleを使って、Kubernetes上のリソースに対する操作をやってみました。Ansibleという使い慣れているツールで、Templateやvaultの機能を利用できるのは良いポイントと感じました。実際の運用に組み込めるか、採用するかどうかはいろいろ考えてみないとわかりませんが、選択肢の1つとしてありかなと現時点では思っています。過去に書いた関連情報を掲載しておきます。(2020/01/22)「LeanとDevOpsの科学」を読んで。Shopを使ったマイクロサービス体験のハンズオン「捉」2019年振り返り「LeanとDevOpsの科学」を読んで。