(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【OpenShift】vSphereへのインストール前提となるDNSの設定について

スポンサーリンク

はじめに

vSphereへのOpenshiftのデプロイではインストール前提にDNSによる名前解決が要件となっており、サーバや接続先端末にて

api.$CLUSTERDOMAIN
api-int.$CLUSTERDOMAIN
etcd-0.$CLUSTERDOMAIN
etcd-1.$CLUSTERDOMAIN
etcd-2.$CLUSTERDOMAIN
*.apps.$CLUSTERDOMAIN
_etcd-server-ssl._tcp.<cluster_name>.<base_domain>.

に関する問い合わせに応答する必要があります。

このKubernetesとの違いでもあるDNS登録関連にて上記のドメインをどのように紐づける必要があるのか整理してみました。

環境情報
  • openshift v4
  • VMWare
参考


api/api-int/appはロードバランサのIP

apiに関してはOpenshiftのAPI Serverにアクセスする際に利用するIPアドレスとして利用します。

要はMasterノードとして見える仮想IPとなります。

# oc cluster-info
Kubernetes master is running at https://api.hoge:6443

このIPの実体はロードバランサのIPで、例えばHAProxyを動かす場合はその仮想マシンのIPを指定し、以下のようにAPIServerに来たアクセスをMasterノードに流します。

frontend openshift-api-server
bind *:6443
default_backend openshift-api-server
...
backend openshift-api-server
...
server master1 192.168.1.3:6443 check
server master2 192.168.1.4:6443 check
server master3 192.168.1.5:6443 check

.appsに関しても同様で、例えばダッシュボードを各端末から開く場合には以下URLとなるので

https://console-openshift-console.apps.hoge/dashboards

このような接続先がロードバランサ経由で割り振られる必要があります。

frontend ingress-https
bind *:443
default_backend ingress-https
...
backend ingress-https
...
server worker1 192.168.1.6:443 check
server worker2 192.168.1.7:443 check

etcd-0/etcd-1/etcd-2は各masterのIP

etcdはOpenshiftのPodとして展開されますが、各MasterノードのIPアドレスと同じもので起動しています。

# oc get pod -n openshift-etcd -o=wide
NAME                                   READY   STATUS      RESTARTS   AGE   IP               NODE                       NOMINATED NODE   READINESS GATES
etcd-master1.hoge          4/4     Running     ..  192.168.1.3   master1.hoge   ..
etcd-master2.hoge         4/4     Running     ..  192.168.1.4   master2.hoge   ..
etcd-master3.hoge       4/4     Running     ..   192.168.1.5   master3.hoge  ..

よって同IPアドレスをdigでは返すようDNSに設定します。

$ dig master2.hoge +short
192.168.1.4
$ dig etcd-master2.hoge +short
192.168.1.4

_etcd-server-sslはサービスレコード

上記とは異なり、名前解決ではなくSRVレコードを登録します。

これによってetcdが2380番ポートで稼働していることを伝えることが可能です。下記のように優先度を全て同じにしている場合は、クライアント側で接続先をランダムに選定します。

# dig _etcd-server-ssl._tcp.hoge SRV +short
0 10 2380 etcd-1.hoge
0 10 2380 etcd-0.ocp4.icdslab.net.
0 10 2380 etcd-2.ocp4.icdslab.net.

終わりに

本記事がDNS設定の参考になれば幸いです。