ckan-cloud-helm icon indicating copy to clipboard operation
ckan-cloud-helm copied to clipboard

[Analysis] Deploying with non-centralized infra

Open zelima opened this issue 6 years ago • 0 comments

As a developer, who follows the README, I expect to be able to deploy ckan image without centralized infra, But I'm not

Acceptance Criteriea

  • [ ] Either I'm able to run CKAN instance without centralized infra
  • [ ] Or We depreciate it and keep only centralized

Tasks

  • [ ] Do analysis and try to figure out how to do it properly
  • [ ] Decide whether we should keep it or not
  • [ ] If no remove that part from README

Analysis

I've tried to deploy the ckan instance without centralized infra

If you haven't deployed the centralized infra - remove the useCentralizedInfra option

cca_helm_upgrade --install --set replicas=1 --set nginxReplicas=1 --set disableJobs=true --set noProbes=true

But some pods won't start

cca_kubectl get pods
--context minikube CKAN_NAMESPACE = first-instance
NAME                            READY   STATUS                       RESTARTS   AGE
ckan-5585ffdf6b-pj2bw           0/1     Init:0/2                     0          3m
datastore-db-798b77bd89-kxg9x   0/1     CreateContainerConfigError   0          3m
db-64cb545664-cj6qw             0/1     CreateContainerConfigError   0          3m
jobs-db-55c5c959cb-qmjt9        0/1     ContainerCreating            0          4m
nginx-97d597dfc-mvlgt           1/1     Running                      0          4m
redis-84c54c55c4-njxzj          0/1     ContainerCreating            0          4m
solr-64cc9b5b74-s8g28           0/1     Init:0/1                     0          3m

Kubectl describe pods:

  Normal   Scheduled  7m21s                   default-scheduler  Successfully assigned first-instance/datastore-db-798b77bd89-kxg9x to minikube
  Warning  Failed     4m57s (x12 over 7m16s)  kubelet, minikube  Error: secrets "ckan-env-vars" not found

So the reason is that secret ckan-env-vars does not exist. And there is not a single word about ckan-cloud-env in docs. Only place I found it is ckan-cloud-docker.

Q: How can I relate this 2 repos?

Create ckan-env-vars

So as it seems I have to work with ckan-cloud-docer as well. As it seems I need to have cca-operator running and is able to communicate with minkube. To do so I have to do the following according to README

pwd
/home/zelima/viderum/cco/ckan-cloud-docker

cat .docker-compose.override.yaml 
version: '3.2'
services:
  cca-operator:
    volumes:
    - /home/zelima/.kube:/root/.kube
    - /home/zelima/.minikube:/home/zelima/.minikube
    environment:
    - KUBE_CONTEXT=minikube

docker-compose build cca-operator && docker-compose run --rm cca-operator --help

.docker-compose.override.yaml does not seem to be working. I've tried to directly put volumes' values in docker-compose.yaml and it worked.

cat docker-compose.yaml | grep cca-operator: -A 16
  cca-operator:
    image: viderum/ckan-cloud-docker:cca-operator-latest
    build:
      context: cca-operator
    command: ./server.sh
    restart: always
    volumes:
    - /etc/ckan-cloud:/etc/ckan-cloud
    - /home/zelima/.kube:/root/.kube
    - /home/zelima/.minikube:/home/zelima/.minikube
    environment:
    - KUBE_CONTEXT=minikube
    ports:
    - "8022:22"
    networks:
    - cloud-management
    - ckan-multi

I can say it worked as I can get the nodes

docker-compose build cca-operator && docker-compose run --rm --entrypoint kubectl cca-operator get nodes

I was able create secrets as well. Run follwoing

cca-operator() {     kubectl --context minikube --namespace ${CKAN_NAMESPACE} run cca-operator             --image=viderum/ckan-cloud-docker:cca-operator-latest             --serviceaccount=ckan-${CKAN_NAMESPACE}-operator --attach --restart=Never --rm             "$@"; }

kubectl --context minikube -n $CKAN_NAMESPACE delete secret ckan-env-vars ckan-secrets

cca-operator initialize-ckan-env-vars ckan-env-vars

cca-operator initialize-ckan-secrets ckan-env-vars ckan-secrets

At this point all containers are now working fine execpt SOLR.

kubectl logs -f solr-64cc9b5b74-lqsmb -n first-instance -c permissions
chown: /opt/solr/server/solr/ckan/data: No such file or directory

seems like it's coming from here https://github.com/ViderumGlobal/ckan-cloud-helm/blob/master/ckan/templates/solr-deployment.yaml#L30-L31

Not sure why it assumes that directory should exist.

At this point, I'm quitting with non-centralized infra. After all, the cluster is controlled by ckan-cloud-helm and CCO, and there it's with centralized infra

zelima avatar Nov 13 '19 12:11 zelima