### Example eksdemo Install Output Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-kube-prometheus.md This is an example output from the `eksdemo install` command, showing the Helm installation process and resource creation. ```bash » eksdemo install kube-prometheus-karpenter-dashboards -c blue Helm installing... 2023/03/05 20:25:30 creating 1 resource(s) 2023/03/05 20:25:30 creating 3 resource(s) Using chart version "n/a", installed "kube-prometheus-karpenter-dashboards" version "n/a" in namespace "monitoring" ``` -------------------------------- ### Install Example Applications Source: https://context7.com/awslabs/eksdemo/llms.txt Installs example applications for testing and demonstration. Supports various configurations like TLS with ALB Ingress, LoadBalancer services, NLB usage, and Nginx ingress controllers. Use --dry-run to preview Kubernetes manifests. ```bash # Install Game 2048 with TLS using ALB Ingress eksdemo install example-game-2048 -c blue -I game2048.example.com ``` ```bash # Install Game 2048 without TLS (uses LoadBalancer service) eksdemo install example-game-2048 -c blue ``` ```bash # Install with NLB instead of CLB eksdemo install example-game-2048 -c blue --nlb ``` ```bash # Install with Nginx ingress controller eksdemo install example-game-2048 -c blue -I game2048.example.com --ingress-class nginx ``` ```bash # Preview the Kubernetes manifests eksdemo install example-game-2048 -c blue -I game2048.example.com --dry-run # Shows Deployment, Service, and Ingress manifests with TLS configuration ``` ```bash # Install Inflate app for testing Karpenter autoscaling eksdemo install example-inflate -c blue --replicas 10 --spread ``` ```bash # Install with on-demand instances only eksdemo install example-inflate -c blue --replicas 5 --on-demand ``` -------------------------------- ### Show Help for Game 2048 Installation Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-game-2048.md Use the `-h` flag to display detailed usage information and available options for installing the Game 2048 example application. ```bash » eksdemo install example-game-2048 -h ``` -------------------------------- ### Execute ExternalDNS Installation Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-edns.md Example output from running the installation command on an EKS cluster. ```bash » eksdemo install external-dns -c Creating 1 dependencies for external-dns Creating dependency: external-dns-irsa 2023-05-29 19:29:31 [ℹ] 4 existing iamserviceaccount(s) (awslb/aws-load-balancer-controller,external-dns/external-dns,karpenter/karpenter,kube-system/ebs-csi-controller-sa) will be excluded 2023-05-29 19:29:31 [ℹ] 1 iamserviceaccount (external-dns/external-dns) was excluded (based on the include/exclude rules) 2023-05-29 19:29:31 [!] serviceaccounts that exist in Kubernetes will be excluded, use --override-existing-serviceaccounts to override 2023-05-29 19:29:31 [ℹ] no tasks Downloading Chart: https://github.com/kubernetes-sigs/external-dns/releases/download/external-dns-helm-chart-1.12.2/external-dns-1.12.2.tgz Helm installing... 2023/05/29 19:29:33 creating 1 resource(s) 2023/05/29 19:29:34 creating 5 resource(s) Using chart version "1.12.2", installed "external-dns" version "v0.13.4" in namespace "external-dns" NOTES: *********************************************************************** * External DNS * *********************************************************************** Chart version: 1.12.2 App version: v0.13.4 Image tag: registry.k8s.io/external-dns/external-dns:v0.13.4 *********************************************************************** ``` -------------------------------- ### View help for example-inflate installation Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-karpenter.md Displays available flags and options for the example-inflate installation command. ```bash » eksdemo install example-inflate -h ``` -------------------------------- ### Install Application with eksdemo Source: https://github.com/awslabs/eksdemo/blob/main/README.md Use this command to install any application from the catalog. Specify the application name and the target cluster. Optional flags can further customize the installation. ```bash eksdemo install -c [flags] ``` -------------------------------- ### View Karpenter Installation Help Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-karpenter.md Displays the available flags and configuration options for the Karpenter installation command. ```bash » eksdemo install karpenter -h Install karpenter Usage: eksdemo install karpenter [flags] Flags: -a, --ami-family string node class AMI family (default "AL2") --chart-version string chart version (default "1.0.0") -c, --cluster string cluster to install application (required) --consolidate-after string time after a pod is scheduled/removed before considering the node consolidatable (default "1m") --dry-run don't install, just print out all installation steps --enable-spottospot enables the spot to spot consolidation feature --expire-after string time a node can live on the cluster before being deleted (default "720h") -h, --help help for karpenter -n, --namespace string namespace to install (default "karpenter") --replicas int number of replicas for the controller deployment (default 1) --service-account string service account name (default "karpenter") --set strings set chart values (can specify multiple or separate values with commas: key1=val1,key2=val2) --use-previous use previous working chart/app versions ("1.0.0"/"1.0.0") -v, --version string application version (default "1.0.0") ``` -------------------------------- ### Install Application Group with eksdemo Source: https://github.com/awslabs/eksdemo/blob/main/README.md Applications can be installed individually or as part of a group. Use a space or hyphen to separate group and application names when installing. ```bash eksdemo install ingress nginx ``` ```bash eksdemo install ingress-nginx ``` -------------------------------- ### Install eksdemo via Homebrew Source: https://github.com/awslabs/eksdemo/blob/main/README.md Standard installation process for macOS and Linux environments using Homebrew. ```bash brew tap aws/tap brew install eksdemo ``` -------------------------------- ### Install Game 2048 Application Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-game-2048.md Installs the Game 2048 application using eksdemo. Replace `example.com` with your Hosted Zone name. ```bash » eksdemo install example-game-2048 -c blue -I game2048.example.com Helm installing... 2022/11/15 19:45:20 creating 1 resource(s) 2022/11/15 19:45:20 creating 3 resource(s) Using chart version "n/a", installed "example-game-2048" version "latest" in namespace "game-2048" ``` -------------------------------- ### Install ExternalDNS via CLI Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-edns.md Commands for installing, exploring help, and performing a dry run of the ExternalDNS installation. ```bash eksdemo install external-dns -c ``` ```bash eksdemo install external-dns -h ``` ```bash eksdemo install external-dns -c --dry-run ``` -------------------------------- ### View Kubecost Installation Help Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-kubecost.md Displays the available flags and configuration options for the kubecost-eks-amp installation command. ```bash » eksdemo install kubecost-eks-amp -h Install kubecost-eks-amp Usage: eksdemo install kubecost-eks-amp [flags] Flags: --chart-version string chart version (default "1.103.3") -c, --cluster string cluster to install application (required) --dry-run don't install, just print out all installation steps -h, --help help for kubecost-eks-amp --ingress-class string name of IngressClass (default "alb") -I, --ingress-host string hostname for Ingress with TLS (default is Service of type LoadBalancer) -n, --namespace string namespace to install (default "kubecost") -X, --nginx-pass string basic auth password for admin user (only valid with --ingress-class=nginx) --nlb use NLB instead of CLB (when not using Ingress) --no-prometheus don't install prometheus --node-exporter install prometheus node exporter (not installed by default) --service-account string service account name (default "kubecost-cost-analyzer") --set strings set chart values (can specify multiple or separate values with commas: key1=val1,key2=val2) --target-type string target type when deploying NLB or ALB Ingress (default "ip") --use-previous use previous working chart/app versions ("1.100.0"/"1.100.0") -v, --version string application version (default "1.103.3") ``` -------------------------------- ### Get Help for Consul Installation Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-hashicorp-consul.md Use the -h flag to view available options for installing the Consul application. This helps in understanding configurable parameters like chart version, namespace, and UI enablement. ```bash » eksdemo install consul -h Install consul Usage: eksdemo install consul [flags] Flags: --chart-version string chart version (default "1.4.1") -c, --cluster string cluster to install application (required) --dry-run don't install, just print out all installation steps --enableUI Enable Consul UI -h, --help help for consul -n, --namespace string namespace to install --replicas int 1 or 3 replicas (default 1) --service-account string service account name --set strings set chart values (can specify multiple or separate values with commas: key1=val1,key2=val2) --use-previous use previous working chart/app versions ("1.4.0"/"v1.18.0") -v, --version string application version (default "v1.18.1") Global Flags: --profile string use the specific profile from your credential file --region string the region to use, overrides config/env settings ``` -------------------------------- ### Install eksdemo on AWS CloudShell Source: https://github.com/awslabs/eksdemo/blob/main/README.md Downloads and installs binaries to the local user directory for ephemeral environments. ```bash curl -s -L "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_Linux_amd64.tar.gz" | tar xz -C /tmp curl -s -L "https://github.com/awslabs/eksdemo/releases/latest/download/eksdemo_Linux_x86_64.tar.gz" | tar xz -C /tmp mkdir -p ~/.local/bin && mv /tmp/eksctl ~/.local/bin && mv /tmp/eksdemo ~/.local/bin ``` -------------------------------- ### Troubleshoot Homebrew Installation Source: https://github.com/awslabs/eksdemo/blob/main/README.md Resolves conflicts with existing eksctl installations from homebrew/core. ```bash brew uninstall eksctl brew install eksdemo ``` -------------------------------- ### Install Ingress NGINX Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-ingress-nginx.md Install Ingress NGINX on your EKS cluster. This command initiates the Helm installation process. Monitor the output for the LoadBalancer IP availability. ```bash eksdemo install ingress-nginx -c ``` ```bash » eksdemo install ingress-nginx -c Downloading Chart: https://github.com/kubernetes/ingress-nginx/releases/download/helm-chart-4.7.0/ingress-nginx-4.7.0.tgz Helm installing... 2023/05/31 19:48:55 creating 1 resource(s) 2023/05/31 19:48:56 Starting delete for "ingress-nginx-admission" ServiceAccount 2023/05/31 19:49:17 Watching for changes to Job ingress-nginx-admission-patch with timeout of 5m0s 2023/05/31 19:49:17 Add/Modify event for ingress-nginx-admission-patch: ADDED 2023/05/31 19:49:17 ingress-nginx-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0 2023/05/31 19:49:19 Add/Modify event for ingress-nginx-admission-patch: MODIFIED 2023/05/31 19:49:19 ingress-nginx-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0 2023/05/31 19:49:19 Add/Modify event for ingress-nginx-admission-patch: MODIFIED 2023/05/31 19:49:19 ingress-nginx-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0 2023/05/31 19:49:21 Add/Modify event for ingress-nginx-admission-patch: MODIFIED 2023/05/31 19:49:21 ingress-nginx-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0 2023/05/31 19:49:21 Add/Modify event for ingress-nginx-admission-patch: MODIFIED 2023/05/31 19:49:21 Starting delete for "ingress-nginx-admission" ServiceAccount 2023/05/31 19:49:21 Starting delete for "ingress-nginx-admission" ClusterRole 2023/05/31 19:49:21 Starting delete for "ingress-nginx-admission" ClusterRoleBinding 2023/05/31 19:49:22 Starting delete for "ingress-nginx-admission" Role 2023/05/31 19:49:22 Starting delete for "ingress-nginx-admission" RoleBinding 2023/05/31 19:49:22 Starting delete for "ingress-nginx-admission-patch" Job Using chart version "4.7.0", installed "ingress-nginx" version "v1.8.0" in namespace "ingress-nginx" NOTES: The ingress-nginx controller has been installed. It may take a few minutes for the LoadBalancer IP to be available. You can watch the status by running 'kubectl --namespace ingress-nginx get services -o wide -w ingress-nginx-controller' An example Ingress that makes use of the controller: ``` -------------------------------- ### Get Help for Kube Prometheus Stack AMP Installation Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-kube-prometheus.md This command displays all available flags and options for installing the Kube Prometheus Stack with AMP, including chart version, cluster name, Grafana password, and namespace. ```bash » eksdemo install kube-prometheus-stack-amp -h Install kube-prometheus-stack-amp Usage: eksdemo install kube-prometheus-stack-amp [flags] Aliases: kube-prometheus-stack-amp, kube-prometheus-amp Flags: --chart-version string chart version (default "46.6.0") -c, --cluster string cluster to install application (required) --dry-run don't install, just print out all installation steps -P, --grafana-pass string grafana admin password (required) -h, --help help for kube-prometheus-stack-amp --ingress-class string name of IngressClass (default "alb") -I, --ingress-host string hostname for Ingress with TLS (default is Service of type LoadBalancer) -n, --namespace string namespace to install (default "monitoring") -X, --nginx-pass string basic auth password for admin user (only valid with --ingress-class=nginx) --nlb use NLB instead of CLB (when not using Ingress) --set strings set chart values (can specify multiple or separate values with commas: key1=val1,key2=val2) --target-type string target type when deploying NLB or ALB Ingress (default "ip") --use-previous use previous working chart/app versions ("34.10.0"/"v0.55.0") -v, --version string application version (default "v0.65.1") ``` -------------------------------- ### Install Karpenter Source: https://context7.com/awslabs/eksdemo/llms.txt Installs Karpenter for automatic node provisioning, including IRSA, node roles, and SQS queues. Use --dry-run to preview all installation steps. Options include specifying AMI family, enabling spot-to-spot consolidation (ALPHA), configuring consolidation timing, and setting replica count for high availability. ```bash # Install Karpenter with all dependencies eksdemo install karpenter -c blue # Automatically creates: # 1. EC2 Spot Service Linked Role # 2. Karpenter Controller IAM Role (IRSA) # 3. Karpenter Node IAM Role # 4. SQS Queue and EventBridge rules for Spot termination handling # 5. aws-auth ConfigMap entry # 6. Karpenter Helm chart # 7. Default NodePool and EC2NodeClass ``` ```bash # Preview all installation steps eksdemo install karpenter -c blue --dry-run ``` ```bash # Install with Bottlerocket AMI family eksdemo install karpenter -c blue --ami-family Bottlerocket ``` ```bash # Install with AL2023 AMI family eksdemo install karpenter -c blue --ami-family AL2023 ``` ```bash # Enable spot-to-spot consolidation (ALPHA feature) eksdemo install karpenter -c blue --enable-spottospot ``` ```bash # Configure consolidation timing eksdemo install karpenter -c blue --consolidate-after 30s ``` ```bash # Install with 2 replicas for high availability eksdemo install karpenter -c blue --replicas 2 ``` -------------------------------- ### Install example-inflate application Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-karpenter.md Deploys the inflate application to the cluster to trigger autoscaling. ```bash » eksdemo install example-inflate -c --replicas 10 --spread ``` -------------------------------- ### Perform Karpenter Installation Dry Run Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-karpenter.md Inspects the installation steps and prerequisite items without applying changes to the cluster. ```bash » eksdemo install karpenter -c --dry-run Creating 5 dependencies for karpenter Helm Installer Dry Run: +---------------------+------------------------------------------+ | Application Version | 1.0.0 | | Chart Version | 1.0.0 | | Chart Repository | oci://public.ecr.aws/karpenter/karpenter | | Chart Name | karpenter | | Release Name | karpenter | | Namespace | karpenter | | Wait | true | +---------------------+------------------------------------------+ Set Values: [] Values File: --- serviceAccount: ``` -------------------------------- ### Install cert-manager Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-cert-manager.md Execute the installation command to deploy cert-manager to your EKS cluster. This command will create the necessary IAM roles, install the Helm chart, and configure the ClusterIssuer. ```bash » eksdemo install cert-manager -c ``` -------------------------------- ### Verify Installed Applications Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-edns.md Command to verify that applications were installed correctly on the specified cluster. ```bash » eksdemo get application -c ``` -------------------------------- ### Install cert-manager Source: https://context7.com/awslabs/eksdemo/llms.txt Installs cert-manager for automatic TLS certificate management in Kubernetes. Use --dry-run to preview the installation steps. ```bash # Install cert-manager eksdemo install cert-manager -c blue ``` ```bash # Preview installation eksdemo install cert-manager -c blue --dry-run ``` -------------------------------- ### Install Storage Drivers Source: https://context7.com/awslabs/eksdemo/llms.txt Commands to install CSI drivers for various AWS storage services. ```bash # Install EBS CSI driver eksdemo install storage-ebs-csi -c blue # Install EFS CSI driver eksdemo install storage-efs-csi -c blue # Install FSx for Lustre CSI driver eksdemo install storage-fsx-lustre-csi -c blue # Aliases also work eksdemo install ebs-csi-driver -c blue ``` -------------------------------- ### Install Karpenter using eksdemo CLI Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-karpenter.md Use the `eksdemo` CLI to install Karpenter on your EKS cluster. Replace `` with your actual cluster name. ```bash » eksdemo install karpenter -c ``` -------------------------------- ### Install Linkerd with EKSDemo Source: https://github.com/awslabs/eksdemo/blob/main/pkg/application/linkerd/README.md Use these commands to install the Linkerd CRDs and control plane via EKSDemo. Ensure Linkerd is configured for your environment. ```bash eksdemo install linkerd linkerd-crds eksdemo install linkerd linkerd-control-plane ``` -------------------------------- ### Perform Dry Run Installation Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-vpc-lattice-controller.md Executes a dry run of the controller installation to preview the generated eksctl and CloudFormation configurations. ```bash » eksdemo install vpc-lattice-controller -c --default-service-network my-hotel --dry-run Creating 2 dependencies for vpc-lattice-controller Creating dependency: vpc-lattice-controller-irsa Eksctl Resource Manager Dry Run: eksctl create iamserviceaccount -f - --approve --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: blue region: us-west-2 iam: withOIDC: true serviceAccounts: - metadata: name: gateway-api-controller namespace: vpc-lattice roleName: eksdemo.blue.vpc-lattice.gateway-api-controller roleOnly: true attachPolicy: Version: '2012-10-17' Statement: - Effect: Allow Action: - vpc-lattice:* - ec2:DescribeVpcs - ec2:DescribeSubnets - ec2:DescribeTags - ec2:DescribeSecurityGroups - logs:CreateLogDelivery - logs:GetLogDelivery - logs:DescribeLogGroups - logs:PutResourcePolicy - logs:DescribeResourcePolicies - logs:UpdateLogDelivery - logs:DeleteLogDelivery - logs:ListLogDeliveries - tag:GetResources - firehose:TagDeliveryStream - s3:GetBucketPolicy - s3:PutBucketPolicy Resource: "*" - Effect: Allow Action: iam:CreateServiceLinkedRole Resource: arn:aws:iam::*:role/aws-service-role/vpc-lattice.amazonaws.com/AWSServiceRoleForVpcLattice Condition: StringLike: iam:AWSServiceName: vpc-lattice.amazonaws.com - Effect: Allow Action: iam:CreateServiceLinkedRole Resource: arn:aws:iam::*:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery Condition: StringLike: iam:AWSServiceName: delivery.logs.amazonaws.com Creating dependency: amazon-vpc-lattice-security-group-rule CloudFormation Resource Manager Dry Run: Stack name "eksdemo-blue-amazon-vpc-lattice-security-group-rule" template: AWSTemplateFormatVersion: "2010-09-09" Description: Allow traffic to Amazon EKS nodes from Amazon VPC Lattice Resources: GatewayApiControllerVpcLatticeIngressRule: Type: AWS::EC2::SecurityGroupIngress Properties: ``` -------------------------------- ### Manage EKS Add-ons Source: https://context7.com/awslabs/eksdemo/llms.txt Install managed add-ons and list available versions. ```bash # Create VPC CNI addon eksdemo create addon vpc-cni -c blue # Create CoreDNS addon eksdemo create addon coredns -c blue # List available addon versions eksdemo get addon-versions ``` -------------------------------- ### Install eksdemo on AWS Cloud9 Source: https://github.com/awslabs/eksdemo/blob/main/README.md Installs Homebrew and the eksdemo package within a Cloud9 terminal environment. ```bash CI=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" (echo; echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"') >> ~/.bashrc eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" brew install aws/tap/eksdemo ``` -------------------------------- ### Show Help for AWS Load Balancer Controller Installation Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-awslb.md Use the `-h` flag to display detailed help information for installing the AWS Load Balancer Controller, including available options and their default values. ```bash » eksdemo install aws-lb-controller -h Install aws-lb-controller Usage: eksdemo install aws-lb-controller [flags] Aliases: aws-lb-controller, aws-lb, awslb Flags: --chart-version string chart version (default "1.5.3") -c, --cluster string cluster to install application (required) --default-ingress-class set the alb IngressClass as the default for the cluster --default-target-type string set the default target type for target groups (default "instance") --disable-webhook disable the webhook so the in-tree controller can provision CLBs --dry-run don't install, just print out all installation steps -h, --help help for aws-lb-controller -n, --namespace string namespace to install (default "awslb") --replicas int number of replicas for the controller deployment (default 1) --service-account string service account name (default "aws-load-balancer-controller") --set strings set chart values (can specify multiple or separate values with commas: key1=val1,key2=val2) --use-previous use previous working chart/app versions ("1.4.8"/"v2.4.7") -v, --version string application version (default "v2.5.2") ``` -------------------------------- ### Install eksdemo on AWS CloudShell Source: https://context7.com/awslabs/eksdemo/llms.txt Download and configure the binary manually in an AWS CloudShell environment. ```bash # Download and install eksctl and eksdemo curl -s -L "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_Linux_amd64.tar.gz" | tar xz -C /tmp curl -s -L "https://github.com/awslabs/eksdemo/releases/latest/download/eksdemo_Linux_x86_64.tar.gz" | tar xz -C /tmp mkdir -p ~/.local/bin && mv /tmp/eksctl ~/.local/bin && mv /tmp/eksdemo ~/.local/bin # Configure bash completion (optional) sudo dnf install bash-completion -y mkdir -p ~/.bashrc.d cp /usr/share/bash-completion/bash_completion ~/.bashrc.d/ echo '. <(eksdemo completion bash)' >> ~/.bashrc source ~/.bashrc ``` -------------------------------- ### Install VPC Lattice Controller using eksdemo Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-vpc-lattice-controller.md Installs the VPC Lattice controller on an EKS cluster using the eksdemo tool. Replace with your actual cluster name. ```bash » eksdemo install vpc-lattice-controller -c --default-service-network my-hotel ``` -------------------------------- ### Install AWS Load Balancer Controller Source: https://context7.com/awslabs/eksdemo/llms.txt Installs the AWS Load Balancer Controller to provision ALBs for Ingress and NLBs for LoadBalancer services. Use the --dry-run flag to preview installation steps, including IRSA role creation and Helm chart configuration. ```bash # Install AWS Load Balancer Controller eksdemo install aws-lb-controller -c blue ``` ```bash # Preview installation steps with dry-run eksdemo install aws-lb-controller -c blue --dry-run # Shows: # - IRSA role creation with IAM policy # - Helm chart configuration and values ``` ```bash # Install with custom replica count for high availability eksdemo install aws-lb-controller -c blue --replicas 2 ``` ```bash # Install and set ALB as default IngressClass eksdemo install aws-lb-controller -c blue --default-ingress-class ``` ```bash # Available aliases for the command eksdemo install aws-lb -c blue eksdemo install awslb -c blue ``` -------------------------------- ### List Installed Applications Source: https://context7.com/awslabs/eksdemo/llms.txt View Helm releases managed by eksdemo within a specific cluster. ```bash # List installed applications eksdemo get application -c blue # Output: # +-------------------+--------------+---------+----------+--------+ # | Name | Namespace | Version | Status | Chart | # +-------------------+--------------+---------+----------+--------+ # | aws-lb-controller | awslb | v2.5.2 | deployed | 1.5.3 | # | external-dns | external-dns | v0.13.4 | deployed | 1.12.2 | # | karpenter | karpenter | 1.0.0 | deployed | 1.0.0 | # +-------------------+--------------+---------+----------+--------+ ``` -------------------------------- ### EKS Demo Install Flags Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-game-2048.md These flags control the installation of the Game 2048 application, allowing customization of ingress, load balancer type, and authentication. ```bash Flags: --ingress-class string name of IngressClass (default "alb") -I, --ingress-host string hostname for Ingress with TLS (default is Service of type LoadBalancer) -X, --nginx-pass string basic auth password for admin user (only valid with --ingress-class=nginx) --nlb use NLB instead of CLB (when not using Ingress) --target-type string target type when deploying NLB or ALB Ingress (default "ip") ``` -------------------------------- ### Linkerd Check Output Example Source: https://github.com/awslabs/eksdemo/blob/main/pkg/application/linkerd/README.md This is an example of the expected output from the 'linkerd check' command, indicating the status of various Linkerd components and configurations. Successful checks are marked with '√', while warnings or issues are marked with '‼'. ```sh kubernetes-api -------------- √ can initialize the client √ can query the Kubernetes API kubernetes-version ------------------ √ is running the minimum Kubernetes API version linkerd-existence ----------------- √ 'linkerd-config' config map exists √ heartbeat ServiceAccount exist √ control plane replica sets are ready √ no unschedulable pods √ control plane pods are ready √ cluster networks contains all pods √ cluster networks contains all services linkerd-config -------------- √ control plane Namespace exists √ control plane ClusterRoles exist √ control plane ClusterRoleBindings exist √ control plane ServiceAccounts exist √ control plane CustomResourceDefinitions exist √ control plane MutatingWebhookConfigurations exist √ control plane ValidatingWebhookConfigurations exist √ proxy-init container runs as root user if docker container runtime is used linkerd-identity ---------------- √ certificate config is valid √ trust anchors are using supported crypto algorithm √ trust anchors are within their validity period √ trust anchors are valid for at least 60 days √ issuer cert is using supported crypto algorithm √ issuer cert is within its validity period √ issuer cert is valid for at least 60 days √ issuer cert is issued by the trust anchor linkerd-webhooks-and-apisvc-tls ------------------------------- √ proxy-injector webhook has valid cert √ proxy-injector cert is valid for at least 60 days √ sp-validator webhook has valid cert √ sp-validator cert is valid for at least 60 days √ policy-validator webhook has valid cert √ policy-validator cert is valid for at least 60 days linkerd-version --------------- √ can determine the latest version ‼ cli is up-to-date is running version 24.7.1 but the latest edge version is 24.7.3 see https://linkerd.io/2/checks/#l5d-version-cli for hints control-plane-version --------------------- √ can retrieve the control plane version √ control plane is up-to-date ‼ control plane and cli versions match control plane running edge-24.7.3 but cli running edge-24.7.1 see https://linkerd.io/2/checks/#l5d-version-control for hints linkerd-control-plane-proxy --------------------------- √ control plane proxies are healthy √ control plane proxies are up-to-date ‼ control plane proxies and cli versions match linkerd-destination-6d7bc6d44f-p2chs running edge-24.7.3 but cli running edge-24.7.1 see https://linkerd.io/2/checks/#l5d-cp-proxy-cli-version for hints linkerd-extension-checks ------------------------ √ namespace configuration for extensions Status check results are √ ``` -------------------------------- ### Install Kubecost with EKS and Amazon Managed Prometheus Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-kubecost.md Use this command to install Kubecost on EKS, configuring it to use Amazon Managed Prometheus for metrics. Replace placeholders like ``, `kubecost.`, and `` with your specific values. ```bash eksdemo install kubecost-eks-amp -c --node-exporter --ingress-host kubecost. --ingress-class=nginx --nginx-pass ``` -------------------------------- ### Install Ingress Controllers Source: https://context7.com/awslabs/eksdemo/llms.txt Commands to deploy ingress controllers for managing HTTP traffic routing. ```bash # Install Nginx Ingress Controller eksdemo install ingress-nginx -c blue # Install Contour (Envoy-based) eksdemo install ingress-contour -c blue # Install Emissary (Ambassador) eksdemo install ingress-emissary -c blue ``` -------------------------------- ### Dry Run AWS Load Balancer Controller Installation Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-awslb.md Execute a dry run of the AWS Load Balancer Controller installation to preview dependencies and detailed installation steps without actually deploying the application. Replace `` with your EKS cluster's name. ```bash » eksdemo install aws-lb-controller -c --dry-run Creating 1 dependencies for aws-lb-controller Creating dependency: aws-lb-controller-irsa Eksctl Resource Manager Dry Run: eksctl create iamserviceaccount -f - --approve --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: blue region: us-west-2 iam: withOIDC: true serviceAccounts: - metadata: name: aws-load-balancer-controller namespace: awslb roleName: eksdemo.blue.awslb.aws-load-balancer-controller roleOnly: true attachPolicy: Helm Installer Dry Run: +---------------------+----------------------------------+ | Application Version | v2.5.2 | | Chart Version | 1.5.3 | | Chart Repository | https://aws.github.io/eks-charts | | Chart Name | aws-load-balancer-controller | | Release Name | aws-lb-controller | | Namespace | awslb | | Wait | false | +---------------------+----------------------------------+ Set Values: [] Values File: --- replicaCount: 1 image: tag: v2.5.2 fullnameOverride: aws-load-balancer-controller clusterName: blue serviceAccount: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/eksdemo.blue.awslb.aws-load-balancer-controller name: aws-load-balancer-controller region: us-west-2 vpcId: vpc-08a68dc8b440fec75 defaultTargetType: instance enableServiceMutatorWebhook: true ``` -------------------------------- ### Install Kube Prometheus Stack with AMP Integration Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-kube-prometheus.md Installs the Kube Prometheus Stack using `eksdemo`, integrating with Amazon Managed Prometheus. Replace placeholders for cluster name, hosted zone, and Grafana password before execution. ```bash » eksdemo install kube-prometheus-stack-amp -c --ingress-host kprom. --grafana-pass ``` -------------------------------- ### Dry Run Kube Prometheus Stack AMP Installation Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-kube-prometheus.md Perform a dry run of the Kube Prometheus Stack AMP installation to preview generated resources. Ensure you replace placeholders like ``, ``, and `` with your specific values. ```bash » eksdemo install kube-prometheus-stack-amp -c --ingress-host kprom. --grafana-pass --dry-run ``` ```yaml Creating 3 dependencies for kube-prometheus-stack-amp Creating dependency: prometheus-amp-irsa Eksctl Resource Manager Dry Run: eksctl create iamserviceaccount -f - --approve --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: blue region: us-west-2 iam: withOIDC: true serviceAccounts: - metadata: name: prometheus-prometheus namespace: monitoring roleName: eksdemo.blue.monitoring.prometheus-prometheus roleOnly: true attachPolicy: Version: "2012-10-17" Statement: - Effect: Allow Action: - aps:RemoteWrite - aps:GetSeries - aps:GetLabels - aps:GetMetricMetadata Resource: "*" Creating dependency: grafana-amp-irsa Eksctl Resource Manager Dry Run: eksctl create iamserviceaccount -f - --approve --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: blue region: us-west-2 iam: withOIDC: true serviceAccounts: - metadata: name: prometheus-grafana namespace: monitoring roleName: eksdemo.blue.monitoring.prometheus-grafana roleOnly: true attachPolicyARNs: - arn:aws:iam::aws:policy/AmazonPrometheusQueryAccess Creating dependency: amazon-managed-prometheus-workspace AMP Resource Manager Dry Run: Amazon Managed Service for Prometheus API Call "CreateWorkspace" with request parameters: alias: "blue-kube-prometheus" Helm Installer Dry Run: +---------------------+----------------------------------------------------+ | Application Version | v0.65.1 | | Chart Version | 46.6.0 | | Chart Repository | https://prometheus-community.github.io/helm-charts | | Chart Name | kube-prometheus-stack | | Release Name | kube-prometheus-stack-amp | | Namespace | monitoring | + ``` -------------------------------- ### Install AWS Load Balancer Controller Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-awslb.md Use this command to install the AWS Load Balancer controller. Replace `` with your EKS cluster's name. This command also handles the creation of necessary IAM roles for service accounts. ```bash eksdemo install aws-lb-controller -c ``` -------------------------------- ### Install Vendor Kubecost with ALB Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-kubecost.md Installs the vendor version of Kubecost with an Application Load Balancer (ALB). Requires AWS Load Balancer Controller, ExternalDNS, and an ACM Certificate. Use `-I` to specify the ingress host. ```bash eksdemo install kubecost-vendor -c -I kubecost. ``` -------------------------------- ### Install Kubecost EKS Optimized with ALB Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-kubecost.md Installs the EKS optimized Kubecost with an Application Load Balancer (ALB). Requires AWS Load Balancer Controller, ExternalDNS, and an ACM Certificate. Use `-I` to specify the ingress host. ```bash eksdemo install kubecost-eks -c --node-exporter -I kubecost. ``` -------------------------------- ### Install Kubecost EKS Optimized with AMP and NLB Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-kubecost.md Installs the EKS optimized Kubecost using Amazon Managed Prometheus without a domain, exposed via an NLB. Use the `--nlb` flag for Network Load Balancer exposure. ```bash eksdemo install kubecost-eks-amp -c --node-exporter --nlb ``` -------------------------------- ### Deploy Example Applications Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-vpc-lattice-controller.md Deploy the Kubernetes Deployment and Service for the parking and review applications. Ensure these are running before proceeding. ```bash kubectl apply -f https://raw.githubusercontent.com/aws/aws-application-networking-k8s/main/files/examples/parking.yaml ``` ```bash kubectl apply -f https://raw.githubusercontent.com/aws/aws-application-networking-k8s/main/files/examples/review.yaml ``` -------------------------------- ### Get Application Status Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-game-2048.md Retrieves the status of all applications installed via eksdemo. Applications are managed as Helm charts. ```bash » eksdemo get application -c blue +-------------------+--------------+---------+----------+--------+ | Name | Namespace | Version | Status | Chart | +-------------------+--------------+---------+----------+--------+ | aws-lb-controller | awslb | v2.4.4 | deployed | 1.4.5 | | example-game-2048 | game-2048 | latest | deployed | n/a | | external-dns | external-dns | v0.12.2 | deployed | 1.11.0 | +-------------------+--------------+---------+----------+--------+ ``` -------------------------------- ### Preview Changes with Dry Run Source: https://context7.com/awslabs/eksdemo/llms.txt Simulate installation steps to preview dependencies and configurations without applying changes. ```bash # Preview any install command eksdemo install karpenter -c blue --dry-run # Shows: # 1. Dependency creation steps # 2. IAM role configurations # 3. Helm chart details and values ``` -------------------------------- ### Validate eksdemo Installation Source: https://github.com/awslabs/eksdemo/blob/main/README.md Verifies the installed version and connectivity to EKS clusters. ```bash » eksdemo version eksdemo: version.Info{Version:"0.17.0", Date:"2024-11-11T03:14:58Z", Commit:"13e0e01"} ``` ```bash » eksdemo get cluster +------------+--------+---------+---------+----------+----------+ | Age | Status | Cluster | Version | Platform | Endpoint | +------------+--------+---------+---------+----------+----------+ | 3 weeks | ACTIVE | green | 1.27 | eks.23 | Public | | 20 minutes | ACTIVE | *blue | 1.31 | eks.2 | Public | +------------+--------+---------+---------+----------+----------+ * Indicates current context in local kubeconfig ``` -------------------------------- ### View VPC Lattice Controller Help Source: https://github.com/awslabs/eksdemo/blob/main/docs/install-vpc-lattice-controller.md Displays the available flags and configuration options for the vpc-lattice-controller installation command. ```bash » eksdemo install vpc-lattice-controller -h Install vpc-lattice-controller Usage: eksdemo install vpc-lattice-controller [flags] Aliases: vpc-lattice-controller, gateway-api-controller, vpc-lattice, vpclattice, lattice Flags: --chart-version string chart version (default "v1.0.6") -c, --cluster string cluster to install application (required) --default-service-network string name for service network to create and associate with the cluster VPC --dry-run don't install, just print out all installation steps -h, --help help for vpc-lattice-controller -n, --namespace string namespace to install (default "vpc-lattice") --private-vpc enables the controller to run in a private VPC --replicas int number of replicas for the controller deployment (default 1) --service-account string service account name (default "gateway-api-controller") --set strings set chart values (can specify multiple or separate values with commas: key1=val1,key2=val2) --use-previous use previous working chart/app versions ("v1.0.4"/"v1.0.4") -v, --version string application version (default "v1.0.6") ```