logo
Alauda Container Platform
English
Русский
English
Русский
logo
Alauda Container Platform
Навигация

Обзор

Архитектура
Примечания к выпуску

Установка

Обзор

Подготовка к установке

Предварительные требования
Загрузка
Предварительная обработка узлов
Установка
Восстановление после катастрофы для глобального кластера

Обновление

Обзор
Подготовка к обновлению
Обновление глобального кластера
Обновление рабочих кластеров

Пользовательский интерфейс

Веб-консоль

Обзор
Доступ к веб-консоли
Настройка веб-консоли
Настройка левой навигации

CLI Инструменты

ACP CLI (ac)

Начало работы с ACP CLI
Настройка ACP CLI
Использование команд ac и kubectl
Управление профилями CLI
Расширение ACP CLI с помощью плагинов
AC CLI Developer Command Reference
AC CLI Справочник команд администратора
violet CLI

Настройка

Конфигурация Feature Gate

Кластеры

Обзор
Неизменяемая инфраструктура

Управление узлами

Обзор
Добавление узлов в локальные кластеры
Управление узлами
Мониторинг узлов

Управляемые кластеры

обзор

Импорт кластеров

Обзор
Импорт стандартного кластера Kubernetes
Импорт кластера OpenShift
Импорт кластера Amazon EKS
Импорт кластера GKE
Импорт кластера Huawei Cloud CCE (публичное облако)
Импорт кластера Azure AKS
Импорт кластера Alibaba Cloud ACK
Импорт кластера Tencent Cloud TKE
Регистрация кластера

Инициализация кластера в публичном облаке

Инициализация сети

Конфигурация инициализации сети кластера AWS EKS
Дополнительная информация по AWS EKS
Инициализация конфигурации сети кластера Huawei Cloud CCE
Конфигурация инициализации сети кластера Azure AKS
Конфигурация инициализации сети кластера Google GKE

Инициализация хранилища

Обзор
Конфигурация инициализации хранилища кластера AWS EKS
Инициализация конфигурации хранилища кластера Huawei Cloud CCE
Конфигурация инициализации хранилища кластера Azure AKS
Конфигурация инициализации хранилища кластера Google GKE

Как сделать

Настройка сети для импортируемых кластеров
Получение информации о импортируемом кластере
Доверие небезопасному реестру образов
Сбор сетевых данных с сетевых карт с пользовательскими именами
Создание локального кластера
Хостинг контрольной плоскости
Планирование узлов кластера
Шифрование etcd

Как сделать

Добавление внешнего адреса для встроенного реестра
Выбор контейнерного рантайма
Обновление учетных данных публичного репозитория

Резервное копирование и восстановление

Обзор
Установка
Репозиторий резервного копирования

Управление резервным копированием

Резервное копирование ETCD
Создание расписания резервного копирования приложения
Хуки

Управление восстановлением

Выполнение задачи восстановления приложения
Замена реестра образов

Сетевые взаимодействия

Введение

Архитектура

Понимание Kube-OVN
Понимание ALB
Понимание MetalLB

Основные понятия

Совместимость ALB с аннотациями Ingress-NGINX
Сравнение Service, Ingress, Gateway API и ALB Rule
GatewayAPI

Руководства

Создание сервисов
Создание Ingress
Создание доменного имени
Создание сертификатов
Создание пула внешних IP-адресов
Создание BGP-пиров
Настройка подсетей
Настройка сетевых политик
Создание Admin Network Policies
Настройка сети Kube-OVN для поддержки нескольких сетевых интерфейсов Pod (Alpha)
Настройка сетевых политик кластера
Настройка Egress Gateway
Наблюдаемость сети
Настройка правил ALB
Межкластерное соединение (Alpha)
Endpoint Health Checker
NodeLocal DNSCache

Как сделать

Подготовка физической сети Kube-OVN Underlay
Soft Data Center LB Solution (Alpha)
Автоматическое взаимное подключение подсетей Underlay и Overlay
Установка Ingress-Nginx через Cluster Plugin
Установка Ingress-Nginx через Ingress Nginx Operator
Задачи для Ingress-Nginx

ALB

Auth
Развертывание высокодоступного VIP для ALB
Модификация заголовков
HTTP Redirect
L4/L7 Таймаут
ModSecurity
TCP/HTTP Keepalive
Использование OAuth Proxy с ALB
Настройка GatewayApi Gateway через ALB
Привязка NIC в ALB
Принятие решений по выбору производительности ALB
Развертывание ALB
Проброс IPv6-трафика на IPv4-адреса внутри кластера через ALB
OTel
ALB Monitoring
CORS
Политика сессионной аффинности балансировки нагрузки в ALB
Перезапись URL
Calico Network поддерживает шифрование WireGuard
Kube-OVN Overlay Network поддерживает шифрование IPsec
Руководство пользователя DeepFlow

Устранение неполадок

Как решить проблемы межузловой коммуникации в ARM-средах?
Определение причины ошибки

Хранение

Введение

Основные понятия

Основные понятия
Persistent Volume
Режимы доступа и режимы томов

Руководства

Создание Storage Class типа CephFS File Storage
Создание класса блочного хранилища CephRBD
Создание локального Storage Class TopoLVM
Создание общего класса хранения NFS
Развертывание компонента Volume Snapshot
Создание PV
Создание PVC
Использование снимков томов

Как сделать

Generic ephemeral volumes
Использование emptyDir
Настройка постоянного хранилища с использованием NFS
Руководство по аннотированию возможностей стороннего хранилища

Устранение неполадок

Восстановление после ошибки расширения PVC
Конфигурация машины

Масштабируемость и производительность

Оценка ресурсов для глобального кластера
Оценка ресурсов для рабочей нагрузки кластера
Повышение стабильности Kubernetes для крупных кластеров
Конфигурация диска

Хранение

Распределённое хранилище Ceph

Введение

Установка

Создание кластера стандартного типа
Создание Stretch Type кластера
Архитектура

Основные понятия

Основные концепции

Руководства

Доступ к сервисам хранения
Управление Storage Pools
Развертывание компонентов на конкретных узлах
Добавление устройств/классов устройств
Мониторинг и оповещения

Как сделать

Настройка выделенного кластера для распределённого хранилища
Очистка распределённого хранилища

Восстановление после сбоев

Восстановление после сбоев файлового хранилища
Восстановление после сбоев блочного хранилища
Восстановление после сбоев в объектном хранилище
Обновление параметров оптимизации
Создание пользователя ceph object store

MinIO Object Storage

Введение
Установка
Архитектура

Основные понятия

Основные концепции

Руководства

Добавление пула хранения
Мониторинг и оповещения

Как сделать

Восстановление данных после аварий

Локальное хранилище TopoLVM

Введение
Установка

Руководства

Управление устройствами
Мониторинг и оповещения

Как сделать

Резервное копирование и восстановление PVC файловой системы TopoLVM с помощью Velero

Безопасность

Alauda Container Security

Безопасность и соответствие

Соответствие требованиям

Введение
Установка Alauda Container Platform Compliance с Kyverno

Как сделать

Конфигурация доступа к приватному реестру
Политика проверки подписи образов
Политика проверки подписей образов с использованием Secrets
Политика проверки реестра образов
Политика предотвращения выхода из контейнера
Политика Принудительного Применения Security Context
Политика сетевой безопасности
Политика безопасности томов

API Refiner

Введение
Установка Alauda Container Platform API Refiner
О сервисе соответствия Alauda Container Platform

Пользователи и роли

Пользователь

Введение

Руководства

Управление ролями пользователей
Создание пользователя
Управление пользователями

Группа

Введение

Руководства

Управление ролями групп пользователей
Создание локальной группы пользователей
Управление членством в локальной группе пользователей

Роль

Введение

Руководства

Создание роли
Управление пользовательскими ролями

IDP

Введение

Руководства

Управление LDAP
Управление OIDC

Устранение неполадок

Удаление пользователя

Политика пользователя

Введение

Мультиарендность (Project)

Введение

Руководства

Создание проекта
Управление квотами проекта
Управление проектом
Управление кластером проекта
Управление участниками проекта

Аудит

Введение

Телеметрия

Установка

Сертификаты

Автоматическая ротация сертификатов Kubernetes
cert-manager
Сертификаты OLM
Мониторинг сертификатов

Виртуализация

Виртуализация

Обзор

Введение
Установка

Образы

Введение

Руководства

Добавление образов виртуальных машин
Обновление/Удаление образов виртуальных машин
Обновление/удаление учетных данных образа

Как сделать

Создание образов Windows на основе ISO с использованием KubeVirt
Создание образов Linux на основе ISO с использованием KubeVirt
Экспорт образов виртуальных машин
Разрешения

Виртуальная машина

Введение

Руководства

Создание виртуальных машин/групп виртуальных машин
Пакетные операции с виртуальными машинами
Вход в виртуальную машину с использованием VNC
Управление ключевыми парами
Управление виртуальными машинами
Мониторинг и оповещения
Быстрый поиск виртуальных машин

Как сделать

Настройка проброса USB-хоста
Горячая миграция виртуальной машины
Восстановление виртуальной машины
Клонирование виртуальных машин в KubeVirt
Подготовка среды для физического GPU Passthrough
Настройка высокой доступности для виртуальных машин
Создание шаблона ВМ на основе существующей виртуальной машины

