К основному содержанию
скилл CX Codex

openshift — скилл для Claude Code: кластеры и деплой в OpenShift

Скилл для работы с кластерами Red Hat OpenShift: проекты, маршруты, сборки и деплой приложений через oc.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add BagelHole/DevOps-Security-Agent-Skills --skill openshift -a claude-code
Открыть на GitHub

Что делает openshift

Скилл даёт агенту справочник по OpenShift Container Platform и OKD. Внутри — команды oc для входа в кластер, создания проектов и переключения между ними, деплоя из образа, из Git через S2I и из шаблонов. Плюс манифесты: Route с edge-терминацией TLS, BuildConfig, ImageStream, DeploymentConfig, ConfigMap и Secret.

Отдельные разделы посвящены тому, чего в обычном Kubernetes нет. Маршруты с распределением трафика между двумя сервисами для A/B-теста. Сборки Source-to-Image с builder-образом вроде nodejs:18-ubi8. Security Context Constraints: список oc get scc, выдача прав сервисному аккаунту через oc adm policy add-scc-to-user. Есть и заготовка подписки на оператор из openshift-marketplace.

Заранее понадобятся доступ к кластеру, установленный oc CLI и базовое понимание Kubernetes — без этого команды из скилла просто некуда вводить. Автор — devops-skills, лицензия MIT.

Какие задачи решает

  • залогиниться в кластер OpenShift по токену или логину с паролем
  • создать проект и переключиться на него
  • задеплоить приложение из Git-репозитория через S2I
  • открыть сервис наружу маршрутом с TLS
  • раздать права SCC сервисному аккаунту

Примеры запросов агенту

  • залогинься в кластер и покажи текущий контекст
  • задеплой приложение из нашего Git-репозитория через S2I
  • создай edge-маршрут для сервиса myapp

Как установить openshift

1Через Skills CLI (Vercel)

npx skills add BagelHole/DevOps-Security-Agent-Skills --skill openshift -a claude-code

2Вручную: положить файлы

~/.claude/skills/openshift/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/openshift/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора127

zero-trust Скилл помогает развернуть архитектуру Zero Trust, настроить доступ на базе личности и микросегментацию. Он пригодится при отказе от классических VPN в пользу модели BeyondCorp. CX Codex +1 350установок object-storage Скилл для работы с объектным хранилищем: команды AWS CLI, бакет-политики, lifecycle-правила, версионирование и self-hosted MinIO. CX Codex +1 350установок mysql Скилл для работы с MySQL и MariaDB: установка, настройка InnoDB, бэкапы и репликация source-replica. Пригодится, когда агент ведёт базу в dev или prod. CX Codex +1 350установок aws-ecs-fargate Разворачивает контейнеры в Amazon ECS и Fargate. Помогает настроить описания задач, сервисы с балансировщиком нагрузки и автоматическое масштабирование. CX Codex +1 349установок gcp-networking Помогает разворачивать сети в Google Cloud: настраивать VPC, правила межсетевого экрана, Cloud NAT, балансировщики и Private Service Connect через CLI и Terraform. CX Codex +1 347установок iso27001-compliance Помогает развернуть систему менеджмента информационной безопасности по стандарту ISO/IEC 27001:2022. Пригодится при оценке рисков и подготовке к аудиту. CX Codex +1 346установок runbook-creation Помогает писать операционные runbook'и, регламенты и инструкции по восстановлению, по которым дежурный инженер сможет действовать без раздумий. CX Codex +1 346установок aws-s3 Шаблоны, политики и команды AWS CLI для развёртывания бакетов S3 с шифрованием KMS, репликацией и правилами жизненного цикла. CX Codex +1 345установок

Похожие

kubernetes-deployment aj-geddes Помогает создавать манифесты и настраивать развёртывание приложений в Kubernetes: от rolling update и лимитов ресурсов до RBAC и проверок жизнеспособности подов. CX Codex +1 745установок rollback-deploy davila7 Проводит откат деплоя к прошлой версии: проверки, работа с базой и мониторинг после переключения. 260установок SE: DevOps/CI официальный github Субагент для разбора упавших деплоев и сборки CI/CD-пайплайнов. Пригодится, когда релиз ломается и надо быстро понять, что менять. ★ 40 418звёзд репо kubernetes-mcp-server containers Даёт агенту доступ к кластеру Kubernetes и OpenShift: поды, логи, Helm, Tekton. Пригодится, когда нужно смотреть и менять ресурсы прямо из чата. CX Codex +1 ★ 2 180звёзд репо kubernetes Claude MPM Team Плейбук по работе с Kubernetes: подсказывает, как безопасно выкатывать сервисы, ставить пробы и разбирать сбои через kubectl. CX Codex +1 383установок k8s-manifest-generator Seth Hobson Скилл создаёт Kubernetes-манифесты для приложений и конфигурации. Пригодится, когда нужны Deployment, Service, ConfigMap, Secret или PersistentVolumeClaim. CX Codex 11 166установок

