diff --git a/content/_index.html b/content/_index.html
index 209d77f70cb..fe9ce90017d 100644
--- a/content/_index.html
+++ b/content/_index.html
@@ -101,8 +101,8 @@
card-item">
- 2.x
- Rancher 2.x
+ 2.5
+ Rancher 2.5
@@ -110,11 +110,30 @@
Rancher manages all of your Kubernetes clusters everywhere, unifies them under centralized RBAC, monitors them and lets you easily deploy and manage workloads through an intuitive user interface.
+
+
+
+
+
+ 2.0-2.4
+ Rancher 2.0-2.4
+
+
+
+
+
Rancher manages all of your Kubernetes clusters everywhere, unifies them under centralized RBAC, monitors them and lets you easily deploy and manage workloads through an intuitive user interface.
+
+
diff --git a/content/rancher/v2.5/en/cluster-admin/editing-clusters/_index.md b/content/rancher/v2.5/en/cluster-admin/editing-clusters/_index.md
index 011d4e92b1f..610282c58f8 100644
--- a/content/rancher/v2.5/en/cluster-admin/editing-clusters/_index.md
+++ b/content/rancher/v2.5/en/cluster-admin/editing-clusters/_index.md
@@ -34,7 +34,7 @@ Option | Description |
---------|----------|
Kubernetes Version | The version of Kubernetes installed on each cluster node. For more detail, see [Upgrading Kubernetes]({{}}/rancher/v2.5/en/cluster-admin/upgrading-kubernetes). |
Network Provider | The \container networking interface (CNI) that powers networking for your cluster.
**Note:** You can only choose this option while provisioning your cluster. It cannot be edited later. |
- Project Network Isolation | If you're using the Canal network provider, you can choose whether to enable or disable inter-project communication. |
+ Project Network Isolation | If your network provider allows project network isolation, you can choose whether to enable or disable inter-project communication. Before Rancher v2.5.8, project network isolation is only available if you are using the Canal network plugin for RKE. In v2.5.8+, project network isolation is available if you are using any RKE network plugin that supports the enforcement of Kubernetes network policies, such as Canal or the Cisco ACI plugin.|
Nginx Ingress | If you want to publish your applications in a high-availability configuration, and you're hosting your nodes with a cloud-provider that doesn't have a native load-balancing feature, enable this option to use Nginx ingress within the cluster. |
Metrics Server Monitoring | Each cloud provider capable of launching a cluster using RKE can collect metrics and monitor for your cluster nodes. Enable this option to view your node metrics from your cloud provider's portal. |
Pod Security Policy Support | Enables [pod security policies]({{}}/rancher/v2.5/en/admin-settings/pod-security-policies/) for the cluster. After enabling this option, choose a policy using the **Default Pod Security Policy** drop-down. |
diff --git a/content/rancher/v2.5/en/cluster-admin/projects-and-namespaces/_index.md b/content/rancher/v2.5/en/cluster-admin/projects-and-namespaces/_index.md
index dbf7e3cf84f..b495d62f208 100644
--- a/content/rancher/v2.5/en/cluster-admin/projects-and-namespaces/_index.md
+++ b/content/rancher/v2.5/en/cluster-admin/projects-and-namespaces/_index.md
@@ -106,12 +106,7 @@ The `system` project:
- Allows you to add more namespaces or move its namespaces to other projects.
- Cannot be deleted because it's required for cluster operations.
->**Note:** In clusters where both:
->
-> - The Canal network plug-in is in use.
-> - The Project Network Isolation option is enabled.
->
->The `system` project overrides the Project Network Isolation option so that it can communicate with other projects, collect logs, and check health.
+>**Note:** In RKE clusters where the project network isolation option is enabled, the `system` project overrides the project network isolation option so that it can communicate with other projects, collect logs, and check health.
# Project Authorization
diff --git a/content/rancher/v2.5/en/cluster-provisioning/_index.md b/content/rancher/v2.5/en/cluster-provisioning/_index.md
index cc063af1adc..3be9c2d0505 100644
--- a/content/rancher/v2.5/en/cluster-provisioning/_index.md
+++ b/content/rancher/v2.5/en/cluster-provisioning/_index.md
@@ -18,6 +18,7 @@ This section covers the following topics:
+- [Cluster Management Capabilities by Cluster Type](#cluster-management-capabilities-by-cluster-type)
- [Setting up clusters in a hosted Kubernetes provider](#setting-up-clusters-in-a-hosted-kubernetes-provider)
- [Launching Kubernetes with Rancher](#launching-kubernetes-with-rancher)
- [Launching Kubernetes and Provisioning Nodes in an Infrastructure Provider](#launching-kubernetes-and-provisioning-nodes-in-an-infrastructure-provider)
@@ -27,6 +28,8 @@ This section covers the following topics:
+### Cluster Management Capabilities by Cluster Type
+
The following table summarizes the options and settings available for each cluster type:
{{% include file="/rancher/v2.5/en/cluster-provisioning/cluster-capabilities-table" %}}
diff --git a/content/rancher/v2.5/en/cluster-provisioning/cluster-capabilities-table/index.md b/content/rancher/v2.5/en/cluster-provisioning/cluster-capabilities-table/index.md
index 81cbefffc6d..5dd2664c8b7 100644
--- a/content/rancher/v2.5/en/cluster-provisioning/cluster-capabilities-table/index.md
+++ b/content/rancher/v2.5/en/cluster-provisioning/cluster-capabilities-table/index.md
@@ -1,22 +1,59 @@
---
headless: true
---
-| Action | [Rancher launched Kubernetes Clusters]({{}}/rancher/v2.5/en/cluster-provisioning/rke-clusters/) | [Hosted Kubernetes Clusters]({{}}/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/) | [Imported Clusters]({{}}/rancher/v2.5/en/cluster-provisioning/imported-clusters) |
-| --- | --- | ---| ---|
-| [Using kubectl and a kubeconfig file to Access a Cluster]({{}}/rancher/v2.5/en/cluster-admin/cluster-access/kubectl/) | ✓ | ✓ | ✓ |
-| [Managing Cluster Members]({{}}/rancher/v2.5/en/cluster-admin/cluster-access/cluster-members/) | ✓ | ✓ | ✓ |
-| [Editing and Upgrading Clusters]({{}}/rancher/v2.5/en/cluster-admin/editing-clusters/) | ✓ | ✓ | * |
-| [Managing Nodes]({{}}/rancher/v2.5/en/cluster-admin/nodes) | ✓ | ✓ | ✓ |
-| [Managing Persistent Volumes and Storage Classes]({{}}/rancher/v2.5/en/cluster-admin/volumes-and-storage/) | ✓ | ✓ | ✓ |
-| [Managing Projects, Namespaces and Workloads]({{}}/rancher/v2.5/en/cluster-admin/projects-and-namespaces/) | ✓ | ✓ | ✓ |
-| [Using App Catalogs]({{}}/rancher/v2.5/en/catalog/) | ✓ | ✓ | ✓ |
-| [Configuring Tools (Alerts, Notifiers, Logging, Monitoring, Istio)]({{}}/rancher/v2.5/en/cluster-admin/tools/) | ✓ | ✓ | ✓ |
-| [Running Security Scans]({{}}/rancher/v2.5/en/security/security-scan/) | ✓ | ✓ | ✓ |
-| [Cloning Clusters]({{}}/rancher/v2.5/en/cluster-admin/cloning-clusters/)| ✓ | ✓ | |
-| [Ability to rotate certificates]({{}}/rancher/v2.5/en/cluster-admin/certificate-rotation/) | ✓ | | |
-| [Ability to back up your Kubernetes Clusters]({{}}/rancher/v2.5/en/cluster-admin/backing-up-etcd/) | ✓ | | |
-| [Ability to recover and restore etcd]({{}}/rancher/v2.5/en/cluster-admin/restoring-etcd/) | ✓ | | |
-| [Cleaning Kubernetes components when clusters are no longer reachable from Rancher]({{}}/rancher/v2.5/en/cluster-admin/cleaning-cluster-nodes/) | ✓ | | |
-| [Configuring Pod Security Policies]({{}}/rancher/v2.5/en/cluster-admin/pod-security-policy/) | ✓ | | |
+
+{{% tabs %}}
+{{% tab "Rancher v2.5.8" %}}
+
+| Action | Rancher Launched Kubernetes Clusters | EKS and GKE Clusters* | Other Hosted Kubernetes Clusters | Non-EKS or GKE Registered Clusters |
+| --- | --- | ---| ---|----|
+| [Using kubectl and a kubeconfig file to Access a Cluster]({{}}/rancher/v2.5/en/cluster-admin/cluster-access/kubectl/) | ✓ | ✓ | ✓ | ✓ |
+| [Managing Cluster Members]({{}}/rancher/v2.5/en/cluster-admin/cluster-access/cluster-members/) | ✓ | ✓ | ✓ | ✓ |
+| [Editing and Upgrading Clusters]({{}}/rancher/v2.5/en/cluster-admin/editing-clusters/) | ✓ | ✓ | ✓ | ** |
+| [Managing Nodes]({{}}/rancher/v2.5/en/cluster-admin/nodes) | ✓ | ✓ | ✓ | ✓ *** |
+| [Managing Persistent Volumes and Storage Classes]({{}}/rancher/v2.5/en/cluster-admin/volumes-and-storage/) | ✓ | ✓ | ✓ | ✓ |
+| [Managing Projects, Namespaces and Workloads]({{}}/rancher/v2.5/en/cluster-admin/projects-and-namespaces/) | ✓ | ✓ | ✓ | ✓ |
+| [Using App Catalogs]({{}}/rancher/v2.5/en/catalog/) | ✓ | ✓ | ✓ | ✓ |
+| [Configuring Tools (Alerts, Notifiers, Logging, Monitoring, Istio)]({{}}/rancher/v2.5/en/cluster-admin/tools/) | ✓ | ✓ | ✓ | ✓ |
+| [Running Security Scans]({{}}/rancher/v2.5/en/security/security-scan/) | ✓ | ✓ | ✓ | ✓ |
+| [Cloning Clusters]({{}}/rancher/v2.5/en/cluster-admin/cloning-clusters/)| ✓ | ✓ |✓ | |
+| [Ability to rotate certificates]({{}}/rancher/v2.5/en/cluster-admin/certificate-rotation/) | ✓ | ✓ | | |
+| [Ability to back up your Kubernetes Clusters]({{}}/rancher/v2.5/en/cluster-admin/backing-up-etcd/) | ✓ | ✓ | | |
+| [Ability to recover and restore etcd]({{}}/rancher/v2.5/en/cluster-admin/restoring-etcd/) | ✓ | ✓ | | |
+| [Cleaning Kubernetes components when clusters are no longer reachable from Rancher]({{}}/rancher/v2.5/en/cluster-admin/cleaning-cluster-nodes/) | ✓ | | | |
+| [Configuring Pod Security Policies]({{}}/rancher/v2.5/en/cluster-admin/pod-security-policy/) | ✓ | ✓ | ||
+
+\* Registered GKE and EKS clusters have the same options available as GKE and EKS clusters created from the Rancher UI. The difference is that when a registered cluster is deleted from the Rancher UI, [it is not destroyed.]({{}}/rancher/v2.5/en/cluster-provisioning/registered-clusters/#additional-features-for-registered-eks-and-gke-clusters)
+
+\* \* Cluster configuration options can't be edited for imported clusters, except for [K3s and RKE2 clusters.]({{}}/rancher/v2.5/en/cluster-provisioning/imported-clusters/)
+
+\* \* \* For registered cluster nodes, the Rancher UI exposes the ability to cordon drain, and edit the node.
+
+{{% /tab %}}
+{{% tab "Rancher v2.5.0-v2.5.7" %}}
+
+| Action | Rancher Launched Kubernetes Clusters | Hosted Kubernetes Clusters | Registered EKS Clusters | All Other Registered Clusters |
+| --- | --- | ---| ---|----|
+| [Using kubectl and a kubeconfig file to Access a Cluster]({{}}/rancher/v2.5/en/cluster-admin/cluster-access/kubectl/) | ✓ | ✓ | ✓ | ✓ |
+| [Managing Cluster Members]({{}}/rancher/v2.5/en/cluster-admin/cluster-access/cluster-members/) | ✓ | ✓ | ✓ | ✓ |
+| [Editing and Upgrading Clusters]({{}}/rancher/v2.5/en/cluster-admin/editing-clusters/) | ✓ | ✓ | ✓ | * |
+| [Managing Nodes]({{}}/rancher/v2.5/en/cluster-admin/nodes) | ✓ | ✓ | ✓ | ✓ ** |
+| [Managing Persistent Volumes and Storage Classes]({{}}/rancher/v2.5/en/cluster-admin/volumes-and-storage/) | ✓ | ✓ | ✓ | ✓ |
+| [Managing Projects, Namespaces and Workloads]({{}}/rancher/v2.5/en/cluster-admin/projects-and-namespaces/) | ✓ | ✓ | ✓ | ✓ |
+| [Using App Catalogs]({{}}/rancher/v2.5/en/catalog/) | ✓ | ✓ | ✓ | ✓ |
+| [Configuring Tools (Alerts, Notifiers, Logging, Monitoring, Istio)]({{}}/rancher/v2.5/en/cluster-admin/tools/) | ✓ | ✓ | ✓ | ✓ |
+| [Running Security Scans]({{}}/rancher/v2.5/en/security/security-scan/) | ✓ | ✓ | ✓ | ✓ |
+| [Cloning Clusters]({{}}/rancher/v2.5/en/cluster-admin/cloning-clusters/)| ✓ | ✓ |✓ | |
+| [Ability to rotate certificates]({{}}/rancher/v2.5/en/cluster-admin/certificate-rotation/) | ✓ | | ✓ | |
+| [Ability to back up your Kubernetes Clusters]({{}}/rancher/v2.5/en/cluster-admin/backing-up-etcd/) | ✓ | | ✓ | |
+| [Ability to recover and restore etcd]({{}}/rancher/v2.5/en/cluster-admin/restoring-etcd/) | ✓ | | ✓ | |
+| [Cleaning Kubernetes components when clusters are no longer reachable from Rancher]({{}}/rancher/v2.5/en/cluster-admin/cleaning-cluster-nodes/) | ✓ | | | |
+| [Configuring Pod Security Policies]({{}}/rancher/v2.5/en/cluster-admin/pod-security-policy/) | ✓ | | ✓ ||
\* Cluster configuration options can't be edited for imported clusters, except for [K3s and RKE2 clusters.]({{}}/rancher/v2.5/en/cluster-provisioning/imported-clusters/)
+
+\* \* For registered cluster nodes, the Rancher UI exposes the ability to cordon drain, and edit the node.
+
+
+{{% /tab %}}
+{{% /tabs %}}
\ No newline at end of file
diff --git a/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/eks/_index.md b/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/eks/_index.md
index 92fab1a1bce..437daf93b53 100644
--- a/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/eks/_index.md
+++ b/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/eks/_index.md
@@ -712,30 +712,31 @@ Permissions required for Rancher to create VPC and associated resources.
}
```
-
# Syncing
-Syncing is the feature that causes Rancher to update its EKS clusters' values so they are up to date with their corresponding cluster object in the EKS console. This enables Rancher to not be the sole owner of an EKS cluster’s state. Its largest limitation is that processing an update from Rancher and another source at the same time or within 5 minutes of one finishing may cause the state from one source to completely overwrite the other.
-
-### How it works
-
-There are two fields on the Rancher Cluster object that must be understood to understand how syncing works:
-
-1. EKSConfig which is located on the Spec of the Cluster.
-2. UpstreamSpec which is located on the EKSStatus field on the Status of the Cluster.
-
-Both of which are defined by the struct EKSClusterConfigSpec found in the eks-operator project: https://github.com/rancher/eks-operator/blob/master/pkg/apis/eks.cattle.io/v1/types.go
-
-All fields with the exception of DisplayName, AmazonCredentialSecret, Region, and Imported are nillable on the EKSClusterConfigSpec.
-
-The EKSConfig represents desired state for its non-nil values. Fields that are non-nil in the EKSConfig can be thought of as “managed".When a cluster is created in Rancher, all fields are non-nil and therefore “managed”. When a pre-existing cluster is registered in rancher all nillable fields are nil and are not “managed”. Those fields become managed once their value has been changed by Rancher.
-
-UpstreamSpec represents the cluster as it is in EKS and is refreshed on an interval of 5 minutes. After the UpstreamSpec has been refreshed rancher checks if the EKS cluster has an update in progress. If it is updating, nothing further is done. If it is not currently updating, any “managed” fields on EKSConfig are overwritten with their corresponding value from the recently updated UpstreamSpec.
-
-The effective desired state can be thought of as the UpstreamSpec + all non-nil fields in the EKSConfig. This is what is displayed in the UI.
-
-If Rancher and another source attempt to update an EKS cluster at the same time or within the 5 minute refresh window of an update finishing, then it is likely any “managed” fields can be caught in a race condition. For example, a cluster may have PrivateAccess as a managed field. If PrivateAccess is false and then enabled in EKS console, then finishes at 11:01, and then tags are updated from Rancher before 11:05 the value will likely be overwritten. This would also occur if tags were updated while the cluster was processing the update. If the cluster was registered and the PrivateAccess fields was nil then this issue should not occur in the aforementioned case.
+The EKS provisioner can synchronize the state of an EKS cluster between Rancher and the provider. For an in-depth technical explanation of how this works, see [Syncing.](../syncing)
### Configuring the Refresh Interval
-It is possible to change the refresh interval through the setting “eks-refresh-cron". This setting accepts values in the Cron format. The default is `*/5 * * * *`. The shorter the refresh window is the less likely any race conditions will occur, but it does increase the likelihood of encountering request limits that may be in place for AWS APIs.
+{{% tabs %}}
+{{% tab "Rancher v2.5.8+" %}}
+
+The `eks-refresh-cron` setting is deprecated. It has been migrated to the `eks-refresh` setting, which is an integer representing seconds.
+
+The default value is 300 seconds.
+
+The syncing interval can be changed by running `kubectl edit setting eks-refresh`.
+
+If the `eks-refresh-cron` setting was previously set, the migration will happen automatically.
+
+The shorter the refresh window, the less likely any race conditions will occur, but it does increase the likelihood of encountering request limits that may be in place for AWS APIs.
+
+{{% /tab %}}
+{{% tab "Before v2.5.8" %}}
+
+It is possible to change the refresh interval through the setting `eks-refresh-cron`. This setting accepts values in the Cron format. The default is `*/5 * * * *`.
+
+The shorter the refresh window, the less likely any race conditions will occur, but it does increase the likelihood of encountering request limits that may be in place for AWS APIs.
+
+{{% /tab %}}
+{{% /tabs %}}
diff --git a/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/_index.md b/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/_index.md
index 04e27648067..a2541bd4a10 100644
--- a/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/_index.md
+++ b/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/_index.md
@@ -1,15 +1,26 @@
---
-title: Creating a GKE Cluster
+title: Managing GKE Clusters
shortTitle: Google Kubernetes Engine
weight: 2105
aliases:
- /rancher/v2.5/en/tasks/clusters/creating-a-cluster/create-cluster-gke/
---
-## Prerequisites in Google Kubernetes Engine
+{{% tabs %}}
+{{% tab "Rancher v2.5.8+" %}}
->**Note**
->Deploying to GKE will incur charges.
+- [Prerequisites](#prerequisites)
+- [Provisioning a GKE Cluster](#provisioning-a-gke-cluster)
+- [Private Clusters](#private-clusters)
+- [Configuration Reference](./config-reference)
+- [Updating Kubernetes Version](#updating-kubernetes-version)
+- [Syncing](#syncing)
+
+# Prerequisites
+
+Some setup in Google Kubernetes Engine is required.
+
+### Service Account Token
Create a service account using [Google Kubernetes Engine](https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts). GKE uses this account to operate your cluster. Creating this account also generates a private key used for authentication.
@@ -22,7 +33,108 @@ The service account requires the following roles:
[Google Documentation: Creating and Enabling Service Accounts](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances)
-## Create the GKE Cluster
+For help obtaining a private key for your service account, refer to the Google cloud documentation [here.](https://cloud.google.com/iam/docs/creating-managing-service-account-keys#creating_service_account_keys) You will need to save the key in JSON format.
+
+### Google Project ID
+
+Your cluster will need to be part of a Google Project.
+
+To create a new project, refer to the Google cloud documentation [here.](https://cloud.google.com/resource-manager/docs/creating-managing-projects#creating_a_project)
+
+To get the project ID of an existing project, refer to the Google cloud documentation [here.](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects)
+
+# Provisioning a GKE Cluster
+
+>**Note**
+>Deploying to GKE will incur charges.
+
+### 1. Create a Cloud Credential
+
+1. In the upper right corner, click the user profile dropdown menu and click **Cloud Credentials.**
+1. Click **Add Cloud Credential.**
+1. Enter a name for your Google cloud credentials.
+1. In the **Cloud Credential Type** field, select **Google.**
+1. In the **Service Account** text box, paste your service account private key JSON, or upload the JSON file.
+1. Click **Create.**
+
+**Result:** You have created credentials that Rancher will use to provision the new GKE cluster.
+
+### 2. Create the GKE Cluster
+Use Rancher to set up and configure your Kubernetes cluster.
+
+1. From the **Clusters** page, click **Add Cluster**.
+1. Under **With a hosted Kubernetes provider,** click **Google GKE**.
+1. Enter a **Cluster Name**.
+1. Optional: Use **Member Roles** to configure user authorization for the cluster. Click **Add Member** to add users that can access the cluster. Use the **Role** drop-down to set permissions for each user.
+1. Optional: Add Kubernetes [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) or [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) to the cluster.
+1. Enter your Google project ID and your Google cloud credentials.
+1. Fill out the rest of the form. For help, refer to the [GKE cluster configuration reference.](./config-reference)
+1. Click **Create.**
+
+**Result:** You have successfully deployed a GKE cluster.
+
+Your cluster is created and assigned a state of **Provisioning.** Rancher is standing up your cluster.
+
+You can access your cluster after its state is updated to **Active.**
+
+**Active** clusters are assigned two Projects:
+
+- `Default`, containing the `default` namespace
+- `System`, containing the `cattle-system`, `ingress-nginx`, `kube-public`, and `kube-system` namespaces
+
+# Private Clusters
+
+Private GKE clusters are supported. Note: This advanced setup can require more steps during the cluster provisioning process. For details, see [this section.](./private-clusters)
+
+# Configuration Reference
+
+More configuration options are available for v2.5.8. For details on configuring GKE clusters in Rancher, see [this page.](./config-reference)
+# Updating Kubernetes Version
+
+The Kubernetes version of a cluster can be upgraded to any version available in the region or zone fo the GKE cluster. Upgrading the master Kubernetes version does not automatically upgrade worker nodes. Nodes can be upgraded independently.
+
+>**Note**
+>GKE has removed basic authentication in 1.19+. In order to upgrade a cluster to 1.19+, basic authentication must be disabled in the Google Cloud. Otherwise, an error will appear in Rancher when an upgrade to 1.19+ is attempted. You can follow the [Google documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication#disabling_authentication_with_a_static_password). After this, the Kubernetes version can be updated to 1.19+ via Rancher.
+
+# Syncing
+
+The GKE provisioner can synchronize the state of an GKE cluster between Rancher and the provider. For an in-depth technical explanation of how this works, see [Syncing.](../syncing)
+
+### Configuring the Refresh Interval
+
+The refresh interval can be configured through the setting "gke-refresh", which is an integer representing seconds.
+
+The default value is 300 seconds.
+
+The syncing interval can be changed by running `kubectl edit setting gke-refresh`.
+
+The shorter the refresh window, the less likely any race conditions will occur, but it does increase the likelihood of encountering request limits that may be in place for GCP APIs.
+
+{{% /tab %}}
+{{% tab "Rancher before v2.5.8" %}}
+
+# Prerequisites
+
+Some setup in Google Kubernetes Engine is required.
+
+### Service Account Token
+
+Create a service account using [Google Kubernetes Engine](https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts). GKE uses this account to operate your cluster. Creating this account also generates a private key used for authentication.
+
+The service account requires the following roles:
+
+- **Compute Viewer:** `roles/compute.viewer`
+- **Project Viewer:** `roles/viewer`
+- **Kubernetes Engine Admin:** `roles/container.admin`
+- **Service Account User:** `roles/iam.serviceAccountUser`
+
+[Google Documentation: Creating and Enabling Service Accounts](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances)
+
+
+>**Note**
+>Deploying to GKE will incur charges.
+
+# Create the GKE Cluster
Use Rancher to set up and configure your Kubernetes cluster.
@@ -38,13 +150,10 @@ Use Rancher to set up and configure your Kubernetes cluster.
>**Note:** After submitting your private key, you may have to enable the Google Kubernetes Engine API. If prompted, browse to the URL displayed in the Rancher UI to enable the API.
-6. Select your **Cluster Options**
-7. Customize your **Node Options**
- * Enabling the Auto Upgrade feature for Nodes is not recommended.
-8. Select your **Security Options**
+6. Select your cluster options, node options and security options. For help, refer to the [GKE Cluster Configuration Reference.](#gke-before-v2-5-8)
9. Review your options to confirm they're correct. Then click **Create**.
-**Result:**
+**Result:** You have successfully deployed a GKE cluster.
Your cluster is created and assigned a state of **Provisioning.** Rancher is standing up your cluster.
@@ -54,3 +163,6 @@ You can access your cluster after its state is updated to **Active.**
- `Default`, containing the `default` namespace
- `System`, containing the `cattle-system`, `ingress-nginx`, `kube-public`, and `kube-system` namespaces
+
+{{% /tab %}}
+{{% /tabs %}}
diff --git a/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/config-reference/_index.md b/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/config-reference/_index.md
new file mode 100644
index 00000000000..c64ef97cbf6
--- /dev/null
+++ b/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/config-reference/_index.md
@@ -0,0 +1,360 @@
+---
+title: GKE Cluster Configuration Reference
+weight: 1
+---
+
+{{% tabs %}}
+{{% tab "v2.5.8" %}}
+
+### Changes in v2.5.8
+
+- We now support private GKE clusters. Note: This advanced setup can require more steps during the cluster provisioning process. For details, see [this section.]({{}}/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/#private-clusters)
+- [Shared VPCs](https://cloud.google.com/vpc/docs/shared-vpc) are now supported.
+- We now support more configuration options for Rancher managed GKE clusters:
+ - Project
+ - Network policy
+ - Network policy config
+ - Node pools and node configuration options:
+ - More image types are available for the nodes
+ - The maximum number of pods per node can be configured
+ - Node pools can be added while configuring the GKE cluster
+- When provisioning a GKE cluster, you can now use reusable cloud credentials instead of using a service account token directly to create the cluster.
+
+# Cluster Location
+
+| Value | Description |
+|--------|--------------|
+| Location Type | Zonal or Regional. With GKE, you can create a cluster tailored to the availability requirements of your workload and your budget. By default, a cluster's nodes run in a single compute zone. When multiple zones are selected, the cluster's nodes will span multiple compute zones, while the controlplane is located in a single zone. Regional clusters increase the availability of the controlplane as well. For help choosing the type of cluster availability, refer to [these docs.](https://cloud.google.com/kubernetes-engine/docs/best-practices/scalability#choosing_a_regional_or_zonal_control_plane) |
+| Zone | Each region in Compute engine contains a number of zones. For more information about available regions and zones, refer to [these docs.](https://cloud.google.com/compute/docs/regions-zones#available) |
+| Additional Zones | For zonal clusters, you can select additional zones to create a [multi-zone cluster.](https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters#multi-zonal_clusters) |
+| Region | For [regional clusters,](https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters#regional_clusters) you can select a region. For more information about available regions and zones, refer to [this section](https://cloud.google.com/compute/docs/regions-zones#available). The first part of each zone name is the name of the region. |
+
+# Cluster Options
+
+### Kubernetes Version
+
+For more information on GKE Kubernetes versions, refer to [these docs.](https://cloud.google.com/kubernetes-engine/versioning)
+
+### Container Address Range
+
+The IP address range for pods in the cluster. Must be a valid CIDR range, e.g. 10.42.0.0/16. If not specified, a random range is automatically chosen from 10.0.0.0/8 and will exclude ranges already allocated to VMs, other clusters, or routes. Automatically chosen ranges may conflict with reserved IP addresses, dynamic routes, or routes within VPCs peering with the cluster.
+
+### Network
+
+The Compute Engine Network that the cluster connects to. Routes and firewalls will be created using this network. If using [Shared VPCs](https://cloud.google.com/vpc/docs/shared-vpc), the VPC networks that are shared to your project will appear here. will be available to select in this field. For more information, refer to [this page](https://cloud.google.com/vpc/docs/vpc#vpc_networks_and_subnets).
+
+### Node Subnet / Subnet
+
+The Compute Engine subnetwork that the cluster connects to. This subnetwork must belong to the network specified in the **Network** field. Select an existing subnetwork, or select "Auto Create Subnetwork" to have one automatically created. If not using an existing network, **Subnetwork Name** is required to generate one. If using [Shared VPCs](https://cloud.google.com/vpc/docs/shared-vpc), the VPC subnets that are shared to your project will appear here. If using a Shared VPC network, you cannot select "Auto Create Subnetwork". For more information, refer to [this page.](https://cloud.google.com/vpc/docs/vpc#vpc_networks_and_subnets)
+
+### Subnetwork Name
+
+Automatically create a subnetwork with the provided name. Required if "Auto Create Subnetwork" is selected for **Node Subnet** or **Subnet**. For more information on subnetworks, refer to [this page.](https://cloud.google.com/vpc/docs/vpc#vpc_networks_and_subnets)
+
+### Ip Aliases
+
+Enable [alias IPs](https://cloud.google.com/vpc/docs/alias-ip). This enables VPC-native traffic routing. Required if using [Shared VPCs](https://cloud.google.com/vpc/docs/shared-vpc).
+
+### Network Policy
+
+Enable network policy enforcement on the cluster. A network policy defines the level of communication that can occur between pods and services in the cluster. For more information, refer to [this page.](https://cloud.google.com/kubernetes-engine/docs/how-to/network-policy)
+
+### Node Ipv4 CIDR Block
+
+The IP address range of the instance IPs in this cluster. Can be set if "Auto Create Subnetwork" is selected for **Node Subnet** or **Subnet**. Must be a valid CIDR range, e.g. 10.96.0.0/14. For more information on how to determine the IP address range, refer to [this page.](https://cloud.google.com/kubernetes-engine/docs/concepts/alias-ips#cluster_sizing)
+
+### Cluster Secondary Range Name
+
+The name of an existing secondary range for Pod IP addresses. If selected, **Cluster Pod Address Range** will automatically be populated. Required if using a Shared VPC network.
+
+### Cluster Pod Address Range
+
+The IP address range assigned to pods in the cluster. Must be a valid CIDR range, e.g. 10.96.0.0/11. If not provided, will be created automatically. Must be provided if using a Shared VPC network. For more information on how to determine the IP address range for your pods, refer to [this section.](https://cloud.google.com/kubernetes-engine/docs/concepts/alias-ips#cluster_sizing_secondary_range_pods)
+
+### Services Secondary Range Name
+
+The name of an existing secondary range for service IP addresses. If selected, **Service Address Range** will be automatically populated. Required if using a Shared VPC network.
+
+### Service Address Range
+
+The address range assigned to the services in the cluster. Must be a valid CIDR range, e.g. 10.94.0.0/18. If not provided, will be created automatically. Must be provided if using a Shared VPC network. For more information on how to determine the IP address range for your services, refer to [this section.](https://cloud.google.com/kubernetes-engine/docs/concepts/alias-ips#cluster_sizing_secondary_range_svcs)
+
+### Private Cluster
+
+> Warning: private clusters require additional planning and configuration outside of Rancher. Refer to the [private cluster guide]({{< baseurl >}}/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/private-clusters/).
+
+Assign nodes only internal IP addresses. Private cluster nodes cannot access the public internet unless additional networking steps are taken in GCP.
+
+### Enable Private Endpoint
+
+> Warning: private clusters require additional planning and configuration outside of Rancher. Refer to the [private cluster guide]({{< baseurl >}}/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/#private-clusters).
+
+Locks down external access to the control plane endpoint. Only available if **Private Cluster** is also selected. If selected, and if Rancher does not have direct access to the Virtual Private Cloud network the cluster is running in, Rancher will provide a registration command to run on the cluster to enable Rancher to connect to it.
+
+### Master IPV4 CIDR Block
+
+The IP range for the control plane VPC.
+
+### Master Authorized Network
+
+Enable control plane authorized networks to block untrusted non-GCP source IPs from accessing the Kubernetes master through HTTPS. If selected, additional authorized networks may be added. If the cluster is created with a public endpoint, this option is useful for locking down access to the public endpoint to only certain networks, such as the network where your Rancher service is running. If the cluster only has a private endpoint, this setting is required.
+
+# Additional Options
+
+### Cluster Addons
+
+Additional Kubernetes cluster components. For more information, refer to [this page.](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.AddonsConfig)
+
+#### Horizontal Pod Autoscaling
+
+The Horizontal Pod Autoscaler changes the shape of your Kubernetes workload by automatically increasing or decreasing the number of Pods in response to the workload's CPU or memory consumption, or in response to custom metrics reported from within Kubernetes or external metrics from sources outside of your cluster. For more information, see [this page.](https://cloud.google.com/kubernetes-engine/docs/concepts/horizontalpodautoscaler)
+
+#### HTTP (L7) Load Balancing
+
+HTTP (L7) Load Balancing distributes HTTP and HTTPS traffic to backends hosted on GKE. For more information, refer to [this page.](https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer)
+
+#### Network Policy Config (master only)
+
+Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the master, it does not track whether network policy is enabled for the nodes.
+
+### Cluster Features (Alpha Features)
+
+Turns on all Kubernetes alpha API groups and features for the cluster. When enabled, the cluster cannot be upgraded and will be deleted automatically after 30 days. Alpha clusters are not recommended for production use as they are not covered by the GKE SLA. For more information, refer to [this page.](https://cloud.google.com/kubernetes-engine/docs/concepts/alpha-clusters)
+
+### Logging Service
+
+The logging service the cluster uses to write logs. Use either [Cloud Logging](https://cloud.google.com/logging) or no logging service in which case no logs are exported from the cluster.
+
+### Monitoring Service
+
+The monitoring service the cluster uses to write metrics. Use either [Cloud Monitoring](https://cloud.google.com/monitoring) or monitoring service in which case no metrics are exported from the cluster.
+
+
+### Maintenance Window
+
+Set the start time for a 4 hour maintenance window. The time is specified in the UTC time zone using the HH:MM format. For more information, refer to [this page.](https://cloud.google.com/kubernetes-engine/docs/concepts/maintenance-windows-and-exclusions)
+
+# Node Pools
+
+In this section, enter details describing the configuration of each node in the node pool.
+
+### Kubernetes Version
+
+The Kubernetes version for each node in the node pool. For more information on GKE Kubernetes versions, refer to [these docs.](https://cloud.google.com/kubernetes-engine/versioning)
+
+### Image Type
+
+The node operating system image. For more information for the node image options that GKE offers for each OS, refer to [this page.](https://cloud.google.com/kubernetes-engine/docs/concepts/node-images#available_node_images)
+
+> Note: the default option is "Container-Optimized OS with Docker". The read-only filesystem on GCP's Container-Optimized OS is not compatible with the [legacy logging]({{}}/rancher/v2.0-v2.4/en/cluster-admin/tools/logging) implementation in Rancher. If you need to use the legacy logging feature, select "Ubuntu with Docker" or "Ubuntu with Containerd". The [logging feature as of v2.5]({{}}/rancher/v2.5/en/logging) is compatible with the Container-Optimized OS image.
+
+> Note: if selecting "Windows Long Term Service Channel" or "Windows Semi-Annual Channel" for the node pool image type, you must also add at least one Container-Optimized OS or Ubuntu node pool.
+
+### Machine Type
+
+The virtualized hardware resources available to node instances. For more information on Google Cloud machine types, refer to [this page.](https://cloud.google.com/compute/docs/machine-types#machine_types)
+
+### Root Disk Type
+
+Standard persistent disks are backed by standard hard disk drives (HDD), while SSD persistent disks are backed by solid state drives (SSD). For more information, refer to [this section.](https://cloud.google.com/compute/docs/disks)
+
+### Local SSD Disks
+
+Configure each node's local SSD disk storage in GB. Local SSDs are physically attached to the server that hosts your VM instance. Local SSDs have higher throughput and lower latency than standard persistent disks or SSD persistent disks. The data that you store on a local SSD persists only until the instance is stopped or deleted. For more information, see [this section.](https://cloud.google.com/compute/docs/disks#localssds)
+
+### Preemptible nodes (beta)
+
+Preemptible nodes, also called preemptible VMs, are Compute Engine VM instances that last a maximum of 24 hours in general, and provide no availability guarantees. For more information, see [this page.](https://cloud.google.com/kubernetes-engine/docs/how-to/preemptible-vms)
+
+### Taints
+
+When you apply a taint to a node, only Pods that tolerate the taint are allowed to run on the node. In a GKE cluster, you can apply a taint to a node pool, which applies the taint to all nodes in the pool.
+
+### Node Labels
+
+You can apply labels to the node pool, which applies the labels to all nodes in the pool.
+
+
+# Group Details
+
+In this section, enter details describing the node pool.
+
+### Name
+
+Enter a name for the node pool.
+
+### Initial Node Count
+
+Integer for the starting number of nodes in the node pool.
+
+### Max Pod Per Node
+
+GKE has a hard limit of 110 Pods per node. For more information on the Kubernetes limits, see [this section.](https://cloud.google.com/kubernetes-engine/docs/best-practices/scalability#dimension_limits)
+
+### Autoscaling
+
+Node pool autoscaling dynamically creates or deletes nodes based on the demands of your workload. For more information, see [this page.](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-autoscaler)
+
+### Auto Repair
+
+GKE's node auto-repair feature helps you keep the nodes in your cluster in a healthy, running state. When enabled, GKE makes periodic checks on the health state of each node in your cluster. If a node fails consecutive health checks over an extended time period, GKE initiates a repair process for that node. For more information, see the section on [auto-repairing nodes.](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-repair)
+
+### Auto Upgrade
+
+When enabled, the auto-upgrade feature keeps the nodes in your cluster up-to-date with the cluster control plane (master) version when your control plane is [updated on your behalf.](https://cloud.google.com/kubernetes-engine/upgrades#automatic_cp_upgrades) For more information about auto-upgrading nodes, see [this page.](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-upgrades)
+
+### Access Scopes
+
+Access scopes are the legacy method of specifying permissions for your nodes.
+
+- **Allow default access:** The default access for new clusters is the [Compute Engine default service account.](https://cloud.google.com/compute/docs/access/service-accounts?hl=en_US#default_service_account)
+- **Allow full access to all Cloud APIs:** Generally, you can just set the cloud-platform access scope to allow full access to all Cloud APIs, then grant the service account only relevant IAM roles. The combination of access scopes granted to the virtual machine instance and the IAM roles granted to the service account determines the amount of access the service account has for that instance.
+- **Set access for each API:** Alternatively, you can choose to set specific scopes that permit access to the particular API methods that the service will call.
+
+For more information, see the [section about enabling service accounts for a VM.](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances)
+
+{{% /tab %}}
+{{% tab "Rancher before v2.5.8" %}}
+
+
+# Labels & Annotations
+
+Add Kubernetes [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) or [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) to the cluster.
+
+# Kubernetes Options
+
+### Location Type
+Zonal or Regional. With GKE, you can create a cluster tailored to the availability requirements of your workload and your budget. By default, a cluster's nodes run in a single compute zone. When multiple zones are selected, the cluster's nodes will span multiple compute zones, while the controlplane is located in a single zone. Regional clusters increase the availability of the controlplane as well. For help choosing the type of cluster availability, refer to [these docs.](https://cloud.google.com/kubernetes-engine/docs/best-practices/scalability#choosing_a_regional_or_zonal_control_plane)
+
+For [regional clusters,](https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters#regional_clusters) you can select a region. For more information about available regions and zones, refer to [this section](https://cloud.google.com/compute/docs/regions-zones#available). The first part of each zone name is the name of the region.
+
+The location type can't be changed after the cluster is created.
+
+### Zone
+Each region in Compute engine contains a number of zones.
+
+For more information about available regions and zones, refer to [these docs.](https://cloud.google.com/compute/docs/regions-zones#available)
+
+### Additional Zones
+For zonal clusters, you can select additional zones to create a [multi-zone cluster.](https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters#multi-zonal_clusters)
+
+### Kubernetes Version
+Link to list of GKE kubernetes versions
+
+### Container Address Range
+
+The IP address range for pods in the cluster. Must be a valid CIDR range, e.g. 10.42.0.0/16. If not specified, a random range is automatically chosen from 10.0.0.0/8 and will exclude ranges already allocated to VMs, other clusters, or routes. Automatically chosen ranges may conflict with reserved IP addresses, dynamic routes, or routes within VPCs peering with the cluster.
+
+### Alpha Features
+
+Turns on all Kubernetes alpha API groups and features for the cluster. When enabled, the cluster cannot be upgraded and will be deleted automatically after 30 days. Alpha clusters are not recommended for production use as they are not covered by the GKE SLA. For more information, refer to [this page](https://cloud.google.com/kubernetes-engine/docs/concepts/alpha-clusters).
+
+### Legacy Authorization
+
+This option is deprecated and it is recommended to leave it disabled. For more information, see [this page.](https://cloud.google.com/kubernetes-engine/docs/how-to/hardening-your-cluster#leave_abac_disabled)
+### Stackdriver Logging
+
+Enable logging with Google Cloud's Operations Suite, formerly called Stackdriver. For details, see the [documentation.](https://cloud.google.com/logging/docs/basic-concepts)
+### Stackdriver Monitoring
+
+Enable monitoring with Google Cloud's Operations Suite, formerly called Stackdriver. For details, see the [documentation.](https://cloud.google.com/monitoring/docs/monitoring-overview)
+### Kubernetes Dashboard
+
+Enable the [Kubernetes dashboard add-on.](https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards#kubernetes_dashboard) Starting with GKE v1.15, you will no longer be able to enable the Kubernetes Dashboard by using the add-on API.
+### Http Load Balancing
+
+Set up [HTTP(S) load balancing.](https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer) To use Ingress, you must have the HTTP(S) Load Balancing add-on enabled.
+### Horizontal Pod Autoscaling
+
+The Horizontal Pod Autoscaler changes the shape of your Kubernetes workload by automatically increasing or decreasing the number of Pods in response to the workload's CPU or memory consumption, or in response to custom metrics reported from within Kubernetes or external metrics from sources outside of your cluster. For more information, see the [documentation.](https://cloud.google.com/kubernetes-engine/docs/concepts/horizontalpodautoscaler)
+### Maintenance Window
+
+Set the start time for a 4 hour maintenance window. The time is specified in the UTC time zone using the HH:MM format. For more information, refer to [this page.](https://cloud.google.com/kubernetes-engine/docs/concepts/maintenance-windows-and-exclusions)
+
+### Network
+
+The Compute Engine Network that the cluster connects to. Routes and firewalls will be created using this network. If using [Shared VPCs](https://cloud.google.com/vpc/docs/shared-vpc), the VPC networks that are shared to your project will appear here. will be available to select in this field. For more information, refer to [this page](https://cloud.google.com/vpc/docs/vpc#vpc_networks_and_subnets).
+
+### Node Subnet / Subnet
+
+The Compute Engine subnetwork that the cluster connects to. This subnetwork must belong to the network specified in the **Network** field. Select an existing subnetwork, or select "Auto Create Subnetwork" to have one automatically created. If not using an existing network, **Subnetwork Name** is required to generate one. If using [Shared VPCs](https://cloud.google.com/vpc/docs/shared-vpc), the VPC subnets that are shared to your project will appear here. If using a Shared VPC network, you cannot select "Auto Create Subnetwork". For more information, refer to [this page.](https://cloud.google.com/vpc/docs/vpc#vpc_networks_and_subnets)
+### Ip Aliases
+
+Enable [alias IPs](https://cloud.google.com/vpc/docs/alias-ip). This enables VPC-native traffic routing. Required if using [Shared VPCs](https://cloud.google.com/vpc/docs/shared-vpc).
+
+### Pod address range
+
+When you create a VPC-native cluster, you specify a subnet in a VPC network. The cluster uses three unique subnet IP address ranges for nodes, pods, and services. For more information on IP address ranges, see [this section.](https://cloud.google.com/kubernetes-engine/docs/concepts/alias-ips#cluster_sizing)
+
+### Service address range
+
+When you create a VPC-native cluster, you specify a subnet in a VPC network. The cluster uses three unique subnet IP address ranges for nodes, pods, and services. For more information on IP address ranges, see [this section.](https://cloud.google.com/kubernetes-engine/docs/concepts/alias-ips#cluster_sizing)
+### Cluster Labels
+
+A [cluster label](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-managing-labels) is a key-value pair that helps you organize your Google Cloud clusters. You can attach a label to each resource, then filter the resources based on their labels. Information about labels is forwarded to the billing system, so you can break down your billing charges by label.
+
+## Node Options
+
+### Node Count
+Integer for the starting number of nodes in the node pool.
+
+### Machine Type
+For more information on Google Cloud machine types, refer to [this page.](https://cloud.google.com/compute/docs/machine-types#machine_types)
+
+### Image Type
+Ubuntu or Container-Optimized OS images are available.
+
+For more information about GKE node image options, refer to [this page.](https://cloud.google.com/kubernetes-engine/docs/concepts/node-images#available_node_images)
+
+### Root Disk Type
+
+Standard persistent disks are backed by standard hard disk drives (HDD), while SSD persistent disks are backed by solid state drives (SSD). For more information, refer to [this section.](https://cloud.google.com/compute/docs/disks)
+
+### Root Disk Size
+The size in GB of the [root disk.](https://cloud.google.com/compute/docs/disks)
+
+### Local SSD disks
+Configure each node's local SSD disk storage in GB.
+
+Local SSDs are physically attached to the server that hosts your VM instance. Local SSDs have higher throughput and lower latency than standard persistent disks or SSD persistent disks. The data that you store on a local SSD persists only until the instance is stopped or deleted. For more information, see [this section.](https://cloud.google.com/compute/docs/disks#localssds)
+
+### Preemptible nodes (beta)
+
+Preemptible nodes, also called preemptible VMs, are Compute Engine VM instances that last a maximum of 24 hours in general, and provide no availability guarantees. For more information, see [this page.](https://cloud.google.com/kubernetes-engine/docs/how-to/preemptible-vms)
+
+### Auto Upgrade
+
+> Note: Enabling the Auto Upgrade feature for Nodes is not recommended.
+
+When enabled, the auto-upgrade feature keeps the nodes in your cluster up-to-date with the cluster control plane (master) version when your control plane is [updated on your behalf.](https://cloud.google.com/kubernetes-engine/upgrades#automatic_cp_upgrades) For more information about auto-upgrading nodes, see [this page.](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-upgrades)
+
+### Auto Repair
+
+GKE's node auto-repair feature helps you keep the nodes in your cluster in a healthy, running state. When enabled, GKE makes periodic checks on the health state of each node in your cluster. If a node fails consecutive health checks over an extended time period, GKE initiates a repair process for that node. For more information, see the section on [auto-repairing nodes.](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-repair)
+
+### Node Pool Autoscaling
+
+Enable node pool autoscaling based on cluster load. For more information, see the documentation on [adding a node pool with autoscaling.](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-autoscaler#adding_a_node_pool_with_autoscaling)
+
+### Taints
+When you apply a taint to a node, only Pods that tolerate the taint are allowed to run on the node. In a GKE cluster, you can apply a taint to a node pool, which applies the taint to all nodes in the pool.
+### Node Labels
+You can apply labels to the node pool, which applies the labels to all nodes in the pool.
+
+## Security Options
+
+### Service Account
+
+Create a [Service Account](https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts) with a JSON private key and provide the JSON here. See [Google Cloud docs](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances) for more info about creating a service account. These IAM roles are required: Compute Viewer (`roles/compute.viewer`), (Project) Viewer (`roles/viewer`), Kubernetes Engine Admin (`roles/container.admin`), Service Account User (`roles/iam.serviceAccountUser`). More info on roles can be found [here.](https://cloud.google.com/kubernetes-engine/docs/how-to/iam-integration)
+
+### Access Scopes
+
+Access scopes are the legacy method of specifying permissions for your nodes.
+
+- **Allow default access:** The default access for new clusters is the [Compute Engine default service account.](https://cloud.google.com/compute/docs/access/service-accounts?hl=en_US#default_service_account)
+- **Allow full access to all Cloud APIs:** Generally, you can just set the cloud-platform access scope to allow full access to all Cloud APIs, then grant the service account only relevant IAM roles. The combination of access scopes granted to the virtual machine instance and the IAM roles granted to the service account determines the amount of access the service account has for that instance.
+- **Set access for each API:** Alternatively, you can choose to set specific scopes that permit access to the particular API methods that the service will call.
+
+For more information, see the [section about enabling service accounts for a VM.](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances)
+{{% /tab %}}
+{{% /tabs %}}
diff --git a/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/private-clusters/_index.md b/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/private-clusters/_index.md
new file mode 100644
index 00000000000..d938b790361
--- /dev/null
+++ b/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/gke/private-clusters/_index.md
@@ -0,0 +1,42 @@
+
+title: Private Clusters
+weight: 2
+---
+
+In GKE, [private clusters](https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept) are clusters whose nodes are isolated from inbound and outbound traffic by assigning them internal IP addresses only. Private clusters in GKE have the option of exposing the control plane endpoint as a publicly accessible address or as a private address. This is different from other Kubernetes providers, which may refer to clusters with private control plane endpoints as "private clusters" but still allow traffic to and from nodes. You may want to create a cluster with private nodes, with or without a public control plane endpoint, depending on your organization's networking and security requirements. A GKE cluster provisioned from Rancher can use isolated nodes by selecting "Private Cluster" in the Cluster Options (under "Show advanced options"). The control plane endpoint can optionally be made private by selecting "Enable Private Endpoint".
+
+### Private Nodes
+
+Because the nodes in a private cluster only have internal IP addresses, they will not be able to install the cluster agent and Rancher will not be able to fully manage the cluster. This can be overcome in a few ways.
+
+#### Cloud NAT
+
+>**Note**
+>Cloud NAT will [incur charges](https://cloud.google.com/nat/pricing).
+
+If restricting outgoing internet access is not a concern for your organization, use Google's [Cloud NAT](https://cloud.google.com/nat/docs/using-nat) service to allow nodes in the private network to access the internet, enabling them to download the required images from Dockerhub and contact the Rancher management server. This is the simplest solution.
+
+#### Private registry
+
+>**Note**
+>This scenario is not officially supported, but is described for cases in which using the Cloud NAT service is not sufficient.
+
+If restricting both incoming and outgoing traffic to nodes is a requirement, follow the air-gapped installation instructions to set up a private container image [registry](https://rancher.com/docs/rancher/v2.x/en/installation/other-installation-methods/air-gap/) on the VPC where the cluster is going to be, allowing the cluster nodes to access and download the images they need to run the cluster agent. If the control plane endpoint is also private, Rancher will need [direct access](#direct-access) to it.
+
+### Private Control Plane Endpoint
+
+If the cluster has a public endpoint exposed, Rancher will be able to reach the cluster, and no additional steps need to be taken. However, if the cluster has no public endpoint, then considerations must be made to ensure Rancher can access the cluster.
+
+#### Cloud NAT
+
+>**Note**
+>Cloud NAT will [incur charges](https://cloud.google.com/nat/pricing).
+
+As above, if restricting outgoing internet access to the nodes is not a concern, then Google's [Cloud NAT](https://cloud.google.com/nat/docs/using-nat) service can be used to allow the nodes to access the internet. While the cluster is provisioning, Rancher will provide a registration command to run on the cluster. Download the [kubeconfig](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl) for the new cluster and run the provided kubectl command on the cluster. Gaining access
+to the cluster in order to run this command can be done by creating a temporary node or using an existing node in the VPC, or by logging on to or creating an SSH tunnel through one of the cluster nodes.
+
+#### Direct access
+
+If the Rancher server is run on the same VPC as the cluster's control plane, it will have direct access to the control plane's private endpoint. The cluster nodes will need to have access to a [private registry](#private-registry) to download images as described above.
+
+You can also use services from Google such as [Cloud VPN](https://cloud.google.com/network-connectivity/docs/vpn/concepts/overview) or [Cloud Interconnect VLAN](https://cloud.google.com/network-connectivity/docs/interconnect) to facilitate connectivity between your organization's network and your Google VPC.
diff --git a/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/syncing/_index.md b/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/syncing/_index.md
new file mode 100644
index 00000000000..03184492969
--- /dev/null
+++ b/content/rancher/v2.5/en/cluster-provisioning/hosted-kubernetes-clusters/syncing/_index.md
@@ -0,0 +1,32 @@
+# Syncing
+
+Syncing is the feature for EKS and GKE clusters that causes Rancher to update the clusters' values so they are up to date with their corresponding cluster object in the hosted Kubernetes provider. This enables Rancher to not be the sole owner of a hosted cluster’s state. Its largest limitation is that processing an update from Rancher and another source at the same time or within 5 minutes of one finishing may cause the state from one source to completely overwrite the other.
+
+### How it works
+
+There are two fields on the Rancher Cluster object that must be understood to understand how syncing works:
+
+1. The config object for the cluster, located on the Spec of the Cluster:
+
+ * For EKS, the field is called EKSConfig
+ * For GKE, the field is called GKEConfig
+
+2. The UpstreamSpec object
+
+ * For EKS, this is located on the EKSStatus field on the Status of the Cluster.
+ * For GKE, this is located on the GKEStatus field on the Status of the Cluster.
+
+The struct types that define these objects can be found in their corresponding operator projects:
+
+ * [eks-operator](https://github.com/rancher/eks-operator/blob/master/pkg/apis/eks.cattle.io/v1/types.go)
+ * [gke-operator](https://github.com/rancher/gke-operator/blob/master/pkg/apis/gke.cattle.io/v1/types.go)
+
+All fields with the exception of the cluster name, the location (region or zone), Imported, and the cloud credential reference, are nillable on this Spec object.
+
+The EKSConfig or GKEConfig represents desired state for its non-nil values. Fields that are non-nil in the config object can be thought of as “managed". When a cluster is created in Rancher, all fields are non-nil and therefore “managed”. When a pre-existing cluster is registered in rancher all nillable fields are nil and are not “managed”. Those fields become managed once their value has been changed by Rancher.
+
+UpstreamSpec represents the cluster as it is in the hosted Kubernetes provider and is refreshed on an interval of 5 minutes. After the UpstreamSpec has been refreshed, Rancher checks if the cluster has an update in progress. If it is updating, nothing further is done. If it is not currently updating, any “managed” fields on EKSConfig or GKEConfig are overwritten with their corresponding value from the recently updated UpstreamSpec.
+
+The effective desired state can be thought of as the UpstreamSpec + all non-nil fields in the EKSConfig or GKEConfig. This is what is displayed in the UI.
+
+If Rancher and another source attempt to update a cluster at the same time or within the 5 minute refresh window of an update finishing, then it is likely any “managed” fields can be caught in a race condition. To use EKS as an example, a cluster may have PrivateAccess as a managed field. If PrivateAccess is false and then enabled in EKS console, then finishes at 11:01, and then tags are updated from Rancher before 11:05 the value will likely be overwritten. This would also occur if tags were updated while the cluster was processing the update. If the cluster was registered and the PrivateAccess fields was nil then this issue should not occur in the aforementioned case.
diff --git a/content/rancher/v2.5/en/cluster-provisioning/registered-clusters/_index.md b/content/rancher/v2.5/en/cluster-provisioning/registered-clusters/_index.md
index 5d8553db48e..f8e7a29a2a8 100644
--- a/content/rancher/v2.5/en/cluster-provisioning/registered-clusters/_index.md
+++ b/content/rancher/v2.5/en/cluster-provisioning/registered-clusters/_index.md
@@ -5,20 +5,13 @@ aliases:
- /rancher/v2.5/en/cluster-provisioning/imported-clusters
---
-_Available as of v2.5_
-
The cluster registration feature replaced the feature to import clusters.
The control that Rancher has to manage a registered cluster depends on the type of cluster. For details, see [Management Capabilities for Registered Clusters.](#management-capabilities-for-registered-clusters)
-Registering EKS clusters now provides additional benefits.
-
- [Prerequisites](#prerequisites)
- [Registering a Cluster](#registering-a-cluster)
- [Management Capabilities for Registered Clusters](#management-capabilities-for-registered-clusters)
- - [Features for All Registered Clusters](#features-for-all-registered-clusters)
- - [Additional Features for Registered K3s Clusters](#additional-features-for-registered-k3s-clusters)
- - [Additional Features for Registered EKS Clusters](#additional-features-for-registered-eks-clusters)
- [Configuring K3s Cluster Upgrades](#configuring-k3s-cluster-upgrades)
- [Debug Logging and Troubleshooting for Registered K3s Clusters](#debug-logging-and-troubleshooting-for-registered-k3s-clusters)
- [Annotating Registered Clusters](#annotating-registered-clusters)
@@ -85,6 +78,19 @@ $ curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sh -s -
The control that Rancher has to manage a registered cluster depends on the type of cluster.
+{{% tabs %}}
+{{% tab "Rancher v2.5.8+" %}}
+
+- [Changes in v2.5.8](#changes-in-v2-5-8)
+- [Features for All Registered Clusters](#2-5-8-features-for-all-registered-clusters)
+- [Additional Features for Registered K3s Clusters](#2-5-8-additional-features-for-registered-k3s-clusters)
+- [Additional Features for Registered EKS and GKE Clusters](#additional-features-for-registered-eks-and-gke-clusters)
+
+### Changes in v2.5.8
+
+Greater management capabilities are now available for [registered GKE clusters.](#additional-features-for-registered-eks-and-gke-clusters) The same configuration options are available for registered GKE clusters as for the GKE clusters created through the Rancher UI.
+
+
### Features for All Registered Clusters
After registering a cluster, the cluster owner can:
@@ -96,6 +102,48 @@ After registering a cluster, the cluster owner can:
- Use [pipelines]({{}}/rancher/v2.5/en/project-admin/pipelines/)
- Manage projects and workloads
+
+### Additional Features for Registered K3s Clusters
+
+[K3s]({{}}/k3s/latest/en/) is a lightweight, fully compliant Kubernetes distribution.
+
+When a K3s cluster is registered in Rancher, Rancher will recognize it as K3s. The Rancher UI will expose the features for [all registered clusters,](#features-for-all-registered-clusters) in addition to the following features for editing and upgrading the cluster:
+
+- The ability to [upgrade the K3s version]({{}}/rancher/v2.5/en/cluster-admin/upgrading-kubernetes/)
+- The ability to configure the maximum number of nodes that will be upgraded concurrently
+- The ability to see a read-only version of the K3s cluster's configuration arguments and environment variables used to launch each node in the cluster
+
+### Additional Features for Registered EKS and GKE Clusters
+
+Registering an Amazon EKS cluster or GKE cluster allows Rancher to treat it as though it were created in Rancher.
+
+Amazon EKS clusters and GKE clusters can now be registered in Rancher. For the most part, these registered clusters are treated the same way as clusters created in the Rancher UI, except for deletion.
+
+When you delete an EKS cluster or GKE cluster that was created in Rancher, the cluster is destroyed. When you delete a cluster that was registered in Rancher, it is disconnected from the Rancher server, but it still exists and you can still access it in the same way you did before it was registered in Rancher.
+
+The capabilities for registered clusters are listed in the table on [this page.]({{}}/rancher/v2.5/en/cluster-provisioning/)
+
+
+{{% /tab %}}
+{{% tab "Rancher v2.5.0-v2.5.8" %}}
+
+- [Features for All Registered Clusters](#before-2-5-8-features-for-all-registered-clusters)
+- [Additional Features for Registered K3s Clusters](#before-2-5-8-additional-features-for-registered-k3s-clusters)
+- [Additional Features for Registered EKS Clusters](#additional-features-for-registered-eks-clusters)
+
+
+### Features for All Registered Clusters
+
+After registering a cluster, the cluster owner can:
+
+- [Manage cluster access]({{}}/rancher/v2.5/en/admin-settings/rbac/cluster-project-roles/) through role-based access control
+- Enable [monitoring, alerts and notifiers]({{}}/rancher/v2.5/en/monitoring-alerting/v2.5/)
+- Enable [logging]({{}}/rancher/v2.5/en/logging/v2.5/)
+- Enable [Istio]({{}}/rancher/v2.5/en/istio/v2.5/)
+- Use [pipelines]({{}}/rancher/v2.5/en/project-admin/pipelines/)
+- Manage projects and workloads
+
+
### Additional Features for Registered K3s Clusters
[K3s]({{}}/k3s/latest/en/) is a lightweight, fully compliant Kubernetes distribution.
@@ -115,6 +163,10 @@ Amazon EKS clusters can now be registered in Rancher. For the most part, registe
When you delete an EKS cluster that was created in Rancher, the cluster is destroyed. When you delete an EKS cluster that was registered in Rancher, it is disconnected from the Rancher server, but it still exists and you can still access it in the same way you did before it was registered in Rancher.
The capabilities for registered EKS clusters are listed in the table on [this page.]({{}}/rancher/v2.5/en/cluster-provisioning/)
+{{% /tab %}}
+{{% /tabs %}}
+
+
# Configuring K3s Cluster Upgrades
diff --git a/content/rancher/v2.5/en/cluster-provisioning/rke-clusters/options/_index.md b/content/rancher/v2.5/en/cluster-provisioning/rke-clusters/options/_index.md
index 0e394858eb4..aef26507b12 100644
--- a/content/rancher/v2.5/en/cluster-provisioning/rke-clusters/options/_index.md
+++ b/content/rancher/v2.5/en/cluster-provisioning/rke-clusters/options/_index.md
@@ -19,6 +19,7 @@ This section is a cluster configuration reference, covering the following topics
- [Rancher UI Options](#rancher-ui-options)
- [Kubernetes version](#kubernetes-version)
- [Network provider](#network-provider)
+ - [Project network isolation](#project-network-isolation)
- [Kubernetes cloud providers](#kubernetes-cloud-providers)
- [Private registries](#private-registries)
- [Authorized cluster endpoint](#authorized-cluster-endpoint)
@@ -58,15 +59,28 @@ Out of the box, Rancher is compatible with the following network providers:
- [Calico](https://docs.projectcalico.org/v3.11/introduction/)
- [Weave](https://github.com/weaveworks/weave)
-**Notes on Canal:**
-
-If you use Canal, you also have the option of using **Project Network Isolation**, which will enable or disable communication between pods in different [projects]({{}}/rancher/v2.5/en/k8s-in-rancher/projects-and-namespaces/).
-
**Notes on Weave:**
When Weave is selected as network provider, Rancher will automatically enable encryption by generating a random password. If you want to specify the password manually, please see how to configure your cluster using a [Config File]({{}}/rancher/v2.5/en/cluster-provisioning/rke-clusters/options/#cluster-config-file) and the [Weave Network Plug-in Options]({{}}/rke/latest/en/config-options/add-ons/network-plugins/#weave-network-plug-in-options).
+### Project Network Isolation
+
+Project network isolation is used to enable or disable communication between pods in different projects.
+
+{{% tabs %}}
+{{% tab "Rancher v2.5.8+" %}}
+
+To enable project network isolation as a cluster option, you will need to use any RKE network plugin that supports the enforcement of Kubernetes network policies, such as Canal or the Cisco ACI plugin.
+
+{{% /tab %}}
+{{% tab "Rancher before v2.5.8" %}}
+
+To enable project network isolation as a cluster option, you will need to use Canal as the CNI.
+
+{{% /tab %}}
+{{% /tabs %}}
+
### Kubernetes Cloud Providers
You can configure a [Kubernetes cloud provider]({{}}/rancher/v2.5/en/cluster-provisioning/rke-clusters/options/cloud-providers). If you want to use [volumes and storage]({{}}/rancher/v2.5/en/k8s-in-rancher/volumes-and-storage/) in Kubernetes, typically you must select the specific cloud provider in order to use it. For example, if you want to use Amazon EBS, you would need to select the `aws` cloud provider.
@@ -278,6 +292,10 @@ Option to enable or disable [Cluster Monitoring]({{}}/rancher/v2.5/en/m
Option to enable or disable Project Network Isolation.
+Before Rancher v2.5.8, project network isolation is only available if you are using the Canal network plugin for RKE.
+
+In v2.5.8+, project network isolation is available if you are using any RKE network plugin that supports the enforcement of Kubernetes network policies, such as Canal or the Cisco ACI plugin.
+
### local_cluster_auth_endpoint
See [Authorized Cluster Endpoint](#authorized-cluster-endpoint).
diff --git a/content/rancher/v2.5/en/cluster-provisioning/rke-clusters/windows-clusters/_index.md b/content/rancher/v2.5/en/cluster-provisioning/rke-clusters/windows-clusters/_index.md
index c69d4dc5445..d4cab37b33d 100644
--- a/content/rancher/v2.5/en/cluster-provisioning/rke-clusters/windows-clusters/_index.md
+++ b/content/rancher/v2.5/en/cluster-provisioning/rke-clusters/windows-clusters/_index.md
@@ -33,6 +33,14 @@ The general node requirements for networking, operating systems, and Docker are
### OS and Docker Requirements
+{{% tabs %}}
+{{% tab "Rancher v2.5.8+" %}}
+
+Our support for Windows Server and Windows containers match the Microsoft official lifecycle for LTSC (Long-Term Servicing Channel) and SAC (Semi-Annual Channel).
+
+For the support lifecycle dates for Windows Server, see the [Microsoft Documentation.](https://docs.microsoft.com/en-us/windows-server/get-started/windows-server-release-info)
+{{% /tab %}}
+{{% tab "Rancher before v2.5.8" %}}
In order to add Windows worker nodes to a cluster, the node must be running one of the following Windows Server versions and the corresponding version of Docker Engine - Enterprise Edition (EE):
- Nodes with Windows Server core version 1809 should use Docker EE-basic 18.09 or Docker EE-basic 19.03.
@@ -42,6 +50,8 @@ In order to add Windows worker nodes to a cluster, the node must be running one
>
> - If you are using AWS, Rancher recommends _Microsoft Windows Server 2019 Base with Containers_ as the Amazon Machine Image (AMI).
> - If you are using GCE, Rancher recommends _Windows Server 2019 Datacenter for Containers_ as the OS image.
+{{% /tab %}}
+{{% /tabs %}}
### Kubernetes Version
diff --git a/content/rancher/v2.5/en/faq/removing-rancher/_index.md b/content/rancher/v2.5/en/faq/removing-rancher/_index.md
index 5b18507f4dc..be8e6175ddb 100644
--- a/content/rancher/v2.5/en/faq/removing-rancher/_index.md
+++ b/content/rancher/v2.5/en/faq/removing-rancher/_index.md
@@ -32,6 +32,15 @@ The capability to access a downstream cluster without Rancher depends on the typ
If you [installed Rancher on a Kubernetes cluster,]({{}}/rancher/v2.5/en/installation/install-rancher-on-k8s/) remove Rancher by using the [System Tools]({{}}/rancher/v2.5/en/system-tools/) with the `remove` subcommand.
+As of Rancher v2.5.8, uninstalling Rancher in high-availability (HA) mode will also remove all `helm-operation-*` pods and the following apps:
+
+- fleet
+- fleet-agent
+- rancher-operator
+- rancher-webhook
+
+Custom resources (CRDs) and custom namespaces will still need to be manually removed.
+
If you installed Rancher with Docker, you can uninstall Rancher by removing the single Docker container that it runs in.
Imported clusters will not be affected by Rancher being removed. For other types of clusters, refer to the section on [accessing downstream clusters when Rancher is removed.](#if-the-rancher-server-is-deleted-how-do-i-access-my-downstream-clusters)
diff --git a/content/rancher/v2.5/en/installation/install-rancher-on-k8s/_index.md b/content/rancher/v2.5/en/installation/install-rancher-on-k8s/_index.md
index 5cecd22fac8..7d4887312eb 100644
--- a/content/rancher/v2.5/en/installation/install-rancher-on-k8s/_index.md
+++ b/content/rancher/v2.5/en/installation/install-rancher-on-k8s/_index.md
@@ -32,7 +32,8 @@ For help setting up a Kubernetes cluster, we provide these tutorials:
- **RKE:** For the tutorial to install an RKE Kubernetes cluster, refer to [this page.]({{}}/rancher/v2.5/en/installation/resources/k8s-tutorials/ha-rke/) For help setting up the infrastructure for a high-availability RKE cluster, refer to [this page.]({{}}/rancher/v2.5/en/installation/resources/k8s-tutorials/infrastructure-tutorials/infra-for-ha)
- **K3s:** For the tutorial to install a K3s Kubernetes cluster, refer to [this page.]({{}}/rancher/v2.5/en/installation/resources/k8s-tutorials/ha-with-external-db) For help setting up the infrastructure for a high-availability K3s cluster, refer to [this page.]({{}}/rancher/v2.5/en/installation/resources/k8s-tutorials/infrastructure-tutorials/infra-for-ha-with-external-db)
- **RKE2:** For the tutorial to install an RKE2 Kubernetes cluster, refer to [this page.]({{}}/rancher/v2.5/en/installation/resources/k8s-tutorials/ha-rke2) For help setting up the infrastructure for a high-availability RKE2 cluster, refer to [this page.]({{}}/rancher/v2.5/en/installation/resources/k8s-tutorials/infrastructure-tutorials/infra-for-rke2-ha)
-- **Amazon EKS:** To install Rancher on Amazon EKS, including how to install an ingress so that the Rancher server can be accessed, refer to [this page.]({{}}/rancher/v2.5/en/installation/install-rancher-on-k8s/amazon-eks)
+- **Amazon EKS:** For details on how to install Rancher on Amazon EKS, including how to install an ingress so that the Rancher server can be accessed, refer to [this page.]({{}}/rancher/v2.5/en/installation/install-rancher-on-k8s/amazon-eks)
+- **GKE:** For details on how to install Rancher with Google Kubernetes Engine, including how to install an ingress so that the Rancher server can be accessed, refer to [this page.]({{}}/rancher/v2.5/en/installation/install-rancher-on-k8s/gke)
### CLI Tools
diff --git a/content/rancher/v2.5/en/installation/install-rancher-on-k8s/gke/_index.md b/content/rancher/v2.5/en/installation/install-rancher-on-k8s/gke/_index.md
new file mode 100644
index 00000000000..492a2f60ccc
--- /dev/null
+++ b/content/rancher/v2.5/en/installation/install-rancher-on-k8s/gke/_index.md
@@ -0,0 +1,180 @@
+---
+title: Installing Rancher on a Google Kubernetes Engine Cluster
+shortTitle: GKE
+weight: 5
+---
+
+In this section, you'll learn how to install Rancher using Google Kubernetes Engine.
+
+If you already have a GKE Kubernetes cluster, skip to the step about [installing an ingress.](#7-install-an-ingress) Then install the Rancher Helm chart following the instructions on [this page.]({{}}/rancher/v2.5/en/installation/install-rancher-on-k8s/#install-the-rancher-helm-chart)
+
+# Prerequisites
+
+- You will need a Google account.
+- You will need a Google Cloud billing account. You can manage your Cloud Billing accounts using the Google Cloud Console. For more information about the Cloud Console, visit [General guide to the console.](https://support.google.com/cloud/answer/3465889?hl=en&ref_topic=3340599)
+- You will need a cloud quota for at least one in-use IP address and at least 2 CPUs. For more details about hardware requirements for the Rancher server, refer to [this section.]({{}}/rancher/v2.5/en/installation/requirements/#rke-and-hosted-kubernetes)
+
+# 1. Enable the Kubernetes Engine API
+
+Take the following steps to enable the Kubernetes Engine API:
+
+1. Visit the [Kubernetes Engine page](https://console.cloud.google.com/projectselector/kubernetes?_ga=2.169595943.767329331.1617810440-856599067.1617343886) in the Google Cloud Console.
+1. Create or select a project.
+1. Open the project and enable the Kubernetes Engine API for the project. Wait for the API and related services to be enabled. This can take several minutes.
+1. Make sure that billing is enabled for your Cloud project. For information on how to enable billing for your project, refer to the [Google Cloud documentation.](https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project)
+
+# 2. Open the Cloud Shell
+
+Cloud Shell is a shell environment for managing resources hosted on Google Cloud. Cloud Shell comes preinstalled with the `gcloud` command-line tool and kubectl command-line tool. The `gcloud` tool provides the primary command-line interface for Google Cloud, and `kubectl` provides the primary command-line interface for running commands against Kubernetes clusters.
+
+The following sections describe how to launch the cloud shell from the Google Cloud Console or from your local workstation.
+
+### Cloud Shell
+
+To launch the shell from the [Google Cloud Console,](https://console.cloud.google.com) go to the upper-right corner of the console and click the terminal button. When hovering over the button, it is labeled **Activate Cloud Shell.**
+
+### Local Shell
+
+To install `gcloud` and `kubectl`, perform the following steps:
+
+1. Install the Cloud SDK by following [these steps.](https://cloud.google.com/sdk/docs/install) The Cloud SDK includes the `gcloud` command-line tool. The steps vary based on your OS.
+1. After installing Cloud SDK, install the `kubectl` command-line tool by running the following command:
+
+ ```
+ gcloud components install kubectl
+ ```
+ In a later step, `kubectl` will be configured to use the new GKE cluster.
+1. [Install Helm 3](https://helm.sh/docs/intro/install/) if it is not already installed.
+1. Enable Helm experimental [support for OCI images](https://github.com/helm/community/blob/master/hips/hip-0006.md) with the `HELM_EXPERIMENTAL_OCI` variable. Add the following line to `~/.bashrc` (or `~/.bash_profile` in macOS, or wherever your shell stores environment variables):
+
+ ```
+ export HELM_EXPERIMENTAL_OCI=1
+ ```
+1. Run the following command to load your updated `.bashrc` file:
+
+ ```
+ source ~/.bashrc
+ ```
+ If you are running macOS, use this command:
+ ```
+ source ~/.bash_profile
+ ```
+
+
+
+# 3. Configure the gcloud CLI
+
+ Set up default gcloud settings using one of the following methods:
+
+- Using gcloud init, if you want to be walked through setting defaults.
+- Using gcloud config, to individually set your project ID, zone, and region.
+
+{{% tabs %}}
+{{% tab "Using gloud init" %}}
+
+1. Run gcloud init and follow the directions:
+
+ ```
+ gcloud init
+ ```
+ If you are using SSH on a remote server, use the --console-only flag to prevent the command from launching a browser:
+
+ ```
+ gcloud init --console-only
+ ```
+2. Follow the instructions to authorize gcloud to use your Google Cloud account and select the new project that you created.
+
+{{% /tab %}}
+{{% tab "Using gcloud config" %}}
+{{% /tab %}}
+{{% /tabs %}}
+
+# 4. Confirm that gcloud is configured correctly
+
+Run:
+
+```
+gcloud config list
+```
+
+The output should resemble the following:
+
+```
+[compute]
+region = us-west1 # Your chosen region
+zone = us-west1-b # Your chosen zone
+[core]
+account =
+disable_usage_reporting = True
+project =
+
+Your active configuration is: [default]
+```
+
+# 5. Create a GKE Cluster
+
+The following command creates a three-node cluster.
+
+Replace `cluster-name` with the name of your new cluster.
+
+```
+gcloud container clusters create cluster-name --num-nodes=3
+```
+
+# 6. Get Authentication Credentials
+
+After creating your cluster, you need to get authentication credentials to interact with the cluster:
+
+```
+gcloud container clusters get-credentials cluster-name
+```
+
+This command configures `kubectl` to use the cluster you created.
+
+# 7. Install an Ingress
+
+The cluster needs an Ingress so that Rancher can be accessed from outside the cluster.
+
+The following command installs an `nginx-ingress-controller` with a LoadBalancer service:
+
+```
+helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
+helm repo update
+helm upgrade --install \
+ ingress-nginx ingress-nginx/ingress-nginx \
+ --namespace ingress-nginx \
+ --set controller.service.type=LoadBalancer \
+ --version 3.12.0 \
+ --create-namespace
+```
+
+# 8. Get the Load Balancer IP
+
+To get the address of the load balancer, run:
+
+```
+kubectl get service ingress-nginx-controller --namespace=ingress-nginx
+```
+
+The result should look similar to the following:
+
+```
+NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
+ingress-nginx-controller LoadBalancer 10.3.244.156 35.233.206.34 80:31876/TCP,443:32497/TCP 81s
+```
+
+Save the `EXTERNAL-IP`.
+
+# 9. Set up DNS
+
+External traffic to the Rancher server will need to be directed at the load balancer you created.
+
+Set up a DNS to point at the external IP that you saved. This DNS will be used as the Rancher server URL.
+
+There are many valid ways to set up the DNS. For help, refer to the Google Cloud documentation about [managing DNS records.](https://cloud.google.com/dns/docs/records)
+
+# 10. Install the Rancher Helm chart
+
+Next, install the Rancher Helm chart by following the instructions on [this page.]({{}}/rancher/v2.5/en/installation/install-rancher-on-k8s/#install-the-rancher-helm-chart) The Helm instructions are the same for installing Rancher on any Kubernetes distribution.
+
+Use the DNS name from the previous step as the Rancher server URL when you install Rancher. It can be passed in as a Helm option. For example, if the DNS name is `rancher.my.org`, you could run the Helm installation command with the option `--set hostname=rancher.my.org`.
\ No newline at end of file
diff --git a/content/rancher/v2.5/en/installation/install-rancher-on-k8s/upgrades/_index.md b/content/rancher/v2.5/en/installation/install-rancher-on-k8s/upgrades/_index.md
index 1506c27e27b..f3ac8f7e527 100644
--- a/content/rancher/v2.5/en/installation/install-rancher-on-k8s/upgrades/_index.md
+++ b/content/rancher/v2.5/en/installation/install-rancher-on-k8s/upgrades/_index.md
@@ -53,7 +53,7 @@ For migration of installs started with Helm 2, refer to the official [Helm 2 to
### For air gap installs: Populate private registry
--For [air gap installs only,]({{}}/rancher/v2.5/en/installation/other-installation-methods/air-gap) collect and populate images for the new Rancher server version. Follow the guide to [populate your private registry]({{}}/rancher/v2.5/en/installation/other-installation-methods/air-gap/populate-private-registry/) with the images for the Rancher version that you want to upgrade to.
+For [air gap installs only,]({{}}/rancher/v2.5/en/installation/other-installation-methods/air-gap) collect and populate images for the new Rancher server version. Follow the guide to [populate your private registry]({{}}/rancher/v2.5/en/installation/other-installation-methods/air-gap/populate-private-registry/) with the images for the Rancher version that you want to upgrade to.
### For upgrades from a Rancher server with a hidden local cluster
@@ -120,8 +120,8 @@ You'll use the backup as a restoration point if something goes wrong during upgr
This section describes how to upgrade normal (Internet-connected) or air gap installations of Rancher with Helm.
-{{% tabs %}}
-{{% tab "Kubernetes Upgrade" %}}
+> **Air Gap Instructions:** If you are installing Rancher in an air gapped environment, skip the rest of this page and render the Helm template by following the instructions on [this page.](./air-gap-upgrade)
+
Get the values, which were passed with `--set`, from the current Rancher Helm chart that is installed.
@@ -182,74 +182,6 @@ If you are currently running the cert-manger whose version is older than v0.11,
--set hostname=rancher.my.org
```
-{{% /tab %}}
-{{% tab "Kubernetes Air Gap Upgrade" %}}
-
-Render the Rancher template using the same chosen options that were used when installing Rancher. Use the reference table below to replace each placeholder. Rancher needs to be configured to use the private registry in order to provision any Rancher launched Kubernetes clusters or Rancher tools.
-
-Based on the choice you made during installation, complete one of the procedures below.
-
-Placeholder | Description
-------------|-------------
-`` | The version number of the output tarball.
-`` | The DNS name you pointed at your load balancer.
-`` | The DNS name for your private registry.
-`` | Cert-manager version running on k8s cluster.
-
-
-### Option A: Default Self-signed Certificate
-
- ```plain
-helm template ./rancher-.tgz --output-dir . \
- --name rancher \
- --namespace cattle-system \
- --set hostname= \
- --set certmanager.version= \
- --set rancherImage=/rancher/rancher \
- --set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
- --set useBundledSystemChart=true # Use the packaged Rancher system charts
-```
-
-### Option B: Certificates from Files using Kubernetes Secrets
-
-```plain
-helm template ./rancher-.tgz --output-dir . \
---name rancher \
---namespace cattle-system \
---set hostname= \
---set rancherImage=/rancher/rancher \
---set ingress.tls.source=secret \
---set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
---set useBundledSystemChart=true # Use the packaged Rancher system charts
-```
-
-If you are using a Private CA signed cert, add `--set privateCA=true` following `--set ingress.tls.source=secret`:
-
-```plain
-helm template ./rancher-.tgz --output-dir . \
---name rancher \
---namespace cattle-system \
---set hostname= \
---set rancherImage=/rancher/rancher \
---set ingress.tls.source=secret \
---set privateCA=true \
---set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
---set useBundledSystemChart=true # Use the packaged Rancher system charts
-```
-
-### Apply the Rendered Templates
-
-Copy the rendered manifest directories to a system with access to the Rancher server cluster and apply the rendered templates.
-
-Use `kubectl` to apply the rendered manifests.
-
-```plain
-kubectl -n cattle-system apply -R -f ./rancher
-```
-
-{{% /tab %}}
-{{% /tabs %}}
-
# 4. Verify the Upgrade
Log into Rancher to confirm that the upgrade succeeded.
diff --git a/content/rancher/v2.5/en/installation/install-rancher-on-k8s/upgrades/air-gap-upgrade/_index.md b/content/rancher/v2.5/en/installation/install-rancher-on-k8s/upgrades/air-gap-upgrade/_index.md
new file mode 100644
index 00000000000..ce0ae4f4838
--- /dev/null
+++ b/content/rancher/v2.5/en/installation/install-rancher-on-k8s/upgrades/air-gap-upgrade/_index.md
@@ -0,0 +1,144 @@
+---
+title: Rendering the Helm Template in an Air Gapped Environment
+shortTitle: Air Gap Upgrade
+weight: 1
+---
+
+> These instructions assume you have already followed the instructions for a Kubernetes upgrade on [this page,]({{}}/rancher/v2.5/en/installation/install-rancher-on-k8s/upgrades/) including the prerequisites, up until step 3. Upgrade Rancher.
+
+### Rancher Helm Template Options
+
+Render the Rancher template using the same chosen options that were used when installing Rancher. Use the reference table below to replace each placeholder. Rancher needs to be configured to use the private registry in order to provision any Rancher launched Kubernetes clusters or Rancher tools.
+
+Based on the choice you made during installation, complete one of the procedures below.
+
+Placeholder | Description
+------------|-------------
+`` | The version number of the output tarball.
+`` | The DNS name you pointed at your load balancer.
+`` | The DNS name for your private registry.
+`` | Cert-manager version running on k8s cluster.
+
+
+### Option A: Default Self-signed Certificate
+
+{{% tabs %}}
+{{% tab "Rancher v2.5.8+" %}}
+
+```
+helm template rancher ./rancher-.tgz --output-dir . \
+ --no-hooks \ # prevent files for Helm hooks from being generated
+ --namespace cattle-system \
+ --set hostname= \
+ --set certmanager.version= \
+ --set rancherImage=/rancher/rancher \
+ --set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
+ --set useBundledSystemChart=true # Use the packaged Rancher system charts
+```
+
+{{% /tab %}}
+{{% tab "Rancher before v2.5.8" %}}
+
+ ```plain
+helm template ./rancher-.tgz --output-dir . \
+ --name rancher \
+ --namespace cattle-system \
+ --set hostname= \
+ --set certmanager.version= \
+ --set rancherImage=/rancher/rancher \
+ --set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
+ --set useBundledSystemChart=true # Use the packaged Rancher system charts
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+
+
+### Option B: Certificates from Files using Kubernetes Secrets
+
+
+{{% tabs %}}
+{{% tab "Rancher v2.5.8+" %}}
+
+
+```plain
+helm template ./rancher-.tgz --output-dir . \
+ --name rancher \
+ --no-hooks \ # prevent files for Helm hooks from being generated
+ --namespace cattle-system \
+ --set hostname= \
+ --set rancherImage=/rancher/rancher \
+ --set ingress.tls.source=secret \
+ --set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
+ --set useBundledSystemChart=true # Use the packaged Rancher system charts
+```
+
+If you are using a Private CA signed cert, add `--set privateCA=true` following `--set ingress.tls.source=secret`:
+
+```plain
+helm template ./rancher-.tgz --output-dir . \
+ --name rancher \
+ --no-hooks \ # prevent files for Helm hooks from being generated
+ --namespace cattle-system \
+ --set hostname= \
+ --set rancherImage=/rancher/rancher \
+ --set ingress.tls.source=secret \
+ --set privateCA=true \
+ --set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
+ --set useBundledSystemChart=true # Use the packaged Rancher system charts
+```
+
+{{% /tab %}}
+{{% tab "Rancher before v2.5.8" %}}
+
+
+```plain
+helm template ./rancher-.tgz --output-dir . \
+--name rancher \
+--namespace cattle-system \
+--set hostname= \
+--set rancherImage=/rancher/rancher \
+--set ingress.tls.source=secret \
+--set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
+--set useBundledSystemChart=true # Use the packaged Rancher system charts
+```
+
+If you are using a Private CA signed cert, add `--set privateCA=true` following `--set ingress.tls.source=secret`:
+
+```plain
+helm template ./rancher-.tgz --output-dir . \
+--name rancher \
+--namespace cattle-system \
+--set hostname= \
+--set rancherImage=/rancher/rancher \
+--set ingress.tls.source=secret \
+--set privateCA=true \
+--set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
+--set useBundledSystemChart=true # Use the packaged Rancher system charts
+```
+{{% /tab %}}
+{{% /tabs %}}
+
+
+### Apply the Rendered Templates
+
+Copy the rendered manifest directories to a system with access to the Rancher server cluster and apply the rendered templates.
+
+Use `kubectl` to apply the rendered manifests.
+
+```plain
+kubectl -n cattle-system apply -R -f ./rancher
+```
+
+# Verify the Upgrade
+
+Log into Rancher to confirm that the upgrade succeeded.
+
+>**Having network issues following upgrade?**
+>
+> See [Restoring Cluster Networking]({{}}/rancher/v2.0-v2.4/en/installation/install-rancher-on-k8s/upgrades/namespace-migration).
+
+# Known Upgrade Issues
+
+A list of known issues for each Rancher version can be found in the release notes on [GitHub](https://github.com/rancher/rancher/releases) and on the [Rancher forums.](https://forums.rancher.com/c/announcements/12)
diff --git a/content/rancher/v2.5/en/installation/other-installation-methods/air-gap/install-rancher/_index.md b/content/rancher/v2.5/en/installation/other-installation-methods/air-gap/install-rancher/_index.md
index 7bb8227939f..dda9e56d1ea 100644
--- a/content/rancher/v2.5/en/installation/other-installation-methods/air-gap/install-rancher/_index.md
+++ b/content/rancher/v2.5/en/installation/other-installation-methods/air-gap/install-rancher/_index.md
@@ -10,18 +10,21 @@ aliases:
- /rancher/v2.5/en/installation/air-gap-high-availability/install-rancher/
---
-This section is about how to deploy Rancher for your air gapped environment. An air gapped environment could be where Rancher server will be installed offline, behind a firewall, or behind a proxy. There are _tabs_ for either a high availability (recommended) or a Docker installation.
+This section is about how to deploy Rancher for your air gapped environment in a high-availability Kubernetes installation. An air gapped environment could be where Rancher server will be installed offline, behind a firewall, or behind a proxy.
### Privileged Access for Rancher v2.5+
When the Rancher server is deployed in the Docker container, a local Kubernetes cluster is installed within the container for Rancher to use. Because many features of Rancher run as deployments, and privileged mode is required to run containers within containers, you will need to install Rancher with the `--privileged` option.
-{{% tabs %}}
-{{% tab "Kubernetes Install (Recommended)" %}}
+# Docker Instructions
+
+If you want to continue the air gapped installation using Docker commands, skip the rest of this page and follow the instructions on [this page.](./docker-install-commands)
+
+# Kubernetes Instructions
Rancher recommends installing Rancher on a Kubernetes cluster. A highly available Kubernetes install is comprised of three nodes running the Rancher server components on a Kubernetes cluster. The persistence layer (etcd) is also replicated on these three nodes, providing redundancy and data duplication in case one of the nodes fails.
-This section describes installing Rancher in five parts:
+This section describes installing Rancher:
- [1. Add the Helm Chart Repository](#1-add-the-helm-chart-repository)
- [2. Choose your SSL Configuration](#2-choose-your-ssl-configuration)
@@ -63,7 +66,7 @@ When Rancher is installed on an air gapped Kubernetes cluster, there are two rec
| Rancher Generated Self-Signed Certificates | `ingress.tls.source=rancher` | Use certificates issued by Rancher's generated CA (self signed)
This is the **default** and does not need to be added when rendering the Helm template. | yes |
| Certificates from Files | `ingress.tls.source=secret` | Use your own certificate files by creating Kubernetes Secret(s).
This option must be passed when rendering the Rancher Helm template. | no |
-# 3. Render the Rancher Helm Template
+# Helm Chart Options for Air Gap Installations
When setting up the Rancher Helm template, there are several options in the Helm chart that are designed specifically for air gap installations.
@@ -73,73 +76,108 @@ When setting up the Rancher Helm template, there are several options in the Helm
| `systemDefaultRegistry` | `` | Configure Rancher server to always pull from your private registry when provisioning clusters. |
| `useBundledSystemChart` | `true` | Configure Rancher server to use the packaged copy of Helm system charts. The [system charts](https://github.com/rancher/system-charts) repository contains all the catalog items required for features such as monitoring, logging, alerting and global DNS. These [Helm charts](https://github.com/rancher/system-charts) are located in GitHub, but since you are in an air gapped environment, using the charts that are bundled within Rancher is much easier than setting up a Git mirror. |
-Based on the choice your made in [B. Choose your SSL Configuration](#b-choose-your-ssl-configuration), complete one of the procedures below.
+# 3. Render the Rancher Helm Template
-### Option A: Default Self-Signed Certificate
+Based on the choice your made in [2. Choose your SSL Configuration](#2-choose-your-ssl-configuration), complete one of the procedures below.
+
+# Option A: Default Self-Signed Certificate
-{{% accordion id="k8s-1" label="Click to expand" %}}
By default, Rancher generates a CA and uses cert-manager to issue the certificate for access to the Rancher server interface.
> **Note:**
> Recent changes to cert-manager require an upgrade. If you are upgrading Rancher and using a version of cert-manager older than v0.11.0, please see our [upgrade cert-manager documentation]({{}}/rancher/v2.5/en/installation/options/upgrading-cert-manager/).
-1. From a system connected to the internet, add the cert-manager repo to Helm.
- ```plain
- helm repo add jetstack https://charts.jetstack.io
- helm repo update
- ```
+### 1. Add the cert-manager repo
-1. Fetch the latest cert-manager chart available from the [Helm chart repository](https://hub.helm.sh/charts/jetstack/cert-manager).
+From a system connected to the internet, add the cert-manager repo to Helm:
- ```plain
- helm fetch jetstack/cert-manager --version v1.0.4
- ```
+```plain
+helm repo add jetstack https://charts.jetstack.io
+helm repo update
+```
-1. Render the cert manager template with the options you would like to use to install the chart. Remember to set the `image.repository` option to pull the image from your private registry. This will create a `cert-manager` directory with the Kubernetes manifest files.
- ```plain
- helm template cert-manager ./cert-manager-v1.0.4.tgz --output-dir . \
- --namespace cert-manager \
- --set image.repository=/quay.io/jetstack/cert-manager-controller \
- --set webhook.image.repository=/quay.io/jetstack/cert-manager-webhook \
- --set cainjector.image.repository=/quay.io/jetstack/cert-manager-cainjector
- ```
+### 2. Fetch the cert-manager chart
-1. Download the required CRD file for cert-manager
+Fetch the latest cert-manager chart available from the [Helm chart repository](https://hub.helm.sh/charts/jetstack/cert-manager).
+
+```plain
+helm fetch jetstack/cert-manager --version v1.0.4
+```
+
+### 3. Render the cert-manager template
+
+Render the cert-manager template with the options you would like to use to install the chart. Remember to set the `image.repository` option to pull the image from your private registry. This will create a `cert-manager` directory with the Kubernetes manifest files.
+
+```plain
+helm template cert-manager ./cert-manager-v1.0.4.tgz --output-dir . \
+ --namespace cert-manager \
+ --set image.repository=/quay.io/jetstack/cert-manager-controller \
+ --set webhook.image.repository=/quay.io/jetstack/cert-manager-webhook \
+ --set cainjector.image.repository=/quay.io/jetstack/cert-manager-cainjector
+```
+
+### 4. Download the cert-manager CRD
+
+Download the required CRD file for cert-manager:
```plain
curl -L -o cert-manager/cert-manager-crd.yaml https://github.com/jetstack/cert-manager/releases/download/v1.0.4/cert-manager.crds.yaml
```
-1. Render the Rancher template, declaring your chosen options. Use the reference table below to replace each placeholder. Rancher needs to be configured to use the private registry in order to provision any Rancher launched Kubernetes clusters or Rancher tools.
+### 5. Render the Rancher template
+
+Render the Rancher template, declaring your chosen options. Use the reference table below to replace each placeholder. Rancher needs to be configured to use the private registry in order to provision any Rancher launched Kubernetes clusters or Rancher tools.
- Placeholder | Description
- ------------|-------------
- `` | The version number of the output tarball.
- `` | The DNS name you pointed at your load balancer.
- `` | The DNS name for your private registry.
- `` | Cert-manager version running on k8s cluster.
+Placeholder | Description
+------------|-------------
+`` | The version number of the output tarball.
+`` | The DNS name you pointed at your load balancer.
+`` | The DNS name for your private registry.
+`` | Cert-manager version running on k8s cluster.
- ```plain
- helm template rancher ./rancher-.tgz --output-dir . \
- --namespace cattle-system \
- --set hostname= \
- --set certmanager.version= \
- --set rancherImage=/rancher/rancher \
- --set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
- --set useBundledSystemChart=true # Use the packaged Rancher system charts
+{{% tabs %}}
+{{% tab "Rancher v2.5.8" %}}
+```plain
+helm template rancher ./rancher-.tgz --output-dir . \
+ --no-hooks \ # prevent files for Helm hooks from being generated
+ --namespace cattle-system \
+ --set hostname= \
+ --set certmanager.version= \
+ --set rancherImage=/rancher/rancher \
+ --set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
+ --set useBundledSystemChart=true # Use the packaged Rancher system charts
```
-**Optional**: To install a specific Rancher version, set the `rancherImageTag` value, example: `--set rancherImageTag=v2.3.6`
+**Optional**: To install a specific Rancher version, set the `rancherImageTag` value, example: `--set rancherImageTag=v2.5.8`
+{{% /tab %}}
+{{% tab "Rancher before v2.5.8" %}}
-{{% /accordion %}}
+```plain
+helm template rancher ./rancher-.tgz --output-dir . \
+ --namespace cattle-system \
+ --set hostname= \
+ --set certmanager.version= \
+ --set rancherImage=/rancher/rancher \
+ --set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
+ --set useBundledSystemChart=true # Use the packaged Rancher system charts
+```
-### Option B: Certificates From Files using Kubernetes Secrets
+**Optional**: To install a specific Rancher version, set the `rancherImageTag` value, example: `--set rancherImageTag=v2.5.6`
+{{% /tab %}}
+{{% /tabs %}}
-{{% accordion id="k8s-2" label="Click to expand" %}}
+
+
+# Option B: Certificates From Files using Kubernetes Secrets
+
+
+### 1. Create secrets
Create Kubernetes secrets from your own certificates for Rancher to use. The common name for the cert will need to match the `hostname` option in the command below, or the ingress controller will fail to provision the site for Rancher.
+### 2. Render the Rancher template
+
Render the Rancher template, declaring your chosen options. Use the reference table below to replace each placeholder. Rancher needs to be configured to use the private registry in order to provision any Rancher launched Kubernetes clusters or Rancher tools.
| Placeholder | Description |
@@ -148,6 +186,41 @@ Render the Rancher template, declaring your chosen options. Use the reference ta
| `` | The DNS name you pointed at your load balancer. |
| `` | The DNS name for your private registry. |
+{{% tabs %}}
+{{% tab "Rancher v2.5.8+" %}}
+
+```plain
+ helm template rancher ./rancher-.tgz --output-dir . \
+ --no-hooks \ # prevent files for Helm hooks from being generated
+ --namespace cattle-system \
+ --set hostname= \
+ --set rancherImage=/rancher/rancher \
+ --set ingress.tls.source=secret \
+ --set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
+ --set useBundledSystemChart=true # Use the packaged Rancher system charts
+```
+
+If you are using a Private CA signed cert, add `--set privateCA=true` following `--set ingress.tls.source=secret`:
+
+```plain
+ helm template rancher ./rancher-.tgz --output-dir . \
+ --no-hooks \ # prevent files for Helm hooks from being generated
+ --namespace cattle-system \
+ --set hostname= \
+ --set rancherImage=/rancher/rancher \
+ --set ingress.tls.source=secret \
+ --set privateCA=true \
+ --set systemDefaultRegistry= \ # Set a default private registry to be used in Rancher
+ --set useBundledSystemChart=true # Use the packaged Rancher system charts
+```
+
+**Optional**: To install a specific Rancher version, set the `rancherImageTag` value, example: `--set rancherImageTag=v2.3.6`
+
+Then refer to [Adding TLS Secrets]({{}}/rancher/v2.5/en/installation/resources/encryption/tls-secrets/) to publish the certificate files so Rancher and the ingress controller can use them.
+{{% /tab %}}
+{{% tab "Rancher before v2.5.8" %}}
+
+
```plain
helm template rancher ./rancher-.tgz --output-dir . \
--namespace cattle-system \
@@ -174,8 +247,10 @@ If you are using a Private CA signed cert, add `--set privateCA=true` following
**Optional**: To install a specific Rancher version, set the `rancherImageTag` value, example: `--set rancherImageTag=v2.3.6`
Then refer to [Adding TLS Secrets]({{}}/rancher/v2.5/en/installation/resources/encryption/tls-secrets/) to publish the certificate files so Rancher and the ingress controller can use them.
+{{% /tab %}}
+{{% /tabs %}}
+
-{{% /accordion %}}
# 4. Install Rancher
@@ -228,135 +303,3 @@ These resources could be helpful when installing Rancher:
- [Rancher Helm chart options]({{}}/rancher/v2.5/en/installation/resources/chart-options/)
- [Adding TLS secrets]({{}}/rancher/v2.5/en/installation/resources/encryption/tls-secrets/)
- [Troubleshooting Rancher Kubernetes Installations]({{}}/rancher/v2.5/en/installation/options/troubleshooting/)
-
-{{% /tab %}}
-{{% tab "Docker Install" %}}
-
-The Docker installation is for Rancher users who want to test out Rancher.
-
-Instead of running on a Kubernetes cluster, you install the Rancher server component on a single node using a `docker run` command. Since there is only one node and a single Docker container, if the node goes down, there is no copy of the etcd data available on other nodes and you will lose all the data of your Rancher server.
-
-For Rancher v2.5+, the backup application can be used to migrate the Rancher server from a Docker install to a Kubernetes install using [these steps.]({{}}/rancher/v2.5/en/backups/migrating-rancher)
-
-For security purposes, SSL (Secure Sockets Layer) is required when using Rancher. SSL secures all Rancher network communication, like when you login or interact with a cluster.
-
-| Environment Variable Key | Environment Variable Value | Description |
-| -------------------------------- | -------------------------------- | ---- |
-| `CATTLE_SYSTEM_DEFAULT_REGISTRY` | `` | Configure Rancher server to always pull from your private registry when provisioning clusters. |
-| `CATTLE_SYSTEM_CATALOG` | `bundled` | Configure Rancher server to use the packaged copy of Helm system charts. The [system charts](https://github.com/rancher/system-charts) repository contains all the catalog items required for features such as monitoring, logging, alerting and global DNS. These [Helm charts](https://github.com/rancher/system-charts) are located in GitHub, but since you are in an air gapped environment, using the charts that are bundled within Rancher is much easier than setting up a Git mirror. |
-
-> **Do you want to...**
->
-> - Configure custom CA root certificate to access your services? See [Custom CA root certificate]({{}}/rancher/v2.5/en/installation/options/custom-ca-root-certificate/).
-> - Record all transactions with the Rancher API? See [API Auditing]({{}}/rancher/v2.5/en/installation/other-installation-methods/single-node-docker/advanced/#api-audit-log).
-
-Choose from the following options:
-
-### Option A: Default Self-Signed Certificate
-
-{{% accordion id="option-a" label="Click to expand" %}}
-
-If you are installing Rancher in a development or testing environment where identity verification isn't a concern, install Rancher using the self-signed certificate that it generates. This installation option omits the hassle of generating a certificate yourself.
-
-Log into your Linux host, and then run the installation command below. When entering the command, use the table below to replace each placeholder.
-
-| Placeholder | Description |
-| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
-| `` | Your private registry URL and port. |
-| `` | The release tag of the [Rancher version]({{}}/rancher/v2.5/en/installation/resources/chart-options/) that you want to install. |
-
-As of Rancher v2.5, privileged access is [required.](#privileged-access-for-rancher-v2-5)
-
-```
-docker run -d --restart=unless-stopped \
- -p 80:80 -p 443:443 \
- -e CATTLE_SYSTEM_DEFAULT_REGISTRY= \ # Set a default private registry to be used in Rancher
- -e CATTLE_SYSTEM_CATALOG=bundled \ # Use the packaged Rancher system charts
- --privileged \
- /rancher/rancher:
-```
-
-{{% /accordion %}}
-
-### Option B: Bring Your Own Certificate: Self-Signed
-
-{{% accordion id="option-b" label="Click to expand" %}}
-
-In development or testing environments where your team will access your Rancher server, create a self-signed certificate for use with your install so that your team can verify they're connecting to your instance of Rancher.
-
-> **Prerequisites:**
-> From a computer with an internet connection, create a self-signed certificate using [OpenSSL](https://www.openssl.org/) or another method of your choice.
->
-> - The certificate files must be in PEM format.
-> - In your certificate file, include all intermediate certificates in the chain. Order your certificates with your certificate first, followed by the intermediates. For an example, see [Certificate Troubleshooting.]({{}}/rancher/v2.5/en/installation/other-installation-methods/single-node-docker/troubleshooting)
-
-After creating your certificate, log into your Linux host, and then run the installation command below. When entering the command, use the table below to replace each placeholder. Use the `-v` flag and provide the path to your certificates to mount them in your container.
-
-| Placeholder | Description |
-| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
-| `` | The path to the directory containing your certificate files. |
-| `` | The path to your full certificate chain. |
-| `` | The path to the private key for your certificate. |
-| `` | The path to the certificate authority's certificate. |
-| `` | Your private registry URL and port. |
-| `` | The release tag of the [Rancher version]({{}}/rancher/v2.5/en/installation/resources/chart-options/) that you want to install. |
-
-As of Rancher v2.5, privileged access is [required.](#privileged-access-for-rancher-v2-5)
-
-```
-docker run -d --restart=unless-stopped \
- -p 80:80 -p 443:443 \
- -v //:/etc/rancher/ssl/cert.pem \
- -v //:/etc/rancher/ssl/key.pem \
- -v //:/etc/rancher/ssl/cacerts.pem \
- -e CATTLE_SYSTEM_DEFAULT_REGISTRY= \ # Set a default private registry to be used in Rancher
- -e CATTLE_SYSTEM_CATALOG=bundled \ # Use the packaged Rancher system charts
- --privileged \
- /rancher/rancher:
-```
-
-{{% /accordion %}}
-
-### Option C: Bring Your Own Certificate: Signed by Recognized CA
-
-{{% accordion id="option-c" label="Click to expand" %}}
-
-In development or testing environments where you're exposing an app publicly, use a certificate signed by a recognized CA so that your user base doesn't encounter security warnings.
-
-> **Prerequisite:** The certificate files must be in PEM format.
-
-After obtaining your certificate, log into your Linux host, and then run the installation command below. When entering the command, use the table below to replace each placeholder. Because your certificate is signed by a recognized CA, mounting an additional CA certificate file is unnecessary.
-
-| Placeholder | Description |
-| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
-| `` | The path to the directory containing your certificate files. |
-| `` | The path to your full certificate chain. |
-| `` | The path to the private key for your certificate. |
-| `` | Your private registry URL and port. |
-| `` | The release tag of the [Rancher version]({{}}/rancher/v2.5/en/installation/resources/chart-options/) that you want to install. |
-
-> **Note:** Use the `--no-cacerts` as argument to the container to disable the default CA certificate generated by Rancher.
-
-As of Rancher v2.5, privileged access is [required.](#privileged-access-for-rancher-v2-5)
-
-```
-docker run -d --restart=unless-stopped \
- -p 80:80 -p 443:443 \
- --no-cacerts \
- -v //:/etc/rancher/ssl/cert.pem \
- -v //:/etc/rancher/ssl/key.pem \
- -e CATTLE_SYSTEM_DEFAULT_REGISTRY= \ # Set a default private registry to be used in Rancher
- -e CATTLE_SYSTEM_CATALOG=bundled \ # Use the packaged Rancher system charts
- --privileged
- /rancher/rancher:
-```
-
-{{% /accordion %}}
-
-
-
-> **Note:** If you don't intend to send telemetry data, opt out [telemetry]({{}}/rancher/v2.5/en/faq/telemetry/) during the initial login.
-
-
-{{% /tab %}}
-{{% /tabs %}}
diff --git a/content/rancher/v2.5/en/installation/other-installation-methods/air-gap/install-rancher/docker-install-commands/_index.md b/content/rancher/v2.5/en/installation/other-installation-methods/air-gap/install-rancher/docker-install-commands/_index.md
new file mode 100644
index 00000000000..81a30b69e84
--- /dev/null
+++ b/content/rancher/v2.5/en/installation/other-installation-methods/air-gap/install-rancher/docker-install-commands/_index.md
@@ -0,0 +1,130 @@
+---
+title: Docker Install Commands
+weight: 1
+---
+
+The Docker installation is for Rancher users who want to test out Rancher.
+
+Instead of running on a Kubernetes cluster, you install the Rancher server component on a single node using a `docker run` command. Since there is only one node and a single Docker container, if the node goes down, there is no copy of the etcd data available on other nodes and you will lose all the data of your Rancher server.
+
+For Rancher v2.5+, the backup application can be used to migrate the Rancher server from a Docker install to a Kubernetes install using [these steps.]({{}}/rancher/v2.5/en/backups/migrating-rancher)
+
+For security purposes, SSL (Secure Sockets Layer) is required when using Rancher. SSL secures all Rancher network communication, like when you login or interact with a cluster.
+
+| Environment Variable Key | Environment Variable Value | Description |
+| -------------------------------- | -------------------------------- | ---- |
+| `CATTLE_SYSTEM_DEFAULT_REGISTRY` | `` | Configure Rancher server to always pull from your private registry when provisioning clusters. |
+| `CATTLE_SYSTEM_CATALOG` | `bundled` | Configure Rancher server to use the packaged copy of Helm system charts. The [system charts](https://github.com/rancher/system-charts) repository contains all the catalog items required for features such as monitoring, logging, alerting and global DNS. These [Helm charts](https://github.com/rancher/system-charts) are located in GitHub, but since you are in an air gapped environment, using the charts that are bundled within Rancher is much easier than setting up a Git mirror. |
+
+> **Do you want to...**
+>
+> - Configure custom CA root certificate to access your services? See [Custom CA root certificate]({{}}/rancher/v2.5/en/installation/options/custom-ca-root-certificate/).
+> - Record all transactions with the Rancher API? See [API Auditing]({{}}/rancher/v2.5/en/installation/other-installation-methods/single-node-docker/advanced/#api-audit-log).
+
+Choose from the following options:
+
+### Option A: Default Self-Signed Certificate
+
+{{% accordion id="option-a" label="Click to expand" %}}
+
+If you are installing Rancher in a development or testing environment where identity verification isn't a concern, install Rancher using the self-signed certificate that it generates. This installation option omits the hassle of generating a certificate yourself.
+
+Log into your Linux host, and then run the installation command below. When entering the command, use the table below to replace each placeholder.
+
+| Placeholder | Description |
+| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
+| `` | Your private registry URL and port. |
+| `` | The release tag of the [Rancher version]({{}}/rancher/v2.5/en/installation/resources/chart-options/) that you want to install. |
+
+As of Rancher v2.5, privileged access is [required.](#privileged-access-for-rancher-v2-5)
+
+```
+docker run -d --restart=unless-stopped \
+ -p 80:80 -p 443:443 \
+ -e CATTLE_SYSTEM_DEFAULT_REGISTRY= \ # Set a default private registry to be used in Rancher
+ -e CATTLE_SYSTEM_CATALOG=bundled \ # Use the packaged Rancher system charts
+ --privileged \
+ /rancher/rancher:
+```
+
+{{% /accordion %}}
+
+### Option B: Bring Your Own Certificate: Self-Signed
+
+{{% accordion id="option-b" label="Click to expand" %}}
+
+In development or testing environments where your team will access your Rancher server, create a self-signed certificate for use with your install so that your team can verify they're connecting to your instance of Rancher.
+
+> **Prerequisites:**
+> From a computer with an internet connection, create a self-signed certificate using [OpenSSL](https://www.openssl.org/) or another method of your choice.
+>
+> - The certificate files must be in PEM format.
+> - In your certificate file, include all intermediate certificates in the chain. Order your certificates with your certificate first, followed by the intermediates. For an example, see [Certificate Troubleshooting.]({{}}/rancher/v2.5/en/installation/other-installation-methods/single-node-docker/troubleshooting)
+
+After creating your certificate, log into your Linux host, and then run the installation command below. When entering the command, use the table below to replace each placeholder. Use the `-v` flag and provide the path to your certificates to mount them in your container.
+
+| Placeholder | Description |
+| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
+| `` | The path to the directory containing your certificate files. |
+| `` | The path to your full certificate chain. |
+| `` | The path to the private key for your certificate. |
+| `` | The path to the certificate authority's certificate. |
+| `` | Your private registry URL and port. |
+| `` | The release tag of the [Rancher version]({{}}/rancher/v2.5/en/installation/resources/chart-options/) that you want to install. |
+
+As of Rancher v2.5, privileged access is [required.](#privileged-access-for-rancher-v2-5)
+
+```
+docker run -d --restart=unless-stopped \
+ -p 80:80 -p 443:443 \
+ -v //:/etc/rancher/ssl/cert.pem \
+ -v //:/etc/rancher/ssl/key.pem \
+ -v //