Создание приложений с использованием CLI

kubectl — это основной интерфейс командной строки (CLI) для взаимодействия с кластерами Kubernetes. Он функционирует как клиент для Kubernetes API Server — RESTful HTTP API, который служит программным интерфейсом управляющей плоскости. Все операции Kubernetes доступны через API endpoints, и kubectl фактически преобразует команды CLI в соответствующие API-запросы для управления ресурсами кластера и рабочими нагрузками приложений (Deployments, StatefulSets и др.).

Инструмент CLI облегчает развертывание приложений, интеллектуально интерпретируя входные артефакты (образы, Chart и т. п.) и создавая соответствующие объекты Kubernetes API. Создаваемые ресурсы зависят от типа входных данных:

  • Image: напрямую создаёт Deployment.
  • Chart: создаёт все объекты, определённые в Helm Chart.

Содержание

Предварительные требования

Плагин Alauda Container Platform Web Terminal установлен, и переключатель web-cli включён.

Процедура

  1. В Container Platform нажмите на иконку терминала в правом нижнем углу.

  2. Дождитесь инициализации сессии (1–3 секунды).

  3. Выполните команды kubectl в интерактивной оболочке:

    kubectl get pods -n ${CURRENT_NAMESPACE}
  4. Просматривайте вывод команд в реальном времени

Пример

YAML

# webapp.yaml
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
  name: webapp
spec:
  componentKinds:
    - group: apps
      kind: Deployment
    - group: ""
      kind: Service
  descriptor: {}

# webapp-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp
  labels:
    app: webapp
    env: prod
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webapp
  template:
    metadata:
      labels:
        app: webapp
        tier: frontend
    spec:
      containers:
      - name: webapp
        image: nginx:1.25-alpine
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "100m"
            memory: "128Mi"
          limits:
            cpu: "250m"
            memory: "256Mi"
---
# webapp-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: webapp-service
spec:
  selector:
    app: webapp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: ClusterIP

Команды kubectl

kubectl apply -f webapp.yaml -n {CURRENT_NAMESPACE}
kubectl apply -f webapp-deployment.yaml -n {CURRENT_NAMESPACE}
kubectl apply -f webapp-service.yaml -n {CURRENT_NAMESPACE}

Справка