Рядом в теме «DevOps и инфраструктура»

Всё по теме «DevOps и инфраструктура» →

Вопросы о openshift

Как установить openshift в Claude?

Выполните npx skills add BagelHole/DevOps-Security-Agent-Skills --skill openshift -a claude-code. Файл скилла окажется в ~/.claude/skills/openshift/SKILL.md.

Что делает скилл openshift?

Помогает агенту управлять кластерами OpenShift: проекты, маршруты, сборки, образы и деплой приложений. Опирается на команды oc и манифесты OpenShift-специфичных ресурсов.

Что нужно для работы скилла?

Доступ к кластеру OpenShift, установленный oc CLI и базовые знания Kubernetes.

Исходный текст

SKILL.md · MIT
---
name: openshift
description: Manage Red Hat OpenShift clusters and deployments. Configure projects, routes, builds, and deploy applications using OpenShift-specific features. Use when working with OpenShift Container Platform or OKD for enterprise Kubernetes.
license: MIT
metadata:
  author: devops-skills
  version: "1.0"
---

# OpenShift

Deploy and manage applications on Red Hat OpenShift Container Platform.

## When to Use This Skill

Use this skill when:
- Deploying applications to OpenShift clusters
- Using OpenShift-specific features (Routes, BuildConfigs)
- Managing projects and RBAC in OpenShift
- Implementing S2I (Source-to-Image) builds
- Working with OpenShift Operators

## Prerequisites

- OpenShift cluster access
- oc CLI installed
- Basic Kubernetes knowledge

## CLI Basics

### Authentication

```bash
# Login to cluster
oc login https://api.cluster.example.com:6443 -u admin -p password

# Login with token
oc login --token=sha256~xxxx --server=https://api.cluster.example.com:6443

# Check current context
oc whoami
oc whoami --show-server
oc whoami --show-context

# Logout
oc logout
```

### Project Management

```bash
# Create project (namespace)
oc new-project myapp --display-name="My App" --description="My Application"

# Switch project
oc project myapp

# List projects
oc projects

# Delete project
oc delete project myapp
```

## Deploying Applications

### From Image

```bash
# Deploy from container image
oc new-app --image=nginx:latest --name=webserver

# Deploy from Docker Hub
oc new-app docker.io/library/nginx:latest

# Deploy with environment variables
oc new-app myimage:latest \
  -e DATABASE_URL=postgres://localhost/db \
  -e APP_ENV=production
```

### From Source (S2I)

```bash
# Deploy from Git repository
oc new-app https://github.com/org/myapp.git

# Specify builder image
oc new-app nodejs:18~https://github.com/org/nodejs-app.git

# With context directory
oc new-app https://github.com/org/monorepo.git \
  --context-dir=backend \
  --name=backend-api
```

### From Template

```bash
# List available templates
oc get templates -n openshift

# Deploy from template
oc new-app postgresql-persistent \
  -p POSTGRESQL_USER=user \
  -p POSTGRESQL_PASSWORD=secret \
  -p POSTGRESQL_DATABASE=mydb
```

## Routes

### Creating Routes

```yaml
apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: myapp
spec:
  host: myapp.apps.cluster.example.com
  to:
    kind: Service
    name: myapp
    weight: 100
  port:
    targetPort: 8080
  tls:
    termination: edge
    insecureEdgeTerminationPolicy: Redirect
```

```bash
# Create route via CLI
oc expose svc/myapp

# Create with custom hostname
oc create route edge myapp \
  --service=myapp \
  --hostname=myapp.apps.cluster.example.com

# Create passthrough route (TLS termination at pod)
oc create route passthrough myapp-secure --service=myapp
```

### A/B Testing

```yaml
apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: myapp
spec:
  to:
    kind: Service
    name: myapp-v1
    weight: 90
  alternateBackends:
    - kind: Service
      name: myapp-v2
      weight: 10
```

## Build Configurations

### BuildConfig

```yaml
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
  name: myapp
spec:
  source:
    type: Git
    git:
      uri: https://github.com/org/myapp.git
      ref: main
  strategy:
    type: Docker
    dockerStrategy:
      dockerfilePath: Dockerfile
  output:
    to:
      kind: ImageStreamTag
      name: myapp:latest
  triggers:
    - type: ConfigChange
    - type: GitHub
      github:
        secret: webhook-secret
```

### S2I Build

```yaml
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
  name: myapp
spec:
  source:
    type: Git
    git:
      uri: https://github.com/org/myapp.git
  strategy:
    type: Source
    sourceStrategy:
      from:
        kind: ImageStreamTag
        namespace: openshift
        name: nodejs:18-ubi8
      env:
        - name: NPM_RUN
          value: start
  output:
    to:
      kind: ImageStreamTag
      name: myapp:latest
```

