{"id":42082235,"url":"https://github.com/cloudify-cosmo/cloudify-kubernetes-plugin","last_synced_at":"2026-01-26T10:07:09.419Z","repository":{"id":37806347,"uuid":"87061734","full_name":"cloudify-cosmo/cloudify-kubernetes-plugin","owner":"cloudify-cosmo","description":"Cloudify plugin for packaging Kubernetes microservices in Cloudify blueprints.","archived":false,"fork":false,"pushed_at":"2024-03-21T17:48:09.000Z","size":604,"stargazers_count":10,"open_issues_count":17,"forks_count":13,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-04-14T07:31:35.420Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudify-cosmo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.txt","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-04-03T10:16:59.000Z","updated_at":"2023-09-01T07:34:48.000Z","dependencies_parsed_at":"2024-03-05T18:00:01.719Z","dependency_job_id":null,"html_url":"https://github.com/cloudify-cosmo/cloudify-kubernetes-plugin","commit_stats":null,"previous_names":[],"tags_count":78,"template":false,"template_full_name":null,"purl":"pkg:github/cloudify-cosmo/cloudify-kubernetes-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-kubernetes-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-kubernetes-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-kubernetes-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-kubernetes-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudify-cosmo","download_url":"https://codeload.github.com/cloudify-cosmo/cloudify-kubernetes-plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-kubernetes-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28774299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T09:42:00.929Z","status":"ssl_error","status_checked_at":"2026-01-26T09:42:00.591Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-26T10:07:07.608Z","updated_at":"2026-01-26T10:07:09.410Z","avatar_url":"https://github.com/cloudify-cosmo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CircleCI](https://circleci.com/gh/cloudify-incubator/cloudify-kubernetes-plugin.svg?style=svg)](https://circleci.com/gh/cloudify-incubator/cloudify-kubernetes-plugin)\n\n# Cloudify Kubernetes Plugin\n\n### Overview\n\nCloudify Kubernetes Plugin enables possibility of creating and deleting resources\nhosted by some Kubernetes cluster using Cloudify blueprints.\n\nPlugin is using Kubernetes python client\n(https://github.com/kubernetes-incubator/client-python)\nto communicate with Kubernetes Master API.\n\nAll node types and relationships exposed by plugin are defined in *plugin.yaml* file.\n\nMain entrypoints to python logic are defined in *tasks.py* file.\n\n\n#### Blueprint concept\n\nPlugin exposes two kinds of node types:\n\n* ***cloudify.kubernetes.nodes.Master***\n    \n    Node type describes Kubernetes maser configuration.\n    It is responsible for handling all data required to use Kubernetes API from outside.\n    Every blueprint using plugin has to define node template of this type.\n    It defines two properties:\n\n    - ***configuration***\n    \n    - ***authentication***\n     \n* ***cloudify.kubernetes.resources.****\n\n    Family of node types designed to describe Kubernetes resources (e.g. Pods, Deployments, Services etc.)\n    Plugin supports different ways of Kubernetes resources definition.\n    Resources definition used in Cloudify blueprints are also compliant with Kubernetes YAML schema. \n\nPlugin defines also one relationship:\n\n***cloudify.kubernetes.relationships.managed_by_master***\n\nIt is required for each ***cloudify.kubernetes.resources.**** node template\nto be bounded using this relationship to the ***cloudify.kubernetes.nodes.Master*** node template.\n\nDuring installation of deployment for all *cloudify.kubernetes.resources.** nodes \nplugin is looking for target of defined *managed_by_master* relationship to find related Master node.\nData stored by Master node bounded using relationship to Resource node will be used to perform API call to create / delete this resource.\nResult of each operation is stored in *kubernetes* runtime_property for each resource node.\n\n```\n  master:\n    type: cloudify.kubernetes.nodes.Master\n    properties:\n      configuration:\n        file_content: { get_input: kubernetes_configuration_file_content }\n\n  resource:\n    type: cloudify.kubernetes.resources.Pod\n    properties:\n      [...]\n      - type: cloudify.kubernetes.relationships.managed_by_master\n        target: master\n           \n```\n\n### Master configuration possibilities\n\nThere are four possible ways of *cloudify.kubernetes.nodes.Master* (Kubernetes API python client) configuration.\nEach method is associated with one key (below) and required value which you should put under *configuration* property of *cloudify.kubernetes.nodes.Master* node.\nFor each Master node you should choose one method (one dictionary entry for *configuration* property should be defined): \n\n * ***blueprint_file_name*** - value should be relative to the blueprint path to Kubernetes config file (contained by blueprint archive)\n \n * ***manager_file_path*** - value should be absolute path to Kubernetes config file previously uploaded into Cloudify Manager virtual machine\n \n * ***file_content*** - value should be (YAML) content of Kubernetes config file \n \n * ***api_options*** - value should be a dictionary contains basic Kubernetes API properties:\n    - *host* (HTTP/HTTPS URL to Kubernetes API)\n    - *ssl_ca_cert*\n    - *cert_file*\n    - *key_file*\n    - *verify_ssl*\n\nKubernetes config file is by default stored in:\n\n```~/.kube/config```\n\non Kubernetes Master VM. You can also obtain it executing:\n\n```kubectl config view --raw```\n\n### Master authentication possibilities\n\nPlugin has been designed to support different Kubernetes clusters providers.\nAs *authentication* property of Master node you can specify dictionary with key and value: \n\n * ***gcp_service_account*** -  value should be (JSON) content of Google Cloud Platform Service Accout file\n\n### Resources definition possibilities\n\n * ***cloudify.kubernetes.resources.BlueprintDefinedResource***\n    \n    Simplest way to define kubernetes resource.\n    It uses Kubernetes YAML description to define resource.\n    Properties of *cloudify.kubernetes.resources.BlueprintDefinedResource*:\n        \n    - *definition* - Kubernetes YAML resource definition\n    - *options* - Kubernetes python client operation options\n\n    Only subtypes of BlueprintDefinedResource can be used.\n    Each subtype represents single kind of kubernetes resource.\n    Currently supported resources:\n\n    - *cloudify.kubernetes.resources.Deployment*\n    - *cloudify.kubernetes.resources.Pod*\n    - *cloudify.kubernetes.resources.ReplicaSet*\n    - *cloudify.kubernetes.resources.ReplicationController*\n    - *cloudify.kubernetes.resources.Service*\n    - *cloudify.kubernetes.resources.PersistentVolume*\n    - *cloudify.kubernetes.resources.StorageClass*\n    - *cloudify.kubernetes.resources.ConfigMap*\n    \n    Example blueprint:\n  \n    ```examples/simple-blueprint_defined_resource.yaml```\n \n * ***cloudify.kubernetes.resources.CustomBlueprintDefinedResource***\n \n    Node type extending *cloudify.kubernetes.resources.BlueprintDefinedResource*.\n    It has been introduced to support some custom kinds of Kubernetes resources\n    which hasn't defined their own subtype definition in *plugin.yaml*.\n    \n    This node type has the same properties like *BlueprintDefinedResource* \n    and additional one: *api_mapping* - containing information about Kubernetes python client objects\n    which should be used to create / delete this resource object on Kubernetes cluster.\n    \n    ```\n        create:\n          api: CoreV1Api\n          method: create_namespaced_pod\n          payload: V1Pod\n        read:\n          api: CoreV1Api\n          method: read_namespaced_pod\n        delete:\n          api: CoreV1Api\n          method: delete_namespaced_pod\n          payload: V1DeleteOptions\n    ```\n    Detailed info about Kubernetes python client objects / methods you can find here:\n    \n    https://github.com/kubernetes-incubator/client-python/tree/master/kubernetes\n \n    Example blueprint:\n  \n    ```examples/simple-custom_blueprint_defined_resource.yaml```\n \n * ***cloudify.kubernetes.resources.FileDefinedResource***\n \n    It enables creation / deletion of Kubernetes resource defined in YAML file.\n    This file may be specified using relative path to file in blueprint or external URL.\n    It should be defined as *file/resource_path* property.\n\n    Example blueprint:\n  \n    ```examples/simple-file_defined_resource.yaml``` \n \n * ***cloudify.kubernetes.resources.MultipleFileDefinedResources***\n\n    The same like *cloudify.kubernetes.resources.FileDefinedResource*, but it takes list of multiple kubernetes resources to be deployed.\n    This list should be defined as *files* property. Each item in this list should be one-item dictionary contains *resource_path* key and path / URL to file as value.\n\n    Example blueprint:\n  \n    ```examples/simple-multiple_file_defined_resources.yaml```\n\n\n\n\n### Upload Kubernetes Dashboard UI Blueprint To Manager\n```shell\n\n1. Update dashboard input file ***dashboard_input.yaml***\n2. Install the dashboard: cfy install -b kubernetes-dashboard -n kubernetes-dashboard examples/dashboard.yaml -i examples/inputs/dashboard-inputs.yaml\n3. Run the following command: cfy deployment outputs kubernetes-dashboard\n4. The output of deployment command should generate ***dashboard_url*** \u0026\u0026  ***bearer_token***\n5. Access the Dashboard using ***dashboard_url*** (https://MASTER_IP:DASHBOARD_PORT)\n6. You may need to open ***DASHBOARD_PORT*** on your security group on which dashboard is running if it is not already open\n7. Login to the Dashboard by selecting token authentication, use the token value of ***{{bearer_token}}***\n```\n\n## Examples\nFor official blueprint examples using this Cloudify plugin, please see [Cloudify Community Blueprints Examples](https://github.com/cloudify-community/blueprint-examples/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudify-cosmo%2Fcloudify-kubernetes-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudify-cosmo%2Fcloudify-kubernetes-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudify-cosmo%2Fcloudify-kubernetes-plugin/lists"}