Rancher
Overview
Rancher is a Kubernetes management platform. It gives you a single control plane for provisioning, importing, observing and governing Kubernetes clusters wherever they run, with a full web dashboard, centralized authentication and RBAC, a built-in Helm chart catalog, and cluster-wide monitoring, logging and policy.
The SecureAnyCloud image ships Rancher 2.14.3, the free and open source Apache-2.0 release. It is installed the way upstream supports for real workloads: the official rancher-stable Helm chart on a single-node K3s cluster running on the VM itself, with cert-manager issuing the TLS certificate. Upstream's Docker-based install is explicitly not supported in production, so this image does not use it.
Rancher is a trademark of its respective owner. This image is produced by SecureAnyCloud and is not affiliated with, endorsed by, or sponsored by SUSE or the Rancher project. It ships the free and open source Apache-2.0 software, unmodified.
What you get:
- Rancher 2.14.3 (the Apache-2.0 release), installed from the official
rancher-stableHelm chart. - K3s v1.35.5+k3s1 as the underlying single-node Kubernetes cluster, with embedded etcd, containerd, CoreDNS, Traefik and ServiceLB.
- cert-manager v1.19.2, which issues the Rancher TLS certificate.
- All Rancher, cert-manager and K3s container images pre-staged into the image, so the cluster comes up on first boot without reaching out to a registry.
- A dedicated 64 GiB data volume mounted at
/var/lib/rancherfor cluster state and the container image store. k3s.serviceandrancher-firstboot.serviceas systemd units, enabled and active on boot.- A unique 24-character administrator password generated per VM on first boot, before the port is reachable, and never baked into the image. Nothing ships with a known secret.
- A clean cluster on first boot. The build-time cluster, its certificate authority and its join tokens are destroyed before the image is captured.
- 24/7 SecureAnyCloud support.
Prerequisites
You need:
- An active Azure subscription.
- An SSH key pair.
- A VNet and subnet in the target region.
- A VM size of Standard_B4ms (4 vCPU / 16 GiB RAM). Rancher's own sizing guidance is the floor here, because the VM runs both the Kubernetes control plane and the Rancher management server.
- NSG inbound rules that allow
22/tcpfrom your management network and443/tcpfor the dashboard and API. Port80/tcpis served too and redirects to443. - If you plan to import or provision downstream clusters, a network path that lets those clusters reach this VM on
443/tcp.
This is a single-node, non-highly-available Rancher server. It is well suited to evaluation, development and managing a modest number of downstream clusters. For a production control plane that must survive the loss of a node, upstream recommends running Rancher on a three-node cluster.
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal and choose Create a resource. Search the Marketplace for Rancher by SecureAnyCloud, and select Create.
On Basics, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22) and HTTPS (443). Then choose Review + create, then Create.
Step 2 - Deploy from the Azure CLI
Accept the Marketplace terms once per subscription, then create the VM.
# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:rancher-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name rancher \
--image sac1647283583153:rancher-ubuntu-24-04:default:latest \
--size Standard_B4ms \
--admin-username azureuser \
--ssh-key-values ~/.ssh/id_ed25519.pub \
--vnet-name <your-vnet> --subnet <your-subnet> \
--public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name rancher --port 443 --priority 1010Step 3 - Connect to your VM
Connect over SSH as azureuser.
ssh azureuser@<vm-public-ip>Step 4 - Confirm the cluster and Rancher are running
On first boot, the image generates a unique administrator password, starts K3s, restores the pre-staged container images, and rolls out Rancher and cert-manager. On a Standard_B4ms, this takes a couple of minutes. Confirm that K3s is active, the node is Ready, and the Rancher deployment is available.
systemctl is-active k3s
sudo k3s kubectl get nodes
sudo k3s kubectl -n cattle-system get deploy rancherk3s reports active, the node reports Ready with role control-plane, and the rancher deployment reports 1/1 ready.
Rancher answers on 443, and 80 redirects to it. The liveness endpoint needs no credentials. Check the endpoints.
curl -sk -o /dev/null -w 'healthz: HTTP %{http_code}\n' https://127.0.0.1/healthz
curl -sk -o /dev/null -w 'dashboard: HTTP %{http_code}\n' https://127.0.0.1/dashboard/
curl -s -o /dev/null -w 'port 80: HTTP %{http_code}\n' http://127.0.0.1/Both HTTPS endpoints return 200 and port 80 returns 302, the redirect to HTTPS.
Rancher serves traffic through the Kubernetes ingress, which K3s publishes with ServiceLB using iptables DNAT instead of a process listening on the host. As a result, ss -ltn does not show ports 80 and 443, even though both are served correctly. Check them with curl, not with the listener table.
Step 5 - Secure by default: no login ships with the image
Rancher holds the keys to every cluster you attach to it, so it must never ship with a known password. The administrator password is generated uniquely for this VM on first boot. The build-time cluster, including its certificate authority and join tokens, is destroyed before the image is captured. Confirm that an unauthenticated caller cannot read the cluster inventory.
curl -sk -o /dev/null -w 'no credentials: HTTP %{http_code}\n' https://127.0.0.1/v3/clustersIt returns HTTP 401. Known default passwords are rejected, only this VM's generated password is accepted, and the underlying Kubernetes API refuses anonymous callers as well.
Your password is written to /root/rancher-credentials.txt, readable only by root. Check the file's permissions.
sudo stat -c '%a %U:%G' /root/rancher-credentials.txtIt reports 600 root:root. View the access notes, which hold the URL, the administrator login and password, and the API details.
sudo cat /root/rancher-credentials.txtStep 6 - Sign in to the dashboard
Browse to https://<vm-public-ip>/. The VM uses a certificate that cert-manager issued for it, so your browser warns on the first visit. Accept the warning, and replace the certificate with your own (see Step 10). Rancher asks for the administrator password from your access notes.
Username: admin Password: <the rancher.admin.pass value from /root/rancher-credentials.txt>On first sign-in, Rancher asks for the server URL it should advertise to the clusters it manages, and asks you to accept the End User License Agreement. Set the URL to the address your downstream clusters will use to reach this VM. This is normally https://<vm-public-ip> or your own DNS name.
Rancher then opens on its home page, which lists the clusters it manages. The local cluster is the K3s cluster running on this VM. It is shown as Active, with its Kubernetes version, node count and capacity.
Step 7 - Explore the cluster
Select the local cluster to open Cluster Explorer, Rancher's view of a single cluster. It shows total resources, node and deployment counts, live pod, CPU and memory capacity, the health of etcd, the scheduler and the controller manager, and the cluster's event stream.
The Nodes view lists the machines in the cluster with their roles, Kubernetes version and live CPU and memory usage. This image has a single node, which carries the control plane role and runs your workloads.
Under Apps, Rancher ships a Helm chart catalog wired to the Rancher, Partners and RKE2 repositories. You can install monitoring, logging, service mesh, backup and third-party applications into the cluster without leaving the dashboard.
Step 8 - Drive the cluster through Rancher's API
Everything the dashboard does is available over Rancher's REST API, and Rancher proxies the Kubernetes API of every cluster it manages. Authenticate with the per-VM password to get a bearer token, then read the cluster back.
PASS=$(sudo grep '^RANCHER_BOOTSTRAP_PASSWORD=' /root/rancher-credentials.txt | cut -d= -f2-)
TOKEN=$(curl -sk -X POST 'https://127.0.0.1/v3-public/localProviders/local?action=login' \
-H 'Content-Type: application/json' \
-d "{\"username\":\"admin\",\"password\":\"$PASS\"}" \
| python3 -c 'import sys,json;print(json.load(sys.stdin)["token"])')
curl -sk -H "Authorization: Bearer $TOKEN" https://127.0.0.1/v3/clusters/local \
| python3 -c 'import sys,json;d=json.load(sys.stdin);print("cluster:",d["id"],"state:",d["state"],"k8s:",d["version"]["gitVersion"],"nodes:",d["nodeCount"])'The login returns HTTP 201 with a bearer token, and the cluster reports state: active with its Kubernetes version and node count.
Rancher's cluster proxy at /k8s/clusters/<cluster-id> speaks the Kubernetes API for any cluster under management, so the same token drives real changes. Create a namespace through Rancher, confirm that it landed in the cluster, then remove it.
PASS=$(sudo grep '^RANCHER_BOOTSTRAP_PASSWORD=' /root/rancher-credentials.txt | cut -d= -f2-)
TOKEN=$(curl -sk -X POST 'https://127.0.0.1/v3-public/localProviders/local?action=login' \
-H 'Content-Type: application/json' \
-d "{\"username\":\"admin\",\"password\":\"$PASS\"}" \
| python3 -c 'import sys,json;print(json.load(sys.stdin)["token"])') PROXY=https://127.0.0.1/k8s/clusters/local curl -sk -o /dev/null -w 'create: HTTP %{http_code}\n' -X POST "$PROXY/api/v1/namespaces" \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"apiVersion":"v1","kind":"Namespace","metadata":{"name":"sac-demo"}}'
sudo k3s kubectl get namespace sac-demo curl -sk -o /dev/null -w 'delete: HTTP %{http_code}\n' -X DELETE \
"$PROXY/api/v1/namespaces/sac-demo" -H "Authorization: Bearer $TOKEN"The create returns HTTP 201, kubectl shows the namespace Active, and the delete returns HTTP 200.
For your own tooling, generate a long-lived API key from the dashboard under the user menu, Account & API Keys, instead of reusing the sign-in token. Run this command from your own machine.
curl https://<vm-public-ip>/v3/clusters \
-H 'Authorization: Bearer <your-api-key>'Step 9 - Add your existing clusters
The point of Rancher is managing clusters beyond this VM. From the home page, choose Import Existing and name the cluster. Rancher gives you a single kubectl apply command to run against that cluster.
The cluster's agent connects outbound to the server URL you set in Step 6. The downstream cluster does not need to be reachable from this VM, but it does need to reach this VM on 443/tcp. Once connected, it appears alongside local with the same dashboard, catalog, RBAC and policy tooling.
Choose Create instead to provision new clusters into a cloud provider or onto existing machines, using the node drivers Rancher ships.
Step 10 - Production: your own domain and certificate
For production, put Rancher on your own DNS name with a certificate that your browsers and cluster agents already trust. Point a DNS record at the VM public IP. Then, in the dashboard under Global Settings, set server-url to that name.
To replace the certificate, supply your own through cert-manager, or install it as the tls-rancher-ingress secret in the cattle-system namespace. Follow upstream's TLS documentation for the release you are running.
Because Rancher governs every cluster you attach, treat this VM as tier-zero infrastructure.
- Restrict inbound access in your NSG to
443/tcpfrom the networks that need it, and to22/tcpfrom your management network only. - Keep
/root/rancher-credentials.txtconfidential. - Replace the initial administrator password with your own, and add named user accounts.
- Back up
/var/lib/rancher, which holds the cluster's etcd datastore and its certificate authority.
Support
SecureAnyCloud supports this image 24/7. For help with deployment or configuration, contact support through secureanycloud.com.
Deploy on Azure
Launch Rancher on Ubuntu 24.04 LTS on Azure, with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com
Overview
Rancher is an open source Kubernetes management platform. It gives you one console, one API and one authentication and RBAC model across every Kubernetes cluster you run, whether hosted, on premises, or provisioned by Rancher itself. From the dashboard you browse and edit workloads, namespaces, nodes and Helm applications, manage users and role bindings, and drive Fleet GitOps. You can also open a shell or kubectl session into any managed cluster without handing kubeconfig files around.
This SecureAnyCloud AMI delivers Rancher 2.14.3 fully installed and running. The web console answers on HTTPS within minutes of launch.
How it is installed, and why
You can run Rancher as a single container with docker run. Upstream's own documentation carries a danger admonition on that page reading, verbatim: "Docker installs are not supported in production environments. These instructions are provided for testing and development purposes only."
This image does not use that install path. Instead it installs the official rancher-stable Helm chart onto an embedded single-node K3s cluster, with cert-manager issuing the Rancher-generated certificate. This is the route the project documents for a Rancher server. K3s brings its own Traefik ingress controller, so ports 80 and 443 are served with no extra wiring.
What is in the image
- Rancher 2.14.3 is the management server, a Deployment in namespace cattle-system.
- K3s v1.35.5+k3s1 is the embedded Kubernetes cluster that Rancher runs on and manages as local.
- cert-manager v1.19.2 issues the Rancher-generated TLS certificate.
- Traefik v3.6.x is the ingress controller bundled with K3s. It serves ports 80 and 443.
- CoreDNS, metrics-server and local-path-provisioner are bundled with K3s and provide cluster DNS, metrics and the default storage class.
- Helm v3.20.0 is on PATH for you to use.
There is no Docker on this image. K3s runs its own containerd.
One instance, one cluster: size it accordingly
This is a single-node, non-highly-available Rancher server. Upstream recommends a three-node cluster for a highly available control plane, and one AMI cannot provide that. The Kubernetes cluster embedded here exists to run Rancher itself. The downstream clusters you register or provision with Rancher can be as large as you like.
No shared administrator password ships
Rancher's bootstrap password is generated once and then persisted inside the cluster datastore. It is not regenerated on every start, and upstream's own examples set it to a well-known value. Either behavior would hand every customer of a shared image the same administrator login.
Neither happens here. Before the image was captured, the build destroyed the entire cluster identity: the etcd datastore, the cluster certificate authority private key, every node and agent join token, and the admin kubeconfig.
On your first boot, a one-shot service starts K3s on that wiped state. A brand new certificate authority, brand new join tokens and an empty datastore are generated on your instance. The service then installs Rancher with a freshly generated 24-character administrator password, proves that the password authenticates, and writes it to a root-only file.
Launching the instance
Launch the AMI from the AWS Marketplace listing with these settings.
- Instance type: m5.large is the listing's priced type. Upstream's smallest endorsed spec for any Rancher server node is 4 vCPU and 16 GB, so choose m5.xlarge or larger for production and before you register downstream clusters.
- Root volume: 50 GiB gp3 (the default in the listing).
- Data volume: 100 GiB gp3, attached automatically and mounted at /var/lib/rancher.
- Security group inbound: TCP 22 (SSH), 80 (redirects to HTTPS) and 443 (the Rancher console and API).
- Key pair: your own EC2 key pair, which you use for the operating system login.
- Outbound: allow outbound HTTPS on first boot (see "About the first boot and outbound access" below).
Restrict the security group to your own address ranges wherever you can. Do not open ports 6443 or 10250, which serve the Kubernetes API server and the kubelet. The listing security group does not open them, and they should stay closed to the internet.
First boot takes several minutes. A one-shot service starts a freshly initialized Kubernetes cluster and installs cert-manager and Rancher from locally staged Helm charts. It then generates your administrator password and waits for a real login round trip to succeed before it finishes.
About the first boot and outbound access
The Rancher and cert-manager container images, the Kubernetes system images and both Helm charts are staged inside the AMI. The management server itself therefore comes up from local content instead of waiting on a registry.
After its deployment is ready, Rancher installs its own additional system components: Fleet, the Fleet agent, the admission webhook, the system upgrade controller and Rancher Turtles. Those components do pull their images from Docker Hub, so give the instance outbound HTTPS on first boot. The first-boot service does not depend on them. It gates on the Rancher deployment, the health endpoint and a login round trip, all of which are local.
Connecting to your instance
Connect over SSH with your own EC2 key pair, as the login user for your AMI variant. For Ubuntu 24.04 LTS, the login user is ubuntu, and the command is ssh -i your-key.pem ubuntu@<public-ip>.
Run everything below over that SSH session. Rancher's own components run as containers in the embedded cluster, so you drive them with the bundled k3s kubectl.
Retrieving your administrator credentials
The first-boot service writes the credentials file, and only root can read it. List the key names in the file.
sudo grep -oE '^[A-Za-z0-9._]+=' /root/rancher-credentials.txtrancher.url= rancher.admin.user= rancher.admin.pass= RANCHER_BOOTSTRAP_PASSWORD=That lists the key names only. To read the password itself, run this command.
sudo grep '^RANCHER_BOOTSTRAP_PASSWORD=' /root/rancher-credentials.txt | cut -d= -f2-Keep the password somewhere safe. At your first sign-in, Rancher asks you to confirm your server URL and accept its license terms. You can change the administrator password from the console afterward, but this file is not updated when you do.
Checking the service is up
The whole appliance is one systemd unit, k3s.service, plus the one-shot first-boot unit. Check that both are active and enabled.
systemctl is-active k3s.service
systemctl is-enabled k3s.service rancher-firstboot.serviceactive enabled enabledCheck the Kubernetes node that Rancher runs on.
sudo k3s kubectl get nodes -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME ip-172-31-92-252 Ready control-plane 9m13s v1.35.5+k3s1 172.31.92.252 <none> Ubuntu 24.04.4 LTS 6.17.0-1019-aws containerd://2.2.3-k3s1Check Rancher itself and cert-manager.
sudo k3s kubectl -n cattle-system get deploy
sudo k3s kubectl -n cert-manager get deployNAME READY UP-TO-DATE AVAILABLE AGE rancher 1/1 1 1 8m52s rancher-webhook 1/1 1 1 5m27s system-upgrade-controller 1/1 1 1 5m7s NAME READY UP-TO-DATE AVAILABLE AGE cert-manager 1/1 1 1 9m9s cert-manager-cainjector 1/1 1 1 9m9s cert-manager-webhook 1/1 1 1 9m9sList every Helm release on the instance. This is the clearest single view of what is installed.
sudo helm list -A --kubeconfig /etc/rancher/k3s/k3s.yamlNAME NAMESPACE REVISION STATUS CHART APP VERSION cert-manager cert-manager 1 deployed cert-manager-v1.19.2 v1.19.2 fleet cattle-fleet-system 1 deployed fleet-109.0.4+up0.15.4 0.15.4 fleet-agent-local cattle-fleet-local-system 1 deployed fleet-agent-local-v0.0.0 fleet-crd cattle-fleet-system 1 deployed fleet-crd-109.0.4+up0.15.4 0.15.4 rancher cattle-system 1 deployed rancher-2.14.3 v2.14.3 rancher-turtles cattle-turtles-system 1 deployed rancher-turtles-109.0.3+up0.26.3 0.26.3 rancher-webhook cattle-system 2 deployed rancher-webhook-109.0.3+up0.10.7 0.10.7 system-upgrade-controller cattle-system 1 deployed system-upgrade-controller-109.0.2 v0.19.1 traefik kube-system 1 deployed traefik-39.0.701+up39.0.7 v3.6.12 traefik-crd kube-system 1 deployed traefik-crd-39.0.701+up39.0.7 v3.6.12To see the whole pod inventory at once, list all pods.
sudo k3s kubectl get pods -AChecking the web endpoints
Rancher serves HTTPS on 443 and redirects port 80 to it. Rancher itself creates the certificate through cert-manager, so curl needs -k, and your browser warns on the first visit (see "Using your own certificate" below).
curl -sk -o /dev/null -w 'healthz:%{http_code}\n' https://127.0.0.1/healthz
curl -s -o /dev/null -w 'http80:%{http_code}\n' http://127.0.0.1/
curl -sk -o /dev/null -w 'dashboard:%{http_code}\n' https://127.0.0.1/dashboard/healthz:200 http80:302 dashboard:200The check covers /dashboard/ as well as /healthz for a reason. Traefik routes by Host header, and the Rancher chart requires a hostname. A stock chart install would answer 404 to anyone browsing the bare instance IP, even while Rancher is healthy. The first-boot service applies an extra host-less catch-all ingress, so the bare public IP works directly. Confirm the ingress.
sudo k3s kubectl -n cattle-system get ingressNAME CLASS HOSTS ADDRESS PORTS AGE rancher <none> 100.53.76.57.sslip.io 172.31.92.252 80, 443 8m53s rancher-sac-catchall-http traefik * 172.31.92.252 80 8m12s rancher-sac-catchall-https traefik * 172.31.92.252 80 8m12sSigning in to the console
Open https://<public-ip>/ in a browser. The certificate is self-signed, so accept the certificate warning and replace the certificate later with your own (see the section below). Then sign in as admin with the password from your credentials file.
At your first sign-in, Rancher asks you to confirm the server URL and accept its End User License Agreement. The server URL is already filled in with your instance address, because the first-boot service set it for you.
After that, you land on the home page, which lists the clusters Rancher manages. Out of the box, that is one cluster, local, the embedded K3s cluster on this instance.
Click local to open the cluster dashboard. It shows capacity, node count, deployment count, control plane component health and a live event feed.
The Nodes view shows the single control plane node with its live CPU, memory and pod utilization.
Cluster Management is where you register or provision the clusters you want to manage.
The Apps and Charts catalog is wired up out of the box, with the Rancher, Partners and RKE2 repositories already present.
Verifying the security posture
Run these four checks once on a new instance. The build also asserts each of them before the image is captured.
An unauthenticated caller must not be able to read the cluster inventory, and neither the Kubernetes API server nor the kubelet may answer anonymously. Check all three.
curl -sk -o /dev/null -w 'v3clusters_anon:%{http_code}\n' https://127.0.0.1/v3/clusters
curl -sk -o /dev/null -w 'kubeapi_anon:%{http_code}\n' https://127.0.0.1:6443/api/v1/nodes
curl -sk -o /dev/null -w 'kubelet_anon:%{http_code}\n' https://127.0.0.1:10250/podsv3clusters_anon:401 kubeapi_anon:401 kubelet_anon:401Ports 6443 and 10250 bind on all interfaces. This is stock K3s behavior and cannot be changed without breaking the embedded agent. They are credential-protected, as shown above, and the listing security group does not open them. Keep it that way.
The cluster admin kubeconfig must not be world-readable. Check its permissions.
sudo stat -c '%a %U:%G %n' /etc/rancher/k3s/k3s.yaml600 root:root /etc/rancher/k3s/k3s.yamlUsing the Rancher API
Rancher's v3 API is served on the same HTTPS port. The login endpoint answers HTTP 201, not 200, on success.
curl -sk -o /tmp/rancher-login.json -w 'login_http:%{http_code}\n' \
-X POST 'https://127.0.0.1/v3-public/localProviders/local?action=login' \
-H 'Content-Type: application/json' \
-d '{"username":"admin","password":"<RANCHER_BOOTSTRAP_PASSWORD>"}' python3 -c "import json;print('token_returned:', bool(json.load(open('/tmp/rancher-login.json')).get('token')))" rm -f /tmp/rancher-login.jsonlogin_http:201 token_returned: TrueSubstitute your own password from the credentials file. The response body carries a bearer token. The command above deliberately reports only whether a token came back, and does not print it.
Send the token as Authorization: Bearer <your-token> on subsequent calls. For example, call GET /v3/clusters to list managed clusters, or use the Rancher-proxied Kubernetes API at /k8s/clusters/local/api/v1/namespaces.
For anything long-lived, create a dedicated API key from the console under your user menu instead of reusing the bootstrap login.
Where the data lives
The Kubernetes state directory, the embedded etcd datastore, the cluster TLS material and the container image store all sit on a dedicated EBS volume mounted at /var/lib/rancher. The volume is separate from the operating system disk and independently resizable. Confirm the mount.
findmnt -no SOURCE,SIZE,FSTYPE,TARGET /var/lib/rancher grep ' /var/lib/rancher ' /etc/fstab/dev/nvme1n1 97.9G ext4 /var/lib/rancher UUID=8ea48246-0322-4458-998f-e04249b4ddc8 /var/lib/rancher ext4 defaults,nofail 0 2The fstab entry is by filesystem UUID, so the mount survives reboots and NVMe device renaming.
This matters most for the container image store. K3s roots its containerd inside /var/lib/rancher, so image layers land on the data volume and do not fill the operating system disk. Confirm it.
findmnt -no SOURCE --target /var/lib/rancher/k3s/agent/containerd
findmnt -no SOURCE --target / df -h --output=source,size,used,avail,target / /var/lib/rancher/dev/nvme1n1 /dev/nvme0n1p1 Filesystem Size Used Avail Mounted on /dev/root 48G 3.4G 44G / /dev/nvme1n1 98G 11G 83G /var/lib/rancherTo grow the volume later, resize it in the EC2 console, then run sudo growpart on the device and sudo resize2fs on the filesystem.
To back it up, snapshot the EBS volume with AWS Backup or a scheduled EBS snapshot policy. The snapshot captures the etcd datastore that holds every Rancher object.
Using your own certificate
Out of the box, Rancher serves a certificate that it generated itself through cert-manager (ingress.tls.source=rancher), which is upstream's default. Browsers warn on it. You have two ways to fix that.
Bring your own certificate. Create a tls-rancher-ingress secret from your certificate and key in the cattle-system namespace. If a private CA signed your certificate, also create a tls-ca secret. Then upgrade the Rancher release with --set ingress.tls.source=secret. Upstream documents this at rancher.com/docs under "Adding TLS Secrets".
Use Let's Encrypt. This needs a real DNS name pointing at the instance, and ports 80 and 443 reachable from the internet, because the HTTP-01 challenge is served over port 80. Upgrade the Rancher release with --set ingress.tls.source=letsEncrypt --set letsEncrypt.email=you@example.com --set hostname=rancher.your-domain.example.
In both cases, you run helm upgrade against the release that is already installed. Pass the same hostname you want Rancher to serve on, and update the server-url setting in the console to match.
Registering a downstream cluster
The point of Rancher is the clusters it manages, not the one it runs on. In Cluster Management, you can:
- Import Existing: Rancher gives you a single
kubectl applycommand to run against any reachable Kubernetes cluster. The command installs the Rancher agent and registers the cluster. - Create: provision a new cluster into a cloud provider or onto machines you supply, using a cloud credential you add first.
Imported clusters connect outbound from the cluster to your Rancher server URL. The downstream cluster therefore needs to reach this instance's HTTPS port. This is one more reason to give the instance a real DNS name and a proper certificate before you start registering clusters.
Licensing
Rancher is licensed Apache-2.0, and this image ships the open source build. SUSE separately sells Rancher Prime, a commercial support and supply chain offering. Nothing from Prime is included here, and no SUSE support entitlement comes with this listing. SecureAnyCloud provides support for this image.
Every component of the shipped stack, with its license and upstream source, is listed on the image. Read the list.
sed -n '1,14p' /usr/share/doc/sac-rancher/NOTICE-THIRD-PARTY.txtsac Rancher appliance - third-party components and licenses ================================================================ This image redistributes the following third-party software. Apache-2.0 requires that its license text and attribution notices travel with the redistribution; this file is that attribution. Where a component is licensed GPL-2.0 or GPL-3.0, the corresponding source is available from the upstream distributor named below, and this notice passes through their source offer (GPL-2 s3(c) / GPL-3 s6(d)) - the binaries here are unmodified upstream builds. Primary components ------------------ Rancher 2.14.3 Apache-2.0 https://github.com/rancher/rancher K3s v1.35.5+k3s1 Apache-2.0 https://github.com/k3s-io/k3sTroubleshooting
The console is not answering yet. First boot installs a whole Kubernetes stack, so give it several minutes. Watch its progress directly.
sudo systemctl status rancher-firstboot.service --no-pagerSomething is not ready. List the pods that are still coming up.
sudo k3s kubectl get pods -A --field-selector=status.phase!=RunningBrowsing the instance IP gives a 404. The catch-all ingress is missing. Check it with the get ingress command above. Both rancher-sac-catchall-http and rancher-sac-catchall-https should be present.
You changed the administrator password and lost it. Reset it from the instance by running sudo k3s kubectl -n cattle-system exec deploy/rancher -- reset-password, which prints a new administrator password. This command rotates the live credential, so it is given here as text and not as a runnable block. Run it only when you mean to reset the password.
Memory pressure. Rancher is memory-hungry, and more so once it manages downstream clusters. Check headroom with free -h, and move to a larger instance type if the Rancher pod is restarting.
Support
SecureAnyCloud provides 24/7 technical support for this image by email and live chat at sales@secureanycloud.com. Support covers:
- Deployment and initial configuration.
- First sign-in and password rotation.
- Replacing the certificate and pointing the instance at your own domain.
- Registering downstream clusters.
- Restricting the Kubernetes API and kubelet ports.
- Backing up the embedded datastore and resizing the data volume.
- Performance tuning and patching guidance.
Deploy on AWS
Launch Rancher on AWS, with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com