Helm/Fission

From Chorke Wiki
Jump to navigation Jump to search
helm repo add fission-charts https://fission.github.io/fission-charts
helm repo update && helm repo list
kubectl config get-contexts

Config

export KUBECONFIG="${HOME}/.kube/dev-kubeconfig.yaml"
export KUBECONFIG="${HOME}/.kube/gcp-kubeconfig.yaml"
export KUBECONFIG="${HOME}/.kube/config"

mc alias set local http://s3.host.k8s.local admin
# Enter Secret Key: sadaqah!

mc config host ls
mc admin info local
mc mb local/fission
echo -n password: ;read -s MINIO_PASSWORD;export MINIO_PASSWORD;echo
# password: sadaqah!

mc admin user add  local fission ${MINIO_PASSWORD}
mc admin policy attach local diagnostics readwrite consoleAdmin --user fission
mc admin user info local fission

ACCESS_KEY="lJK09A3zwTF7bY2v5yey";\
SECRET_KEY="umVZsDmWNLUY5i3PDz17IhksvmBV5TCnE07GYw26";\
alias mc_admin_add_key="mc admin accesskey create local \
 fission --name=fission --access-key=${ACCESS_KEY} --secret-key=${SECRET_KEY}"

cat <<JSN | mc_admin_add_key --policy=/dev/stdin
{
  "Version":"2012-10-17",
  "Statement":[
    {"Effect":"Allow","Action":["kms:*"]},
    {"Effect":"Allow","Action":["admin:*"]},
    {"Effect":"Allow","Action":["s3:*"],"Resource":["arn:aws:s3:::fission"]},
    {"Effect":"Allow","Action":[
        "admin:BandwidthMonitor",
        "admin:TopLocksInfo",
        "admin:ServerTrace",
        "admin:ConsoleLog",
        "admin:Prometheus",
        "admin:ServerInfo",
        "admin:Profiling",
        "admin:OBDInfo"
      ],"Resource":["arn:aws:s3:::fission"]
    }
  ]
}
JSN

Install

kubectl get ns|grep fission
kubectl delete ns   fission
kubectl get ns|grep fission
kubectl create ns   fission

export FISSION_NAMESPACE="fission"
kubectl create -k "github.com/fission/fission/crds/v1?ref=v1.20.5"

cat <<YML | helm -n fission install fission fission-charts/fission-all --version=v1.20.5 -f -
---
serviceType: ClusterIP
routerServiceType: LoadBalancer
persistence:
  enabled: true
  storageType: s3
  s3:
    endPoint: http://s3.host.k8s.local
    bucketName: fission
    subDir: serverless
    region: us-east-1
    accessKeyId: lJK09A3zwTF7bY2v5yey
    secretAccessKey: umVZsDmWNLUY5i3PDz17IhksvmBV5TCnE07GYw26
YML
cat <<YML | helm -n fission install fission fission-charts/fission-all --version=v1.20.5 -f -
---
serviceType: NodePort
routerServiceType: NodePort
persistence:
  enabled: true
  storageType: s3
  s3:
    endPoint: http://s3.host.k8s.local
    bucketName: fission
    subDir: serverless
    region: us-east-1
    accessKeyId: lJK09A3zwTF7bY2v5yey
    secretAccessKey: umVZsDmWNLUY5i3PDz17IhksvmBV5TCnE07GYw26
YML

cat <<-'EXE'|sudo bash
curl -fsSL https://github.com/fission/fission/releases/download/v1.20.5/fission-v1.20.5-linux-amd64 -o /usr/local/bin/fission
chmod +x /usr/local/bin/fission
EXE

fission version
fission --help
fission check

Ingress

cat << YML | kubectl apply -n fission -f -
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: router
  namespace: fission
  labels:
    app.kubernetes.io/version: 1.0.0
    app.kubernetes.io/managed-by: kubectl
    app.kubernetes.io/name: fission-router
    app.kubernetes.io/instance: fission-router
spec:
  ingressClassName: nginx
  rules:
    - host: "ht.fission.k8s.local"
      http:
        paths:
          - path: /
            pathType: ImplementationSpecific
            backend:
              service:
                name: router
                port:
                  number: 80
YML

Uninstall

helm uninstall -n fission fission
kubectl delete namespace  fission

kubectl get crd|grep fission.io

kubectl delete crd packages.fission.io
kubectl delete crd functions.fission.io
kubectl delete crd environments.fission.io
kubectl delete crd httptriggers.fission.io
kubectl delete crd timetriggers.fission.io
kubectl delete crd canaryconfigs.fission.io
kubectl delete crd messagequeuetriggers.fission.io
kubectl delete crd kuberneteswatchtriggers.fission.io

kubectl get    apiservice
kubectl delete apiservice v1beta1.external.metrics.k8s.io
kubectl patch  ns fission -p '{"metadata":{"finalizers":null}}'s":null}}'

Serverless

export FISSION_NAMESPACE=fission
export FISSION_FUNCTION_NAMESPACE=fission
export FISSION_ROUTER_URL=http://ht.fission.k8s.local
# export FISSION_ROUTER_URL=$(kubectl -n ${FISSION_NAMESPACE} get ing router -o=yaml|yq -r .spec.rules[0].host)
# export FISSION_ROUTER=$(kubectl -n ${FISSION_NAMESPACE} get svc router -o=yaml|yq -r .status.loadBalancer.ingress[0].ip)
mkdir -p /opt/${USER}/chorke/academia/var/playground/fission
ls -lah  /opt/${USER}/chorke/academia/var/playground/fission
ln -s    /opt/${USER}/chorke/academia/var/playground/fission ${HOME}/Documents/fission-playground

ls -lah ${HOME}/Documents/fission-playground/
cd      ${HOME}/Documents/fission-playground/

fission env list
fission fn  list
fission ht  list
fission pkg list

Serverless » Go


fission env create --name=go --image=ghcr.io/fission/go-env --builder=ghcr.io/fission/go-builder

curl -fsSL https://raw.githubusercontent.com/fission/examples/main/go/hello-world/hello.go -o hello.go
fission fn  create --name=hello-go --env go --src hello.go --entrypoint Handler
fission fn  test   --name=hello-go

fission ht  create --name=get-hello-go --method=GET --url=/api/hello/go --function=hello-go
curl http://ht.fission.k8s.local/fission-function/hello-go
curl http://ht.fission.k8s.local/api/hello/go

fission pkg delete --name=hello-go-<uuid> -f
fission ht  delete --name=get-hello-go
fission fn  delete --name=hello-go
fission env delete --name=go

Serverless » Java


fission environment create --name=java --image=ghcr.io/fission/jvm-env --builder=ghcr.io/fission/jvm-builder --keeparchive --version 3

mkdir -p   src/main/java/io/fission
curl -fsSL https://raw.githubusercontent.com/fission/examples/main/java/hello-world/src/main/java/io/fission/HelloWorld.java -o src/main/java/io/fission/HelloWorld.java
curl -fsSL https://raw.githubusercontent.com/fission/environments/master/jvm/examples/java/pom.xml -o pom.xml

zip java-src-pkg.zip -r src pom.xml
fission package  create --name=hello-pkg  --env java --src java-src-pkg.zip
fission fn  create --name=hello-java --env java --pkg hello-pkg --entrypoint io.fission.HelloWorld
fission fn  test   --name=hello-java

fission ht  create --name=get-hello-java --method=GET --url=/api/hello/java --function=hello-java
curl http://ht.fission.k8s.local/fission-function/hello-java
curl http://ht.fission.k8s.local/api/hello/java

fission ht  delete --name=get-hello-java
fission fn  delete --name=hello-java
fission pkg delete --name=hello-pkg
fission env delete --name=java

Serverless » Dotnet


fission env create --name=dotnet --image=fission/dotnet-env

curl -fsSL  https://raw.githubusercontent.com/fission/examples/main/dotnet/helloworld.cs -o hello.cs
fission fn  create --name=hello-cs --env=dotnet --code=hello.cs
fission fn  test   --name=hello-cs

fission ht  create --name=get-hello-cs --method=GET --url=/api/hello/cs --function=hello-cs
curl http://ht.fission.k8s.local/fission-function/hello-cs
curl http://ht.fission.k8s.local/api/hello/cs

fission pkg delete --name=hello-cs-<uuid> -f
fission ht  delete --name=get-hello-cs
fission fn  delete --name=hello-cs
fission env delete --name=dotnet

Serverless » Python


fission env create --name=python   --image=fission/python-env

curl -fsSL  https://raw.githubusercontent.com/fission/examples/main/python/hello.py -o hello.py
fission fn  create --name=hello-py --env=python --code=hello.py 
fission fn  test   --name=hello-py

fission ht  create --name=get-hello-py --method=GET --url=/api/hello/py --function=hello-py
curl http://ht.fission.k8s.local/fission-function/hello-py
curl http://ht.fission.k8s.local/api/hello/py

fission pkg delete --name=hello-py-<uuid> -f
fission ht  delete --name=get-hello-py
fission fn  delete --name=hello-py
fission env delete --name=python

Serverless » Node.js


fission env create --name=nodejs --image=ghcr.io/fission/node-env

curl -fsSL https://raw.githubusercontent.com/fission/examples/main/nodejs/hello.js -o hello.js
fission fn  create --name=hello-js --env=nodejs --code=hello.js
fission fn  test   --name=hello-js

fission ht  create --name=get-hello-js --method=GET --url=/api/hello/js --function=hello-js
curl http://ht.fission.k8s.local/fission-function/hello-js
curl http://ht.fission.k8s.local/api/hello/js

fission pkg delete --name=hello-js-<uuid> -f
fission ht  delete --name=get-hello-js
fission fn  delete --name=hello-js
fission env delete --name=nodejs

Specification

fission spec init
fission env  create --name=node    --image=fission/node-env --version=3 --poolsize=1 --spec
fission pkg  create --name=hellojs --env=node   --code=https://raw.githubusercontent.com/fission/fission/master/examples/nodejs/hello.js --spec
fission fn   create --name=hellojs --env=node   --pkg=hellojs --spec
fission ht   create --name=hellojs --method=GET --url=/api/hello/js --function=hellojs --spec

fission spec apply
fission fn   test   --name=hellojs

curl http://ht.fission.k8s.local/fission-function/hello-js
curl http://ht.fission.k8s.local/api/hello/js

fission spec destroy
fission ht   delete --name=hellojs
fission fn   delete --name=hellojs
fission pkg  delete --name=hellojs
fission env  delete --name=node

Playground

helm -n fission install    fission fission-charts/fission-all --version=v1.20.0
helm -n fission upgrade -i fission fission-charts/fission-all --version=v1.20.5
helm show values fission-charts/fission-all --version=v1.20.0|less

kubectl -n fission get configmap feature-config -o json|jq -r '.data."config.yaml"'|base64 -d;echo
kubectl -n fission get svc router -o=yaml|yq -r .status.loadBalancer.ingress[0].ip
kubectl -n fission get svc router -o=yaml|yq -r .spec.ports[0].port
kubectl -n fission get ing router -o=yaml|yq -r .spec.rules[0].host

kubectl -n fission logs -f svc/webhook-service -c webhook
kubectl -n fission logs -f svc/storagesvc -c storagesvc
kubectl -n fission logs -f svc/executor -c executor
kubectl -n fission logs -f svc/router -c router

kubectl config --kubeconfig=${HOME}/.kube/aws-kubeconfig.yaml view --flatten
kubectl config --kubeconfig=${HOME}/.kube/dev-kubeconfig.yaml view --flatten
kubectl config --kubeconfig=${HOME}/.kube/gcp-kubeconfig.yaml view --flatten
kubectl config --kubeconfig=${HOME}/.kube/config view --flatten

kubectl -n fission delete all --all
kubectl -n fission delete ing --all
kubectl -n fission delete sts --all
kubectl -n fission delete svc --all
kubectl -n fission delete pvc --all
kubectl -n fission delete pv  --all

kubectl -n fission rollout history deploy buildermgr
kubectl -n fission rollout status  deploy storagesvc
kubectl -n fission rollout restart deploy executor
kubectl -n fission logs -f svc/storagesvc -c storagesvc
kubectl -n fission logs -f svc/executor -c executor
kubectl -n fission logs -f svc/router -c router

References