こんにちは、サイオステクノロジーの前田です。コンテナの利用が増えてきております。docker等を利用している方も増えています。自分一人の作業や、小さい検証やローカルで作業する時は悩まみませんが、実際運用するときを考えるとどうしたらいいかという悩みは多くあります。Dockerを利用する場合はデータの保存や、コンテナが停止したときの考慮について悩みます。Kubernetsを使用する場合は、冗長構成とサーバの台数、監視ツールやGUIの設定と、カスタマイズの自由度の高さと考慮点の多さで悩んでしまいます。
そんな時に初心者の操作に易しく、費用にも優しいOKDがあります。OKDはkuberentesをコンテナプラットフォーム(CP)として利用するために欲しい機能を提供してくれます。本日はOKDの説明とAWS上に簡易構築する方法についてお話ししていきます。
OKDとは
Red Hat OpenShift Kubernetes プラットフォームのコミュニティ・ディストリビューションとなります。インストーラを利用してKubernetesクラスタを構築することができます。クラウドやベアメタルVM等いろいろな環境に構築できます。特にクラウドプラットフォームへのクイックインストールならば、簡単にインストールができます。
Kubernetesの運用機能(冗長性、モニタリング、OS)
Kubernetesで冗長とセキュリティを考慮する場合は多くのことを考える必要性があります。OKDは冗長性を考えたクラスター構築、OSはKubernetsを考慮したFedoraCoreOSです。さらに開発者と管理者の分離やモニタリング機能や管理コンソールも存在しており運用しやすい形式になっております。
OKDとOpenShiftの関連性
OKDとOpenShift Container Platform(OCP)はアップストリーム・ダウンストリームという関係ではありません。現在のOpenShift4環境では兄弟関係に近い類似品となっています。OpenShiftを利用する際はサブスクリプションを購入して利用する必要がありますが、OKDのライセンスは「Apache License 2.0」のため、商用利用で費用が発生しません。しかしRedHatの商用サポートは受けられないため自己管理で利用する必要があります。Kubernetesを1から利用してカスタマイズするよりも、OKDは気軽に安心して利用できます。
構成情報
OKDはカスタマイズでいろいろな設計ができます。今回はAWS上のOKDのクイックインストールの構成を記載します。
下記はAWS での Red Hat OpenShiftの記事に存在するOCPの構成図です。OKDはOCPと同様の構成になります。
OKDはAWSのいろいろな種類のリソースを利用しています。OKDクイックインストールで確認しておく箇所は下記になります。リソースが追加で必要な場合は、構築後の設定変更で対応可能です。
本記事の構成情報
- クラスター情報
- OKD 主機能範囲
- Master Node 3台: EC2+EBS インスタンスtype m6g.xlarge
- worker Node 3台: EC2+EBS インスタンスtype m6g.large
- OKD 補助機能範囲
- Load Balancer: ELB
- DNS: Route 53
- ネットワーク: VPS
- 動的コンテナストレージ: EBS
- OKD 主機能範囲
- 構築クライアントOS
- CentOS Stream
- 構成バージョン
- OKD 4.10
構築概要
OKDの構築概要を記載します。
- 事前準備
- DNSのゾーン設定
- IAMユーザ作成
- クライアントツールの設定
- 構築作業
- 設定ファイル作成
- 自動構築実行
- 正常性確認
- OKD確認
- AWS確認
OKDのドキュメントの情報で不明点がわからない場合は、OCPのドキュメント等を参考にします。
詳細構築作業
■事前準備:DNSのゾーン設定 Route53の確認
OKDクラスターを構築する環境でDNSのドメインを管理している必要があります。AWSのRoute53の設定を確認します。
管理しているzoneをdig等で確認して、外部から参照できることを確認します。
dig cpawstest.ps.staging-test.xxxx.jp
■事前準備:IAMユーザの作成
OKDの構築ではIAMユーザを利用してデプロイしていきます。IAMユーザには『AdministratorAccess 』のポリシーを設定します。
※OKDのIAMユーザのAWSリソース毎のポリシー設定は推奨されていません。
クライアント端末からAWS CLIでアクセスができるように設定します。
aws route53 list-hosted-zones-by-name
ゾーン情報が表示されるのを確認します。
■事前準備:クライアントツールの設定
クライアントの『oc』と『kubectl』とokd用のインストーラ『openshift-install』をダウンロードし設定していきます。
OKDのインストーラーをGithubからダウンロードします。
- ダウンロード例
- インストーラーとしてopenshift-install-linux-4.10.0-0.okd-2022-05-07-021833.tar.gzをダウンロード
- クライアントとしてopenshift-client-linux-4.10.0-0.okd-2022-05-07-021833.tar.gzをダウンロード
ファイルを解凍します。
tar zxvf openshift-client-linux-*.tar.gz tar zxvf openshift-install-linux-*.tar.gz
クライアントツールの設定をします。
mv kubectl oc /usr/local/bin/
クライアントツールの動作確認をします。
kubectl version oc version ./openshift-install version
■構築作業:設定ファイル作成
OKDの設定ファイルの作成します。この設定ではクラスターの基盤環境先、基本ドメイン、クラスター名、リージョンの設定を行います。
下記コマンドを入力して対話型で設定します。
./openshift-install create install-config --dir=./config
設定1 SSHファイルの設定(AWSのOCPにはローカル環境からSSHできないため設定はなくてもよい)します。
? SSH Public Key [Use arrows to move, type to filter, ? for more help] /root/.ssh/new_rsa.pub > <none>
設定2 デプロイ先のプラットフォーム設定 (awsを選択)します。
? Platform [Use arrows to move, type to filter, ? for more help] alibabacloud > aws azure gcp ibmcloud openstack ovirt
設定3 デプロイ先のリージョン選択(デプロイしたいリージョンを選択)します。
? Region [Use arrows to move, type to filter, ? for more help] eu-west-3 (Europe (Paris)) me-south-1 (Middle East (Bahrain)) sa-east-1 (South America (Sao Paulo)) > us-east-1 (US East (N. Virginia)) us-east-2 (US East (Ohio)) us-west-1 (US West (N. California)) us-west-2 (US West (Oregon))
設定4 クラスターの基本ドメインを選択します。
? Base Domain [Use arrows to move, type to filter, ? for more help] > cpawstest.ps.staging-test.xxxx.jp sux5ntz5swkeddkx4fis.com
設定5 クラスターの名称を入力します。
? Cluster Name [? for help]
設定6 プルシークレットを入力します。
? Pull Secret [? for help]
今回はプライベートレジストリを使用しないため下記を入力します。
{“auths”:{“fake”:{“auth”:”aWQ6cGFzcwo=”}}}
上記でOKDのコンフィグファイルであるconfig/instal-config.yamlの作成完了です。
install-config.yamlはクラスター構築するとなくなります。再利用することも考えてバックアップを取得することをお勧めします。
■構築作業:クラスター構築
インストーラーを使用して構築します。AWS環境に自動的に構築されます。構築には1時間程度かかりますので、お待ちください。ネットワーク環境に不安がある方はscreenコマンド等を活用ください。
クラスター構築実行します。
./openshift-install create cluster --dir=./config
自動構築が終わるまでしばらく待ちます。(本構築では自動構築に50分かかっております)
INFO Credentials loaded from the "default" profile in file "/root/.aws/credentials" WARNING failed to find default instance type: no instance type found for the zone constraint WARNING failed to find default instance type: no instance type found for the zone constraint INFO Consuming Install Config from target directory INFO Creating infrastructure resources... INFO Waiting up to 20m0s (until 12:32AM) for the Kubernetes API at https://api.test.cpawstest.ps.staging-test.xxxx.jp:6443... INFO API v1.23.5-rc.0.2068+b463d71c3d5ca3-dirty up INFO Waiting up to 30m0s (until 12:45AM) for bootstrapping to complete... INFO Destroying the bootstrap resources... INFO Waiting up to 40m0s (until 1:10AM) for the cluster at https://api.test.cpawstest.ps.staging-test.xxxx.jp:6443 to initialize... INFO Waiting up to 10m0s (until 1:04AM) for the openshift-console route to be created... INFO Install complete! INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/usr/local/src/okd/config/auth/kubeconfig' INFO Access the OpenShift web-console here: https://console-openshift-console.apps.test.cpawstest.ps.staging-test.xxxx.jp INFO Login to the console with user: "kubeadmin", and password: "xxxx-xxxx-xxxx-xxxx" INFO Time elapsed: 49m53s
注意事項:構築の途中にはOKDのAPIのポート6443番ポートでアクセスします。途中で進まなくなる場合はポート等を確認ください。
●簡易接続確認
To access the cluster as the system:admin user
に記載のexportコマンドを実行して環境設定を行います。
oc version
結果を確認してserverのバージョン情報が表示されることを確認します。
Client Version: 4.10.12 Server Version: 4.10.0-0.okd-2022-05-07-021833 Kubernetes Version: v1.23.5-rc.0.2068+b463d71c3d5ca3-dirty
■正常性確認:OKD正常性
OKDの正常性確認を行いきます。
●ノードの確認
oc get node =結果========================= NAME STATUS ROLES AGE VERSION ip-10-0-131-201.ec2.internal Ready master 101m v1.23.5+b463d71 ip-10-0-140-174.ec2.internal Ready worker 83m v1.23.5+b463d71 ip-10-0-146-194.ec2.internal Ready worker 83m v1.23.5+b463d71 ip-10-0-156-121.ec2.internal Ready master 101m v1.23.5+b463d71 ip-10-0-160-125.ec2.internal Ready master 101m v1.23.5+b463d71 ip-10-0-163-252.ec2.internal Ready worker 83m v1.23.5+b463d71 ==============================す
全てのノードのステータスがReadyであることを確認します。
●machineの確認
oc get machine -n openshift-machine-api =結果================================= NAME PHASE TYPE REGION ZONE AGE test-mlcwt-master-0 Running m6i.xlarge us-east-1 us-east-1a 104m test-mlcwt-master-1 Running m6i.xlarge us-east-1 us-east-1b 104m test-mlcwt-master-2 Running m6i.xlarge us-east-1 us-east-1c 104m test-mlcwt-worker-us-east-1a-2j62g Running m6i.large us-east-1 us-east-1a 91m test-mlcwt-worker-us-east-1b-xpfbx Running m6i.large us-east-1 us-east-1b 91m test-mlcwt-worker-us-east-1c-rqdl6 Running m6i.large us-east-1 us-east-1c 91m ==================================
すべてのmachineのPHASEがRunningになっており、希望するAWSのREGIONにデプロイされていることを確認します。
●クラスターオペレータの確認
oc get co =結果================================= NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE authentication 4.10.0-0.okd-2022-05-07-021833 True False False 91m baremetal 4.10.0-0.okd-2022-05-07-021833 True False False 112m cloud-controller-manager 4.10.0-0.okd-2022-05-07-021833 True False False 123m cloud-credential 4.10.0-0.okd-2022-05-07-021833 True False False 123m cluster-autoscaler 4.10.0-0.okd-2022-05-07-021833 True False False 112m config-operator 4.10.0-0.okd-2022-05-07-021833 True False False 119m console 4.10.0-0.okd-2022-05-07-021833 True False False 95m csi-snapshot-controller 4.10.0-0.okd-2022-05-07-021833 True False False 113m dns 4.10.0-0.okd-2022-05-07-021833 True False False 111m etcd 4.10.0-0.okd-2022-05-07-021833 True False False 117m image-registry 4.10.0-0.okd-2022-05-07-021833 True False False 103m ingress 4.10.0-0.okd-2022-05-07-021833 True False False 97m insights 4.10.0-0.okd-2022-05-07-021833 True False False 114m kube-apiserver 4.10.0-0.okd-2022-05-07-021833 True False False 97m kube-controller-manager 4.10.0-0.okd-2022-05-07-021833 True False False 112m kube-scheduler 4.10.0-0.okd-2022-05-07-021833 True False False 116m kube-storage-version-migrator 4.10.0-0.okd-2022-05-07-021833 True False False 114m machine-api 4.10.0-0.okd-2022-05-07-021833 True False False 105m machine-approver 4.10.0-0.okd-2022-05-07-021833 True False False 112m machine-config 4.10.0-0.okd-2022-05-07-021833 True False False 104m marketplace 4.10.0-0.okd-2022-05-07-021833 True False False 112m monitoring 4.10.0-0.okd-2022-05-07-021833 True False False 97m network 4.10.0-0.okd-2022-05-07-021833 True False False 114m node-tuning 4.10.0-0.okd-2022-05-07-021833 True False False 98m openshift-apiserver 4.10.0-0.okd-2022-05-07-021833 True False False 98m openshift-controller-manager 4.10.0-0.okd-2022-05-07-021833 True False False 111m openshift-samples 4.10.0-0.okd-2022-05-07-021833 True False False 111m operator-lifecycle-manager 4.10.0-0.okd-2022-05-07-021833 True False False 112m operator-lifecycle-manager-catalog 4.10.0-0.okd-2022-05-07-021833 True False False 112m operator-lifecycle-manager-packageserver 4.10.0-0.okd-2022-05-07-021833 True False False 112m service-ca 4.10.0-0.okd-2022-05-07-021833 True False False 119m storage 4.10.0-0.okd-2022-05-07-021833 True False False 114m ==================================
全てのクラスターオペレータのAVAILABLEの項目がTrueであることを確認します。
●管理者コンソールの確認
構築完了時に表示されたURL情報からブラウザでアクセスします。
構築完了時に表示された認証情報でログインします。
ステータスにエラーが表示されていないことを確認します。
■正常性確認:AWS確認
EC2の確認をします。ノードで利用しているEC2が起動していることを確認します。
リソースマネージャーのタグからAWSリソースが複数作成されていることを確認します。
cat config/metadata.json
■削除方法: クラスターの削除
削除方法は下記コマンドで削除します。
./openshift-install destroy cluster --dir=./config
最後に
生Kubernetesより構築が簡単にはなっていますが、いろいろな設定を行う必要があります。初心者向けに簡易には記載していますが、大変です。こちらでOKDが構築できれば、いろいろなことがWEBインターフェイスから対応できます。OKD4.10ではいろいろなガイドがWEBインターフェイスに追加されました。まずはそちらの内容から試してみてコンテナの可能性を実感していただけたならば幸いです。