Устранение неполадок

Миграция Pod виртуальных машин и восстановление после аварийного завершения работы узлов виртуальных машин
Сообщения об ошибках горячей миграции и решения

Сеть

Введение

Руководства

Настройка сети

Как сделать

Контроль сетевых запросов виртуальной машины через Network Policy
Настройка SR-IOV
Настройка виртуальных машин для использования режима сетевого биндинга с поддержкой IPv6

Хранение данных

Введение

Руководства

Управление виртуальными дисками

Резервное копирование и восстановление

Введение

Руководства

Использование снимков

Разработчик

Обзор

Быстрый старт

Creating a simple application via image

Создание приложений

Построение архитектуры приложения

Основные понятия

Типы приложений
Custom Applications
Типы рабочих нагрузок
Понимание параметров
Понимание переменных окружения
Понимание команд запуска
Описание единиц ресурсов

Пространства имён

Создание пространств имён
Импорт пространств имён
Resource Quota
Limit Range
Pod Security Admission
Назначение UID/GID
Коэффициент Overcommit
Управление участниками пространства имён
Обновление Namespaces
Удаление/Исключение Namespaces

Создание приложений

Создание приложений из образа
Создание приложений из Chart
Создание приложений из YAML
Создание приложений из кода
Creating applications from Operator Backed
Создание приложений с использованием CLI

Эксплуатация и сопровождение приложений

Развертывание приложений

Установка Alauda Container Platform Argo Rollouts
Application Blue Green Deployment
Application Canary Deployment
Описание статуса

KEDA (Kubernetes Event-driven Autoscaling)

KEDA Overview
Установка KEDA

Как сделать

Интеграция ACP Monitoring с плагином Prometheus
Приостановка автоскейлинга в KEDA
Настройка HPA
Запуск и остановка приложений
Настройка VerticalPodAutoscaler (VPA)
Настройка CronHPA
Обновление приложений
Экспорт приложений
Обновление и удаление Chart-приложений
Управление версиями приложений
Удаление приложений
Обработка ошибок нехватки ресурсов
Проверки состояния

Рабочие нагрузки

Deployments
DaemonSets
StatefulSets
CronJobs
Jobs
Pods
Контейнеры
Работа с Helm charts

Конфигурации

Настройка ConfigMap
Настройка Secrets

Наблюдаемость приложения

Мониторинговые панели
Логи
События

Как сделать

Настройка правил срабатывания планировщика задач

Образы

Обзор образов

Как сделать

Создание образов
Управление образами

Реестр

Введение

Установка

Установка через YAML
Установка через Web UI

Руководство пользователя

Распространённые операции с командами CLI
Using Alauda Container Platform Registry in Kubernetes Clusters

Source to Image

Обзор

Введение
Архитектура
Примечания к выпуску
Политика жизненного цикла

Установка

Installing Alauda Container Platform Builds

Обновление

Обновление сборок Alauda Container Platform

Руководства

Управление приложениями, созданными из кода

Как сделать

Создание приложения из кода

Стратегия изоляции узлов

Введение
Архитектура

Основные понятия

Основные понятия

Руководства

Создание стратегии изоляции узлов
Разрешения
Часто задаваемые вопросы

GitOps

Введение

Установка

Установка Alauda Build of Argo CD
Установка Alauda Container Platform GitOps

Обновление

Обновление Alauda Container Platform GitOps
Архитектура

Основные понятия

GitOps

Концепция Argo CD

Введение
Application
ApplicationSet
Tool
Helm
Kustomize
Directory
Sync
Health

Концепции GitOps в Alauda Container Platform

Введение
Alauda Container Platform GitOps Sync and Health Status

Руководства

Создание GitOps приложения

Creating GitOps Application
Creating GitOps ApplicationSet

Наблюдаемость GitOps

Argo CD Component Monitoring
GitOps Applications Ops

Как сделать

Интеграция репозиториев кода через панель управления Argo CD
Создание приложения Argo CD через панель управления Argo CD
Создание Argo CD Application через веб-консоль
Как получить информацию для доступа к Argo CD
Устранение неполадок

Расширение

Обзор
Оператор
Плагин кластера
Загрузка пакетов

Наблюдаемость

Обзор

Мониторинг

Введение
Установка

Архитектура

Архитектура модуля мониторинга
Руководство по выбору компонента мониторинга
Планирование ёмкости компонента мониторинга
Основные понятия

Руководства

Управление метриками
Управление оповещениями
Управление уведомлениями
Управление мониторинговыми панелями
Управление Probe

Как сделать

Резервное копирование и восстановление данных мониторинга Prometheus
Резервное копирование и восстановление данных мониторинга VictoriaMetrics
Сбор сетевых данных с сетевых интерфейсов с пользовательскими именами

Распределённое трассирование

Введение
Установка
Архитектура
Основные понятия

Руководства

Query Tracing
Query Trace Logs

Как сделать

Безвредная интеграция трассировки в Java-приложения
Бизнес-логи, связанные с TraceID

Устранение неполадок

Невозможно выполнить запрос требуемого трассирования
Неполные данные трассировки

Логи

Введение
Установка

Архитектура

Архитектура модуля логирования
Руководство по выбору компонента логирования
Планирование ёмкости компонента логирования
Основные понятия

Руководства

Логи

Как сделать

Как архивировать логи в стороннее хранилище
Как взаимодействовать с внешними кластерами ES Storage

События

Введение
События

Инспекция

Введение
Архитектура

Руководства

Inspection
Component Health Status

Аппаратные ускорители

О Alauda Build of Hami
О плагине устройства NVIDIA GPU от Alauda Build

Alauda Service Mesh

Service Mesh 1.x
Service Mesh 2.x

Alauda AI

О Alauda AI

Alauda DevOps

О платформе Alauda DevOps

Управление затратами Alauda

О системе управления затратами Alauda

Alauda Application Services

Обзор

Введение
Архитектура
Установка
Обновление

Alauda Database Service для MySQL

О сервисе Alauda Database Service для MySQL-MGR
О сервисе Alauda Database Service для MySQL-PXC

Сервис кэширования Alauda для Redis OSS

О сервисе Alauda Cache Service for Redis OSS

Alauda Streaming Service for Kafka

О сервисе Alauda Streaming Service for Kafka

Сервис потоковой передачи Alauda для RabbitMQ

О сервисе Alauda Streaming Service for RabbitMQ

Поддержка PostgreSQL в Alauda

О поддержке PostgreSQL в Alauda

Управление операциями

Введение

Управление шаблонами параметров

Введение

Руководства

Управление шаблонами параметров

Управление резервным копированием

Введение

Руководства

Внешнее хранилище S3
Управление резервным копированием

Управление инспекциями

Введение

Руководства

Создание задачи инспекции
Задача Exec Inspection
Обновление и удаление задач инспекции

Как сделать

Как настроить расписание инспекций?

Рекомендации по оптимизации инспекций

MySQL

Оптимизация IO нагрузки MySQL
Оптимизация использования памяти MySQL
Оптимизация использования дискового пространства MySQL
Оптимизация количества активных потоков MySQL
Оптимизация блокировок строк MySQL

Redis

Redis BigKey
Высокая загрузка CPU в Redis
Высокое использование памяти в Redis

Kafka

Высокая загрузка CPU в Kafka
Оптимизация Rebalance в Kafka
Оптимизация использования памяти Kafka
Оптимизация пространства хранения Kafka

RabbitMQ

Обработка исключений базы данных RabbitMQ Mnesia

Управление оповещениями

Введение

Руководства

Взаимосвязь с возможностями платформы

Управление обновлениями

Введение

Руководства

Обновление экземпляра

Справочник API

Обзор

Введение
Руководство по использованию Kubernetes API

Advanced APIs

Alert APIs

AlertHistories [v1]
AlertHistoryMessages [v1]
AlertStatus [v2]
SilenceStatus [v2]

Event APIs

Search

Log APIs

Aggregation
Archive
Context
Search

Monitoring APIs

Indicators [monitoring.alauda.io/v1beta1]
Metrics [monitoring.alauda.io/v1beta1]
Variables [monitoring.alauda.io/v1beta1]

Kubernetes APIs

Alert APIs

AlertTemplate [alerttemplates.aiops.alauda.io/v1beta1]
PrometheusRule [prometheusrules.monitoring.coreos.com/v1]

Inspection APIs

Inspection [inspections.ait.alauda.io/v1alpha1]

Notification APIs

Notification [notifications.ait.alauda.io/v1beta1]
NotificationGroup [notificationgroups.ait.alauda.io/v1beta1]
NotificationTemplate [notificationtemplates.ait.alauda.io/v1beta1]
Предыдущая страницаРасширение ACP CLI с помощью плагинов
Следующая страницаAC CLI Справочник команд администратора

Просмотреть полную документацию в формате PDF

#AC CLI Developer Command Reference

Этот справочник содержит описания и примеры команд разработчика AC CLI. Для команд администратора смотрите справочник команд администратора AC CLI.

Выполните ac help, чтобы вывести список всех команд, или ac <command> --help, чтобы получить дополнительные сведения по конкретной команде.

#Содержание

#ac annotate

Обновить аннотации ресурса

#Пример использования

