Install Akamai App Platform on LKE with DNS
Provision a LKE cluster in Cloud Manager or by using the Linode CLI and manually install the App Platform onto it by using a Linode Domain for DNS.
Prerequisites
- Create an account for Linode here
Provision a LKE cluster
Using Cloud Manager
Provision a LKE cluster with the following specs:
-
Fill in the
Cluster Label
-
Use Kubernetes version:
1.30
-
Enable HA Control Plane
-
Add Node Pools. Select the Dedicated 8 GB Plan (with 8 GB RAM and 4 CPUs)
-
Wait until the nodes are in a
Running
state -
Download the
kubeconfig
# Update the KUBECONFIG env to gain access to the cluster
export KUBECONFIG=<path-to-downloads>/$CLUSTER_NAME-kubeconfig.yaml
Using Linode CLI
Install and configure the CLI.
Provision a LKE cluster using the Linode CLI:
linode-cli lke cluster-create \
--label $CLUSTER_NAME \
--region $REGION \
--k8s_version 1.30 \
--control_plane.high_availability true \
--node_pools.type g6-dedicated-8 \
--node_pools.count 3
And get the Kubecfg:
linode-cli get-kubeconfig --label $CLUSTER_NAME
kubectl config use-context lke<cluster_id>-ctx
Create a Domain
If you want to learn about how to use Linode DNS Manager read the following tutorial: Get started with DNS Manager.
When you create a domain in Linode, make sure to set the TTL of the SOA Record to 30 seconds:
-
Click on your domain.
-
Click on the tree dots on the right of the SOA Record and click
edit
. -
Change the default TTL to
30 seconds
. -
Click
Save
.
Creating a Personal Access Token
Create a new Personal Access Token with Read/Write access for Domains:
-
Go to your profile on the top right.
-
Click on
API Tokens
. -
Click on
Create A Personal Access Token
. -
Add a
Label
. -
Select the desired
Expiry
. -
Select
No Access
for all. -
Select
Read/Write
forDomains
. -
Click
Create Token
. -
Copy your Personal Access Token.
-
Set environment variable for the token:
LINODE_TOKEN="<your-personal-access-token>"
Create the values.yaml file
tee values.yaml<<EOF
cluster:
name: $CLUSTER_NAME
provider: linode
domainSuffix: <your-domain>
otomi:
hasExternalDNS: true
dns:
domainFilters:
- <your-domain>
provider:
linode:
apiToken: $LINODE_TOKEN
apps:
cert-manager:
issuer: letsencrypt
stage: production
email: admin@<your-domain>
EOF
Adjust the domainSuffix
, domainFilters
and email
!
You can also use a different DNS provider. See here for examples on how to use Akamai EdgeDNS, AWS Route53, Cloudflare DNS and many others.
Install the App Platform
Install using Helm:
helm repo add apl https://linode.github.io/apl-core
helm repo update
helm install -f values.yaml apl apl/apl
Monitor the logs of the installer job:
kubectl logs jobs/apl -n default -f
When the installer is finished, copy the url
and admin-password
from the console output.
Follow the post installation steps here.
Like to learn how to use App Platform for LKE? Go through the Get Started labs
Known issues
During install Pods get stuck in a Pending state
During the installation, multiple StatefullSets
are created that require a PersistentVolumeClaim
(PVC). Each PVC is attached to a Volume
in Linode. Volumes count towards the account limits. If you see Pods in a Pending
state, it might be that your're hitting the account limit.
What to do:
-
Delete unused resources in your Linode account (like unused Volumes).
-
Create a support ticket and request to increase your account limit.