Опеншифт
- Разворачивание Openshift.
- Настройка после установки.
- Создание и подключение ФВ.
- Создание и внедрение проекта Red Hat Decision Manager (корпоративный аналог kie-workbench).
- Создание и развертывание проектов AMQ (red Hat active mq) и postgressql с использованием постоянного хранилища.
- Создание отдельных проектов для сервисов, шаблонов для них, пайплайна, интеграция с 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
Если все хорошо, конечный результат будет примерно следующим.
Редактирование локального файла хоста для проверки после установки работы 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
Добавление шаблонов - ссылку и более полное описание можно найти 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 + проверьте, что созданный пв стал доступен.
создать приложение из шаблонов согласно официальной документации.
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
Приложение будет автоматически развернуто после завершения извлечения образов в реестре докеров.
До этого момента статус будет такой.
Если перейти по ссылке на изображение, появится следующая ошибка:
Вам необходимо изменить URL-адрес загрузки изображения, выбрав «Редактировать yaml» с «register.redhat.io» на «register.access.redhat.com».
Чтобы перейти к развернутому сервису в его веб-интерфейсе, вам необходимо добавить следующий URL-адрес в файл хостов
на любом из инфраузлов
19.10.86.25 rnd-osh-ifr-t02.test.osh myapp-rhdmcentr-rhdm72.apps.openshift.test.osh
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
Создать по шаблону
готовый
Другие варианты с 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
Заполните необходимые параметры
готовый.
6. Создание отдельных проектов для сервисов, шаблонов для них, пайплайна, интеграция с gitlab, gitlab regestry
Первым шагом является создание проекта.
oc new-project ttttt
Не имея шаблона, вы можете создать приложение вручную.
Есть два пути.
Первый просто использовать готовый образ, но тогда версионирование образа и т.п.
будет недоступно, но в некоторых случаях это будет актуально.
Прежде всего, вам необходимо внести данные аутентификации в реестр.
На примере собранного образа в Gitlab это делается так.
Во-первых, вам нужно создать секреты для доступа к реестру докеров — посмотрите параметры и синтаксис.
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'
Если что-то пошло не так и изображение не растягивается в свойствах приложения, указываем секрет в наш регестр.
Затем добавляем необходимые переменные среды.
Готово – контейнер жив.
Затем нажмите «Редактировать yaml» справа и укажите порты.
Далее, чтобы получить доступ к нашему контейнеру, вам нужно создать маршрут, но без сервиса его создать невозможно, поэтому первое, что вам нужно сделать, это создать сервис.
сервис.
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
Создайте маршрут.
мы пишем URL-адрес в хостах на нашей машине, глядя на один из инфраструктурных узлов.
мы пишем 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.
Мы редактируем
Мы также изменяем параметры, чтобы создать базовый контейнер.
Попробуем сделать из этого два 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
-
Бейджи На Хабре
19 Oct, 24 -
Виджеты И Сворачивание Окон
19 Oct, 24 -
Смс-Платежи: Как Это Работает
19 Oct, 24 -
Clrium #4: Встреча Сообщества .Net
19 Oct, 24