# Обновить pod 'foo' с аннотацией 'description' и значением 'my frontend'
# Если одна и та же аннотация установлена несколько раз, будет применено только последнее значение
ac annotate pods foo description='my frontend'

# Обновить pod, идентифицированный типом и именем в "pod.json"
ac annotate -f pod.json description='my frontend'

# Обновить pod 'foo' с аннотацией 'description' и значением 'my frontend running nginx', перезаписывая существующее значение
ac annotate --overwrite pods foo description='my frontend running nginx'

# Обновить все pod в namespace
ac annotate pods --all description='my frontend running nginx'

# Обновить pod 'foo' только если ресурс не изменился с версии 1
ac annotate pods foo description='my frontend running nginx' --resource-version=1

# Удалить аннотацию с именем 'description' у pod 'foo', если она существует
# Флаг --overwrite не требуется
ac annotate pods foo description-

#ac api-resources

Вывести поддерживаемые API ресурсы на сервере

#Пример использования

# Вывести поддерживаемые API ресурсы
ac api-resources

# Вывести поддерживаемые API ресурсы с дополнительной информацией
ac api-resources -o wide

# Вывести поддерживаемые API ресурсы, отсортированные по столбцу
ac api-resources --sort-by=name

# Вывести поддерживаемые ресурсы с namespace
ac api-resources --namespaced=true

# Вывести поддерживаемые ресурсы без namespace
ac api-resources --namespaced=false

# Вывести поддерживаемые API ресурсы для конкретной APIGroup
ac api-resources --api-group=rbac.authorization.k8s.io

#ac api-versions

Вывести поддерживаемые версии API на сервере в формате "group/version"

#Пример использования

# Вывести поддерживаемые версии API
ac api-versions

#ac apply

Применить конфигурацию к ресурсу по имени файла или stdin

#Пример использования

# Применить конфигурацию из pod.json к pod
ac apply -f ./pod.json

# Применить ресурсы из каталога с kustomization.yaml, например dir/kustomization.yaml
ac apply -k dir/

# Применить JSON, переданный через stdin, к pod
cat pod.json | ac apply -f -

# Применить конфигурацию из всех файлов, заканчивающихся на '.json'
ac apply -f '*.json'

# Примечание: --prune находится в Alpha
# Применить конфигурацию из manifest.yaml, соответствующую метке app=nginx, и удалить все другие ресурсы с этой меткой, отсутствующие в файле
ac apply --prune -f manifest.yaml -l app=nginx

# Применить конфигурацию из manifest.yaml и удалить все другие config maps, отсутствующие в файле
ac apply --prune -f manifest.yaml --all --prune-allowlist=core/v1/ConfigMap

#ac apply edit-last-applied

Редактировать последние аннотации last-applied-configuration ресурса/объекта

#Пример использования

# Редактировать last-applied-configuration по типу/имени в YAML
ac apply edit-last-applied deployment/nginx

# Редактировать last-applied-configuration по файлу в JSON
ac apply edit-last-applied -f deploy.yaml -o json

#ac apply set-last-applied

Установить аннотацию last-applied-configuration на живом объекте в соответствии с содержимым файла

#Пример использования

# Установить last-applied-configuration ресурса в соответствии с содержимым файла
ac apply set-last-applied -f deploy.yaml

# Выполнить set-last-applied для каждого файла конфигурации в каталоге
ac apply set-last-applied -f path/

# Установить last-applied-configuration ресурса в соответствии с содержимым файла; создать аннотацию, если она отсутствует
ac apply set-last-applied -f deploy.yaml --create-annotation=true

#ac apply view-last-applied

Просмотреть последние аннотации last-applied-configuration ресурса/объекта

#Пример использования

# Просмотреть last-applied-configuration по типу/имени в YAML
ac apply view-last-applied deployment/nginx

# Просмотреть last-applied-configuration по файлу в JSON
ac apply view-last-applied -f deploy.yaml -o json

#ac attach

Подключиться к запущенному контейнеру

#Пример использования

# Получить вывод из запущенного pod mypod; используется аннотация 'ac.kubernetes.io/default-container'
# для выбора контейнера, к которому подключаются, или выбирается первый контейнер в pod
ac attach mypod

# Получить вывод из контейнера ruby-container pod mypod
ac attach mypod -c ruby-container

# Переключиться в режим raw terminal; отправляет stdin в 'bash' в ruby-container pod mypod
# и возвращает stdout/stderr от 'bash' клиенту
ac attach mypod -c ruby-container -i -t

# Получить вывод из первого pod replica set с именем nginx
ac attach rs/nginx

#ac auth

Проверить авторизацию

#ac auth can-i

Проверить, разрешено ли действие

#Пример использования

# Проверить, могу ли создавать pods в любом namespace
ac auth can-i create pods --all-namespaces

# Проверить, могу ли просматривать deployments в текущем namespace
ac auth can-i list deployments.apps

# Проверить, может ли сервисный аккаунт "foo" из namespace "dev" просматривать pods в namespace "prod"
# Для использования глобальной опции "--as" необходимо разрешение на имитацию
ac auth can-i list pods --as=system:serviceaccount:dev:foo -n prod

# Проверить, могу ли я делать всё в текущем namespace ("*" означает все)
ac auth can-i '*' '*'

# Проверить, могу ли получить job с именем "bar" в namespace "foo"
ac auth can-i list jobs.batch/bar -n foo

# Проверить, могу ли читать логи pod
ac auth can-i get pods --subresource=log

# Проверить, могу ли получить доступ к URL /logs/
ac auth can-i get /logs/

# Проверить, могу ли одобрять certificates.k8s.io
ac auth can-i approve certificates.k8s.io

# Вывести все разрешённые действия в namespace "foo"
ac auth can-i --list --namespace=foo

#ac auth reconcile

Согласовать правила для объектов RBAC role, role binding, cluster role и cluster role binding

#Пример использования

# Согласовать RBAC ресурсы из файла
ac auth reconcile -f my-rbac-rules.yaml

#ac auth whoami

Экспериментально: проверить атрибуты субъекта

#Пример использования

# Получить атрибуты субъекта
ac auth whoami

# Получить атрибуты субъекта в формате JSON
ac auth whoami -o json

#ac autoscale

Автоматически масштабировать deployment, replica set, stateful set или replication controller

#Пример использования

# Автоматически масштабировать deployment "foo" с количеством pod от 2 до 10, без указания целевого использования CPU (будет использована политика по умолчанию)
ac autoscale deployment foo --min=2 --max=10

# Автоматически масштабировать replication controller "foo" с количеством pod от 1 до 5, целевое использование CPU 80%
ac autoscale rc foo --max=5 --cpu-percent=80

#ac cluster-info

Показать информацию о кластере

#Пример использования

# Вывести адрес управляющей плоскости и сервисов кластера
ac cluster-info

#ac cluster-info dump

Сбросить релевантную информацию для отладки и диагностики

#Пример использования

# Сбросить текущее состояние кластера в stdout
ac cluster-info dump

# Сбросить текущее состояние кластера в /path/to/cluster-state
ac cluster-info dump --output-directory=/path/to/cluster-state

# Сбросить все namespace в stdout
ac cluster-info dump --all-namespaces

# Сбросить набор namespace в /path/to/cluster-state
ac cluster-info dump --namespaces default,kube-system --output-directory=/path/to/cluster-state

#ac completion

Вывести код автодополнения для указанной оболочки (bash, zsh, fish или powershell)

#Пример использования

# Установка автодополнения bash на macOS через homebrew
## Если используется Bash 3.2, включённый в macOS
brew install bash-completion
## или, если Bash 4.1+
brew install bash-completion@2
## Если ac установлен через homebrew, автодополнение начнёт работать сразу
## Если установлен иным способом, возможно, потребуется добавить автодополнение в каталог автодополнений
ac completion bash > $(brew --prefix)/etc/bash_completion.d/ac


# Установка автодополнения bash на Linux
## Если bash-completion не установлен, установите пакет 'bash-completion'
## через менеджер пакетов вашей дистрибуции.
## Загрузить код автодополнения ac для bash в текущую оболочку
source <(ac completion bash)
## Записать код автодополнения bash в файл и подключить его из .bash_profile
ac completion bash > ~/.kube/completion.bash.inc
printf "
# ac shell completion
source '$HOME/.kube/completion.bash.inc'
" >> $HOME/.bash_profile
source $HOME/.bash_profile

# Загрузить код автодополнения ac для zsh[1] в текущую оболочку
source <(ac completion zsh)
# Установить автодополнение ac для zsh[1] для автозагрузки при старте
ac completion zsh > "${fpath[1]}/_ac"


# Загрузить код автодополнения ac для fish[2] в текущую оболочку
ac completion fish | source
# Для загрузки автодополнений в каждой сессии выполните один раз:
ac completion fish > ~/.config/fish/completions/ac.fish

# Загрузить код автодополнения ac для powershell в текущую оболочку
ac completion powershell | Out-String | Invoke-Expression
# Установить автодополнение ac для powershell при старте
## Сохранить код автодополнения в скрипт и выполнить в профиле
ac completion powershell > $HOME\.kube\completion.ps1
Add-Content $PROFILE "$HOME\.kube\completion.ps1"
## Выполнить код автодополнения в профиле
Add-Content $PROFILE "if (Get-Command ac -ErrorAction SilentlyContinue) {
ac completion powershell | Out-String | Invoke-Expression
}"
## Добавить код автодополнения напрямую в скрипт $PROFILE
ac completion powershell >> $PROFILE

