とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

OpenShiftのOperatorを利用してArgo CDを導入する

OpenShiftにはOperatorという仕組みがあり、デフォルトで導入されています。これにより、コンテナベースで様々なアプリケーションサービスを簡単に導入できます。今回はそのOperatorを使って、GitOpsツールの一つであるArgo CDを導入してみました。

Argo CDは過去の記事で、Kubernetesベースで動かす方法についてはご紹介済みですが、これをあえてOpenShiftで動かす場合の利点はなんでしょうか。

OpenShiftとKubernetes

Kubernetesはオープンソースのコンテナオーケストレーションツールです。 クラウドのマネージドKubernetesを使えば、クラウドのさまざまな機能を使ってアプリケーションをコンテナーで実行できると思います。 Kubernetesはオープンソースで開発されており、さまざまな環境に導入して利用できます。 しかし、Kubernetesはコンテナの実行基盤とコンテナクラスターを提供するのが主であり、それ以外の部分はAPIだけを提供して外部のソフトウェアに依存する形になります。具体的にいうと、ストレージを提供する機能、コンテナで動くアプリケーションに外部ネットワークからアクセスする機能(IPアドレスベース、FQDNアドレスベース)などはKubernetes本体の機能には含まれません。 この部分はクラウドの機能を使って実現する形になりますが、オンプレのKubernetesでは他の手段でそれらを実現する必要があります。

そもそもクラウドのマネージドKubernetes以外の方法でKubernetesクラスターを導入するには、コンテナの実行を行うコンテナランタイムソフトウェア、具体的に言うと、Containerd、CRI-O、古くから利用しているユーザーの場合はDockerを使っている方もいるかもしれませんが、これらがまず必要になります。この後なんらかのKubernetesインストールツールを使ってKubernetesクラスターをインストールするわけですが、ツールによっては対応するバージョンのコンテナランタイムソフトウェアを導入する必要が出てきますし、ソフトウェアは日々バグや脆弱性が発見され、それに対応するソフトウェアアップデートも定期的に必要になってきます。それだけではなく、一般的なOSを使っている場合はそれ以外のアップデートも必要になりますし、クラスター稼働中もKubernetes関連のパッケージのアップデートは定期的にパッチ適用する必要もあるなど、DIYでKubernetesクラスターを構築、運用している場合は色々考えなければならない点が非常に多いのです*1

一方OpenShiftも、コンテナーを実行するバックエンドにKubernetesを使っていますが、「OpenShift = Kubernetes」ではありません。 OpenShiftはインストールからOpenShift基盤のメンテナンス、コンテナを使ったアプリケーションオーケストレーションに加えて、Kubernetesの機能に含まれない部分を補ってくれるソフトウェアの集合体と言うのが、私が思うOpenShiftです。

OpenShiftのインストールについてはそのうち取り上げたいと思いますが、今回はそんなOpenShiftでGitOpsツールのArgo CDを動かしてみます。 OpenShift自身にもCI/CDをフォローするような機能がありますが、今回はそれを使わずにOpenShift Operatorを使ってArgo CDを動かしてみます。

Argo CD Operatorを探してインストールする

OpenShiftに管理者アカウントでログインしてOperatorHubを開き、Argo CD Operatorを探してインストールします。インストールは特に難しいことはなくて、画面の指示に従っていくだけですぐ終わります。

インストール済みのOperatorの中にArgo CD Operatorがあるのでそれをクリックして、提供されるAPIの中から「Argo CD」を選び、「インスタンスの作成」を実行します。こちらも画面の指示に従っていくだけですぐ終わります。

Argo CDにアクセスする

Argo CDへのアクセスURLはOpenShiftのRoute機能で払い出されます。ログインするにはユーザーとパスワードを入力します。 ユーザーはデフォルトユーザーとしてadminが用意されており、パスワードは自動生成になっています。図のように「ワークロード > シークレット」から「argocd」をキーワードに検索すれば、admin.passwordが見つかるはずです。これをパスワードとして入力すればログインできます。

アクセスURLは「ネットワーク > Routes」から「argocd」をキーワードに検索すれば、Argo CD ServerへのアクセスURLが見つかると思います。

ログイン画面でユーザー名と調べたパスワードを入力。

ログインしたら、あとはツールを使ってGitOpsを実現するだけです。

まとめ

オンプレK8sでArgo CDを使うのと比べると、やはりラクですね。Argo CD Serverをデプロイするのも簡単ですし、サービスとしてアドレスの払い出しも自動で、そのまま使える環境があっという間に用意できるのは流石だと思いました。

OpenShiftはバージョン4でアーキテクチャーが大きく変わってインストール方法が複雑になったのもあり少し苦手意識を感じていたのですが、もともとあったインストール方法*2のほかに、SNO(Single Node OpenShift)やAssisted Installer、Agent-based installerなどが増えました。SNO(Single Node OpenShift)やAssisted Installerは「console.redhat.com」をブラウザーで開いて、画面の指示に従っていくとクラスターを簡単に構築できて、苦手意識のあった私でもデプロイできました*3

rheb.hatenablog.com

手持ちの環境で動かしてみるなら、OpenShift Localというものもあります。利用にはRed Hatアカウントが必要です*4。最近のバージョンでOpenShiftも動かせるようになりましたので、ちょっとOpenShiftを試してみるのもやりやすくなりました。OpenShift LocalはPodman Desktopからもデプロイできますが、CLIを使ってLinuxホストで実行する場合は、おおよそ次のような設定をしてデプロイすればうまく動作します*5

//設定など
crc config set preset openshift
crc config set cpus 8
crc config set memory 30720
//各種環境準備
crc setup
//クラスターの起動
crc start -p ~/pull-secret

OpenShiftを試す環境が簡単に用意できるようになったので、OpenShiftについてそろそろ本腰をいれて学んで行かなければなあなどと思っています。 公式のドキュメント、Red Hatさんが配布しているRed Hat OpenShift 4入門と最近本も買ったので、ちょっと頑張ろうと思います。

*1:細かいことは今回触れませんが、一般的にはコンテナはカーネルを共有するために、アプリケーションとカーネルの定期的なメンテナンスは必須です

*2:IPIとUPI

*3:機能を有効にするとそれに必要なサーバーのスペックが変化するので、それを満たす環境を用意すれば良いといったイメージ

*4:無料のアカウントで十分

*5:32GB以上メモリーが実装されたホストで実行した方が現実的です