Openshift – Поделки Из Красной Шляпы



Опеншифт

  1. Разворачивание Openshift.
  2. Настройка после установки.

  3. Создание и подключение ФВ.

  4. Создание и внедрение проекта Red Hat Decision Manager (корпоративный аналог kie-workbench).

  5. Создание и развертывание проектов AMQ (red Hat active mq) и postgressql с использованием постоянного хранилища.

  6. Создание отдельных проектов для сервисов, шаблонов для них, пайплайна, интеграция с gitlab, gitlab regestry.


1. Сканирование Openshift

Требования к серверам, подготовка DNS серверов, список имен серверов, требования к серверам.

Минимальные требования краткие — все серверы должны иметь минимум 16Gb Ram 2 ядра и минимум 100 гигабайт для нужд докера.

DNS на основе привязки должен иметь следующую конфигурацию.

dkm — мастер, dk0 — исполняющий, ifr — инфраструктура, bln — балансировщик, shd — nfs, dkr — управляющий узел, с помощью которого происходила настройка кластера, он также планировался как отдельный узел для докерного реестра.

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   

db.osh $TTL 1h @ IN SOA test.osh. root.test.osh. ( 2008122601 ; Serial 28800 ; Refresh 14400 ; Retry 604800 ; Expire - 1 week 86400 ) ; Minimum @ IN NS test.osh. @ IN A 127.0.0.1 rnd-osh-dk0-t01 IN A 10.19.86.18 rnd-osh-dk0-t02 IN A 10.19.86.19 rnd-osh-dk0-t03 IN A 10.19.86.20 rnd-osh-dkm-t01 IN A 10.19.86.21 rnd-osh-dkm-t02 IN A 10.19.86.22 rnd-osh-dkm-t03 IN A 10.19.86.23 rnd-osh-ifr-t01 IN A 10.19.86.24 rnd-osh-ifr-t02 IN A 10.19.86.25 rnd-osh-ifr-t03 IN A 10.19.86.26 rnd-osh-bln-t01 IN A 10.19.86.27 rnd-osh-shd-t01 IN A 10.19.86.28 rnd-osh-dkr-t01 IN A 10.19.86.29 lb IN A 10.19.86.27 openshift IN A 10.19.86.27 api-openshift IN A 10.19.86.27 *.

apps.openshift IN A 10.19.86.21 *.

apps.openshift IN A 10.19.86.22 *.

apps.openshift IN A 10.19.86.23



db.rv.osh $TTL 1h @ IN SOA test.osh. root.test.osh. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS test.osh. @ IN A 127.0.0.1 18 IN PTR rnd-osh-dk0-t01.test.osh. 19 IN PTR rnd-osh-dk0-t02.test.osh. 20 IN PTR rnd-osh-dk0-t03.test.osh. 21 IN PTR rnd-osh-dkm-t01.test.osh. 22 IN PTR rnd-osh-dkm-t02.test.osh. 23 IN PTR rnd-osh-dkm-t03.test.osh. 24 IN PTR rnd-osh-ifr-t01.test.osh. 25 IN PTR rnd-osh-ifr-t02.test.osh. 26 IN PTR rnd-osh-ifr-t03.test.osh. 27 IN PTR rnd-osh-bln-t01.test.osh. 28 IN PTR rnd-osh-shd-t01.test.osh. 29 IN PTR rnd-osh-dkr-t01.test.osh. 27 IN PTR lb.test.osh. 27 IN PTR api-openshift.test.osh. named.conf.default-zones



zone "test.osh" IN { type master; file "/etc/bind/db.osh"; allow-update { none; }; notify no; }; zone "86.19.10.in-addr.arpa" { type master; file "/etc/bind/db.rv.osh"; };

Подготовка сервера После подключения подписки.

Включение репозиториев и установка изначально необходимых пакетов.



rm -rf /etc/yum.repos.d/cdrom.repo subscription-manager repos --disable="*" subscription-manager repos --enable="rhel-7-server-rpms" --enable="rhel-7-server-extras-rpms" --enable="rhel-7-server-ose-3.10-rpms" --enable="rhel-7-server-ansible-2.4-rpms" yum -y install wget git net-tools bind-utils yum-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct yum -y update yum -y install docker