#ac config

Изменять kubeconfig файлы

#ac config current-context

Показать текущий контекст

#Пример использования

# Показать текущий контекст
ac config current-context

#ac config delete-cluster

Удалить указанный кластер из kubeconfig

#Пример использования

# Удалить кластер minikube
ac config delete-cluster minikube

#ac config delete-context

Удалить указанный контекст из kubeconfig

#Пример использования

# Удалить контекст для кластера minikube
ac config delete-context minikube

#ac config delete-user

Удалить указанного пользователя из kubeconfig

#Пример использования

# Удалить пользователя minikube
ac config delete-user minikube

#ac config get-clusters

Показать кластеры, определённые в kubeconfig

#Пример использования

# Вывести список известных ac кластеров
ac config get-clusters

#ac config get-contexts

Описать один или несколько контекстов

#Пример использования

# Вывести все контексты в вашем kubeconfig файле
ac config get-contexts

# Описать один контекст в вашем kubeconfig файле
ac config get-contexts my-context

#ac config get-sessions

Вывести все настроенные сессии ACP платформы

#Пример использования

# Вывести все настроенные сессии ACP
ac config get-sessions

#ac config get-users

Показать пользователей, определённых в kubeconfig

#Пример использования

# Вывести список известных ac пользователей
ac config get-users

#ac config rename-context

Переименовать контекст в kubeconfig файле

#Пример использования

# Переименовать контекст 'old-name' в 'new-name' в вашем kubeconfig файле
ac config rename-context old-name new-name

#ac config set

Установить отдельное значение в kubeconfig файле

#Пример использования

# Установить поле server для кластера my-cluster в https://1.2.3.4
ac config set clusters.my-cluster.server https://1.2.3.4

# Установить поле certificate-authority-data для кластера my-cluster
ac config set clusters.my-cluster.certificate-authority-data $(echo "cert_data_here" | base64 -i -)

# Установить поле cluster в контексте my-context в значение my-cluster
ac config set contexts.my-context.cluster my-cluster

# Установить поле client-key-data для пользователя cluster-admin с опцией --set-raw-bytes
ac config set users.cluster-admin.client-key-data cert_data_here --set-raw-bytes=true

#ac config set-cluster

Установить запись кластера в kubeconfig

#Пример использования

# Установить только поле server для записи кластера e2e без изменения других значений
ac config set-cluster e2e --server=https://1.2.3.4

# Встроить данные сертификата для записи кластера e2e
ac config set-cluster e2e --embed-certs --certificate-authority=~/.kube/e2e/kubernetes.ca.crt

# Отключить проверку сертификата для записи кластера e2e
ac config set-cluster e2e --insecure-skip-tls-verify=true

# Установить пользовательское имя TLS сервера для проверки для записи кластера e2e
ac config set-cluster e2e --tls-server-name=my-cluster-name

# Установить URL прокси для записи кластера e2e
ac config set-cluster e2e --proxy-url=https://1.2.3.4

#ac config set-context

Установить запись контекста в kubeconfig

#Пример использования

# Установить поле user для записи контекста gce без изменения других значений
ac config set-context gce --user=cluster-admin

#ac config set-credentials

Установить запись пользователя в kubeconfig

#Пример использования

# Установить только поле "client-key" для "cluster-admin"
# без изменения других значений
ac config set-credentials cluster-admin --client-key=~/.kube/admin.key

# Установить базовую аутентификацию для "cluster-admin"
ac config set-credentials cluster-admin --username=admin --password=uXFGweU9l35qcif

# Встроить данные клиентского сертификата в запись "cluster-admin"
ac config set-credentials cluster-admin --client-certificate=~/.kube/admin.crt --embed-certs=true

# Включить провайдера аутентификации Google Compute Platform для "cluster-admin"
ac config set-credentials cluster-admin --auth-provider=gcp

# Включить провайдера аутентификации OpenID Connect для "cluster-admin" с дополнительными аргументами
ac config set-credentials cluster-admin --auth-provider=oidc --auth-provider-arg=client-id=foo --auth-provider-arg=client-secret=bar

# Удалить значение "client-secret" для провайдера OpenID Connect для "cluster-admin"
ac config set-credentials cluster-admin --auth-provider=oidc --auth-provider-arg=client-secret-

# Включить новый exec плагин аутентификации для "cluster-admin"
ac config set-credentials cluster-admin --exec-command=/path/to/the/executable --exec-api-version=client.authentication.k8s.io/v1beta1

# Включить новый exec плагин аутентификации для "cluster-admin" в интерактивном режиме
ac config set-credentials cluster-admin --exec-command=/path/to/the/executable --exec-api-version=client.authentication.k8s.io/v1beta1 --exec-interactive-mode=Never

# Определить новые аргументы exec плагина аутентификации для "cluster-admin"
ac config set-credentials cluster-admin --exec-arg=arg1 --exec-arg=arg2

# Создать или обновить переменные окружения exec плагина аутентификации для "cluster-admin"
ac config set-credentials cluster-admin --exec-env=key1=val1 --exec-env=key2=val2

# Удалить переменные окружения exec плагина аутентификации для "cluster-admin"
ac config set-credentials cluster-admin --exec-env=var-to-remove-

#ac config sync

Синхронизировать kubeconfig с состоянием ACP платформы

#Пример использования

# Синхронизировать текущую сессию на основе активного контекста
ac config sync

# Синхронизировать конкретную сессию
ac config sync --session prod

# Синхронизировать все сессии
ac config sync --all

#ac config unset

Сбросить отдельное значение в kubeconfig файле

#Пример использования

# Сбросить current-context
ac config unset current-context

# Сбросить namespace в контексте foo
ac config unset contexts.foo.namespace

#ac config use-cluster

Переключиться на конкретный ACP кластер по имени кластера

#Пример использования

# Переключиться на существующий контекст для кластера workload-a
ac config use-cluster workload-a

# Создать новый контекст для workload-b с namespace
ac config use-cluster workload-b --namespace my-app

# Переключиться на глобальный кластер
ac config use-cluster global

#ac config use-context

Установить current-context в kubeconfig файле

#Пример использования

# Использовать контекст для кластера minikube
ac config use-context minikube

#ac config use-session

Переключиться на указанную сессию ACP с интеллектуальным выбором контекста

#Пример использования

# Переключиться на сессию staging (по умолчанию глобальный кластер)
ac config use-session staging

# Переключиться на сессию production с конкретным кластером
ac config use-session prod --cluster workload-b

# Переключиться на сессию с конкретным кластером и namespace
ac config use-session staging --cluster workload-a --namespace my-app

#ac config view

Показать объединённые настройки kubeconfig или указанный kubeconfig файл

#Пример использования

# Показать объединённые настройки kubeconfig
ac config view

# Показать объединённые настройки kubeconfig, необработанные данные сертификатов и раскрытые секреты
ac config view --raw

# Получить пароль для пользователя e2e
ac config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}'

#ac cp

Копировать файлы и каталоги в контейнеры и из них

#Пример использования

# !!!Важное замечание!!!
# Требуется наличие бинарника 'tar' в вашем контейнере
# Если 'tar' отсутствует, 'ac cp' завершится с ошибкой.
#
# Для продвинутых случаев, таких как символические ссылки, расширение шаблонов или сохранение прав доступа, рассмотрите использование 'ac exec'.

# Копировать локальный файл /tmp/foo в /tmp/bar в удалённом pod в namespace <some-namespace>
tar cf - /tmp/foo | ac exec -i -n <some-namespace> <some-pod> -- tar xf - -C /tmp/bar

# Копировать /tmp/foo из удалённого pod в локальный /tmp/bar
ac exec -n <some-namespace> <some-pod> -- tar cf - /tmp/foo | tar xf - -C /tmp/bar

# Копировать локальный каталог /tmp/foo_dir в /tmp/bar_dir в удалённом pod в namespace по умолчанию
ac cp /tmp/foo_dir <some-pod>:/tmp/bar_dir

# Копировать локальный файл /tmp/foo в /tmp/bar в удалённом pod в конкретном контейнере
ac cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>

# Копировать локальный файл /tmp/foo в /tmp/bar в удалённом pod в namespace <some-namespace>
ac cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar

# Копировать /tmp/foo из удалённого pod в локальный /tmp/bar
ac cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar

#ac create

Создать ресурс из файла или stdin

#Пример использования

# Создать pod, используя данные из pod.json
ac create -f ./pod.json

# Создать pod на основе JSON, переданного через stdin
cat pod.json | ac create -f -

# Отредактировать данные в registry.yaml в JSON, затем создать ресурс с использованием отредактированных данных
ac create -f registry.yaml --edit -o json

#ac create clusterrole

Создать cluster role

#Пример использования

# Создать cluster role с именем "pod-reader", разрешающую пользователю выполнять "get", "watch" и "list" для pods
ac create clusterrole pod-reader --verb=get,list,watch --resource=pods

# Создать cluster role с именем "pod-reader" с указанными ResourceName
ac create clusterrole pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod

# Создать cluster role с именем "foo" с указанной API Group
ac create clusterrole foo --verb=get,list,watch --resource=rs.apps

# Создать cluster role с именем "foo" с указанным SubResource
ac create clusterrole foo --verb=get,list,watch --resource=pods,pods/status

# Создать cluster role с именем "foo" с указанным NonResourceURL
ac create clusterrole "foo" --verb=get --non-resource-url=/logs/*

# Создать cluster role с именем "monitoring" с указанным AggregationRule
ac create clusterrole monitoring --aggregation-rule="rbac.example.com/aggregate-to-monitoring=true"

#ac create clusterrolebinding

Создать cluster role binding для конкретной cluster role

#Пример использования

# Создать cluster role binding для user1, user2 и group1 с использованием cluster role cluster-admin
ac create clusterrolebinding cluster-admin --clusterrole=cluster-admin --user=user1 --user=user2 --group=group1

#ac create configmap

Создать config map из локального файла, каталога или литерального значения

#Пример использования

# Создать новый config map с именем my-config на основе папки bar
ac create configmap my-config --from-file=path/to/bar

# Создать новый config map с именем my-config с указанными ключами вместо имён файлов на диске
ac create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt

# Создать новый config map с именем my-config с key1=config1 и key2=config2
ac create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2

# Создать новый config map с именем my-config из ключей и значений файла
ac create configmap my-config --from-file=path/to/bar

# Создать новый config map с именем my-config из env файла
ac create configmap my-config --from-env-file=path/to/foo.env --from-env-file=path/to/bar.env

#ac create cronjob

Создать cron job с указанным именем

#Пример использования

# Создать cron job
ac create cronjob my-job --image=busybox --schedule="*/1 * * * *"

# Создать cron job с командой
ac create cronjob my-job --image=busybox --schedule="*/1 * * * *" -- date

#ac create deployment

Создать deployment с указанным именем

#Пример использования

# Создать deployment с именем my-dep, использующий образ busybox
ac create deployment my-dep --image=busybox

# Создать deployment с командой
ac create deployment my-dep --image=busybox -- date

# Создать deployment с именем my-dep, использующий образ nginx с 3 репликами
ac create deployment my-dep --image=nginx --replicas=3

# Создать deployment с именем my-dep, использующий образ busybox и открывающий порт 5701
ac create deployment my-dep --image=busybox --port=5701

# Создать deployment с именем my-dep, использующий несколько контейнеров
ac create deployment my-dep --image=busybox:latest --image=ubuntu:latest --image=nginx

#ac create ingress

Создать ingress с указанным именем

#Пример использования

# Создать одиночный ingress с именем 'simple', который направляет запросы foo.com/bar к svc
# svc1:8080 с TLS секретом "my-cert"
ac create ingress simple --rule="foo.com/bar=svc1:8080,tls=my-cert"

# Создать ingress, перехватывающий все запросы по "/path", направляющий на сервис svc:port и с классом Ingress "otheringress"
ac create ingress catch-all --class=otheringress --rule="/path=svc:port"

# Создать ingress с двумя аннотациями: ingress.annotation1 и ingress.annotations2
ac create ingress annotated --class=default --rule="foo.com/bar=svc:port" \
--annotation ingress.annotation1=foo \
--annotation ingress.annotation2=bla

# Создать ingress с одним хостом и несколькими путями
ac create ingress multipath --class=default \
--rule="foo.com/=svc:port" \
--rule="foo.com/admin/=svcadmin:portadmin"

# Создать ingress с несколькими хостами и pathType как Prefix
ac create ingress ingress1 --class=default \
--rule="foo.com/path*=svc:8080" \
--rule="bar.com/admin*=svc2:http"

# Создать ingress с включённым TLS, используя сертификат ingress по умолчанию и разные типы путей
ac create ingress ingtls --class=default \
--rule="foo.com/=svc:https,tls" \
--rule="foo.com/path/subpath*=othersvc:8080"

# Создать ingress с включённым TLS, используя конкретный секрет и pathType как Prefix
ac create ingress ingsecret --class=default \
--rule="foo.com/*=svc:8080,tls=secret1"

# Создать ingress с backend по умолчанию
ac create ingress ingdefault --class=default \
--default-backend=defaultsvc:http \
--rule="foo.com/*=svc:8080,tls=secret1"

#ac create job

Создать job с указанным именем

#Пример использования

# Создать job
ac create job my-job --image=busybox

# Создать job с командой
ac create job my-job --image=busybox -- date

# Создать job из cron job с именем "a-cronjob"
ac create job test-job --from=cronjob/a-cronjob

#ac create namespace

Создать namespace с указанным именем

#Пример использования

# Создать новый namespace с именем my-namespace
ac create namespace my-namespace

#ac create poddisruptionbudget

Создать pod disruption budget с указанным именем

#Пример использования

# Создать pod disruption budget с именем my-pdb, который выбирает все pod с меткой app=rails
# и требует, чтобы хотя бы один из них был доступен в любой момент времени
ac create poddisruptionbudget my-pdb --selector=app=rails --min-available=1

# Создать pod disruption budget с именем my-pdb, который выбирает все pod с меткой app=nginx
# и требует, чтобы было доступно не менее половины выбранных pod в любой момент времени
ac create pdb my-pdb --selector=app=nginx --min-available=50%

#ac create priorityclass

Создать priority class с указанным именем

#Пример использования

# Создать priority class с именем high-priority
ac create priorityclass high-priority --value=1000 --description="high priority"

# Создать priority class с именем default-priority, считающийся глобальным приоритетом по умолчанию
ac create priorityclass default-priority --value=1000 --global-default=true --description="default priority"

# Создать priority class с именем high-priority, который не может вытеснять pod с более низким приоритетом
ac create priorityclass high-priority --value=1000 --description="high priority" --preemption-policy="Never"

#ac create quota

Создать quota с указанным именем

#Пример использования

# Создать новый resource quota с именем my-quota
ac create quota my-quota --hard=cpu=1,memory=1G,pods=2,services=3,replicationcontrollers=2,resourcequotas=1,secrets=5,persistentvolumeclaims=10

# Создать новый resource quota с именем best-effort
ac create quota best-effort --hard=pods=100 --scopes=BestEffort

#ac create role

Создать роль с одним правилом

#Пример использования

# Создать роль с именем "pod-reader", разрешающую выполнять "get", "watch" и "list" для pods
ac create role pod-reader --verb=get --verb=list --verb=watch --resource=pods

# Создать роль с именем "pod-reader" с указанными ResourceName
ac create role pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod

# Создать роль с именем "foo" с указанной API Group
ac create role foo --verb=get,list,watch --resource=rs.apps

# Создать роль с именем "foo" с указанным SubResource
ac create role foo --verb=get,list,watch --resource=pods,pods/status

#ac create rolebinding

Создать role binding для конкретной роли или cluster role

#Пример использования

# Создать role binding для user1, user2 и group1 с использованием cluster role admin
ac create rolebinding admin --clusterrole=admin --user=user1 --user=user2 --group=group1

# Создать role binding для service account monitoring:sa-dev с использованием роли admin
ac create rolebinding admin-binding --role=admin --serviceaccount=monitoring:sa-dev

#ac create secret

Создать секрет с использованием указанной подкоманды

#ac create secret docker-registry

Создать секрет для использования с Docker registry

#Пример использования

# Если у вас ещё нет файла .dockercfg, создайте секрет dockercfg напрямую
ac create secret docker-registry my-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

# Создать новый секрет с именем my-secret из ~/.docker/config.json
ac create secret docker-registry my-secret --from-file=path/to/.docker/config.json

#ac create secret generic

Создать секрет из локального файла, каталога или литерального значения

#Пример использования

# Создать новый секрет с именем my-secret с ключами для каждого файла в папке bar
ac create secret generic my-secret --from-file=path/to/bar

# Создать новый секрет с именем my-secret с указанными ключами вместо имён на диске
ac create secret generic my-secret --from-file=ssh-privatekey=path/to/id_rsa --from-file=ssh-publickey=path/to/id_rsa.pub

# Создать новый секрет с именем my-secret с key1=supersecret и key2=topsecret
ac create secret generic my-secret --from-literal=key1=supersecret --from-literal=key2=topsecret

# Создать новый секрет с именем my-secret, используя комбинацию файла и литерала
ac create secret generic my-secret --from-file=ssh-privatekey=path/to/id_rsa --from-literal=passphrase=topsecret

# Создать новый секрет с именем my-secret из env файлов
ac create secret generic my-secret --from-env-file=path/to/foo.env --from-env-file=path/to/bar.env

#ac create secret tls

Создать TLS секрет

#Пример использования

# Создать новый TLS секрет с именем tls-secret с указанной парой ключей
ac create secret tls tls-secret --cert=path/to/tls.crt --key=path/to/tls.key

#ac create service

Создать сервис с использованием указанной подкоманды

#ac create service clusterip

Создать сервис типа ClusterIP

#Пример использования

# Создать новый сервис ClusterIP с именем my-cs
ac create service clusterip my-cs --tcp=5678:8080

# Создать новый сервис ClusterIP с именем my-cs (в режиме headless)
ac create service clusterip my-cs --clusterip="None"

#ac create service externalname

Создать сервис типа ExternalName

#Пример использования

