EKS
Описание
EKS - Extensible Kubernetes Service - сервис деплоя приложений на кластера Kubernetes. NWS предоставляет готовые кластера, куда деплоятся пользовательские приложения. При этом, доступ к ресурсам Kubernetes предоставляется посредством CLI, API и Terraform, а привычный kubectl не используется ввиду ограничений по архитектуре и безопасности.
Сравнение с AWS
NWS EKS предлагает реализацию Kubernetes, которая сравнима с AWS EKS и AWS Fargate. Ниже приведена сравнительная таблица NWS vs AWS.
| Фича | NWS EKS | AWS EKS | AWS Fargate |
|---|---|---|---|
| Кластер | Kubernetes + платформа | Kubernetes | Kubernetes + платформа |
| Развертывание | Нет | Да | Нет |
| Ресурсы | CPU, Memory, Storage, Replica | CPU, Memory, Storage, Replica | CPU, Memory, Storage, Replica |
| Тулзы | CLI, Terraform | API, UI, CLI, Terraform | API, UI, CLI, Terraform |
| Oauth2 | Да | Нет | Да |
| RBAC | Да | Да | Да |
| PVC replication | Да | Да | Да |
| Pod replication | Да | Да | Да |
| Управление | CLI | kubectl, helm | CLI |
| Стоимость обслуживания | Низкая | Высокая | Низкая |
| Стоимость развертывания | Средняя | Низкая | Высокая |
Поддерживаемые ресурсы Kubernetes
NWS CLI и Terraform реализует Kubernetes API. Так как NWS EKS предлагается как SaaS, далеко не все ресурсы стандартного Kubernetes необходимы. Ниже список поддерживаемых ресурсов:
- namespace
- pvc
- config map
- secret
- service
- deployment
Hello world
Ниже пример реального деплоя, который развертывает простейшее приложение при помощи CLI:
---
apiVersion: v1
kind: Service
metadata:
name: dummy
namespace: apps
labels:
run: dummy
spec:
type: LoadBalancer
loadBalancerIP: 192.168.1.94
ports:
- name: http
port: 8080
targetPort: 8080
protocol: TCP
selector:
app: dummy
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: dummy
namespace: apps
labels:
app: dummy
spec:
replicas: 1
selector:
matchLabels:
app: dummy
template:
metadata:
labels:
app: dummy
spec:
containers:
- name: dummy
image: tampler/dummy-service:v0.0.1
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8080
hostPort: 8080
resources:
requests:
memory: 16Mi
cpu: "32m"
limits:
memory: 64Mi
cpu: "64m"
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 15
periodSeconds: 60
imagePullSecrets:
- name: docker-creds
restartPolicy: Always
Деплой
NWS EKS поддерживает CLI и Terraform. Деплоя при помощи CLI приведен ниже:
# Deploy service first
nws eks svc create -config ./service.yml
# Deploy service first
nws eks deploy create -config ./deploy.yml