Skip to main content

EKS

Описание

EKS - Extensible Kubernetes Service - сервис деплоя приложений на кластера Kubernetes. NWS предоставляет готовые кластера, куда деплоятся пользовательские приложения. При этом, доступ к ресурсам Kubernetes предоставляется посредством CLI, API и Terraform, а привычный kubectl не используется ввиду ограничений по архитектуре и безопасности.

Сравнение с AWS

NWS EKS предлагает реализацию Kubernetes, которая сравнима с AWS EKS и AWS Fargate. Ниже приведена сравнительная таблица NWS vs AWS.

ФичаNWS EKSAWS EKSAWS Fargate
КластерKubernetes + платформаKubernetesKubernetes + платформа
РазвертываниеНетДаНет
РесурсыCPU, Memory, Storage, ReplicaCPU, Memory, Storage, ReplicaCPU, Memory, Storage, Replica
ТулзыCLI, TerraformAPI, UI, CLI, TerraformAPI, UI, CLI, Terraform
Oauth2ДаНетДа
RBACДаДаДа
PVC replicationДаДаДа
Pod replicationДаДаДа
УправлениеCLIkubectl, helmCLI
Стоимость обслуживанияНизкаяВысокаяНизкая
Стоимость развертыванияСредняяНизкаяВысокая

Поддерживаемые ресурсы 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