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⌒っ゚д゚)っφ メモメモ...