github.com/docker/compose-on-kubernetes@v0.5.0/docs/install-on-eks.md (about) 1 # Install on Amazon EKS 2 3 ## Pre-requisites 4 - To install Compose on Kubernetes on Amazon EKS, you must create an EKS cluster. 5 - To install etcd using these instructions, you must have [Helm](https://helm.sh) in your client environment. 6 - [Download the Compose on Kubernetes installer](https://github.com/docker/compose-on-kubernetes/releases). 7 8 ## Create compose namespace 9 10 Just run `kubectl create namespace compose`. 11 12 ## Deploy etcd 13 14 Compose on Kubernetes requires an etcd instance (in addition to the kube-system etcd instance). Please follow [How to deploy etcd](./deploy-etcd.md). 15 16 ## Deploy Compose on Kubernetes 17 18 Run `installer-[darwin|linux|windows.exe] -namespace=compose -etcd-servers=http://compose-etcd-client:2379`. 19 20 **Note: To setup Mutual TLS with the etcd instance, you can use `etcd-ca-file`, `etcd-key-file` and `etcd-cert-file` flags.** 21 22 ## Deploy a stack in the cluster 23 24 By now you should be able to [Check that Compose on Kubernetes is installed](../README.md#check-that-compose-on-kubernetes-is-installed) and [Deploy a stack](../README.md#deploy-a-stack). 25 26 Then when listing resources with `kubectl get svc` you should see something like: 27 ``` 28 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE 29 db ClusterIP None <none> 55555/TCP 4m51s 30 kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 27m 31 web ClusterIP None <none> 55555/TCP 4m51s 32 web-published LoadBalancer 10.100.130.153 ad0884309cd8a11e98ccc0246f5f7bb0-1039555521.eu-central-1.elb.amazonaws.com 33000:30123/TCP 4m51s 33 words ClusterIP None <none> 55555/TCP 4m51s 34 ``` 35 36 To access our example web application, open a browser and go to `<LoadBalancer external-ip>:33000`. 37 38 ## Optional: use kubernetes service proxy 39 ** This step is required to run e2e tests against EKS ** 40 41 Kubernetes API allows accessing a service from client over an authenticated channel by proxying communication. End-2-end 42 tests do rely 43 44 ``` 45 +----------+ +---------------+ +-----------------------+ +---------------+ +----------+ 46 | curl | -> | kubectl proxy | ====[tunnel]====> | kubernetes API server | --> | kube proxy | -> | service | 47 | (client) | | | (authenticated) | (control plane) | (*) | (worker node) | | (tcp:80) | 48 +----------+ +---------------+ +-----------------------+ +---------------+ +----------+ 49 ``` 50 With default setup, EKS cluster is created with network security group to block communication (*) between Kubernetes control 51 plane and worker nodes on privileged ports (<1024)). For e2e tests to run, or rely on API server proxy for other use 52 cases, you'll need to lower EKS network security (details [here](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html)). 53