### Build Commands

```bash
# Start build
oc start-build myapp

# Start build from local source
oc start-build myapp --from-dir=.

# Follow build logs
oc start-build myapp --follow

# View build logs
oc logs -f bc/myapp

# Cancel build
oc cancel-build myapp-1
```

## Image Streams

```yaml
apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
  name: myapp
spec:
  lookupPolicy:
    local: true
  tags:
    - name: latest
      from:
        kind: DockerImage
        name: registry.example.com/myapp:latest
      importPolicy:
        scheduled: true
```

```bash
# Create image stream
oc create imagestream myapp

# Import image
oc import-image myapp:latest \
  --from=docker.io/library/nginx:latest \
  --confirm

# Tag image
oc tag myapp:latest myapp:production
```

## Deployment Configs

```yaml
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp
          image: myapp:latest
          ports:
            - containerPort: 8080
          resources:
            requests:
              memory: "128Mi"
              cpu: "100m"
            limits:
              memory: "256Mi"
              cpu: "500m"
  triggers:
    - type: ConfigChange
    - type: ImageChange
      imageChangeParams:
        automatic: true
        containerNames:
          - myapp
        from:
          kind: ImageStreamTag
          name: myapp:latest
  strategy:
    type: Rolling
    rollingParams:
      maxSurge: 25%
      maxUnavailable: 25%
```

## ConfigMaps and Secrets

```bash
# Create ConfigMap
oc create configmap myapp-config \
  --from-literal=APP_ENV=production \
  --from-file=config.yaml

# Create Secret
oc create secret generic myapp-secrets \
  --from-literal=password=secret123

# Mount as volume
oc set volume dc/myapp \
  --add --name=config \
  --type=configmap \
  --configmap-name=myapp-config \
  --mount-path=/etc/config

# Set as environment
oc set env dc/myapp --from=secret/myapp-secrets
```

## Security Context Constraints

```bash
# List SCCs
oc get scc

# View SCC details
oc describe scc restricted

# Grant SCC to service account
oc adm policy add-scc-to-user anyuid -z myapp-sa -n myproject

# Create service account
oc create serviceaccount myapp-sa
```

### Custom SCC

```yaml
apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
metadata:
  name: myapp-scc
allowPrivilegedContainer: false
runAsUser:
  type: MustRunAsNonRoot
seLinuxContext:
  type: MustRunAs
fsGroup:
  type: RunAsAny
volumes:
  - configMap
  - secret
  - persistentVolumeClaim
users:
  - system:serviceaccount:myproject:myapp-sa
```

## Operators

```bash
# List available operators
oc get packagemanifests -n openshift-marketplace

# Subscribe to operator
cat <<EOF | oc apply -f -
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: prometheus
  namespace: openshift-operators
spec:
  channel: stable
  name: prometheus
  source: community-operators
  sourceNamespace: openshift-marketplace
EOF

# View installed operators
oc get csv -n openshift-operators
```

## Monitoring

```bash
# View pod logs
oc logs -f pod/myapp-1-xyz

# View events
oc get events --sort-by='.lastTimestamp'

# Resource usage
oc adm top pods
oc adm top nodes

# Debug pod
oc debug pod/myapp-1-xyz
```

## Common Issues

### Issue: Build Fails
**Problem**: S2I build cannot find dependencies
**Solution**: Check builder image, verify source repository access

### Issue: Pod Security Violation
**Problem**: Pod fails to start due to SCC
**Solution**: Use appropriate SCC or modify container security context

### Issue: Route Not Working
**Problem**: Cannot access application via route
**Solution**: Verify service selector, check router pods, validate DNS

### Issue: Image Pull Error
**Problem**: Cannot pull image from registry
**Solution**: Create image pull secret, link to service account

```bash
oc create secret docker-registry regcred \
  --docker-server=registry.example.com \
  --docker-username=user \
  --docker-password=pass

oc secrets link default regcred --for=pull
```

## Best Practices

- Use Projects for isolation (not just namespaces)
- Leverage ImageStreams for image management
- Use BuildConfigs for CI/CD integration
- Implement proper SCCs (avoid privileged)
- Use Routes instead of Ingress
- Leverage OpenShift templates for repeatability
- Monitor with built-in Prometheus
- Use Operators for complex applications

## Related Skills

- [kubernetes-ops](../kubernetes-ops/) - K8s fundamentals
- [helm-charts](../helm-charts/) - Helm deployments
- [container-registries](../../containers/container-registries/) - Image management

© devops-skills · MIT · BagelHole/DevOps-Security-Agent-Skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой