From 9303db72f898e39b8c1d93136a02107e10a152b7 Mon Sep 17 00:00:00 2001
From: MaiWJ <664647065@qq.com>
Date: Tue, 25 Sep 2018 20:19:02 +0800
Subject: [PATCH 1/4] Add Windows Support - Experimental docs
Issues:
- https://github.com/rancher/docs/issues/672
---
.../windows-clusters/_index.md | 107 ++++++++++++++++++
.../en/installation/requirements/_index.md | 2 +
2 files changed, 109 insertions(+)
create mode 100644 content/rancher/v2.x/en/cluster-provisioning/windows-clusters/_index.md
diff --git a/content/rancher/v2.x/en/cluster-provisioning/windows-clusters/_index.md b/content/rancher/v2.x/en/cluster-provisioning/windows-clusters/_index.md
new file mode 100644
index 00000000000..3a66b5ec7bd
--- /dev/null
+++ b/content/rancher/v2.x/en/cluster-provisioning/windows-clusters/_index.md
@@ -0,0 +1,107 @@
+---
+title: Using Windows Container
+weight: 2600
+---
+
+Since the release of [Windows Server version 1803](https://docs.microsoft.com/en-us/windows-server/get-started/whats-new-in-windows-server-1803), you can be able to try Windows containers more efficiently and more stable on deploying Kubernetes v1.9 and later.
+
+On the article [Using Windows Server Containers in Kubernetes](https://kubernetes.io/docs/getting-started-guides/windows/#supported-features), you can find out which Kubernetes features are supporting on Windows now.
+
+It is relatively simple to use Windows server containers on Kubernetes cluster via {{< product >}}, but you still have some attention:
+
+- The host must be able to run [microsoft/nanoserver:1803
+](https://hub.docker.com/r/microsoft/nanoserver/tags/) as Windows server container not [Hyper-V container](https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/hyperv-container)
+- The Docker v17.06 or later is installed, if not, you can follow the article about how to [Install Docker Enterprise Edition for Windows Server](https://docs.docker.com/install/windows/docker-ee/)
+- Networking bases on Flannel [host-gw](https://github.com/coreos/flannel/blob/master/Documentation/backends.md#host-gw) mode, it means you need to do some networking configuration on cloud environments
+- Windows support is an **Experimental** feature on {{< product >}}
+
+## Objectives for Creating Cluster with Windows support
+
+1. [Provision a Linux Host]({{< baseurl >}}/rancher/v2.x/en/cluster-provisioning/rke-clusters/custom-nodes#provision-a-linux-host)
+
+ Begin by provisioning a Linux host.
+
+ + **Cloud-Host Virtual Machine Only:** [Host Networking Configuration](#cloud-host-vm-networking-configuration)
+
+2. [Create the Cluster](#create-the-custom-cluster)
+
+ Use your new Linux host as Control Plan and etcd for your new Kubernetes cluster.
+
+3. [Provision a Windows Host](#provision-a-windows-host)
+
+ Prepare a Windows host for Kubernetes Node.
+
+ + **Cloud-Host Virtual Machine Only:** [Host Networking Configuration](#cloud-host-vm-networking-configuration)
+
+4. [Add the Windows Worker](#add-the-windows-worker)
+
+ Use the new Windows host as Worker for your above created Kubernetes cluster.
+
+5. **Cloud-Host Virtual Machine Only:** [Routes Configuration](#cloud-host-vm-routes-configuration)
+
+## Create the Custom Cluster
+
+Starting to create a custom cluster is almost the same as on [Linux]({{< baseurl >}}/rancher/v2.x/en/cluster-provisioning/rke-clusters/custom-nodes#create-the-custom-cluster), except that you need to enable _"Windows Support (Experimental)"_ in **Cluster Options**.
+
+>**Windows Support Note:**
+>
+While enabling Windows support on your cluster, the "Network Provider" will be frozen with _"Flannel"_.
+
+If you want some automation supporting by cloud environment, such as load balancers or persistent storage devices, please follow [Selecting Cloud Providers]({{< baseurl >}}/rancher/v2.x/en/cluster-provisioning/rke-clusters/options/cloud-providers) to configure.
+
+## Provision a Windows Host
+
+Supporting Windows on a custom cluster by provisioning a Windows host. Your host can be:
+
+- A cloud-host virtual machine (VM)
+- An on-premise VM
+- A bare-metal server
+
+>**Bare-Metal Server Note:**
+>
+While creating your cluster, you must assign Kubernetes roles to your cluster nodes. If you plan on dedicating bare-metal servers to each role, you must provision a bare-metal server for each role (i.e. provision multiple bare-metal servers).
+
+Provision the host according to the requirements below.
+
+### Requirements
+
+Each node in your cluster must meet our [Requirements]({{< baseurl >}}/rancher/v2.x/en/installation/requirements).
+
+## Add the Windows Worker
+
+After the creation of a custom cluster, you can add the new Window worker into the cluster.
+
+1. Enter the above created cluster.
+
+2. From the **Nodes** page, click **Edit Cluster**.
+
+3. Use **Node Operating System** to choose _"Windows"_.
+
+4. Copy the command displayed on screen to your clipboard.
+
+5. Log in to your Windows host using your preferred tool, such as [Microsoft Remote Desktop](https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-clients). Run the command copied to your clipboard on **Command Prompt (CMD)**.
+
+ >**Note:** Repeat steps 4-5 if you want to dedicate specific hosts to specific node roles. Repeat the steps as many times as needed.
+
+6. When you finish running the command(s) on your Windows host(s), click **Cancel** to quit.
+
+## Cloud-host VM Networking Configuration
+
+You need to disable the private IP addresses checking on either Linux or Windows host when startup, if you're using the following cloud-host virtual machines:
+
+- `Amazon EC2`: [disbaling the "Source/Destination Checks"](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck) for each instance
+- `Google GCE`: [enabling "IP forwarding"](https://cloud.google.com/vpc/docs/using-routes#canipforward) for each instance
+- `Azure VM`: [enabling "IP forwarding"](https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-network-interface#enable-or-disable-ip-forwarding) for each instance
+
+## Cloud-host VM Routes Configuration
+
+You need to configure some routes after both Linux and Windows worker node are ready, if you’re using the following cloud-host virtual machines:
+
+- `Google GCE`: [adding a static route](https://cloud.google.com/vpc/docs/using-routes#addingroute) on each instance
+- `Azure VM`: [adding some "User-defined" routes](https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-udr-overview#user-defined) on route table
+
+In order to confirm the destination address of each route, you can run this scripts via [kubectl]({{< baseurl >}}/rancher/v2.x/en/k8s-in-rancher/kubectl): `kubectl get nodes -o custom-columns=nodeName:.metadata.name,nodeIP:status.addresses[0].address,routeDestination:.spec.podCIDR`
+
+## Troubleshooting
+
+If the Windows worker is already starting (console prints "Starting plan monitor"), but it's still _Unavailable_ on {{< product >}} UI, you can try to restart the Nginx proxy on Windows host via `docker restart nginx-proxy`.
diff --git a/content/rancher/v2.x/en/installation/requirements/_index.md b/content/rancher/v2.x/en/installation/requirements/_index.md
index b04d450859f..88044de5f3b 100644
--- a/content/rancher/v2.x/en/installation/requirements/_index.md
+++ b/content/rancher/v2.x/en/installation/requirements/_index.md
@@ -13,6 +13,7 @@ Rancher is supported on the following operating systems and their subsequent rel
* Ubuntu 16.04 (64-bit)
* Red Hat Enterprise Linux 7.5 (64-bit)
* RancherOS 1.4 (64-bit)
+* Windows Server version 1803 (64-bit)
If you are using RancherOS, make sure you switch the Docker engine to a supported version using:
`sudo ros engine switch docker-17.03.2-ce`
@@ -61,6 +62,7 @@ Supported Versions:
* `1.12.6`
* `1.13.1`
* `17.03.2`
+* `17.06` (for Windows)
If you are using RancherOS, make sure you switch the Docker engine to a supported version using:
`sudo ros engine switch docker-17.03.2-ce`
From 6c5f49cf1ca78271326f2b91cf31ed86d57c648e Mon Sep 17 00:00:00 2001
From: Mark Bishop
Date: Wed, 26 Sep 2018 18:41:45 -0700
Subject: [PATCH 2/4] editing windows
---
.../windows-clusters/_index.md | 129 ++++++++++--------
scripts/Downloads/.localized | 0
scripts/Downloads/Untitled.txt | 43 ++++++
scripts/Downloads/air-gap-files/ha-air-gap.sh | 30 ++++
.../air-gap-files/rancher-images.txt | 40 ++++++
.../air-gap-files/rancher-load-images.sh | 93 +++++++++++++
.../air-gap-files/rancher-save-images.sh | 44 ++++++
.../Downloads/air-gap-files/tmp-images.txt | 0
scripts/Downloads/system-tools-master.zip | Bin 0 -> 4470555 bytes
src/img/rancher/enable-windows-support.png | Bin 0 -> 24009 bytes
src/img/rancher/flannel.png | Bin 0 -> 10455 bytes
src/img/rancher/linux-control-plane.png | Bin 0 -> 84856 bytes
12 files changed, 324 insertions(+), 55 deletions(-)
create mode 100644 scripts/Downloads/.localized
create mode 100644 scripts/Downloads/Untitled.txt
create mode 100644 scripts/Downloads/air-gap-files/ha-air-gap.sh
create mode 100644 scripts/Downloads/air-gap-files/rancher-images.txt
create mode 100644 scripts/Downloads/air-gap-files/rancher-load-images.sh
create mode 100644 scripts/Downloads/air-gap-files/rancher-save-images.sh
create mode 100644 scripts/Downloads/air-gap-files/tmp-images.txt
create mode 100644 scripts/Downloads/system-tools-master.zip
create mode 100644 src/img/rancher/enable-windows-support.png
create mode 100644 src/img/rancher/flannel.png
create mode 100644 src/img/rancher/linux-control-plane.png
diff --git a/content/rancher/v2.x/en/cluster-provisioning/windows-clusters/_index.md b/content/rancher/v2.x/en/cluster-provisioning/windows-clusters/_index.md
index 3a66b5ec7bd..932a6d80e3f 100644
--- a/content/rancher/v2.x/en/cluster-provisioning/windows-clusters/_index.md
+++ b/content/rancher/v2.x/en/cluster-provisioning/windows-clusters/_index.md
@@ -3,89 +3,85 @@ title: Using Windows Container
weight: 2600
---
-Since the release of [Windows Server version 1803](https://docs.microsoft.com/en-us/windows-server/get-started/whats-new-in-windows-server-1803), you can be able to try Windows containers more efficiently and more stable on deploying Kubernetes v1.9 and later.
+Using Rancher, you can provision Windows Server hosts as nodes in a custom Kubernetes cluster.
-On the article [Using Windows Server Containers in Kubernetes](https://kubernetes.io/docs/getting-started-guides/windows/#supported-features), you can find out which Kubernetes features are supporting on Windows now.
+>**Notes:**
+>
+>- Windows nodes are experimental and not yet officially supported. Therefore, we do not recommend using Windows and in a production environment.
+>- For a summary of Kubernetes features supported in Windows, see [Using Windows Server Containers in Kubernetes](https://kubernetes.io/docs/getting-started-guides/windows/#supported-features).
-It is relatively simple to use Windows server containers on Kubernetes cluster via {{< product >}}, but you still have some attention:
+## Before You Start
-- The host must be able to run [microsoft/nanoserver:1803
-](https://hub.docker.com/r/microsoft/nanoserver/tags/) as Windows server container not [Hyper-V container](https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/hyperv-container)
-- The Docker v17.06 or later is installed, if not, you can follow the article about how to [Install Docker Enterprise Edition for Windows Server](https://docs.docker.com/install/windows/docker-ee/)
-- Networking bases on Flannel [host-gw](https://github.com/coreos/flannel/blob/master/Documentation/backends.md#host-gw) mode, it means you need to do some networking configuration on cloud environments
-- Windows support is an **Experimental** feature on {{< product >}}
+- Your host must be running [Windows Server version 1803](https://docs.microsoft.com/en-us/windows-server/get-started/whats-new-in-windows-server-1803).
+- Your host must be able to run [microsoft/nanoserver:1803
+](https://hub.docker.com/r/microsoft/nanoserver/tags/) as a Windows Server container (_not_ a [Hyper-V container](https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/hyperv-container)).
+- [Docker v17.06](https://docs.docker.com/install/windows/docker-ee/) or later must be installed.
+- Flannel is the only network plug-in supported for Windows [host-gw](https://github.com/coreos/flannel/blob/master/Documentation/backends.md#host-gw), which means you need to make some manual network configuration if you host your Windows node using a cloud service.
## Objectives for Creating Cluster with Windows support
-1. [Provision a Linux Host]({{< baseurl >}}/rancher/v2.x/en/cluster-provisioning/rke-clusters/custom-nodes#provision-a-linux-host)
-
- Begin by provisioning a Linux host.
+
- + **Cloud-Host Virtual Machine Only:** [Host Networking Configuration](#cloud-host-vm-networking-configuration)
+- [1. Provision Hosts](#1-provision-hosts)
+- [2. Create the Custom Cluster](#2-create-the-custom-cluster)
+- [3. Cloud-host VM Networking Configuration](#3-cloud-host-vm-networking-configuration)
+- [4. Adding Windows Workers](#4-adding-windows-workers)
+- [5. Cloud-host VM Routes Configuration](#5-cloud-host-vm-routes-configuration)
+- [Troubleshooting](#troubleshooting)
-2. [Create the Cluster](#create-the-custom-cluster)
+
- Use your new Linux host as Control Plan and etcd for your new Kubernetes cluster.
+## 1. Provision Hosts
-3. [Provision a Windows Host](#provision-a-windows-host)
+The first thing you should do when provisioning a cluster with Windows workers is to provision your cluster nodes. Provision three nodes according to our [requirements]({{< baseurl >}}/rancher/v2.x/en/installation/requirements/)—two Linux, one Windows. The table below lists the [role]({{< baseurl >}}/rancher/v2.x/en/cluster-provisioning/#kubernetes-cluster-node-components) that each node will fill in your cluster.
- Prepare a Windows host for Kubernetes Node.
+Node | Operating System | Role
+--------|------------------|------
+Node 1 | Linux | [All]({{< baseurl >}}/rancher/v2.x/en/cluster-provisioning/#control-plane-nodes)
+Node 2 | Windows | [Worker]({{< baseurl >}}/rancher/v2.x/en/cluster-provisioning/#worker-nodes)
+Node 3 (Optional) | Linux | [Worker]({{< baseurl >}}/rancher/v2.x/en/cluster-provisioning/#worker-nodes) (for Ingress Support)
- + **Cloud-Host Virtual Machine Only:** [Host Networking Configuration](#cloud-host-vm-networking-configuration)
-
-4. [Add the Windows Worker](#add-the-windows-worker)
-
- Use the new Windows host as Worker for your above created Kubernetes cluster.
-
-5. **Cloud-Host Virtual Machine Only:** [Routes Configuration](#cloud-host-vm-routes-configuration)
-
-## Create the Custom Cluster
-
-Starting to create a custom cluster is almost the same as on [Linux]({{< baseurl >}}/rancher/v2.x/en/cluster-provisioning/rke-clusters/custom-nodes#create-the-custom-cluster), except that you need to enable _"Windows Support (Experimental)"_ in **Cluster Options**.
-
->**Windows Support Note:**
->
-While enabling Windows support on your cluster, the "Network Provider" will be frozen with _"Flannel"_.
-
-If you want some automation supporting by cloud environment, such as load balancers or persistent storage devices, please follow [Selecting Cloud Providers]({{< baseurl >}}/rancher/v2.x/en/cluster-provisioning/rke-clusters/options/cloud-providers) to configure.
-
-## Provision a Windows Host
-
-Supporting Windows on a custom cluster by provisioning a Windows host. Your host can be:
-
-- A cloud-host virtual machine (VM)
-- An on-premise VM
-- A bare-metal server
>**Bare-Metal Server Note:**
>
While creating your cluster, you must assign Kubernetes roles to your cluster nodes. If you plan on dedicating bare-metal servers to each role, you must provision a bare-metal server for each role (i.e. provision multiple bare-metal servers).
-Provision the host according to the requirements below.
-### Requirements
+**Cloud-Host Virtual Machine Only:** [Host Networking Configuration](#cloud-host-vm-networking-configuration)
-Each node in your cluster must meet our [Requirements]({{< baseurl >}}/rancher/v2.x/en/installation/requirements).
-## Add the Windows Worker
+## 2. Create the Custom Cluster
-After the creation of a custom cluster, you can add the new Window worker into the cluster.
+Follow the instructions in [Creating a Cluster with Custom Nodes]({{< baseurl >}}rancher/v2.x/en/cluster-provisioning/rke-clusters/custom-nodes/#create-the-custom-cluster).
-1. Enter the above created cluster.
+These instructions flag each step that requires special actions for Windows nodes, which are listed below.
-2. From the **Nodes** page, click **Edit Cluster**.
+### Enable the Windows Support Option
-3. Use **Node Operating System** to choose _"Windows"_.
+While choosing **Cluster Options**, set **Windows Support (Experimental)** to **Enabled**.
-4. Copy the command displayed on screen to your clipboard.
+
-5. Log in to your Windows host using your preferred tool, such as [Microsoft Remote Desktop](https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-clients). Run the command copied to your clipboard on **Command Prompt (CMD)**.
+### Networking Option
- >**Note:** Repeat steps 4-5 if you want to dedicate specific hosts to specific node roles. Repeat the steps as many times as needed.
+When choosing a network provider for a cluster that supports Windows, the only option available is Flannel.
-6. When you finish running the command(s) on your Windows host(s), click **Cancel** to quit.
+
-## Cloud-host VM Networking Configuration
+If you want some automation supporting by cloud environment, such as load balancers or persistent storage devices, please follow [Selecting Cloud Providers]({{< baseurl >}}/rancher/v2.x/en/cluster-provisioning/rke-clusters/options/cloud-providers) to configure.
+
+### Node Configuration
+
+The first node in your cluster should be a Linux host that fills the Control Plane role. At minimum, the node must have this role enabled, but we recommend enabling all three. The following table lists our recommended settings (we'll provide the recommended settings for nodes 2 and 3 later).
+
+Option | Setting
+-------|--------
+Node Operating System | Linux
+Node Roles | etcd
Control Plane
Worker
+
+
+
+## 3. Cloud-host VM Networking Configuration
You need to disable the private IP addresses checking on either Linux or Windows host when startup, if you're using the following cloud-host virtual machines:
@@ -93,7 +89,30 @@ You need to disable the private IP addresses checking on either Linux or Windows
- `Google GCE`: [enabling "IP forwarding"](https://cloud.google.com/vpc/docs/using-routes#canipforward) for each instance
- `Azure VM`: [enabling "IP forwarding"](https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-network-interface#enable-or-disable-ip-forwarding) for each instance
-## Cloud-host VM Routes Configuration
+## 4. Adding Windows Workers
+
+After the initial provisioning of your custom cluster, add your Windows workers to it. Add nodes using the instructions below.
+
+1. From the main menu, select **Nodes**.
+
+1. Click **Edit Cluster**.
+
+1. Scroll down to **Node Operating System**. Choose **Windows**.
+
+1. Select the **Worker** role.
+
+1. Copy the command displayed on screen to your clipboard.
+
+1. Log in to your Windows host using your preferred tool, such as [Microsoft Remote Desktop](https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-clients). Run the command copied to your clipboard in the **Command Prompt (CMD)**.
+
+1. Repeat these instruction for each Windows host you want to use as a worker node.
+
+**Result:** The worker role is installed on your Windows host, and the node registers with Rancher.
+
+>**Tip:** If you want the cluster that uses Windows workers to include Ingress support, add one more Linux node to the cluster, enabling the worker role on it.
+
+
+## 5. Cloud-host VM Routes Configuration
You need to configure some routes after both Linux and Windows worker node are ready, if you’re using the following cloud-host virtual machines:
diff --git a/scripts/Downloads/.localized b/scripts/Downloads/.localized
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/scripts/Downloads/Untitled.txt b/scripts/Downloads/Untitled.txt
new file mode 100644
index 00000000000..80cd5af12ba
--- /dev/null
+++ b/scripts/Downloads/Untitled.txt
@@ -0,0 +1,43 @@
+When setting up an airgap environment, it may be useful to run RKE through a bastion server. This can be helpful if you want to keep your RKE config or SSH keys on your local machine. This requires that the bastion server is accessible from the outside world, and has access to port 22 (SSH) on your airgapped nodes.
+
+local RKE (via port 22 over internet) -> bastion
+bastion (via port 22 over internal network) -> airgap_node_1, airgap_node_2, airgap_node3
+
+To enable running RKE through a bastion server, add the following to your RKE yaml config:
+
+```
+bastion_host:
+ address: 18.224.54.35 # public IP of the bastion server
+ user: ubuntu
+ port: 22
+ ssh_key_path: /path/to/ssh/key
+```
+
+Full ex:
+```
+bastion_host:
+ address: 18.224.54.35 # public IP of the bastion server
+ user: ubuntu
+ port: 22
+ ssh_key_path: /path/to/ssh/key
+nodes:
+ - address: 172.31.6.15 # private IP of airgapped node
+ user: ubuntu
+ role: [ "controlplane", "etcd", "worker" ]
+ ssh_key_path: /path/to/ssh/key
+ - address: 172.31.12.84 # private IP of airgapped node
+ user: ubuntu
+ role: [ "controlplane", "etcd", "worker" ]
+ ssh_key_path: /path/to/ssh/key
+ - address: 172.31.15.78 # private IP of airgapped node
+ user: ubuntu
+ role: [ "controlplane", "etcd", "worker" ]
+ ssh_key_path: /path/to/ssh/key
+private_registries:
+ - url:
+ user:
+ password:
+ is_default: true
+ ```
+
+ Running `rke up` will provision the k8s cluster through the bastion server, and provide the resulting kube_config. However, it's important to note that as your nodes are not accessible via a public IP, the machine you run `kubectl` from in later steps must be able to reach your airgapped nodes through the addresses provided. This may require moving the resulting kube_config after it is created.
\ No newline at end of file
diff --git a/scripts/Downloads/air-gap-files/ha-air-gap.sh b/scripts/Downloads/air-gap-files/ha-air-gap.sh
new file mode 100644
index 00000000000..245e4ac3fbd
--- /dev/null
+++ b/scripts/Downloads/air-gap-files/ha-air-gap.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -e
+
+# Collect images for Air Gap/Private Registry install
+# Requires:
+# rke - https://rancher.com/docs/rke/v0.1.x/en/installation/
+# helm - https://docs.helm.sh/using_helm/#installing-helm
+# curl
+# jq
+
+echo "RKE Images"
+rke config --system-images 2>/dev/null > tmp-images.txt
+
+echo "Helm Tiller Image"
+helm init --dry-run --debug | grep image: | awk '{print $2}' >> tmp-images.txt
+
+echo "Rancher Images"
+latest_url=$(curl -sS "https://api.github.com/repos/rancher/rancher/releases/latest" | jq -r '.assets[]|select(.name=="rancher-images.txt")|.browser_download_url')
+curl -sSL ${latest_url} >> tmp-images.txt
+
+echo "Cert-Manager Image"
+cm_repo=$(helm inspect values stable/cert-manager | grep repository: | awk '{print $2}')
+cm_tag=$(helm inspect values stable/cert-manager | grep tag: | awk '{print $2}')
+echo "${cm_repo}:${cm_tag}" >> tmp-images.txt
+
+echo "Sort and uniq the images list"
+cat tmp-images.txt | sort -u | uniq > images.txt
+
+# cleanup tmp file
+rm tmp-images.txt
\ No newline at end of file
diff --git a/scripts/Downloads/air-gap-files/rancher-images.txt b/scripts/Downloads/air-gap-files/rancher-images.txt
new file mode 100644
index 00000000000..cdcf7256675
--- /dev/null
+++ b/scripts/Downloads/air-gap-files/rancher-images.txt
@@ -0,0 +1,40 @@
+busybox
+rancher/alertmanager-helper:v0.0.2
+rancher/alpine-git:1.0.4
+rancher/calico-cni:v3.1.1
+rancher/calico-ctl:v2.0.0
+rancher/calico-node:v3.1.1
+rancher/cluster-proportional-autoscaler-amd64:1.0.0
+rancher/coreos-etcd:v3.1.12
+rancher/coreos-etcd:v3.2.18
+rancher/coreos-flannel-cni:v0.2.0
+rancher/coreos-flannel:v0.9.1
+rancher/docker-elasticsearch-kubernetes:5.6.2
+rancher/fluentd-helper:v0.1.2
+rancher/fluentd:v0.1.10
+rancher/hyperkube:v1.10.5-rancher1
+rancher/hyperkube:v1.11.2-rancher1
+rancher/hyperkube:v1.9.7-rancher2
+rancher/jenkins-jenkins:2.107-slim
+rancher/jenkins-jnlp-slave:3.10-1-alpine
+rancher/jenkins-plugins-docker:17.12
+rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.10
+rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.7
+rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.8
+rancher/k8s-dns-kube-dns-amd64:1.14.10
+rancher/k8s-dns-kube-dns-amd64:1.14.7
+rancher/k8s-dns-kube-dns-amd64:1.14.8
+rancher/k8s-dns-sidecar-amd64:1.14.10
+rancher/k8s-dns-sidecar-amd64:1.14.7
+rancher/k8s-dns-sidecar-amd64:1.14.8
+rancher/kibana:5.6.4
+rancher/log-aggregator:v0.1.3
+rancher/metrics-server-amd64:v0.2.1
+rancher/nginx-ingress-controller-defaultbackend:1.4
+rancher/nginx-ingress-controller:0.16.2-rancher1
+rancher/pause-amd64:3.0
+rancher/pause-amd64:3.1
+rancher/prom-alertmanager:v0.11.0
+rancher/rke-tools:v0.1.13
+rancher/rancher:v2.0.8
+rancher/rancher-agent:v2.0.8
diff --git a/scripts/Downloads/air-gap-files/rancher-load-images.sh b/scripts/Downloads/air-gap-files/rancher-load-images.sh
new file mode 100644
index 00000000000..224313d0493
--- /dev/null
+++ b/scripts/Downloads/air-gap-files/rancher-load-images.sh
@@ -0,0 +1,93 @@
+#!/bin/sh
+
+if [ -z "$1" ]; then
+ echo Usage: $0 [REGISTRY]
+ exit 1
+fi
+
+set -e -x
+REGISTRY=$1
+
+docker load --input rancher-images.tar.gz
+
+
+docker tag busybox ${REGISTRY}/busybox
+docker push ${REGISTRY}/busybox
+docker tag rancher/alertmanager-helper:v0.0.2 ${REGISTRY}/rancher/alertmanager-helper:v0.0.2
+docker push ${REGISTRY}/rancher/alertmanager-helper:v0.0.2
+docker tag rancher/alpine-git:1.0.4 ${REGISTRY}/rancher/alpine-git:1.0.4
+docker push ${REGISTRY}/rancher/alpine-git:1.0.4
+docker tag rancher/calico-cni:v3.1.1 ${REGISTRY}/rancher/calico-cni:v3.1.1
+docker push ${REGISTRY}/rancher/calico-cni:v3.1.1
+docker tag rancher/calico-ctl:v2.0.0 ${REGISTRY}/rancher/calico-ctl:v2.0.0
+docker push ${REGISTRY}/rancher/calico-ctl:v2.0.0
+docker tag rancher/calico-node:v3.1.1 ${REGISTRY}/rancher/calico-node:v3.1.1
+docker push ${REGISTRY}/rancher/calico-node:v3.1.1
+docker tag rancher/cluster-proportional-autoscaler-amd64:1.0.0 ${REGISTRY}/rancher/cluster-proportional-autoscaler-amd64:1.0.0
+docker push ${REGISTRY}/rancher/cluster-proportional-autoscaler-amd64:1.0.0
+docker tag rancher/coreos-etcd:v3.1.12 ${REGISTRY}/rancher/coreos-etcd:v3.1.12
+docker push ${REGISTRY}/rancher/coreos-etcd:v3.1.12
+docker tag rancher/coreos-etcd:v3.2.18 ${REGISTRY}/rancher/coreos-etcd:v3.2.18
+docker push ${REGISTRY}/rancher/coreos-etcd:v3.2.18
+docker tag rancher/coreos-flannel-cni:v0.2.0 ${REGISTRY}/rancher/coreos-flannel-cni:v0.2.0
+docker push ${REGISTRY}/rancher/coreos-flannel-cni:v0.2.0
+docker tag rancher/coreos-flannel:v0.9.1 ${REGISTRY}/rancher/coreos-flannel:v0.9.1
+docker push ${REGISTRY}/rancher/coreos-flannel:v0.9.1
+docker tag rancher/docker-elasticsearch-kubernetes:5.6.2 ${REGISTRY}/rancher/docker-elasticsearch-kubernetes:5.6.2
+docker push ${REGISTRY}/rancher/docker-elasticsearch-kubernetes:5.6.2
+docker tag rancher/fluentd-helper:v0.1.2 ${REGISTRY}/rancher/fluentd-helper:v0.1.2
+docker push ${REGISTRY}/rancher/fluentd-helper:v0.1.2
+docker tag rancher/fluentd:v0.1.10 ${REGISTRY}/rancher/fluentd:v0.1.10
+docker push ${REGISTRY}/rancher/fluentd:v0.1.10
+docker tag rancher/hyperkube:v1.10.5-rancher1 ${REGISTRY}/rancher/hyperkube:v1.10.5-rancher1
+docker push ${REGISTRY}/rancher/hyperkube:v1.10.5-rancher1
+docker tag rancher/hyperkube:v1.11.2-rancher1 ${REGISTRY}/rancher/hyperkube:v1.11.2-rancher1
+docker push ${REGISTRY}/rancher/hyperkube:v1.11.2-rancher1
+docker tag rancher/hyperkube:v1.9.7-rancher2 ${REGISTRY}/rancher/hyperkube:v1.9.7-rancher2
+docker push ${REGISTRY}/rancher/hyperkube:v1.9.7-rancher2
+docker tag rancher/jenkins-jenkins:2.107-slim ${REGISTRY}/rancher/jenkins-jenkins:2.107-slim
+docker push ${REGISTRY}/rancher/jenkins-jenkins:2.107-slim
+docker tag rancher/jenkins-jnlp-slave:3.10-1-alpine ${REGISTRY}/rancher/jenkins-jnlp-slave:3.10-1-alpine
+docker push ${REGISTRY}/rancher/jenkins-jnlp-slave:3.10-1-alpine
+docker tag rancher/jenkins-plugins-docker:17.12 ${REGISTRY}/rancher/jenkins-plugins-docker:17.12
+docker push ${REGISTRY}/rancher/jenkins-plugins-docker:17.12
+docker tag rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.10 ${REGISTRY}/rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.10
+docker push ${REGISTRY}/rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.10
+docker tag rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.7 ${REGISTRY}/rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.7
+docker push ${REGISTRY}/rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.7
+docker tag rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.8 ${REGISTRY}/rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.8
+docker push ${REGISTRY}/rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.8
+docker tag rancher/k8s-dns-kube-dns-amd64:1.14.10 ${REGISTRY}/rancher/k8s-dns-kube-dns-amd64:1.14.10
+docker push ${REGISTRY}/rancher/k8s-dns-kube-dns-amd64:1.14.10
+docker tag rancher/k8s-dns-kube-dns-amd64:1.14.7 ${REGISTRY}/rancher/k8s-dns-kube-dns-amd64:1.14.7
+docker push ${REGISTRY}/rancher/k8s-dns-kube-dns-amd64:1.14.7
+docker tag rancher/k8s-dns-kube-dns-amd64:1.14.8 ${REGISTRY}/rancher/k8s-dns-kube-dns-amd64:1.14.8
+docker push ${REGISTRY}/rancher/k8s-dns-kube-dns-amd64:1.14.8
+docker tag rancher/k8s-dns-sidecar-amd64:1.14.10 ${REGISTRY}/rancher/k8s-dns-sidecar-amd64:1.14.10
+docker push ${REGISTRY}/rancher/k8s-dns-sidecar-amd64:1.14.10
+docker tag rancher/k8s-dns-sidecar-amd64:1.14.7 ${REGISTRY}/rancher/k8s-dns-sidecar-amd64:1.14.7
+docker push ${REGISTRY}/rancher/k8s-dns-sidecar-amd64:1.14.7
+docker tag rancher/k8s-dns-sidecar-amd64:1.14.8 ${REGISTRY}/rancher/k8s-dns-sidecar-amd64:1.14.8
+docker push ${REGISTRY}/rancher/k8s-dns-sidecar-amd64:1.14.8
+docker tag rancher/kibana:5.6.4 ${REGISTRY}/rancher/kibana:5.6.4
+docker push ${REGISTRY}/rancher/kibana:5.6.4
+docker tag rancher/log-aggregator:v0.1.3 ${REGISTRY}/rancher/log-aggregator:v0.1.3
+docker push ${REGISTRY}/rancher/log-aggregator:v0.1.3
+docker tag rancher/metrics-server-amd64:v0.2.1 ${REGISTRY}/rancher/metrics-server-amd64:v0.2.1
+docker push ${REGISTRY}/rancher/metrics-server-amd64:v0.2.1
+docker tag rancher/nginx-ingress-controller-defaultbackend:1.4 ${REGISTRY}/rancher/nginx-ingress-controller-defaultbackend:1.4
+docker push ${REGISTRY}/rancher/nginx-ingress-controller-defaultbackend:1.4
+docker tag rancher/nginx-ingress-controller:0.16.2-rancher1 ${REGISTRY}/rancher/nginx-ingress-controller:0.16.2-rancher1
+docker push ${REGISTRY}/rancher/nginx-ingress-controller:0.16.2-rancher1
+docker tag rancher/pause-amd64:3.0 ${REGISTRY}/rancher/pause-amd64:3.0
+docker push ${REGISTRY}/rancher/pause-amd64:3.0
+docker tag rancher/pause-amd64:3.1 ${REGISTRY}/rancher/pause-amd64:3.1
+docker push ${REGISTRY}/rancher/pause-amd64:3.1
+docker tag rancher/prom-alertmanager:v0.11.0 ${REGISTRY}/rancher/prom-alertmanager:v0.11.0
+docker push ${REGISTRY}/rancher/prom-alertmanager:v0.11.0
+docker tag rancher/rke-tools:v0.1.13 ${REGISTRY}/rancher/rke-tools:v0.1.13
+docker push ${REGISTRY}/rancher/rke-tools:v0.1.13
+docker tag rancher/rancher:v2.0.8 ${REGISTRY}/rancher/rancher:v2.0.8
+docker push ${REGISTRY}/rancher/rancher:v2.0.8
+docker tag rancher/rancher-agent:v2.0.8 ${REGISTRY}/rancher/rancher-agent:v2.0.8
+docker push ${REGISTRY}/rancher/rancher-agent:v2.0.8
diff --git a/scripts/Downloads/air-gap-files/rancher-save-images.sh b/scripts/Downloads/air-gap-files/rancher-save-images.sh
new file mode 100644
index 00000000000..5afba6c349a
--- /dev/null
+++ b/scripts/Downloads/air-gap-files/rancher-save-images.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+set -e -x
+
+docker pull busybox
+docker pull rancher/alertmanager-helper:v0.0.2
+docker pull rancher/alpine-git:1.0.4
+docker pull rancher/calico-cni:v3.1.1
+docker pull rancher/calico-ctl:v2.0.0
+docker pull rancher/calico-node:v3.1.1
+docker pull rancher/cluster-proportional-autoscaler-amd64:1.0.0
+docker pull rancher/coreos-etcd:v3.1.12
+docker pull rancher/coreos-etcd:v3.2.18
+docker pull rancher/coreos-flannel-cni:v0.2.0
+docker pull rancher/coreos-flannel:v0.9.1
+docker pull rancher/docker-elasticsearch-kubernetes:5.6.2
+docker pull rancher/fluentd-helper:v0.1.2
+docker pull rancher/fluentd:v0.1.10
+docker pull rancher/hyperkube:v1.10.5-rancher1
+docker pull rancher/hyperkube:v1.11.2-rancher1
+docker pull rancher/hyperkube:v1.9.7-rancher2
+docker pull rancher/jenkins-jenkins:2.107-slim
+docker pull rancher/jenkins-jnlp-slave:3.10-1-alpine
+docker pull rancher/jenkins-plugins-docker:17.12
+docker pull rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.10
+docker pull rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.7
+docker pull rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.8
+docker pull rancher/k8s-dns-kube-dns-amd64:1.14.10
+docker pull rancher/k8s-dns-kube-dns-amd64:1.14.7
+docker pull rancher/k8s-dns-kube-dns-amd64:1.14.8
+docker pull rancher/k8s-dns-sidecar-amd64:1.14.10
+docker pull rancher/k8s-dns-sidecar-amd64:1.14.7
+docker pull rancher/k8s-dns-sidecar-amd64:1.14.8
+docker pull rancher/kibana:5.6.4
+docker pull rancher/log-aggregator:v0.1.3
+docker pull rancher/metrics-server-amd64:v0.2.1
+docker pull rancher/nginx-ingress-controller-defaultbackend:1.4
+docker pull rancher/nginx-ingress-controller:0.16.2-rancher1
+docker pull rancher/pause-amd64:3.0
+docker pull rancher/pause-amd64:3.1
+docker pull rancher/prom-alertmanager:v0.11.0
+docker pull rancher/rke-tools:v0.1.13
+docker pull rancher/rancher:v2.0.8
+docker pull rancher/rancher-agent:v2.0.8
+docker save busybox rancher/alertmanager-helper:v0.0.2 rancher/alpine-git:1.0.4 rancher/calico-cni:v3.1.1 rancher/calico-ctl:v2.0.0 rancher/calico-node:v3.1.1 rancher/cluster-proportional-autoscaler-amd64:1.0.0 rancher/coreos-etcd:v3.1.12 rancher/coreos-etcd:v3.2.18 rancher/coreos-flannel-cni:v0.2.0 rancher/coreos-flannel:v0.9.1 rancher/docker-elasticsearch-kubernetes:5.6.2 rancher/fluentd-helper:v0.1.2 rancher/fluentd:v0.1.10 rancher/hyperkube:v1.10.5-rancher1 rancher/hyperkube:v1.11.2-rancher1 rancher/hyperkube:v1.9.7-rancher2 rancher/jenkins-jenkins:2.107-slim rancher/jenkins-jnlp-slave:3.10-1-alpine rancher/jenkins-plugins-docker:17.12 rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.10 rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.7 rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.8 rancher/k8s-dns-kube-dns-amd64:1.14.10 rancher/k8s-dns-kube-dns-amd64:1.14.7 rancher/k8s-dns-kube-dns-amd64:1.14.8 rancher/k8s-dns-sidecar-amd64:1.14.10 rancher/k8s-dns-sidecar-amd64:1.14.7 rancher/k8s-dns-sidecar-amd64:1.14.8 rancher/kibana:5.6.4 rancher/log-aggregator:v0.1.3 rancher/metrics-server-amd64:v0.2.1 rancher/nginx-ingress-controller-defaultbackend:1.4 rancher/nginx-ingress-controller:0.16.2-rancher1 rancher/pause-amd64:3.0 rancher/pause-amd64:3.1 rancher/prom-alertmanager:v0.11.0 rancher/rke-tools:v0.1.13 rancher/rancher:v2.0.8 rancher/rancher-agent:v2.0.8 | gzip -c > rancher-images.tar.gz
diff --git a/scripts/Downloads/air-gap-files/tmp-images.txt b/scripts/Downloads/air-gap-files/tmp-images.txt
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/scripts/Downloads/system-tools-master.zip b/scripts/Downloads/system-tools-master.zip
new file mode 100644
index 0000000000000000000000000000000000000000..53a072de0b444b2093ab956174f2c9d851df89a0
GIT binary patch
literal 4470555
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