OpenShift Installation: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
 
(10 intermediate revisions by the same user not shown)
Line 5: Line 5:
=Internal=
=Internal=


* [[OpenShift#Subjects|OpenShift]]
* [[OpenShift TODEPLETE#Subjects|OpenShift TODEPLETE]]


=Overview=
=Overview=


There are two installation methods: ''quick install'', which uses a CLI tool available in the "atomic-openshift-utils" package, which, in turn, uses [[Ansible]] in the background, and ''advanced install''. The advanced install assumes familiarity with [[Ansible]].
{{Internal|OpenShift_Concepts#Installation|Installation Concepts}}


=Prerequisites=
=Subjects=


==System Requirements==
* [[OpenShift 3.5 Installation|OpenShift 3.5 HA Installation]]
* [[OpenShift 3.6 Installation]]


Relevance OpenShift 3.3.
=Installation Troubleshooting=


===Master===
ansible-playbood -vvv /usr/share/ansible/openshift-ansible/playbooks/byo/openshift-cluster/openshift-metrics.yml > install.out


* Physical or virtual system.
This generates an installation log that contains the location of the installation files (templates) on the target nodes.
* RHEL 7.1 installed with the "minimal" installation option.
* 2 CPUs
* 8 GB RAM
* 30 GB storage space.


===Node===
Example:


* Physical or virtual system.
ok: [master1.local] => {
* RHEL 7.1 installed with the "minimal" installation option.
    "changed": false,
* 1 CPU
    "checksum": "cc1e65bb730ab21e3f0c352251cd1d094f1259f1",  
* 8 GB RAM
    <b><font color=orange>"dest": "/tmp/openshift-metrics-ansible-C6Xjkq/templates/metrics-heapster-rc.yaml", </font></b>
* 15 GB storage space.
    "gid": 0,
* Docker 1.9.1 or later
    "group": "root",  
* 15 GB to allocated to Docker storage.
    "invocation": {
 
        "module_args": {
==External DNS Setup==
            "backup": false,  
 
            "content": null,
An [[OpenShift_Concepts#External_DNS_Server|external DNS server]] is required.
            "delimiter": null,
 
            "dest": "/tmp/openshift-metrics-ansible-C6Xjkq/templates/metrics-heapster-rc.yaml",
After setup, the DNS server needs to be configured to resolve a public wildcard DNS entry to the public IP address of the [[OpenShift Concepts#Node|node]] that executes the [[OpenShift_Concepts#Router|default router]], by adding an [[DNS_Concepts#A_.28Host.29|A record]], with a low TTL. If the environment has multiple routers, an external load balancer is required.
            "directory_mode": null,
 
            "follow": true,
<pre>
            "force": true,  
*.myapp.example.com. 300 IN  A 1.2.3.4
            "group": null,
</pre>
            "mode": null,
 
            "original_basename": "heapster.j2",
=O/S Installation=
            "owner": null,
 
            "regexp": null,
Execute a ''minimal'' installation on one host, and perform the following steps. Then the same image can be used for as a base for the other nodes.
            "remote_src": null,
 
            "selevel": null,
Register all hosts with [[Red Hat Subscription Manager]] to RHEL 7.x and OpenShift 3 repositories.
            "serole": null,
 
            "setype": null,
Extra packages required:
            "seuser": null,
 
            "src": "/home/ansible/.ansible/tmp/ansible-tmp-1508226983.15-262452251753895/source",
<pre>
            "unsafe_writes": null,
yum install wget git net-tools bind-utils iptables-services bridge-utils bash-completion
            "validate": null
yum update -y
        }
</pre>
    },
 
    "md5sum": "b26056e8d1d246431cabdcc1d0f4dc09",  
[[RHEL_7/Centos_7_Installation#Turn_off_firewalld_and_configure_the_iptables_service|Turn off firewalld and configure the iptables service]]
    "mode": "0644",
 
    "owner": "root",
* Make sure master can issue remote commands on the nodes without requiring password. Ansible, who runs the installation process, requires a user that has password-less access to all hosts.
    "secontext": "unconfined_u:object_r:user_home_t:s0",
 
    "size": 2456,
From the master, as root:
    "src": "/home/ansible/.ansible/tmp/ansible-tmp-1508226983.15-262452251753895/source",
 
    "state": "file",
<pre>
    "uid": 0
# ssh-keygen
}
# ssh-copy-id root@node1.example.com
</pre>
 
* Configure iptables. iptables must be running and the following ports must be open. <font color=red>Most of the ports will be configured by the installer, automatically - verify that.</font>:
 
{{Internal|OpenShift Ports|OpenShift Ports}}
 
=Install Docker=
 
A Docker that works with OpenShift must be installed from <tt>rhel-7-server-ose-3.2-rpms</tt> and have it running on master and all nodes before installing OpenShift. Version requirements are specified in [[#Prerequisites|Prerequisites]].
 
<pre>
yum install docker
</pre>
 
Edit <tt>/etc/sysconfig/docker</tt> and add:
 
<pre>
OPTIONS=--selinux-enabled --insecure-registry 172.30.0.0/16
</pre>
 
--insecure-registry instructs Docker daemon to trust any Docker registry on 172.30.0.0/16 subnet without requiring a certificate.
 
The [[Docker_Concepts#Loopback_Storage|default loopback storage]] is not appropriate for production, it should be replaced by a [[Linux_Logical_Volume_Management_Concepts#Thinly-Provisioned_Logical_Volumes_.28Thin_Volumes.29|thin-pool logical volume]]. Use:
 
<pre>
docker-storage-setup
</pre>
 
The script reads configuration options from <tt>/etc/sysconfig/docker-storage-setup</tt>.
 
Generic installation instructions:
 
{{Internal|Docker_Installation#Prerequisites|Docker Installation}}
 
=Run CLI to Install=
 
=Post-Install=
 
==Deploy the Integrated Docker Registry==
 
==Deploy the HAProxy Router==
 
==Load Image Streams==
 
==Load Templates==
 
==Set up NFS==
 
The NFS server is required for [[OpenShift_Concepts#Volume|persistent volumes]].

Latest revision as of 19:54, 18 November 2020

External

Internal

Overview

Installation Concepts

Subjects

Installation Troubleshooting

ansible-playbood -vvv /usr/share/ansible/openshift-ansible/playbooks/byo/openshift-cluster/openshift-metrics.yml > install.out

This generates an installation log that contains the location of the installation files (templates) on the target nodes.

Example:

ok: [master1.local] => {
    "changed": false, 
    "checksum": "cc1e65bb730ab21e3f0c352251cd1d094f1259f1", 
    "dest": "/tmp/openshift-metrics-ansible-C6Xjkq/templates/metrics-heapster-rc.yaml", 
    "gid": 0, 
    "group": "root", 
    "invocation": {
        "module_args": {
            "backup": false, 
            "content": null, 
            "delimiter": null, 
            "dest": "/tmp/openshift-metrics-ansible-C6Xjkq/templates/metrics-heapster-rc.yaml", 
            "directory_mode": null, 
            "follow": true, 
            "force": true, 
            "group": null, 
            "mode": null, 
            "original_basename": "heapster.j2", 
            "owner": null, 
            "regexp": null, 
            "remote_src": null, 
            "selevel": null, 
            "serole": null, 
            "setype": null, 
            "seuser": null, 
            "src": "/home/ansible/.ansible/tmp/ansible-tmp-1508226983.15-262452251753895/source", 
            "unsafe_writes": null, 
            "validate": null
        } 
    }, 
   "md5sum": "b26056e8d1d246431cabdcc1d0f4dc09", 
   "mode": "0644", 
   "owner": "root", 
   "secontext": "unconfined_u:object_r:user_home_t:s0", 
   "size": 2456, 
   "src": "/home/ansible/.ansible/tmp/ansible-tmp-1508226983.15-262452251753895/source", 
   "state": "file", 
   "uid": 0
}