Contents
ここでは、Red HatのOpenShift(OSSのOpenShift Originではなく)をインストールして一先ず動く評価環境を作ってみます。
ライセンスは30日の評価版を使います。
必要な事前作業
- Red Hatのアカウントを作成
OpenShiftの必要要件
作業概要
- OpenShiftの評価版登録
- Red Hatのコンテナイメージを使うため
registry.redhat.io
のアカウント作成 - OpenShiftのインストール
環境
ここでは、試しに動かす環境を作ってみるので master
node
infra
を1台ずつ用意しています。
項目 | 内容 |
---|---|
OS | RHEL7.6 |
OpenShift | 3.11 |
ホスト名は以下の通りです。
ホスト名 |
---|
master.local |
node01.local |
infra01.local |
DNSレコード
DNS(bind)のコレードは以下の通りです。
ドメインは local
を使います。
openshift_master_default_subdomain
は設定しないのでデフォルトのドメインを設定しています。
1 2 3 4 5 6 7 |
[root@localhost named]# vi local.db (snip) master IN A 192.168.0.30 node01 IN A 192.168.0.31 infra01 IN A 192.168.0.32 *.router.default.svc.cluster IN A 192.168.0.30 |
OpenShift評価登録
ログイン
カスタマーポータルからログインします。
評価登録
ダウンロード
をクリックします。
Red Hat OpenShift Container Platform
の 評価をリクエスト
をクリックします。
次に進む
をクリックします。
AGREE AND GET STARTED
をクリックします。
アクティブなサブスクリプション
に表示されていることを確認します。
レジストリアカウント登録
Red Hat Container Catalog へアクセスし Service Accounts
をクリックします。
New Service Account
をクリックします。
Name
にアカウント名を入力して CREATE
をクリックします。
以下のコマンドを実行して認証が通りTokenが発行されるか確認します。
1 2 |
[root@localhost ~]# curl -Lv -u <username>:<password> "https://sso.redhat.com/auth/realms/rhcc/protocol/redhat-docker-v2/auth?service=docker-registry&client_id=curl&scope=repository:rhel:pull" |
項目 | 説明 |
---|---|
username | レジストリアカウント登録したユーザー |
password | Red Hatに登録したユーザーのパスワード |
OpenShiftインストール
Red Hatの手順書にあることをやっていきます。
OS作業
master
node01
infra01
で以下の作業を実施します。
サブスクリプションのアタッチ
まずは register
でシステムを登録します。
1 2 3 4 5 6 7 |
[root@master ~]# subscription-manager register 登録中: subscription.rhsm.redhat.com:443/subscription ユーザー名: *********** パスワード: このシステムは、次の ID で登録されました: *************** 登録したシステム名: master.local |
最新のサブスクリプションテーブルをプルします。
1 2 3 |
[root@master ~]# subscription-manager refresh ローカルデータがすべて更新されました |
先ほど登録した評価版OpenShiftサブスクリプションの プール ID
を確認します。
1 2 3 4 5 6 7 |
[root@master ~]# subscription-manager list --available (snip) サブスクリプション名: 30 Day Self-Supported Red Hat OpenShift Container Platform, 2-Core Evaluation (snip) プール ID: ******************** (snip) |
確認したプール IDにアタッチします。
1 2 3 |
[root@master ~]# subscription-manager attach --pool=*************** サブスクリプションが正しく割り当てられました: 30 Day Self-Supported Red Hat OpenShift Container Platform, 2-Core Evaluation |
リポジトリーの有効化
以下のコマンドを実行してリポジトリを有効化します。
1 2 3 4 5 6 7 8 9 |
[root@master ~]# subscription-manager repos --enable="rhel-7-server-rpms" \ > --enable="rhel-7-server-extras-rpms" \ > --enable="rhel-7-server-ose-3.11-rpms" \ > --enable="rhel-7-server-ansible-2.6-rpms" リポジトリー 'rhel-7-server-rpms' は、このシステムに対して有効になりました。 リポジトリー 'rhel-7-server-extras-rpms' は、このシステムに対して有効になりました。 リポジトリー 'rhel-7-server-ansible-2.6-rpms' は、このシステムに対して有効になりました。 リポジトリー 'rhel-7-server-ose-3.11-rpms' は、このシステムに対して有効になりました。 |
アップデート
必要であれば全ホストで yum update
を実行して最新版にしておきます。
OpenShift Container Platformパッケージのインストール
master
で以下の作業を実施します。
必要なパッケージのインストールおよびアップデート
必要なパッケージのインストールをします。
1 2 |
[root@master ~]# yum -y install wget git net-tools bind-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct |
最新版にアップデートして再起動します。
1 2 3 |
[root@master ~]# yum -y update [root@master ~]# reboot |
OpenShiftはAnsibleでインストールするので openshift-ansible
をインストールします。
1 2 |
[root@master ~]# yum -y install openshift-ansible |
コンテナーエンジンのインストール
ここでは Docker
を使おうと思うので docker
をインストールします。
1 2 |
[root@master ~]# yum -y install docker |
SSHのキー作成
パスワードなしでログインできるようSSHのキーを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[root@master ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:tq94jFyMCPk8bmC8vemq9VEHjucfKYzFPpuouG0+0T8 root@master.local The key's randomart image is: +---[RSA 2048]----+ | | | | | . . | | o + . | | . =..*oS | | = *O.ooo | | ..*o+*++ | | ++.++EBoo | |+==**.+oo.. | +----[SHA256]-----+ |
全ホストに公開鍵を配ります。
1 2 3 4 5 6 |
for host in master.local \ node01.local \ infra01.local; \ do ssh-copy-id -i ~/.ssh/id_rsa.pub $host; \ done |
OpenShiftインストールPlaybook実行
インベントリ作成
以下のようにインベントリを作成します。
ここでは master
と infra
を分けていますが master+infra
にする場合は node-config-master-infra
を指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
[root@master ~]# vi /etc/ansible/hosts [OSEv3:children] masters nodes etcd [OSEv3:vars] ansible_ssh_user=root openshift_deployment_type=openshift-enterprise # htpasswdでユーザーを追加できるようにする openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}] # registry.redhat.ioのアカウント oreg_auth_user=username oreg_auth_password=password [masters] master.local [etcd] master.local [nodes] master.local openshift_node_group_name='node-config-master' node01.local openshift_node_group_name='node-config-compute' infra01.local openshift_node_group_name='node-config-infra' |
インベントリ例は以下を参照ください。
インベントリの変数説明は以下を参照ください。
Playbook実行
まずは prerequisites.yml
を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@master ~]# cd /usr/share/ansible/openshift-ansible [root@master openshift-ansible]# ansible-playbook playbooks/prerequisites.yml (snip) PLAY RECAP ***************************************************************************************************************************************************************************************************** infra01.local : ok=48 changed=21 unreachable=0 failed=0 localhost : ok=11 changed=0 unreachable=0 failed=0 master.local : ok=69 changed=21 unreachable=0 failed=0 node01.local : ok=48 changed=21 unreachable=0 failed=0 INSTALLER STATUS *********************************************************************************************************************************************************************************************** Initialization : Complete (0:03:52) Sunday 24 February 2019 15:43:30 +0900 (0:00:00.119) 0:12:23.538 ******* |
次に deploy_cluster.yml
を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[root@master openshift-ansible]# ansible-playbook playbooks/deploy_cluster.yml (snip) PLAY RECAP ***************************************************************************************************************************************************************************************************** infra01.local : ok=111 changed=63 unreachable=0 failed=0 localhost : ok=11 changed=0 unreachable=0 failed=0 master.local : ok=684 changed=324 unreachable=0 failed=0 node01.local : ok=111 changed=63 unreachable=0 failed=0 INSTALLER STATUS *********************************************************************************************************************************************************************************************** Initialization : Complete (0:00:26) Health Check : Complete (0:00:49) Node Bootstrap Preparation : Complete (0:18:00) etcd Install : Complete (0:02:50) Master Install : Complete (0:06:23) Master Additional Install : Complete (0:06:57) Node Join : Complete (0:00:24) Hosted Install : Complete (0:00:47) Cluster Monitoring Operator : Complete (0:01:14) Web Console Install : Complete (0:00:30) Console Install : Complete (0:00:17) metrics-server Install : Complete (0:00:00) Service Catalog Install : Complete (0:03:44) Sunday 24 February 2019 16:27:50 +0900 (0:00:00.048) 0:42:50.852 ******* |
状態確認
標準の system:admin
でログインして状態を確認してみます。
1 2 3 4 5 6 7 |
[root@master ~]# oc login -u system:admin [root@master ~]# oc get nodes NAME STATUS ROLES AGE VERSION infra01.local Ready infra 9m v1.11.0+d4cacc0 master.local Ready master 19m v1.11.0+d4cacc0 node01.local Ready compute 9m v1.11.0+d4cacc0 |
ユーザー追加
adminユーザーを追加してみます。
1 2 3 |
[root@master ~]# htpasswd -b /etc/origin/master/htpasswd admin redhat Adding password for user admin |
OpenShiftを再起動します。
1 2 3 4 5 |
[root@master ~]# master-restart api 2 [root@master ~]# master-restart controllers 2 |
作成したadminに特権ロールを設定します。
1 2 3 4 |
[root@master ~]# oc adm policy add-cluster-role-to-user cluster-admin admin Warning: User 'admin' not found cluster role "cluster-admin" added: "admin" |
adminでログインしてみます。
1 2 3 4 5 6 7 |
[root@master ~]# oc login -u admin Authentication required for https://master.local:8443 (openshift) Username: admin Password: Login successful. (snip) |
OpenShiftルーターのデプロイ
デフォルトルーターを削除して新規に作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@master ~]# oc project default Already on project "default" on server "https://master.local:8443". [root@master ~]# oc delete all -l router=router pod "router-1-cdgnr" deleted replicationcontroller "router-1" deleted service "router" deleted deploymentconfig.apps.openshift.io "router" deleted [root@master ~]# oc adm router --replicas=1 --service-account=router info: password for stats user admin has been set to r2nm8SJdvY --> Creating router router ... warning: serviceaccounts "router" already exists warning: clusterrolebindings.authorization.openshift.io "router-router-role" already exists deploymentconfig.apps.openshift.io "router" created service "router" created --> Success |
WebUIアクセス
以下のURLでアクセスします。
URL |
---|
https://master.local:8443 |
adminユーザーでログインします。
ログインできることを確認します。