# Создать новый сервис ExternalName с именем my-ns
ac create service externalname my-ns --external-name bar.com

#ac create service loadbalancer

Создать сервис типа LoadBalancer

#Пример использования

# Создать новый сервис LoadBalancer с именем my-lbs
ac create service loadbalancer my-lbs --tcp=5678:8080

#ac create service nodeport

Создать сервис типа NodePort

#Пример использования

# Создать новый сервис NodePort с именем my-ns
ac create service nodeport my-ns --tcp=5678:8080

#ac create serviceaccount

Создать service account с указанным именем

#Пример использования

# Создать новый service account с именем my-service-account
ac create serviceaccount my-service-account

#ac create token

Запросить токен service account

#Пример использования

# Запросить токен для аутентификации в kube-apiserver как service account "myapp" в текущем namespace
ac create token myapp

# Запросить токен для service account в пользовательском namespace
ac create token myapp --namespace myns

# Запросить токен с пользовательским временем жизни
ac create token myapp --duration 10m

# Запросить токен с пользовательской аудиторией
ac create token myapp --audience https://example.com

# Запросить токен, привязанный к экземпляру объекта Secret
ac create token myapp --bound-object-kind Secret --bound-object-name mysecret

# Запросить токен, привязанный к экземпляру объекта Secret с конкретным UID
ac create token myapp --bound-object-kind Secret --bound-object-name mysecret --bound-object-uid 0d4691ed-659b-4935-a832-355f77ee47cc

#ac delete

Удалить ресурсы по именам файлов, stdin, ресурсам и именам или по ресурсам и селектору меток

#Пример использования

# Удалить pod, используя тип и имя, указанные в pod.json
ac delete -f ./pod.json

# Удалить ресурсы из каталога с kustomization.yaml, например dir/kustomization.yaml
ac delete -k dir

# Удалить ресурсы из всех файлов, заканчивающихся на '.json'
ac delete -f '*.json'

# Удалить pod на основе типа и имени из JSON, переданного через stdin
cat pod.json | ac delete -f -

# Удалить pods и services с одинаковыми именами "baz" и "foo"
ac delete pod,service baz foo

# Удалить pods и services с меткой name=myLabel
ac delete pods,services -l name=myLabel

# Удалить pod с минимальной задержкой
ac delete pod foo --now

# Принудительно удалить pod на мёртвом узле
ac delete pod foo --force

# Удалить все pods
ac delete pods --all

# Удалить все pods только после подтверждения пользователя
ac delete pods --all --interactive

#ac describe

Показать детали конкретного ресурса или группы ресурсов

#Пример использования

# Описать node
ac describe nodes kubernetes-node-emt8.c.myproject.internal

# Описать pod
ac describe pods/nginx

# Описать pod, идентифицированный типом и именем в "pod.json"
ac describe -f pod.json

# Описать все pods
ac describe pods

# Описать pods с меткой name=myLabel
ac describe pods -l name=myLabel

# Описать все pods, управляемые replication controller с именем 'frontend'
# (pods, созданные rc, получают имя rc в качестве префикса)
ac describe pods frontend

#ac diff

Показать различия между живой версией и версией, которая будет применена

#Пример использования

# Показать различия для ресурсов из pod.json
ac diff -f pod.json

# Показать различия для файла, прочитанного из stdin
cat service.yaml | ac diff -f -

#ac edit

Редактировать ресурс на сервере

#Пример использования

# Редактировать сервис с именем 'registry'
ac edit svc/registry

# Использовать альтернативный редактор
KUBE_EDITOR="nano" ac edit svc/registry

# Редактировать job 'myjob' в JSON с использованием API версии v1
ac edit job.v1.batch/myjob -o json

# Редактировать deployment 'mydeployment' в YAML и сохранить изменённую конфигурацию в аннотации
ac edit deployment/mydeployment -o yaml --save-config

# Редактировать подресурс 'status' для deployment 'mydeployment'
ac edit deployment mydeployment --subresource='status'

#ac events

Список событий

#Пример использования

# Список последних событий в namespace по умолчанию
ac events

# Список последних событий во всех namespace
ac events --all-namespaces

# Список последних событий для указанного pod, затем ожидать новые события и выводить их по мере поступления
ac events --for pod/web-pod-13je7 --watch

# Список последних событий в формате YAML
ac events -oyaml

# Список последних событий только типов 'Warning' или 'Normal'
ac events --types=Warning,Normal

#ac exec

Выполнить команду в контейнере

#Пример использования

# Получить вывод команды 'date' из pod mypod, по умолчанию из первого контейнера
ac exec mypod -- date

# Получить вывод команды 'date' из контейнера ruby-container pod mypod
ac exec mypod -c ruby-container -- date

# Переключиться в raw terminal режим; отправляет stdin в 'bash' в ruby-container pod mypod
# и возвращает stdout/stderr от 'bash' клиенту
ac exec mypod -c ruby-container -i -t -- bash -il

# Вывести содержимое /usr из первого контейнера pod mypod, отсортированное по времени изменения
# Если команда содержит флаги, совпадающие с флагами ac exec (например, -i),
# используйте двойной дефис (--) для разделения флагов команды и ac exec
# Не заключайте команду и её флаги в кавычки, если обычно не делаете этого (например, ls -t /usr, а не "ls -t /usr")
ac exec mypod -i -t -- ls -t /usr

# Получить вывод команды 'date' из первого pod deployment mydeployment, по умолчанию из первого контейнера
ac exec deploy/mydeployment -- date

# Получить вывод команды 'date' из первого pod сервиса myservice, по умолчанию из первого контейнера
ac exec svc/myservice -- date

#ac explain

Получить документацию по ресурсу

#Пример использования

# Получить документацию по ресурсу и его полям
ac explain pods

# Получить все поля ресурса
ac explain pods --recursive

# Получить объяснение для deployment в поддерживаемых версиях api
ac explain deployments --api-version=apps/v1

# Получить документацию по конкретному полю ресурса
ac explain pods.spec.containers

# Получить документацию по ресурсам в другом формате
ac explain deployment --output=plaintext-openapiv2

#ac expose

Создать сервис Kubernetes для replication controller, service, deployment или pod

#Пример использования

# Создать сервис для replicated nginx, который слушает порт 80 и подключается к контейнерам на порту 8000
ac expose rc nginx --port=80 --target-port=8000

# Создать сервис для replication controller, идентифицированного типом и именем в "nginx-controller.yaml", который слушает порт 80 и подключается к контейнерам на порту 8000
ac expose -f nginx-controller.yaml --port=80 --target-port=8000

# Создать сервис для pod valid-pod, который слушает порт 444 с именем "frontend"
ac expose pod valid-pod --port=444 --name=frontend

# Создать второй сервис на основе вышеуказанного, открывающий порт контейнера 8443 как порт 443 с именем "nginx-https"
ac expose service nginx --port=443 --target-port=8443 --name=nginx-https

# Создать сервис для replicated streaming приложения на порту 4100, балансирующий UDP трафик и с именем 'video-stream'
ac expose rc streamer --port=4100 --protocol=UDP --name=video-stream

# Создать сервис для replicated nginx с использованием replica set, который слушает порт 80 и подключается к контейнерам на порту 8000
ac expose rs nginx --port=80 --target-port=8000

# Создать сервис для deployment nginx, который слушает порт 80 и подключается к контейнерам на порту 8000
ac expose deployment nginx --port=80 --target-port=8000

#ac get

Показать один или несколько ресурсов

#Пример использования

# Вывести все pods в формате ps
ac get pods

# Вывести все pods в формате ps с дополнительной информацией (например, имя node)
ac get pods -o wide

# Вывести один replication controller с указанным NAME в формате ps
ac get replicationcontroller web

# Вывести deployments в формате JSON, в версии "v1" группы API "apps"
ac get deployments.v1.apps -o json

# Вывести один pod в формате JSON
ac get -o json pod web-pod-13je7

# Вывести pod, идентифицированный типом и именем в "pod.yaml" в формате JSON
ac get -f pod.yaml -o json

# Вывести ресурсы из каталога с kustomization.yaml, например dir/kustomization.yaml
ac get -k dir/

# Вывести только значение поля phase указанного pod
ac get -o template pod/web-pod-13je7 --template={{.status.phase}}

# Вывести информацию о ресурсе в пользовательских столбцах
ac get pod test-pod -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image

# Вывести все replication controllers и services вместе в формате ps
ac get rc,services

# Вывести один или несколько ресурсов по типу и именам
ac get rc/web service/frontend pods/web-pod-13je7

# Вывести подресурс 'status' для одного pod
ac get pod web-pod-13je7 --subresource status

# Вывести все deployments в namespace 'backend'
ac get deployments.apps --namespace backend

# Вывести все pods во всех namespace
ac get pods --all-namespaces

#ac kustomize

Построить цель kustomization из каталога или URL

#Пример использования

# Построить текущий рабочий каталог
ac kustomize

# Построить из каталога с общей конфигурацией
ac kustomize /home/config/production

# Построить из github
ac kustomize https://github.com/kubernetes-sigs/kustomize.git/examples/helloWorld?ref=v1.0.6

#ac label

Обновить метки ресурса

#Пример использования

# Обновить pod 'foo' с меткой 'unhealthy' и значением 'true'
ac label pods foo unhealthy=true

