Code Monkey home page Code Monkey logo

oda-canvas's Introduction

Open Digital Architecture Canvas

Supported-component-version Canvas-version License

bddpassedundeffailed

The Open Digital Architecture (ODA) Canvas is an execution environment for ODA Components and the release automation part of a CI/CD pipeline. This repository contains the Reference Implementation, open-source code, use-cases and test-kit for a TM Forum ODA canvas. You are free to use this as a starting point for your own ODA Canvas implementation.

The Usecase Library shows how ODA Components interact with the ODA Canvas. The Feature definition and Test Kit details the features required to be a fully compliant ODA Canvas and a set of tests that can be used to validate any ODA Canvas. The source code contains the source code for the operators that are part of the ODA Canvas.

The Reference Implementation of the ODA Canvas will be used for ODA Component certification.

Installation

see Installation Guide for installation instructions.

ODA Canvas Design

The design (including ongoing work) of the ODA Canvas is documented in ODA Canvas Design.

Release notes

Version Release notes
1.1.1 Bug fix release - Webhook handles empty specification field for exposedAPI. Tested against kubernetes 1.29.
1.1.0 Added support for multiple specifications of each Open-API. The v1beta3 exposedAPI object defines its specification property as an array. This is specifically designed to allow TM Forum Gen5 Open-APIs (which can be specified alongside Gen4 APIs).
The Webhook will automatically convert v1beta2 and v1beta1 specifications to v1beta3 with an array of 1.
1.0.0 First tracked release for component version v1beta3 (also supports N-2 versions i.e. v1beta2 and v1beta1).

oda-canvas's People

Contributors

9n avatar abbeydom avatar adarshkumar4 avatar ajayaggarwal03 avatar andytiller avatar arusakov-rh avatar brian-burton avatar cl0udb0y avatar csotiriou avatar ferenc-hechler avatar futongchangjian avatar github-actions[bot] avatar gjo-satec avatar hrodrigues-hestia avatar jgillamtmforum avatar lesterthomas avatar malagant avatar nashjain avatar omidtahouri avatar pecanpete avatar peeterko2 avatar rj-acc avatar scaramanga77 avatar shisen1 avatar soaserele avatar suyash7774 avatar thomo avatar tomkivlin avatar victormari avatar wangyumu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

oda-canvas's Issues

Misspelled words with values.yaml file and Chart.yaml file

There are 2 misspelled words in annotation part of values.yaml and Chart.yaml
url: https://github.com/tmforum-oda/oda-canvas/blob/master/installation/canvas-oda/values.yaml
Row number: 114
#We reuse the admin user created on keycloak instalation [installation]

url: https://github.com/tmforum-oda/oda-canvas/blob/master/installation/canvas-oda/Chart.yaml
Row number: 3
description: A Helm of helm to orchestrate the ODA instalation [installation]

Feature: Secure User and Role Information Communication

Description

This issue is to add a BDD feature (in compliance-test-kit/BDD-and-TDD/features ) for Feature: Secure User and Role Information Communication

This is from the authentication workshop:

we need to allow secure transmission of user information as JSON objects using JWT
we may need a common set of minimum mandatory JWT claims for interoperability

This links to the decision https://github.com/tmforum-oda/oda-ca-docs/blob/master/Decision-Log/006-common-set-of-minimum-mandatory-JWT-claims-for-interoperability.md

Unable to install oda-canvas locally by following the documentation

Hello, not sure if this is a bug or if there is something I miss from the documentation. I am trying to install the oda-canvas locally using microk8s by following the instructions here:

When I reach the point where I'm calling bash install_canvas_cert-manager.sh, I am being shown the following message:

*********************************************************************
Installing base canvas
*********************************************************************

Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "odacomponent-role-cluster" namespace: "" from "": no matches for kind "ClusterRole" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "odacomponent-rolebinding-cluster" namespace: "" from "": no matches for kind "ClusterRoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "odacomponent-role-namespaced" namespace: "components" from "": no matches for kind "Role" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "odacomponent-rolebinding-namespaced" namespace: "components" from "": no matches for kind "RoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "component-gateway" namespace: "components" from "": no matches for kind "Gateway" in version "networking.istio.io/v1alpha3"
ensure CRDs are installed first]

It seems that there are some CRDs that I haven't got installed. Is there anything I am missing from the documentation, or is there some other repository where those CRDs are available so that I can install them first?

This is the output from running microk8s kubectl version

$ microk8s kubectl version

WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.3", GitCommit:"434bfd82814af038ad94d62ebe59b133fcb50506", GitTreeState:"clean", BuildDate:"2022-10-12T10:47:25Z", GoVersion:"go1.19.2", Compiler:"gc", Platform:"darwin/arm64"}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:"1", Minor:"22+", GitVersion:"v1.22.16-3+024782121eb186", GitCommit:"024782121eb1866f575ad5d06b5b58722e76d29c", GitTreeState:"clean", BuildDate:"2022-11-10T18:14:08Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/arm64"}
WARNING: version difference between client (1.25) and server (1.22) exceeds the supported minor version skew of +/-1

Thank you in advance

Canvas: Expired compcrdwebhook certificate prevents ODA components deployment

Trying to deploy a component in the ODA-CA-CLUSTER-2 we found an error related with an error about an expired certificate

Error: INSTALLATION FAILED: conversion webhook for oda.tmforum.org/v1alpha3, Kind=component failed: Post "https://compcrdwebhook.canvas.svc:443/?timeout=30s": x509: certificate has expired or is not yet valid: current time 2022-01-26T10:24:39Z is after 2021-12-19T15:47:14Z

The certificates issued by cert-manager are valid just for three months only and it rotates them automatically. The one configured in the canvas namespaces is this
kubectl get certificate -n canvas -o yaml

apiVersion: v1
items:
- apiVersion: cert-manager.io/v1
  kind: Certificate
  metadata:
    creationTimestamp: "2021-09-20T15:28:57Z"
    generation: 1
    name: compcrdwebhook.canvas.svc
    namespace: canvas
  spec:
    commonName: compcrdwebhook.canvas.svc
    dnsNames:
    - compcrdwebhook
    - compcrdwebhook.canvas
    - compcrdwebhook.canvas.svc
    - compcrdwebhook.canvas.svc.cluster.local
    isCA: false
    issuerRef:
      name: selfsigned-issuer
    privateKey:
      algorithm: RSA
      encoding: PKCS1
      size: 2048
    secretName: compcrdwebhook.canvas.svc-tls
    usages:
    - digital signature
    - content commitment
    - key encipherment
    - server auth
  status:
    conditions:
    - lastTransitionTime: "2021-09-20T15:47:14Z"
      message: Certificate is up to date and has not expired
      observedGeneration: 1
      reason: Ready
      status: "True"
      type: Ready
    notAfter: "2022-04-18T15:47:14Z"
    notBefore: "2022-01-18T15:47:14Z"
    renewalTime: "2022-03-19T15:47:14Z"
    revision: 3
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""

Relevant here are the
secretName: compcrdwebhook.canvas.svc-tls
where the cert-manager store the cert
and the times

    notAfter: "2022-04-18T15:47:14Z"
    notBefore: "2022-01-18T15:47:14Z"
    renewalTime: "2022-03-19T15:47:14Z"

The certificate in the compcrdwebhook.canvas.svc-tls seems correct

 kubectl get secrets -n canvas compcrdwebhook.canvas.svc-tls -ojsonpath="{.data.tls\.crt}" | base64 -d | openssl x509 -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            5d:f6:aa:e0:ed:82:50:bc:c8:a4:98:67:5c:ec:b2:31
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = compcrdwebhook.canvas.svc
        Validity
            Not Before: Jan 18 15:47:14 2022 GMT
            Not After : Apr 18 15:47:14 2022 GMT

but the compcrdwebhook deployment seems to use another tls-secret

kubectl get deploy -n canvas compcrdwebhook -o yaml | grep secret
        - mountPath: /etc/secret-volume
          name: secret-volume
      - name: secret-volume
        secret:
          secretName: compcrdwebhook-secret

That secret contains an already expired certificate that correlates with the time stated in the error found

 kubectl get secrets -n canvas compcrdwebhook-secret -ojsonpath="{.data.tls\.crt}" | base64 -d | openssl x509 -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            b9:c8:4b:8a:d7:dd:02:36:67:ea:f7:1f:a0:d6:21:63
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = compcrdwebhook.canvas.svc
        Validity
            Not Before: Sep 20 15:47:14 2021 GMT
            Not After : Dec 19 15:47:14 2021 GMT

This secret is created manually in an installation script https://github.com/tmforum-oda/oda-canvas-charts/blob/master/create_tls_certificates_cert-manager_v1.sh from the secret managed by cert-manager, but when the first get rotated, the latter is unaware of the change
I don't know if the manually created cert has another use to justify its existence, if not I guess the managed secret should be used to prevent these expiration errors

Generate TLS certificates automatically

Description

The webhook (used to translate versions of Component CRD) requires https. Create a script to automatically create and sign TLS certificates and put them in Kubernetes secrets (that are used by webhook).

Canvas: ingress is not created and deployment status is `In-Progress-CompCon`

Long story short

When deploying ODA components, the component ingress is not created and the deployment status is In-Progress-CompCon

For instance with the sigscale-ocs component provided in https://github.com/tmforum-rand/oda-component-definitions, we get

❯ k get components -A
NAMESPACE          NAME                     EXPOSED_APIS                               DEVELOPER_UI   DEPLOYMENT_STATUS
components         sigscale-ocs             http://172.16.0.100/partyManagement/v1/                   In-Progress-CompCon

I will provide some logs of oda-controller-ingress asap (I have no access to the cluster right now), do not hesitate to point us some hints meanwhile

API Gateway: Configure API Gateway for UC007 and UC008

Configure API Gateway for Authentication use cases UC007 and UC008

Configure the Kong API Gateway to integrate to Keycloak to validate API Requests as per UC007 and optionally UC008.

For UC008 (internal authentication), if a Service Mesh is used instead of the API Gateway, we do the same configuration on Istio to Validate API requests against Keycloak.

canvas: merge repositories and re-organise content

Description

Proposal is to

  • Merge oda-ca, oda-canvas-ctk, canvas-in-a-bottle, canvas-in-a-bottle-gui into the oda-canvas-charts repo, and rename it oda-canvas.
  • The existing content in oda-canvas-charts will move to an installation folder.
  • The oda-ca content will move to an operators folder.
  • The oda-canvas-ctk will move to a compliance-test-kit folder
  • The canvas-in-a-bottle and canvas-in-a-bottle-gui will move to sub-folders under installation

compcrdwebhook: Support development using architectures other than x64

It seems that the compcrdwebhook webhook, in https://hub.docker.com/r/tmforumodacanvas/compcrdwebhook is built for x64 architectures. This is fine in most scenarios, but it causes issues when being present in an environment where there is another architecture (like Apple Silicon, or an arm machine).

Since the arm archtiecture is becoming more common even in clouds, I believe it could be beneficial to support docker manifest lists to support multiple architectures with the same build.

canvas: Timing condition when installing canvas

Description

Sometimes, when installing the canvas, the install script continues faster than cert-manager can handle the creation of certificate resources in K8s.

Insert a check in the script to ensure the resources have been created before continuing.

Fix: Update Controller RBAC

RBAC for the controller is failing in new canvas.

Addiional permissions are required for odacomponent-account

Instalation. Istio gateaway falling

FFollowing the current instructions to install Istio Gateway Helm Chart leave the system unusable because some component relies on these elements being labelled in a particular way.
For that, we need to update the instructions to install the Istio Gateway with the right labelsollowing the current instrucctions to install Istio Gateway Helm Chart leave the system unausable because some component rely on this elements being labeled in a particular way
For that we need to update the instrucction to use

operator: Add istio controller to Canvas charts

Description

Add the istio controller, including adding a istio gateway for the components to use.

The istio controller creates a virtual service for each API that is exposed. The virtual service resources link to a single istio gateway called components.

Canvas: Test the deployment of the Canvas install on multiple environments

Description

For the end of sprint 2, we will document supported versions of K8s that the canvas has been tested with. We need to test the install of the canvas on the full range of Kubernetes versions, and on as many different environments as possible.

Ideally, we would include in the documentation a walkthrough of installing on different environments with screenshots.

The Kubernetes versions are v1.22 through to v1.24.
Possible test environments are;

Kubernetes deployment Tested Tested By Test Date Test K8s Notes
Rancher on AWS [Open Digital Lab environment]
Azure AKS
Microk8s
MiniKube
Docker Desktop Yes @LesterThomas 2023-03-09 1.24
Kind Using Canvas-in-a-bottle
K3s
(other)

Feel free to add any other ck8s cluster implementations you would like us to test against in the comments below. Please comment in this issue if you have tested against a particular deployment and I'll update the table above.

Add support to manage Persistent Volume Claims

In the initial release, the canvas controller manages Services and Deployments (it makes and Services or Deployments that are labeled as belonging to a component a child of that component.

The latest release of the canvas controller extends this to PersistentVolumeClaims (PVCs). We need to add to the permissions to allow it to manage PVCs.

Feature: update controller config to allow different ingress controllers

The simple ingress controller from ODA-CA defaults to nginx. This means without extra configuration other ingress controllers will not function correctly (e.g. K3s defaults to Traefik)

Update the controller chart to add the environment variable INGRESS_CLASS, defaulted to nginx to reflect the default in the simple ingress controller and disabled unless required.

Misspelled words with values.yaml file

Description

There are 2 misspelled words in annotation part of values.yaml

url: https://github.com/tmforum-oda/oda-canvas/blob/master/installation/canvas-oda/values.yaml
Row number: 32-33
#The lease can survive among instalations [installations], so cainjectot can waits up to 60s to become leader
#If cainjector is not fully initilizaded [initialized] we can find the following error

url: https://github.com/tmforum-oda/oda-canvas/blob/master/installation/cert-manager-init/values.yaml
Row number: 15-16
#The lease can survive among instalations [installations], so cainjectot can waits up to 60s to become leader
#If cainjector is not fully initilizaded [initialized] we can find the following error

Postgres 10 not on bitnami charts anymore

Description

Hi Postgres 10.8.0 is not part of Bitnami chart anymore, we will need to update /canvas/charts/keycloak/Chart.yaml

I'm using the wildcard operator, but we may want to fix on a specific version, there are a couple of people waiting for this fix.

Operator: security controller

Add support for Identity Management and security controller

The canvas requires an Identity Provider and a security controller to manage that roles in components.

This issue is to achieve two things:

  • Add first commit of keycloak chart for testing in ODA-CA environment.
  • Add configuration for the security controller.

Canvas: implement support for forward proxies

long story short

In Orange current deployments, k8s cluster where the canvas is deployed do not have direct access to internet, all outgoing access pass through a forward proxy that have to be configured at the cluster level but also inside each payload.

This proxy support feature is available for most of the products we use on the cluster but the documentation / helm charts of the canvas does not seem to state anything about it.

potential problems and attempts to bypass them

  • the specification of exposedAPIs of a component CRD might be fetched from internet

setting some environment variables in the deployment chart of the oda-controller-ingress deployment does not seems to be taken in account

apiVersion: apps/v1
kind: Deployment
metadata:
  name: oda-controller-ingress
  namespace: {{ .Release.Namespace }}
  labels:
    {{- include "controller.labels" . | nindent 4 }}
spec:
  replicas: 1
  selector:
    matchLabels:
      app: oda-controller-ingress
  template:
    metadata:
      namespace: {{ .Release.Namespace }}
      labels:
        app: oda-controller-ingress
        {{- include "controller.labels" . | nindent 8 }}
    spec:
      serviceAccountName: odacomponent-account
      containers:
      - name: oda-controller-ingress
        image: {{.Values.deployment.compconimage}}
        imagePullPolicy: IfNotPresent
        envFrom:
          - configMapRef:
              name: {{ .Release.Name }}-configmap
          - secretRef:
              name: {{ .Release.Name }}-secret

# proxy conf
        env:
        - name: "HTTP_PROXY"
          value: "http://xxx:3128"
        - name: "HTTPS_PROXY"
          value: "http://xxx:3128"
        - name: "NO_PROXY"
          value: "no_proxy=localhost,127.0.0.1,0.0.0.0,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,cattle-system.svc,.svc,.cluster.local"
# end proxy conf

      - name: seccon
        image: {{.Values.deployment.secconimage}}
        imagePullPolicy: IfNotPresent
        envFrom:
          - configMapRef:
              name: {{ .Release.Name }}-configmap
          - secretRef:
              name: {{ .Release.Name }}-secret
        ports:
        - name: seccon
          containerPort: 5000

IDM: Set up Reference IDM service for authentication and authorisation

Set up Reference IDM service for authentication and authorisation

To enable the authentication and authorisation use cases, we need to configure and test Keycloak in the Reference Implementation to be able to provide full end-to-end authentication services.

This will include some reconfiguration to address @peeterko2's comment around seccon naming conventions in #62.

The intent is to document the Canvas interactions for other members to implement the same configuration against their own IDM platforms.

Contribute UseCase for Component Vault

Description

This contribution descibes the Workflow for setting up a Vault which can be used by each component to store its own secrets without having any security issues.
It is the last Canvas-Service Use-Case "CRUD secrets in a Canvas password vault" here: https://projects.tmforum.org/wiki/pages/viewpage.action?pageId=233118152

We asked Hugo Vaugh, how to best contribute to this repository and said we should create a fork and the create a pull request.

We created a fork and would be happy about a review:

https://github.com/ferenc-hechler/oda-canvas/blob/master/usecase-library/UC0XX-Component-Vault.md

Feature: Component Exposes Permission Specification Set Towards Canvas

Description

This issue is to add a BDD feature (in compliance-test-kit/BDD-and-TDD/features ) for Feature: Component Exposes Permission Specification Set Towards Canvas

The authentication system should support assigning roles and permissions to users and their identity attributes, ensuring they only have access to the resources and functionality required for their specific role.

Decision 002-role-vs-permission defined that we will use TMF672 User Roles and Permissions in a component to expose Permission Specification Sets to be mapped as technical roles (what role, or combination of permissions the user has in relation to the component) into identity management.

Identities will receive a JWT with an audience that lists context-relevant Permission Specification Sets, such that the component can validate that:

  • The user is correctly authenticated
  • The user has a Permission Set that matches the Permission Specification Set name passed in the JWT.

The feature should describe scenarios for components receiving permission specification sets (including happy-path and unhappy-path scenarios).

Operator: Change to TMForum Docker Hub images

Current images are in personal accounts.

This issue is raised to make the changes necessary to move the images to the tmforumodacanvas organisation on Ducker Hub and establish the tag "master" to indicate the images that match the current master branch, alongside semver and "latest" tags.

Canvas: being able to disable some canvas features

Description

As canvas is growing with more and more functionalities (and this is a very good thing !) it should be possible to disable some of the features and being able to run it in a minimal configuration. Benefits would be:

  • incremental approach for the newcomers, easier troubleshooting
  • lighter deployment, especially when deployed on a workstation, only deploy what you need / what you rely on
  • promote a modular approach for the canvas (source code organization, documentation, configuration...) might help contributions

Maybe this feature could be addressed first with documentation / deployments examples... as opposed to code change.

Feature: create version 1alpha2 of Component and API custom resources

We will be making some changes to the meta-data in the Custom Resource Definitions (CRDs) in sprint 2 (e.g. to support the security work).

I propose we upgrade the CRD version for each sprint, so it becomes 'v1alpha2'. The plan is to deploy duplicate Component and API CRDs with the new version numbers, to allow components to continue to use the old versions (until they become deprecated and eventually removed).

I also propose that the CTK recognizes this version: A component that self-describes as v1alpha1 will still pass the static/dynamic tests from sprint 1 and only components that self-describe as v1alpha2 will be subject to the enhanced CTK that comes with sprint 2. (we can at some point in the future deprecate previous versions to cause the CTK to fail).

Secon fails

Long story short

My deployment of the chart fails; kubectl reports a repeating restart and error backoff for the secon container.

Description

start minikube and install canvas

Deploying on an Azure VM centos 8 withi mninikube. My minikube instance is started with
minikube start --addons registry ingress --insecure-registry "10.0.0.0/8","192.168.0.0/16"

I then install canvas using the script
./install_canvas.sh

kubectl reports canvas is unavailable Then kubectl reports that canvas is unavailable `kubectl get deployment`

NAME READY UP-TO-DATE AVAILABLE AGE
canvas-keycloak 1/1 1 1 5s
oda-controller-ingress 0/1 1 0 5s

kubectl get pods
NAME READY STATUS RESTARTS AGE
canvas-keycloak-7874b487c9-bf5nj 0/1 Error 1 57s
oda-controller-ingress-85689ccbd6-4zfg2 1/2 NotReady 3 57s

`kubectl describe pod oda-controller-ingress-85689ccbd6-4zfg2
Name: oda-controller-ingress-85689ccbd6-4zfg2
Namespace: default
Priority: 0
Node: minikube/192.168.49.2
Start Time: Thu, 24 Jun 2021 14:44:22 +0000
Labels: app=oda-controller-ingress
app.kubernetes.io/instance=canvas
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=controller
helm.sh/chart=controller-0.1.0
pod-template-hash=85689ccbd6
Annotations:
Status: Running
IP: 172.17.0.6
IPs:
IP: 172.17.0.6
Controlled By: ReplicaSet/oda-controller-ingress-85689ccbd6
Containers:
oda-controller-ingress:
Container ID: docker://0e196964003ef2b4a9aa6ad7233d2dd99fc83e9d3112c83f45eebab93d39927a
Image: tmforumodacanvas/component-controller:master
Image ID: docker-pullable://tmforumodacanvas/component-controller@sha256:bc5ecb5626b26eee3abbdb589288a6c48a3153bf9025acf4df1365642e4313d3
Port:
Host Port:
State: Running
Started: Thu, 24 Jun 2021 14:44:24 +0000
Ready: True
Restart Count: 0
Environment Variables from:
canvas-configmap ConfigMap Optional: false
canvas-secret Secret Optional: false
Environment:
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from odacomponent-account-token-46rsb (ro)
seccon:
Container ID: docker://e6342cc89416c7178e55777a8fd0bda20881bf696c23396a3863195e6d25bc4b
Image: tmforumodacanvas/security-listener:master
Image ID: docker-pullable://tmforumodacanvas/security-listener@sha256:d686f44b910558ba2432856f9e2e4e12c9fdf8330f15df41ee28815073feee71
Port: 5000/TCP
Host Port: 0/TCP
State: Terminated
Reason: Completed
Exit Code: 0
Started: Thu, 24 Jun 2021 14:46:04 +0000
Finished: Thu, 24 Jun 2021 14:46:04 +0000
Last State: Terminated
Reason: Completed
Exit Code: 0
Started: Thu, 24 Jun 2021 14:45:12 +0000
Finished: Thu, 24 Jun 2021 14:45:12 +0000
Ready: False
Restart Count: 4
Environment Variables from:
canvas-configmap ConfigMap Optional: false
canvas-secret Secret Optional: false
Environment:
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from odacomponent-account-token-46rsb (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
odacomponent-account-token-46rsb:
Type: Secret (a volume populated by a Secret)
SecretName: odacomponent-account-token-46rsb
Optional: false
QoS Class: BestEffort
Node-Selectors:
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message


Normal Scheduled 104s default-scheduler Successfully assigned default/oda-controller-ingress-85689ccbd6-4zfg2 to minikube
Normal Pulling 103s kubelet Pulling image "tmforumodacanvas/component-controller:master"
Normal Pulled 102s kubelet Successfully pulled image "tmforumodacanvas/component-controller:master" in 1.104600265s
Normal Created 102s kubelet Created container oda-controller-ingress
Normal Started 102s kubelet Started container oda-controller-ingress
Normal Pulled 101s kubelet Successfully pulled image "tmforumodacanvas/security-listener:master" in 1.051713286s
Normal Pulled 99s kubelet Successfully pulled image "tmforumodacanvas/security-listener:master" in 1.074514777s
Normal Pulled 81s kubelet Successfully pulled image "tmforumodacanvas/security-listener:master" in 1.030029787s
Warning BackOff 68s (x5 over 98s) kubelet Back-off restarting failed container
Normal Pulling 55s (x4 over 102s) kubelet Pulling image "tmforumodacanvas/security-listener:master"
Normal Created 54s (x4 over 101s) kubelet Created container seccon
Normal Started 54s (x4 over 100s) kubelet Started container seccon
Normal Pulled 54s kubelet Successfully pulled image "tmforumodacanvas/security-listener:master" in 1.06064275s`

Counter example If I comment out the seccon container from the template,

spec:
serviceAccountName: odacomponent-account
containers:
- name: oda-controller-ingress
image: {{.Values.deployment.compconimage}}
imagePullPolicy: Always
envFrom:
- configMapRef:
name: {{ .Release.Name }}-configmap
- secretRef:
name: {{ .Release.Name }}-secret
# - name: seccon
# image: {{.Values.deployment.secconimage}}
# imagePullPolicy: Always
# envFrom:
# - configMapRef:
# name: {{ .Release.Name }}-configmap
# - secretRef:
# name: {{ .Release.Name }}-secret
# ports:
# - name: seccon
# containerPort: 5000

then kubectl reports a running deployment of canvas as expected

$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
canvas-keycloak 1/1 1 1 31s
oda-controller-ingress 1/1 1 1 31s

Environment

kopf --version
-bash: kopf: command not found
$ pip show kopf
-bash: pip: command not found
kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.2", GitCommit:"092fbfbf53427de67cac1e9fa54aaa09a28371d7", GitTreeState:"clean", BuildDate:"2021-06-16T12:59:11Z", GoVersion:"go1.16.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.7", GitCommit:"132a687512d7fb058d0f5890f07d4121b3f0a2e2", GitTreeState:"clean", BuildDate:"2021-05-12T12:32:49Z", GoVersion:"go1.15.12", Compiler:"gc", Platform:"linux/amd64"}
$ python --version
-bash: python: command not found
$ python3 --version
Python 3.6.8

cat /etc/os-release file
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"

apiOperatorSimpleIngress.py not update

apiOperatorSimpleIngress.py not update with new K8S version (1.24)

For example:

    client = kubernetes.client
    try:
        networking_v1_beta1_api = client.NetworkingV1beta1Api()  #NetworkingV1Api

        hostname = None
        if 'hostname' in spec.keys():
            hostname=spec['hostname']

        ingress_spec=client.NetworkingV1beta1IngressSpec(  #V1IngressSpec
            rules=[client.NetworkingV1beta1IngressRule(    #V1IngressRule
                host=hostname,
                http=client.NetworkingV1beta1HTTPIngressRuleValue(  #V1HTTPIngressRuleValue
                    paths=[client.NetworkingV1beta1HTTPIngressPath(    #V1HTTPIngressPath
                        path=spec['path'],
                        backend=client.NetworkingV1beta1IngressBackend(    #V1IngressBackend
                            service_port=spec['port'],               # There are significant changes in the definition method
                            service_name=spec['implementation'])
                    )]
                )
            )]
        )
        body = {
            "apiVersion": "networking.k8s.io/v1beta1",     #networking.k8s.io/v1
            "kind": "Ingress",
            "metadata": {
                "name": name,
                "annotations": {"kubernetes.io/ingress.class": ingress_class}
                },
            "spec": ingress_spec
        }

url:
https://github.com/tmforum-oda/oda-canvas/blob/dd08b4667252629b6fc4269fc910e60d8882cba5/source/operators/apiOperatorSimpleIngress/apiOperatorSimpleIngress.py

Chore: K8s API deprecation

The current canvas charts use K8s API version that are being deprecated. Helm install on K8s 1.20 gives the following warnings:

W0215 16:15:36.551914    8143 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0215 16:15:36.610086    8143 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0215 16:15:36.654040    8143 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0215 16:15:38.673837    8143 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0215 16:15:38.686349    8143 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0215 16:15:38.692402    8143 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0215 16:15:38.697468    8143 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0215 16:15:39.838352    8143 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRole is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRole
W0215 16:15:39.845444    8143 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
W0215 16:15:39.853979    8143 warnings.go:70] rbac.authorization.k8s.io/v1beta1 Role is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 Role
W0215 16:15:39.860710    8143 warnings.go:70] rbac.authorization.k8s.io/v1beta1 RoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 RoleBinding
W0215 16:15:40.106198    8143 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRole is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRole
W0215 16:15:40.120092    8143 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
W0215 16:15:40.134541    8143 warnings.go:70] rbac.authorization.k8s.io/v1beta1 Role is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 Role
W0215 16:15:40.147665    8143 warnings.go:70] rbac.authorization.k8s.io/v1beta1 RoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 RoleBinding

Postgresql parameter name of keycloak is incompatible when upgrade to v13.0.2

When keycloak upgrade to v13.0.2, postgresql parameter in file located installation/canvas-oda/values.yaml

  postgresql:
    enabled: true
    postgresqlUsername: "keycloak"
    postgresqlPassword: "keycloakdbuser"
    postgresqlDatabase: "keycloak"

should be changed with:

  postgresql:
    enabled: true
    auth:
      username: "keycloak"
      password: "keycloakdbuser"
      database: "keycloak"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.