それなりに適当にやってます

なんとなくそれっぽいメモとか備忘録とか適当に。 2018年5月にブログ移転しました。 古い記事は未整理です。

okd (OSS版OpenShift) 3.11 の All-in-one インストール

OpenShift に関わる可能性が出てきたので、先にお試しで OpenShift のOSS版である okd を All-in-one 構成で入れてみたので、メモを残す。

環境

  • GCPでインスタンスを作成
    • CentOS7
    • 外部静的IPを設定
    • /dev/sdb として 50GB のディスクを追加
    • 外部からのDNSアクセス(tcp/udp:53)を追加で許可
    • F/Wルールでアクセスを制限している場合は自分自身(外部静的IP)からのアクセスを許可する
  • DNS名前解決
    • 外部に公開するために Route53 に設定していたドメインを流用した
    • *.okd.hogehoge.local のようなAレコードを、GCPの静的IPへ向けた状態で設定 (hogehoge.local は各自所有のドメイン名で読み替える)

インストール

  • SELinux は有効な状態を維持しておく
  • 細かい部分はドキュメント参照 - Installing Clusters
  • お試しなので root で作業してる

OSの更新と再起動

sudo su -
yum update -y
reboot

依存パッケージ群

sudo su -
yum -y install wget git net-tools bind-utils yum-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct

yum -y install epel-release
sed -i -e "s/^enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo
yum -y --enablerepo=epel install ansible pyOpenSSL

sudo yum -y install docker-1.13.1
docker version

Dockerストレージ

bash -c cat <<EOF > /etc/sysconfig/docker-storage-setup
DEVS=/dev/sdb
VG=docker-vg
EOF

docker-storage-setup
cat /etc/sysconfig/docker-storage

systemctl enable docker
systemctl start docker
systemctl is-active docker

openshift-ansible の取得

cd ~
git clone https://github.com/openshift/openshift-ansible
cd openshift-ansible

# openshift_hostname がなくなって openshift_kubelet_name_override 変更されたようだけどコケるので
# とりあえず 3.11.73-1 にしてる
#git checkout release-3.11
git checkout 89d376397dc497e34acf72263845ff25eb1eba73

Ansible インベントリファイルの作成

  • 細かいオプションは Configuring Your Inventory File を参照、オプション多い・・・。
  • ovs-networkpolicy などを試したかったので、その辺の設定を反映している
  • hogehoge.local は各自所有のドメイン名で読み替える
vi hosts
[OSEv3:children]
masters
nodes
etcd

[OSEv3:vars]
## okd を入れるので origin を指定
openshift_deployment_type=origin

## ディスクとメモリに対するチェックを除外
penshift_disable_check=disk_availability,memory_availability

## all-in-ne 構成のノードグループ設定
openshift_node_groups=[{'name': 'node-config-all-in-one', 'labels': ['node-role.kubernetes.io/master=true', 'node-role.kubernetes.io/infra=true', 'node-role.kubernetes.io/compute=true']}]

## Masterに対するログイン設定(htpasswdを使用する)
openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}]

## Masterノードで使用するデフォルトのサブドメイン指定
openshift_master_default_subdomain=okd.hogehoge.local

## SDNモジュールの設定、ovs-networkpolicy を試したいのでその設定
os_sdn_network_plugin_name='redhat/openshift-ovs-networkpolicy'
osm_cluster_network_cidr=10.1.0.0/16
openshift_portal_net=172.30.0.0/16
osm_host_subnet_length=8

[masters]
## Masterノードの設定、内部/外部のホスト名、GCPインスタンスに割り当てた静的外部IPを指定している
## こうしないと internal な名前で解決されてしまう。
## "instance-name.c.project.internal" は インスタンス上で hostname -f して見えるローカルのFQDN名
instance-name.c.project.internal ansible_connection=local openshift_hostname='master.okd.hogehoge.local' openshift_public_hostname='master.okd.hogehoge.local' openshift_public_ip='xxx.xxx.xxx.xxx'

[etcd]
instance-name.c.project.internal ansible_connection=local

[nodes]
## 上記で記述していたノードグループ名を指定
instance-name.c.project.internal ansible_connection=local openshift_node_group_name="node-config-all-in-one"

インストール(Ansible の実行)

ansible-playbook -i hosts playbooks/prerequisites.yml
ansible-playbook -i hosts playbooks/deploy_cluster.yml

Playbookが最後まで実行されればOK

ログイン設定

  • htpasswd の ID/PASSWORD は任意のものに変更、WebUIへのログインで使用する
oc login -u system:admin
oc get nodes
htpasswd -b /etc/origin/master/htpasswd ID PASSWORD
master-restart api
master-restart controllers
oc adm policy add-cluster-role-to-user cluster-admin ID

ログイン

  • 任意のブラウザで https://master.okd.hogehoge.local:8443 へアクセス
  • htpasswd で設定した ID/PASSWORD でログインできる事を確認

IngresIP/ExternalIP あたりが試せないけど、とりあえず遊ぶだけならこれで良いかと (これで色々試して勉強する)
ただ OpenShift 4.x になったらガラッと変わるんだよね、、これ。。(´・ω・`)

以上 c⌒っ゚д゚)っφ メモメモ...