Поскольку gogs.io предлагает образ докера, я подумал, что должно быть просто установить его поверх контейнерного движка Google с кубернетами.
После нескольких часов возни у меня теперь есть два файла конфигурации, поскольку я видел их в теме. Вот:
Файлы в потоке задач используют ReplicationController вместо модуля. И служба также не использует LoadBalancer в качестве типа - я тоже не мог заставить его работать таким образом, поэтому я изменил его на модуль и службу, включая LoadBalancer как в учебнике Google по wordpress
gogs.yml:
apiVersion: v1
kind: Pod
metadata:
name: gogs
labels:
name: gogs
spec:
containers:
- name: gogs
image: gogs/gogs
ports:
- containerPort: 3000
- containerPort: 22
volumeMounts:
- mountPath: /data
name: data
- name: postgres
image: postgres
ports:
- containerPort: 5432
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres
env:
- name: POSTGRES_USER
value: "gogs"
- name: POSTGRES_PASSWORD
value: "gogs"
volumes:
- name: data
gcePersistentDisk:
# This disk must already exist.
pdName: gogs-stage-data-disk
fsType: ext4
- name: postgres
gcePersistentDisk:
# This disk must already exist.
pdName: gogs-stage-postgres-disk
fsType: ext4
gogs-service.yml:
apiVersion: v1
kind: Service
metadata:
labels:
name: gogs-frontend
name: gogs-frontend
spec:
type: LoadBalancer
ports:
# The port that this service should serve on.
- port: 80
targetPort: 3000
protocol: TCP
selector:
name: gogs
Затем я выполнил в основном те же шаги, что и в этот учебник включить внешние диски для каталогов данных и db.
Создайте новый проект, установите зону вычислений (набор конфигурации gcloud ..)
Создать новый кластер gcloud container clusters create gogs-stage --num-nodes 1
Создать новые постоянные диски
gcloud compute disks create --size 200GB gogs-stage-data-disk
gcloud compute disks create --size 200GB gogs-stage-postgres-disk
Создать под kubectl create -f gogs.yml
Создайте сервис kubectl create -f gogs-service.yml
Теперь в момент создания модуля он никогда не переключается из состояния «Ожидание» в состояние «Готово», даже если я жду несколько минут - я проверяю kubectl get pod gogs
Что не так с моей настройкой? И как это проверить? Я могу войти в систему с помощью ssh ... когда я смотрю туда в / var / log / messages, я вижу некоторые ошибки докеров в конце файла, говорящие:
aufs au_opts_verify:1570:docker[4711]: dir perm1 breaks the protection by the permission bits on the lower branch
Но только с этим я пока не мог найти ничего, что указывало бы мне в правильном направлении. Любая помощь очень ценится :)
Вы также должны указать расположение каталога данных по умолчанию, используя PGDATA
переменная окружающей среды.
Попробуй это:
apiVersion: v1
kind: Pod
metadata:
name: gogs
labels:
name: gogs
spec:
containers:
- name: gogs
image: gogs/gogs
ports:
- containerPort: 3000
- containerPort: 22
volumeMounts:
- mountPath: /data
name: data
- name: postgres
image: postgres
ports:
- containerPort: 5432
env:
- name : PGDATA
value: /var/lib/postgresql/data/pgdata
- name: POSTGRES_USER
value: myuser
- name: POSTGRES_PASSWORD
value: mypassword
- name: POSTGRES_DB
value: mydb
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres
volumes:
- name: data
gcePersistentDisk:
pdName: gogs-stage-data-disk
fsType: ext4
- name: postgres
gcePersistentDisk:
pdName: gogs-stage-postgres-disk
fsType: ext4