По сценарию Кента Хуана

Короче говоря: в этой статье мы познакомим вас с несколькими способами установки приложений в системе Kubernetes.

Kubernetes (K8s) стал одним из наиболее организованных проектов с открытым исходным кодом для ИТ-индустрии за последние несколько лет. Тонны приложений были созданы или перемещены в экосистему Kubernetes. Однако Kubernetes также становится кошмаром для тех, кто отвечает за управление и эксплуатацию системы. Обычно мы слышим, как люди говорят, что Kubernetes - это так сложно. Когда я начал использовать систему Kubernetes, я почувствовал, что это не так сложно, но суперсложно. Вместо современных систем Linux в системах Linux есть официальные инструменты управления пакетами, такие как apt или yum. У Kubernetes не было стандартного инструмента управления пакетами. Есть много способов установить приложение в системе Kubernetes. В этой статье мы познакомим вас с несколькими способами установки приложений в системе Kubernetes.

Применить Yaml от Kubectl

Прежде чем говорить об инструментах управления пакетами Kubernetes, мы должны изучить концепцию запуска приложения в кластере Kubernetes. Kube-apiserver будет контролировать все ресурсы Kubernetes. (Например, создание, обновление, удаление и т. Д.) Самый простой способ получить доступ к kube-apiserver - использовать инструмент командной строки «kubectl». Например, если мы хотим создать службу развертывания Nginx в кластере Kubernetes, следующее содержимое конфигурации можно использовать для применения с помощью «kubectl».

# nginx-deployment.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
kubectl apply -f nginx-deployment.yaml

Довольно простой и элегантный способ установки приложений. Однако конфигурация станет более сложной, когда приложения станут больше. Некоторые проекты будут пытаться реализовать установщик самостоятельно и напрямую общаться с Kubernetes. (Пример: kfctl от Kubeflow) Или мы можем использовать некоторые вспомогательные инструменты.

Kustomize

Kustomize - это инструмент командной строки без шаблонов для управления конфигурацией в Kubernetes. Начиная с Kubernetes v1.14, Kustomize стал встроенной функцией в kubectl. Kustomize может помочь вам легко применить различные версии файлов конфигурации в кластере Kubernetes. Для различных сред или настройки значений Kustomize может помочь исправить с помощью одной команды.

Основной файл конфигурации Kustomize - kustomization.yaml. Программа kustomize прочитает файлы, объявленные в kustomization.yaml, и применит их к кластеру Kubernetes. Следующая команда является примером, показывающим, как использовать Kustomize deploy nginx-ingress в разных средах.

git clone https://github.com/kubernetes/ingress-nginx.git  
# Deploy to bare-metal Kubernetes cluster 
kubectl apply -k ingress-nginx/deploy/static/provider/bare-metal  
# Or deploy to Kubernetes cluster on the cloud 
kubectl apply -k ingress-nginx/deploy/static/provider/cloud

Шлем

Вместо Kustomize - это инструмент управления конфигурацией, Helm больше похож на инструмент управления пакетами для Kubernetes. Мы можем использовать Helm для установки приложений в Kubernetes без получения какой-либо конфигурации. Нам нужно только добавить общедоступный репозиторий Helm Charts приложений, после чего мы сможем установить приложение напрямую.

helm repo add nginx-stable https://helm.nginx.com/stable  
helm repo update  
helm install my-release nginx-stable/nginx-ingress

«Диаграммы» - это формат упаковки, используемый Helm. Диаграмма - это набор файлов, описывающих связанный набор ресурсов Kubernetes. Просто нравятся файлы конфигурации YAML, которые мы вручную применили с помощью kubectl. Кроме того, диаграмма рулевого управления представляет собой набор файлов конфигурации и генератор конфигурации на основе шаблона в диаграмме. Разработчик может использовать программируемый способ реализации рулевой диаграммы.

Когда пользователи устанавливают диаграмму управления, Helm может сгенерировать соответствующие файлы конфигурации на основе параметров установки, указанных при установке.

Установите PrimeHub от Helm Chart

PrimeHub - это платформа машинного обучения, которая позволяет командам AI / ML сосредоточиться на своей реальной производительности в среде совместной работы. Все программные стеки PrimeHub основаны на Kubernetes. PrimeHub также предоставляет простой способ использовать общедоступную диаграмму управления для установки.

PRIMEHUB_DOMAIN=1.2.3.4.nip.io # Use your domain name
cat <<EOF > primehub-values.yaml
primehub:
  domain: ${PRIMEHUB_DOMAIN}
ingress:
  annotations:
    kubernetes.io/ingress.allow-http: "true"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
  hosts:
  - ${PRIMEHUB_DOMAIN}
EOF
helm repo add infuseai https://charts.infuseai.io
helm repo update
helm install primehub infuseai/primehub \
    --create-namespace \
    --namespace hub \
    --timeout 10m \
   --values primehub-values.yaml \
   --values https://raw.githubusercontent.com/InfuseAI/primehub/master/examples/ee-values.yaml

После ожидания 5+ минут PrimeHub будет установлен в вашем кластере Kubernetes. Учетная запись по умолчанию - phadmin, и пароль будет сгенерирован случайным образом. Следующая команда используется для получения открытого текста пароля. Для доступа вы можете использовать доменное имя, указанное в конфигурации helm.

kubectl get secret -n hub primehub-bootstrap -o jsonpath='{.data.password}' | base64 -d

Оставьте мне комментарий и скажите, какой из них вы предпочитаете. Не стесняйтесь задавать вопросы и хлопайте в ладоши, если эта статья вам поможет!

Следите за InfuseAI в твиттере: https://twitter.com/InfuseAI
Подпишитесь на рассылку новостей: http://eepurl.com/hyI2TD