# Обновить pod 'foo' с меткой 'status' и значением 'unhealthy', перезаписывая существующее значение
ac label --overwrite pods foo status=unhealthy

# Обновить все pods в namespace
ac label pods --all status=unhealthy

# Обновить pod, идентифицированный типом и именем в "pod.json"
ac label -f pod.json status=unhealthy

# Обновить pod 'foo' только если ресурс не изменился с версии 1
ac label pods foo status=unhealthy --resource-version=1

# Удалить метку с именем 'bar' у pod 'foo', если она существует
# Флаг --overwrite не требуется
ac label pods foo bar-

#ac login

Войти в ACP платформу

#Пример использования

# Интерактивный вход (запрашивает отсутствующие параметры)
ac login https://example.com --name prod

# Вход со всеми параметрами через флаги
ac login https://example.com --name prod --username=myuser --password=mypassword

# Вход с использованием переменных окружения (для автоматизации)
AC_LOGIN_PLATFORM_URL=https://example.com AC_LOGIN_SESSION=prod \
AC_LOGIN_USERNAME=myuser AC_LOGIN_PASSWORD=mypassword ac login

# Вход с указанием конкретного провайдера идентификации
ac login https://example.com --name prod --idp ldap-test

# Вход с указанием конкретного кластера и namespace
ac login https://example.com --name prod --cluster=my-cluster --namespace=my-namespace

# Вход с использованием пользовательского kubeconfig файла
ac login https://example.com --name prod --kubeconfig=/path/to/kubeconfig

#ac logout

Завершить текущую сессию с ACP платформой

#Пример использования

# Выйти из текущей сессии ACP платформы
ac logout

# Выйти из конкретной сессии
ac logout --session prod

# Выйти из всех сессий
ac logout --all

#ac logs

Вывести логи контейнера в pod

#Пример использования

# Получить моментальный снимок логов pod nginx с одним контейнером
ac logs nginx

# Получить моментальный снимок логов pod nginx, добавляя префикс с именем pod и контейнера к каждой строке
ac logs nginx --prefix

# Получить моментальный снимок логов pod nginx, ограничив вывод 500 байтами
ac logs nginx --limit-bytes=500

# Получить моментальный снимок логов pod nginx, ожидая до 20 секунд запуска pod
ac logs nginx --pod-running-timeout=20s

# Получить моментальный снимок логов pod nginx с несколькими контейнерами
ac logs nginx --all-containers=true

# Получить моментальный снимок логов всех pods в deployment nginx
ac logs deployment/nginx --all-pods=true

# Получить моментальный снимок логов всех контейнеров в pods с меткой app=nginx
ac logs -l app=nginx --all-containers=true

# Получить моментальный снимок логов всех pods с меткой app=nginx, ограничив одновременные запросы логов до 10 pods
ac logs -l app=nginx --max-log-requests=10

# Получить моментальный снимок логов предыдущего завершённого контейнера ruby из pod web-1
ac logs -p -c ruby web-1

# Начать потоковую передачу логов pod nginx, продолжая даже при ошибках
ac logs nginx -f --ignore-errors=true

# Начать потоковую передачу логов контейнера ruby в pod web-1
ac logs -f -c ruby web-1

# Начать потоковую передачу логов всех контейнеров в pods с меткой app=nginx
ac logs -f -l app=nginx --all-containers=true

# Показать только последние 20 строк вывода pod nginx
ac logs --tail=20 nginx

# Показать все логи pod nginx за последний час
ac logs --since=1h nginx

# Показать все логи с метками времени pod nginx начиная с 30 августа 2024, 06:00:00 UTC
ac logs nginx --since-time=2024-08-30T06:00:00Z --timestamps=true

# Показать логи kubelet с истёкшим сертификатом
ac logs --insecure-skip-tls-verify-backend nginx

# Получить моментальный снимок логов первого контейнера job с именем hello
ac logs job/hello

# Получить моментальный снимок логов контейнера nginx-1 deployment с именем nginx
ac logs deployment/nginx -c nginx-1

#ac namespace

Показать или переключить текущий namespace контекста

#Пример использования

# Показать текущий namespace и информацию о контексте
ac namespace

# Переключиться на другой namespace
ac namespace my-namespace

# Переключиться на namespace по умолчанию
ac namespace default

#ac patch

Обновить поля ресурса

#Пример использования

# Частично обновить node с помощью стратегического merge patch, указав патч в JSON
ac patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'

# Частично обновить node с помощью стратегического merge patch, указав патч в YAML
ac patch node k8s-node-1 -p $'spec:\n unschedulable: true'

# Частично обновить node, идентифицированный типом и именем в "node.json" с помощью стратегического merge patch
ac patch -f node.json -p '{"spec":{"unschedulable":true}}'

# Обновить образ контейнера; spec.containers[*].name обязателен, так как это ключ слияния
ac patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'

# Обновить образ контейнера с помощью JSON patch с позиционными массивами
ac patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]'

# Обновить количество реплик deployment через подресурс 'scale' с помощью merge patch
ac patch deployment nginx-deployment --subresource='scale' --type='merge' -p '{"spec":{"replicas":2}}'

#ac plugin

Утилиты для взаимодействия с плагинами

#Пример использования

# Вывести список всех доступных плагинов
ac plugin list

# Вывести только имена бинарников доступных плагинов без путей
ac plugin list --name-only

#ac plugin list

Вывести все видимые исполняемые плагины в PATH пользователя

#Пример использования

# Вывести список всех доступных плагинов
ac plugin list

# Вывести только имена бинарников доступных плагинов без путей
ac plugin list --name-only

#ac port-forward

Переадресовать один или несколько локальных портов на pod

#Пример использования

# Прослушивать локально порты 5000 и 6000, переадресовывая данные на порты 5000 и 6000 в pod
ac port-forward pod/mypod 5000 6000

# Прослушивать локально порты 5000 и 6000, переадресовывая данные на порты 5000 и 6000 в pod, выбранном deployment
ac port-forward deployment/mydeployment 5000 6000

# Прослушивать локально порт 8443, переадресовывая на targetPort порта сервиса с именем "https" в pod, выбранном сервисом
ac port-forward service/myservice 8443:https

# Прослушивать локально порт 8888, переадресовывая на 5000 в pod
ac port-forward pod/mypod 8888:5000

# Прослушивать локально порт 8888 на всех адресах, переадресовывая на 5000 в pod
ac port-forward --address 0.0.0.0 pod/mypod 8888:5000

# Прослушивать локально порт 8888 на localhost и выбранном IP, переадресовывая на 5000 в pod
ac port-forward --address localhost,10.19.21.23 pod/mypod 8888:5000

# Прослушивать локально случайный порт, переадресовывая на 5000 в pod
ac port-forward pod/mypod :5000

#ac process

Обработать шаблон в список ресурсов

#Пример использования

# Преобразовать файл template.json в список ресурсов и передать в create
ac process -f template.json | ac apply -f -

# Обработать файл локально без обращения к серверу
ac process -f template.json -o yaml

# Обработать шаблон с передачей пользовательской метки
ac process -f template.json -l name=mytemplate

# Преобразовать сохранённый шаблон в список ресурсов
ac process foo

# Преобразовать сохранённый шаблон в список ресурсов с установкой/переопределением значений параметров
ac process foo -p PARM1=VALUE1 -p PARM2=VALUE2

# Преобразовать шаблон, сохранённый в другом namespace, в список ресурсов
ac process cpaas-system//foo

# Преобразовать template.json в список ресурсов
cat template.json | ac process -f -

#ac proxy

Запустить прокси к Kubernetes API серверу

#Пример использования

# Прокси для всего Kubernetes API и ничего более
ac proxy --api-prefix=/

# Прокси для части Kubernetes API и некоторых статических файлов
# Можно получить информацию о pods с помощью 'curl localhost:8001/api/v1/pods'
ac proxy --www=/my/files --www-prefix=/static/ --api-prefix=/api/

# Прокси для всего Kubernetes API с другим корнем
# Можно получить информацию о pods с помощью 'curl localhost:8001/custom/api/v1/pods'
ac proxy --api-prefix=/custom/

# Запустить прокси к Kubernetes API серверу на порту 8011, обслуживая статический контент из ./local/www/
ac proxy --port=8011 --www=./local/www/

# Запустить прокси к Kubernetes API серверу на произвольном локальном порту
# Выбранный порт будет выведен в stdout
ac proxy --port=0

# Запустить прокси к Kubernetes API серверу, изменив префикс API на k8s-api
# Это делает, например, pods API доступным по адресу localhost:8001/k8s-api/v1/pods/
ac proxy --api-prefix=/k8s-api

#ac replace

Заменить ресурс по имени файла или stdin

#Пример использования

# Заменить pod, используя данные из pod.json
ac replace -f ./pod.json

# Заменить pod на основе JSON, переданного через stdin
cat pod.json | ac replace -f -

# Обновить версию образа (тег) pod с одним контейнером на v4
ac get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | ac replace -f -

# Принудительно заменить, удалив и затем создав ресурс заново
ac replace --force -f ./pod.json

#ac rollout

Управлять развертыванием ресурса

#Пример использования

# Откатиться к предыдущему deployment
ac rollout undo deployment/abc

# Проверить статус rollout daemonset
ac rollout status daemonset/foo

# Перезапустить deployment
ac rollout restart deployment/abc

# Перезапустить deployments с меткой 'app=nginx'
ac rollout restart deployment --selector=app=nginx

#ac rollout history

Просмотреть историю rollout

#Пример использования

# Просмотреть историю rollout deployment
ac rollout history deployment/abc

# Просмотреть детали ревизии 3 daemonset
ac rollout history daemonset/abc --revision=3

#ac rollout pause

Пометить указанный ресурс как приостановленный

#Пример использования

# Пометить deployment nginx как приостановленный
# Текущее состояние deployment продолжит работу; новые обновления
# не будут применяться, пока deployment приостановлен
ac rollout pause deployment/nginx

#ac rollout restart

Перезапустить ресурс

#Пример использования

# Перезапустить все deployments в namespace test-namespace
ac rollout restart deployment -n test-namespace

# Перезапустить deployment
ac rollout restart deployment/nginx

# Перезапустить daemonset
ac rollout restart daemonset/abc

# Перезапустить deployments с меткой app=nginx
ac rollout restart deployment --selector=app=nginx

#ac rollout resume

Возобновить приостановленный ресурс

#Пример использования

# Возобновить уже приостановленный deployment
ac rollout resume deployment/nginx

#ac rollout status

Показать статус rollout

#Пример использования

# Отслеживать статус rollout deployment
ac rollout status deployment/nginx

#ac rollout undo

Отменить предыдущий rollout

#Пример использования

# Откатиться к предыдущему deployment
ac rollout undo deployment/abc

# Откатиться к ревизии 3 daemonset
ac rollout undo daemonset/abc --to-revision=3

# Откатиться к предыдущему deployment с dry-run
ac rollout undo --dry-run=server deployment/abc

#ac run

Запустить конкретный образ в кластере

#Пример использования

# Запустить pod nginx
ac run nginx --image=nginx

# Запустить pod hazelcast и открыть порт 5701 в контейнере
ac run hazelcast --image=hazelcast/hazelcast --port=5701

# Запустить pod hazelcast и установить переменные окружения "DNS_DOMAIN=cluster" и "POD_NAMESPACE=default" в контейнере
ac run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"

# Запустить pod hazelcast и установить метки "app=hazelcast" и "env=prod" в контейнере
ac run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"

# Dry run; вывести соответствующие API объекты без создания
ac run nginx --image=nginx --dry-run=client

# Запустить pod nginx с использованием команды по умолчанию, но с пользовательскими аргументами (arg1 .. argN)
ac run nginx --image=nginx -- <arg1> <arg2> ... <argN>

# Запустить pod nginx с другой командой и пользовательскими аргументами
ac run nginx --image=nginx --command -- <cmd> <arg1> ... <argN>

# Запустить pod busybox и держать его на переднем плане, не перезапуская при выходе
ac run -i -t busybox --image=busybox --restart=Never

#ac scale

Установить новый размер для deployment, replica set или replication controller

#Пример использования

# Масштабировать replica set с именем 'foo' до 3
ac scale --replicas=3 rs/foo

# Масштабировать ресурс, идентифицированный типом и именем в "foo.yaml" до 3
ac scale --replicas=3 -f foo.yaml

# Если текущий размер deployment mysql равен 2, масштабировать mysql до 3
ac scale --current-replicas=2 --replicas=3 deployment/mysql

# Масштабировать несколько replication controllers
ac scale --replicas=5 rc/example1 rc/example2 rc/example3

# Масштабировать stateful set с именем 'web' до 3
ac scale --replicas=3 statefulset/web

#ac set

Установить конкретные параметры объектов

#ac set env

Обновить переменные окружения в шаблоне pod

#Пример использования

# Обновить deployment 'registry' с новой переменной окружения
ac set env deployment/registry STORAGE_DIR=/local

# Вывести список переменных окружения, определённых в deployment 'sample-build'
ac set env deployment/sample-build --list

# Вывести список переменных окружения, определённых во всех pods
ac set env pods --all --list

# Вывести изменённый deployment в YAML, не изменяя объект на сервере
ac set env deployment/sample-build STORAGE_DIR=/data -o yaml

# Обновить все контейнеры во всех replication controllers проекта, установив ENV=prod
ac set env rc --all ENV=prod

# Импортировать переменные окружения из секрета
ac set env --from=secret/mysecret deployment/myapp

# Импортировать переменные окружения из config map с префиксом
ac set env --from=configmap/myconfigmap --prefix=MYSQL_ deployment/myapp

# Импортировать конкретные ключи из config map
ac set env --keys=my-example-key --from=configmap/myconfigmap deployment/myapp

# Удалить переменную окружения ENV из контейнера 'c1' во всех deployment configs
ac set env deployments --all --containers="c1" ENV-

# Удалить переменную окружения ENV из определения deployment на диске и
# обновить deployment config на сервере
ac set env -f deploy.json ENV-

# Установить часть локальных переменных окружения shell в deployment config на сервере
env | grep RAILS_ | ac set env -e - deployment/registry

#ac set image

Обновить образ в шаблоне pod

#Пример использования

# Установить образ контейнера nginx в deployment на 'nginx:1.9.1', а образ контейнера busybox на 'busybox'
ac set image deployment/nginx busybox=busybox nginx=nginx:1.9.1

# Обновить образ контейнера nginx во всех deployments и rc на 'nginx:1.9.1'
ac set image deployments,rc nginx=nginx:1.9.1 --all

# Обновить образ всех контейнеров daemonset abc на 'nginx:1.9.1'
ac set image daemonset abc *=nginx:1.9.1

# Вывести результат (в формате yaml) обновления образа контейнера nginx из локального файла без обращения к серверу
ac set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml

#ac set resources

Обновить запросы/лимиты ресурсов у объектов с шаблонами pod

#Пример использования

# Установить лимиты CPU "200m" и памяти "512Mi" для контейнера nginx в deployment
ac set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi

# Установить запросы и лимиты ресурсов для всех контейнеров в nginx
ac set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi

# Удалить запросы ресурсов для контейнеров в nginx
ac set resources deployment nginx --limits=cpu=0,memory=0 --requests=cpu=0,memory=0

# Вывести результат (в формате yaml) обновления лимитов контейнера nginx из локального файла без обращения к серверу
ac set resources -f path/to/file.yaml --limits=cpu=200m,memory=512Mi --local -o yaml

#ac set selector

Установить селектор на ресурсе

#Пример использования

# Установить метки и селектор перед созданием пары deployment/service
ac create service clusterip my-svc --clusterip="None" -o yaml --dry-run=client | ac set selector --local -f - 'environment=qa' -o yaml | ac create -f -
ac create deployment my-dep -o yaml --dry-run=client | ac label --local -f - environment=qa -o yaml | ac create -f -

#ac set serviceaccount

Обновить service account ресурса

#Пример использования

# Установить service account deployment nginx-deployment в serviceaccount1
ac set serviceaccount deployment nginx-deployment serviceaccount1

# Вывести результат (в формате YAML) обновления nginx deployment с service account из локального файла без обращения к API серверу
ac set sa -f nginx-deployment.yaml serviceaccount1 --local --dry-run=client -o yaml

#ac set subject

Обновить пользователя, группу или service account в role binding или cluster role binding

#Пример использования

# Обновить cluster role binding для serviceaccount1
ac set subject clusterrolebinding admin --serviceaccount=namespace:serviceaccount1

# Обновить role binding для user1, user2 и group1
ac set subject rolebinding admin --user=user1 --user=user2 --group=group1

# Вывести результат (в формате YAML) обновления subjects rolebinding из локального файла без обращения к серверу
ac create rolebinding admin --role=admin --user=admin -o yaml --dry-run=client | ac set subject --local -f - --user=foo -o yaml

#ac version

Вывести информацию о версиях клиента и сервера

#Пример использования

# Вывести информацию о версиях клиента и сервера
ac version

# Вывести только версию клиента
ac version --client

# Вывести версию в формате JSON
ac version -o json

#ac wait

Экспериментально: ждать определённого условия для одного или нескольких ресурсов

#Пример использования

# Ждать, пока pod "busybox1" не будет содержать статус condition типа "Ready"
ac wait --for=condition=Ready pod/busybox1

# Значение статуса condition по умолчанию true; можно ждать другие значения после знака равенства (сравнение с учётом Unicode простого регистра)
ac wait --for=condition=Ready=false pod/busybox1

# Ждать, пока pod "busybox1" не будет содержать статус фазы "Running"
ac wait --for=jsonpath='{.status.phase}'=Running pod/busybox1

# Ждать, пока pod "busybox1" не будет Ready
ac wait --for='jsonpath={.status.conditions[?(@.type=="Ready")].status}=True' pod/busybox1

# Ждать, пока сервис "loadbalancer" не получит ingress
ac wait --for=jsonpath='{.status.loadBalancer.ingress}' service/loadbalancer

# Ждать создания секрета "busybox1" с таймаутом 30 секунд
ac create secret generic busybox1
ac wait --for=create secret/busybox1 --timeout=30s

# Ждать удаления pod "busybox1" с таймаутом 60 секунд после выполнения команды удаления
ac delete pod/busybox1
ac wait --for=delete pod/busybox1 --timeout=60s