Конфигурация хранилища Docker (отдельный диск).



systemctl stop docker rm -rf /var/lib/docker/* echo "STORAGE_DRIVER=overlay2" > /etc/sysconfig/docker-storage-setup echo "DEVS=/dev/sdc" >> /etc/sysconfig/docker-storage-setup echo "CONTAINER_ROOT_LV_NAME=dockerlv" >> /etc/sysconfig/docker-storage-setup echo "CONTAINER_ROOT_LV_SIZE=100%FREE" >> /etc/sysconfig/docker-storage-setup echo "CONTAINER_ROOT_LV_MOUNT_PATH=/var/lib/docker" >> /etc/sysconfig/docker-storage-setup echo "VG=docker-vg" >> /etc/sysconfig/docker-storage-setup systemctl enable docker docker-storage-setup systemctl is-active docker systemctl restart docker docker info | grep Filesystem

Установка остальных необходимых пакетов.



yum -y install atomic atomic trust show yum -y install docker-novolume-plugin systemctl enable docker-novolume-plugin systemctl start docker-novolume-plugin yum -y install openshift-ansible

Создание и добавление пользователя и ключей.



useradd --create-home --groups users,wheel ocp sed -i 's/# %wheel/%wheel/' /etc/sudoers mkdir -p /home/ocp/.

ssh echo "ssh-rsa AAAAB3NzaC.8Ogb3Bv ocp SSH Key" >> /home/ocp/.

ssh/authorized_keys

В случае конфликта с уже используемыми подсетями измените адресацию по умолчанию внутри контейнеров.



echo '{ "bip": "172.26.0.1/16" }' > /etc/docker/daemon.json systemctl restart docker

Конфигурация сетевого менеджера.

(DNS должен иметь возможность выхода во внешний мир)

nmcli connection modify ens192 ipv4.dns 172.17.70.140 nmcli connection modify ens192 ipv4.dns-search cluster.local +ipv4.dns-search test.osh +ipv4.dns-search cpgu systemctl stop firewalld systemctl disable firewalld systemctl restart network

Редактирование при необходимости названия автомобиля на полное.



hhh=$(cat /etc/hostname) echo "$hhh".

test.osh > /etc/hostname

После выполнения шагов перезагрузите сервер.



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

Отличие узла управления от остальных в том, что нет необходимости подключать докер к отдельному диску.

Также необходимо настроить ntp.

yum install ntp -y systemctl enable ntpd service ntpd start service ntpd status ntpq -p chmod 777 -R /usr/share/ansible/openshift-ansible/

Вам также необходимо добавить закрытый ключ пользователю ocp. Зайдите по ssh под пользователем ocp на все ноды.

Подготовка файла инвентаризации и развертывание кластера.



host-poc.yaml [OSEv3:children] masters nodes etcd lb nfs [OSEv3:vars] ansible_ssh_user=ocp ansible_become=yes openshift_override_hostname_check=True openshift_master_cluster_method=native openshift_disable_check=memory_availability,disk_availability,package_availability openshift_deployment_type=openshift-enterprise openshift_release=v3.10 oreg_url=registry.access.redhat.com/openshift3/ose-${component}:${version} debug_level=2 os_firewall_use_firewalld=True openshift_install_examples=true openshift_clock_enabled=True openshift_router_selector='node-role.kubernetes.io/infra=true' openshift_registry_selector='node-role.kubernetes.io/infra=true' openshift_examples_modify_imagestreams=true os_sdn_network_plugin_name='redhat/openshift-ovs-multitenant' openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}] openshift_master_htpasswd_users={'admin': '$apr1$pQ3QPByH$5BDkrp0m5iclRske.M0m.0'} openshift_master_default_subdomain=apps.openshift.test.osh openshift_master_cluster_hostname=api-openshift.test.osh openshift_master_cluster_public_hostname=openshift.test.osh openshift_enable_unsupported_configurations=true openshift_use_crio=true openshift_crio_enable_docker_gc=true # registry openshift_hosted_registry_storage_kind=nfs openshift_hosted_registry_storage_access_modes=['ReadWriteMany'] openshift_hosted_registry_storage_nfs_directory=/exports openshift_hosted_registry_storage_nfs_options='*(rw,root_squash)' openshift_hosted_registry_storage_volume_name=registry openshift_hosted_registry_storage_volume_size=30Gi # cluster monitoring openshift_cluster_monitoring_operator_install=true openshift_cluster_monitoring_operator_node_selector={'node-role.kubernetes.io/master': 'true'} #metrics openshift_metrics_install_metrics=true openshift_metrics_hawkular_nodeselector={"node-role.kubernetes.io/infra": "true"} openshift_metrics_cassandra_nodeselector={"node-role.kubernetes.io/infra": "true"} openshift_metrics_heapster_nodeselector={"node-role.kubernetes.io/infra": "true"} openshift_metrics_storage_kind=nfs openshift_metrics_storage_access_modes=['ReadWriteOnce'] openshift_metrics_storage_nfs_directory=/exports openshift_metrics_storage_nfs_options='*(rw,root_squash)' openshift_metrics_storage_volume_name=metrics openshift_metrics_storage_volume_size=20Gi #logging openshift_logging_kibana_nodeselector={"node-role.kubernetes.io/infra": "true"} openshift_logging_curator_nodeselector={"node-role.kubernetes.io/infra": "true"} openshift_logging_es_nodeselector={"node-role.kubernetes.io/infra": "true"} openshift_logging_install_logging=true openshift_logging_es_cluster_size=1 openshift_logging_storage_kind=nfs openshift_logging_storage_access_modes=['ReadWriteOnce'] openshift_logging_storage_nfs_directory=/exports openshift_logging_storage_nfs_options='*(rw,root_squash)' openshift_logging_storage_volume_name=logging openshift_logging_storage_volume_size=20Gi #ASB ansible_service_broker_install=true openshift_hosted_etcd_storage_kind=nfs openshift_hosted_etcd_storage_nfs_options="*(rw,root_squash,sync,no_wdelay)" openshift_hosted_etcd_storage_nfs_directory=/opt/osev3-etcd openshift_hosted_etcd_storage_volume_name=etcd-vol2 openshift_hosted_etcd_storage_access_modes=["ReadWriteOnce"] openshift_hosted_etcd_storage_volume_size=30G openshift_hosted_etcd_storage_labels={'storage': 'etcd'} ansible_service_broker_local_registry_whitelist=['.

*-apb$'] #cloudforms #openshift_management_install_management=true #openshift_management_app_template=cfme-template # host group for masters [masters] rnd-osh-dkm-t0[1:3].

test.osh # host group for etcd [etcd] rnd-osh-dkm-t0[1:3].

test.osh [lb] rnd-osh-bln-t01.test.osh containerized=False [nfs] rnd-osh-shd-t01.test.osh [nodes] rnd-osh-dkm-t0[1:3].

test.osh openshift_node_group_name='node-config-master' rnd-osh-ifr-t0[1:3].

test.osh openshift_node_group_name='node-config-infra' rnd-osh-dk0-t0[1:3].

test.osh openshift_node_group_name='node-config-compute'

Запуск плейбуков по одному.



ansible-playbook -i host-poc.yaml /usr/share/ansible/openshift-ansible/playbooks/prerequisites.yml ansible-playbook -i host-poc.yaml /usr/share/ansible/openshift-ansible/playbooks/openshift-checks/pre-install.yml ansible-playbook -i host-poc.yaml /usr/share/ansible/openshift-ansible/playbooks/deploy_cluster.yml

Если все хорошо, конечный результат будет примерно следующим.



Openshift – поделки из красной шляпы

Редактирование локального файла хоста для проверки после установки работы oprenshift через веб-интерфейс.



10.19.86.18 rnd-osh-dk0-t01.test.osh 10.19.86.19 rnd-osh-dk0-t02.test.osh 10.19.86.20 rnd-osh-dk0-t03.test.osh 10.19.86.21 rnd-osh-dkm-t01.test.osh 10.19.86.22 rnd-osh-dkm-t02.test.osh 10.19.86.23 rnd-osh-dkm-t03.test.osh 10.19.86.24 rnd-osh-ifr-t01.test.osh 10.19.86.25 rnd-osh-ifr-t02.test.osh 10.19.86.26 rnd-osh-ifr-t03.test.osh 10.19.86.27 rnd-osh-bln-t01.test.osh openshift.test.osh 10.19.86.28 rnd-osh-shd-t01.test.osh 10.19.86.29 rnd-osh-dkr-t01.test.osh

Проверить по URL openshift.test.osh :8443

2. Настройка после установки

Зайдите в ДКМ.



oc login -u system:admin oc adm policy add-cluster-role-to-user cluster-admin admin --rolebinding-name=cluster-admin

Убедитесь, что в веб-интерфейсе можно увидеть ранее скрытые проекты (например, openshift).



3. Создание и подключение Ф?.

Создание постоянного тома на сервере nfs.

mkdir -p /exports/examplpv chmod -R 777 /exports/examplpv chown nfsnobody:nfsnobody -R /exports/examplpv echo '"/exports/examplpv" *(rw,root_squash)' >> /etc/exports.d/openshift-ansible.exports exportfs -ar restorecon -RvF

Добавление PV в openshift. Вам необходимо создать проект oc new-project exampleplpv-project. Если проект уже создан, перейдите к нему oc project exampleplpv-project. Создайте yaml со следующим содержимым.



apiVersion: v1 kind: PersistentVolume metadata: name: examplpv-ts1 spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce nfs: path: /exports/examplpv server: rnd-osh-shd-t01 persistentVolumeReclaimPolicy: Recycle

И примените это.

oc применить -f имя_файла.

yaml После выполнения

oc get pv

созданный PV будет виден в списке.



4. Создание и внедрение проекта Red Hat Decision Manager (корпоративный аналог kie-workbench)

Проверьте наличие шаблонов.



oc get imagestreamtag -n openshift | grep rhdm



Openshift – поделки из красной шляпы

Добавление шаблонов - ссылку и более полное описание можно найти

unzip rhdm-7.2.1-openshift-templates.zip -d .

/rhdm-7.2.1-openshift-templates

Создадим новый проект:

oc new-project rhdm72

Добавляем авторизацию на докер-сервере реестра.

redhat.io:

docker login registry.redhat.io cat ~/.

docker/config.json oc create secret generic pull-secret-name --from-file=.

dockerconfigjson=/root/.

docker/config.json --type=kubernetes.io/dockerconfigjson oc secrets link default pull-secret-name --for=pull oc secrets link builder pull-secret-name

Импортируйте поток изображений, создайте ключи Decision Server, Decision Central.

keytool -genkeypair -alias jboss -keyalg RSA -keystore keystore.jks -storepass mykeystorepass --dname "CN=STP,OU=Engineering,O=POC.mos,L=Raleigh,S=NC,C=RU" oc create -f rhdm72-image-streams.yaml oc create secret generic kieserver-app-secret --from-file=keystore.jks oc create secret generic decisioncentral-app-secret --from-file=keystore.jks

Создание постоянного тома на сервере nfs.

mkdir -p /exports/rhdm72 chmod -R 777 /exports/rhdm72 chown nfsnobody:nfsnobody -R /exports/rhdm72 echo '"/exports/rhamq72" *(rw,root_squash)' >> /etc/exports.d/openshift-ansible.exports exportfs -ar restorecon -RvF

Добавьте PV в проект:

apiVersion: v1 kind: PersistentVolume metadata: name: rhdm72-pv1 spec: capacity: storage: 20Gi accessModes: - ReadWriteMany nfs: path: /exports/rhdm72 server: rnd-osh-shd-t01 persistentVolumeReclaimPolicy: Recycle

rhdm70 необходимые параметры PV Режимы доступа: -ReadWriteOnce но в 7.2 это уже требуется Режимы доступа: — ЧитатьЗаписьМного Применить - oc apply -f имя_файла.

yaml + проверьте, что созданный пв стал доступен.



Openshift – поделки из красной шляпы

создать приложение из шаблонов согласно официальной документации.



oc new-app -f rhdm-7.2.1-openshift-templates/templates/rhdm72-authoring.yaml -p DECISION_CENTRAL_HTTPS_SECRET=decisioncentral-app-secret -p KIE_SERVER_HTTPS_SECRET=kieserver-app-secret

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

До этого момента статус будет такой.



Openshift – поделки из красной шляпы

Если перейти по ссылке на изображение, появится следующая ошибка:

Openshift – поделки из красной шляпы

Вам необходимо изменить URL-адрес загрузки изображения, выбрав «Редактировать yaml» с «register.redhat.io» на «register.access.redhat.com».



Openshift – поделки из красной шляпы

Чтобы перейти к развернутому сервису в его веб-интерфейсе, вам необходимо добавить следующий URL-адрес в файл хостов

Openshift – поделки из красной шляпы

на любом из инфраузлов

19.10.86.25 rnd-osh-ifr-t02.test.osh myapp-rhdmcentr-rhdm72.apps.openshift.test.osh


Openshift – поделки из красной шляпы



5. Создание и развертывание проектов AMQ (red Hat active mq) и postgressql с использованием постоянного хранилища.

РАМК Давайте создадим новый проект

oc new-project rhamq-and-pgsql

Импортируем изображения, если они отсутствуют.

oc replace --force -f https://raw.githubusercontent.com/jboss-container-images/jboss-amq-7-broker-openshift-image/72-1.1.GA/amq-broker-7-image-streams.yaml oc replace --force -f https://raw.githubusercontent.com/jboss-container-images/jboss-amq-7-broker-openshift-image/72-1.1.GA/amq-broker-7-scaledown-controller-image-streams.yaml oc import-image amq-broker-72-openshift:1.1 oc import-image amq-broker-72-scaledown-controller-openshift:1.0

Установка шаблонов

for template in amq-broker-72-basic.yaml \ amq-broker-72-ssl.yaml \ amq-broker-72-custom.yaml \ amq-broker-72-persistence.yaml \ amq-broker-72-persistence-ssl.yaml \ amq-broker-72-persistence-clustered.yaml \ amq-broker-72-persistence-clustered-ssl.yaml; do oc replace --force -f \ https://raw.githubusercontent.com/jboss-container-images/jboss-amq-7-broker-openshift-image/72-1.1.GA/templates/${template } done

Добавление роли в сервисный аккаунт.

oc policy add-role-to-user view -z default

Создание пв на nfs сервере

mkdir -p /exports/pgmq chmod -R 777 /exports/pgmq chown nfsnobody:nfsnobody -R /exports/pgmq echo '"/exports/pgmq" *(rw,root_squash)' >> /etc/exports.d/openshift-ansible.exports exportfs -ar restorecon -RvF

Создание Ямла pgmq_storage.yaml

apiVersion: v1 kind: PersistentVolume metadata: name: pgmq-ts1 spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce nfs: path: /exports/pgmq server: rnd-osh-shd-t01 persistentVolumeReclaimPolicy: Recycle

Мы используем пв

oc apply -f pgmq_storage.yaml

Создать по шаблону

Openshift – поделки из красной шляпы

готовый

Openshift – поделки из красной шляпы

Другие варианты с SSL, кластеризацией и т. д. вы можете посмотреть в документации.

access.redhat.com/documentation/en-us/red_hat_amq/7.2/html/deploying_amq_broker_on_openshift_container_platform Постгреск Создаем еще один PV точно так же, как мы это делали для MQ.

mkdir -p /exports/pgmq2 chmod -R 777 /exports/pgmq2 chown nfsnobody:nfsnobody -R /exports/pgmq2 echo '"/exports/pgmq2" *(rw,root_squash)' >> /etc/exports.d/openshift-ansible.exports exportfs -ar restorecon -RvF

pgmq_storage.yaml

apiVersion: v1 kind: PersistentVolume metadata: name: pgmq-ts2 spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce nfs: path: /exports/pgmq2 server: rnd-osh-shd-t01 persistentVolumeReclaimPolicy: Recycle



Openshift – поделки из красной шляпы

Заполните необходимые параметры

Openshift – поделки из красной шляпы



Openshift – поделки из красной шляпы

готовый.



6. Создание отдельных проектов для сервисов, шаблонов для них, пайплайна, интеграция с gitlab, gitlab regestry

Первым шагом является создание проекта.



oc new-project ttttt



Openshift – поделки из красной шляпы

Не имея шаблона, вы можете создать приложение вручную.

Есть два пути.

Первый просто использовать готовый образ, но тогда версионирование образа и т.п.

будет недоступно, но в некоторых случаях это будет актуально.

Прежде всего, вам необходимо внести данные аутентификации в реестр.

На примере собранного образа в Gitlab это делается так.



Openshift – поделки из красной шляпы

Во-первых, вам нужно создать секреты для доступа к реестру докеров — посмотрите параметры и синтаксис.



oc create secret docker-registry

Тогда давай создадим секрет

oc create secret docker-registry gitlabreg --docker-server='gitlab.xxx.com:4567' --docker-username='gitlab+deploy-token-1' --docker-password='syqTBSMjHtT_t-X5fiSY' --docker-email='email'

Далее давайте создадим наше приложение.



oc new-app --docker-image='gitlab.xxx.com:4567/oko/oko-service:latest'

Если что-то пошло не так и изображение не растягивается в свойствах приложения, указываем секрет в наш регестр.



Openshift – поделки из красной шляпы

Затем добавляем необходимые переменные среды.



Openshift – поделки из красной шляпы

Готово – контейнер жив.

Затем нажмите «Редактировать yaml» справа и укажите порты.



Openshift – поделки из красной шляпы

Далее, чтобы получить доступ к нашему контейнеру, вам нужно создать маршрут, но без сервиса его создать невозможно, поэтому первое, что вам нужно сделать, это создать сервис.

сервис.

yaml

kind: Service apiVersion: v1 metadata: name: oko-service spec: type: ClusterIP ports: - port: 9000 protocol: TCP targetPort: 9000 selector: app: oko-service sessionAffinity: None status: loadBalancer: {}



oc apply -f service.yaml

Создайте маршрут.

Openshift – поделки из красной шляпы

мы пишем URL-адрес в хостах на нашей машине, глядя на один из инфраструктурных узлов.



Openshift – поделки из красной шляпы

мы пишем URL-адрес в хостах на нашей машине, глядя на один из инфраструктурных узлов.

Готовый.

Образец.

Шаблон создается путем загрузки в yaml по отдельности всех компонентов, принадлежащих сервису.

А именно в данном случае это секреты dc Service Route. Вы можете увидеть все, что было сделано в конкретном проекте.



oc get all

загрузите те, которые вас интересуют

oc get deploymentconfig.apps.openshift.io oko-service -o yaml

или

oc get dс oko-service -o yaml

Дальше можно взять за основу любой шаблон для opensihft и интегрировать полученное для получения шаблона.

В этом случае результат будет выглядеть так: шаблон.

yaml

kind: "Template" apiVersion: "v1" metadata: name: oko-service-template objects: - kind: DeploymentConfig apiVersion: v1 metadata: name: oko-service annotations: description: "ImageStream Defines how to build the application oko-service" labels: app: oko-service spec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: oko-service deploymentconfig: oko-service template: metadata: labels: app: oko-service spec: selector: app: oko-service deploymentconfig: oko-service containers: - env: - name: serverPort value: "9000" - name: storeLogin value: "iii" - name: storePassword value: "trCsm5" - name: storeApiUrl value: " http://14.75.41.20/custom-api-2.0/CustomWebService2 " - name: storeWsdlUrl value: " http://14.75.41.20/custom-api-2.0/CustomWebService2/CustomWebService2.wsdl " - name: logLevel value: "INFO" - name: logPath value: "/var/log/efp-oko.log" ports: - containerPort: 9000 name: acces protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: / port: 9000 scheme: HTTP initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 image: gitlab.xxx. com:4567/oko/oko-service imagePullPolicy: Always name: oko-service imagePullSecrets: - name: gitlab.xxx.com type: ImageChange strategy: activeDeadlineSeconds: 21600 resources: {} rollingParams: intervalSeconds: 1 maxSurge: 25% maxUnavailable: 25% timeoutSeconds: 600 updatePeriodSeconds: 5 type: Rolling triggers: - type: "ImageChange" imageChangeParams: automatic: true containerNames: - "oko-service" from: kind: ImageStream name: ' oko-service:latest ' - kind: ImageStream apiVersion: v1 metadata: name: oko-service annotations: openshift.io/generated-by : OpenShiftNewApp labels: app: oko-service deploymentconfig: oko-service spec: dockerImageRepository: gitlab.xxx. com:4567/oko/oko-service tags: - annotations: openshift.io/imported-from : gitlab.xxx. com:4567/oko/oko-service from: kind: DockerImage name: gitlab.xxx. com:4567/oko/oko-service importPolicy: insecure: "true" name: latest referencePolicy: type: Source forcePull: true - kind: Service apiVersion: v1 metadata: name: oko-service spec: type: ClusterIP ports: - port: 9000 protocol: TCP targetPort: 9000 selector: app: oko-service sessionAffinity: None status: loadBalancer: {} - kind: Route apiVersion: route.openshift.io/v1 metadata: name: oko-service spec: host: oko-service.moxs.ru to: kind: Service name: oko-service weight: 100 wildcardPolicy: None status: ingress: - conditions: host: oko-service.xxx.com routerName: router wildcardPolicy: None

Вы также можете добавить сюда секреты; в следующем примере мы рассмотрим вариант сервиса со сборкой на стороне openshift, где секреты будут в шаблоне.

Второй способ Создание проекта с полными этапами сборки образа, простым конвейером и Push-сборкой.

Прежде всего, давайте создадим новый проект. Сначала вам нужно создать Buildconfig из Git (в данном случае в проекте есть три файла Docker: обычный файл Docker, предназначенный для Docker версии 1.17 выше с использованием двух файлов FROM, и два отдельных файла Dockerfile для сборки базового образа и целевого).

.

) Для доступа к Git, если он приватный, необходима авторизация.

Давайте создадим секрет следующего содержания.



oc create secret generic sinc-git --from-literal=username=gitsinc --from-literal=password=Paaasssword123

Давайте предоставим сервисному аккаунту строителя доступ к нашему секрету.



oc secrets link builder sinc-git

Привяжите секрет к URL-адресу git

oc annotate secret sinc-git ' build.openshift.io/source-secret-match-uri-1=https://gitlab.xxx.com/* '

И, наконец, попробуем создать приложение из Git с ключом --allow-missing-images, так как базовый образ у нас еще не собран.

ок новое приложение gitlab.xxx.com/OKO/oko-service.git --strategy=docker --allow-missing-images Затем нам нужно подогнать сборку под нужный нам dockerfile в созданном buildconfig.

Openshift – поделки из красной шляпы

Мы редактируем

Openshift – поделки из красной шляпы



Openshift – поделки из красной шляпы

Мы также изменяем параметры, чтобы создать базовый контейнер.



Openshift – поделки из красной шляпы

Попробуем сделать из этого два Buildcconfig. Под базовый образ загрузите их в yaml и возьмите нужные.

В результате вы можете получить два таких шаблона.

до н.

э.

-py

kind: "BuildConfig" apiVersion: "v1" metadata: name: "oko-service-build-pyton-ml" labels: app: oko-service spec: completionDeadlineSeconds: 2400 triggers: - type: "ImageChange" source: type: git git: uri: " https://gitlab.xxx.com/OKO/oko-service.git " ref: "master" sourceSecret: name: git-oko strategy: type: Docker dockerStrategy: dockerfilePath: Dockerfile-python-ml forcePull

Теги: #Kubernetes #Openshift #RedHat #openshift v3 #decision Manager #redhat active mq #redhat enterprice linux #openshift persistence Volume

Вместе с данным постом часто просматривают: