Razee adalah proyek sumber terbuka yang dikembangkan oleh IBM untuk mengotomatisasi dan mengelola penerapan sumber daya Kubernetes di seluruh klaster, lingkungan, dan penyedia cloud, serta untuk memvisualisasikan informasi penerapan sumber daya Anda sehingga Anda dapat memantau proses peluncuran dan menemukan masalah penerapan lebih cepat.
Lihat tautan berikut untuk memulai Razee:
Tinjau fitur-fitur utama Razee dan bagaimana Anda dapat memanfaatkannya untuk mengelola penerapan sumber daya Kubernetes untuk klaster Anda.
Razee terdiri dari tiga modul, RazeeDash, RazeeDeployables, dan RazeeDeploy, yang digabungkan secara longgar dan dapat digunakan secara mandiri. Dengan RazeeDash, Anda dapat secara dinamis membuat inventaris langsung sumber daya Kubernetes Anda dan menggunakan filter yang kuat serta kemampuan peringatan untuk memvisualisasikan informasi konfigurasi dan memecahkan masalah dalam proses penerapan Anda dengan lebih cepat. Komponen RazeeDeploy dirancang untuk menyederhanakan penerapan multi-cluster dengan membuat template sumber daya Kubernetes, mengelompokkan sumber daya dan cluster, dan menentukan aturan untuk pengelompokan ini sehingga Anda dapat membuat konfigurasi fleksibel yang diterapkan di seluruh cluster, lingkungan, dan cloud.
Komponen | Keterangan |
---|---|
Penjaga Penjaga | Watch Keeper bertanggung jawab untuk mengambil informasi konfigurasi sumber daya Kubernetes dan mengirimkan data ini ke RazeeDash API. Untuk menggunakan Watch Keeper, cukup instal komponen ini di cluster Anda dan tambahkan label razee/watch-resource ke semua sumber daya yang ingin Anda pantau. Setelah Anda menambahkan label, Watch Keeper mengambil informasi konfigurasi dari server API Kubernetes dan segera mengirimkan data ini ke API RazeeDash. Proses ini berulang setiap jam sekali. Selain itu, Watch Keeper menambahkan event watcher Kubernetes ke sumber daya Anda sehingga Watch Keeper diberitahu oleh Kubernetes ketika konfigurasi sumber daya Anda berubah. |
API RazeeDash | RazeeDash API adalah layanan yang menerima konfigurasi sumber daya Kubernetes dan definisi sumber daya dari Watch Keeper. Data yang dikirim ke RazeeDash API secara otomatis disimpan di MongoDB. |
RazeeDash | RazeeDash memvisualisasikan data yang diambil oleh Watch Keeper dan secara dinamis membuat inventaris sumber daya Kubernetes di cluster Anda. Anda dapat menggunakan filter cerdas dan kemampuan peringatan untuk menganalisis data ini dan dengan cepat mengidentifikasi serta menyelesaikan masalah dalam proses penerapan Anda. |
Langganan Cluster | ClusterSubscription adalah penerapan Razee yang memantau langganan di Razee untuk memeriksa apakah ada langganan aktif untuk sebuah cluster. Jika langganan ditemukan, versi sumber daya Kubernetes terkait diambil dari Razee dan secara otomatis diterapkan di cluster. |
Komponen | Keterangan |
---|---|
Inti RazeeDeploy | RazeeDeploy Core adalah alat Pengiriman Berkelanjutan yang berjalan di cluster Anda dan dapat Anda gunakan untuk mengatur CustomResourceDefinitions (CRD), pengontrol Kubernetes, dan dependensi untuk komponen RazeeDeploy. |
RazeeDeploy Delta | RazeeDeploy Delta adalah komponen RazeeDeploy Core yang berjalan di cluster Anda dan selalu memperbarui definisi sumber daya khusus dan pengontrol Kubernetes dari komponen RazeeDeploy. |
Sumber Daya Jarak Jauh dan Sumber Daya Jarak Jauh S3 | RemoteResource dan RemoteResourceS3 adalah definisi dan pengontrol sumber daya khusus yang dapat Anda gunakan untuk menyebarkan sumber daya Kubernetes secara otomatis yang disimpan dalam repositori sumber. Daripada menerapkan file YAML ini secara manual di setiap klaster, lingkungan, atau di seluruh cloud setiap kali pembaruan dilakukan, cukup tentukan repositori sumber di sumber daya jarak jauh Anda dan buat sumber daya jarak jauh di klaster Anda. Pengontrol sumber daya jarak jauh secara otomatis terhubung ke repositori sumber Anda, mengunduh file konfigurasi Kubernetes dan menerapkan file tersebut ke cluster Anda. |
Templat Kumis | MoustacheTemplate adalah definisi dan pengontrol sumber daya khusus untuk menentukan variabel lingkungan yang dapat Anda gunakan untuk mengganti potongan file YAML di file YAML Kubernetes lainnya. Misalnya, gunakan variabel lingkungan templat kumis Anda untuk membuat URL sumber daya jarak jauh sehingga Anda bisa menunjuk ke versi aplikasi yang ingin Anda terapkan. |
FiturBenderaSetLD | FeatureFlagSetLD adalah definisi dan pengontrol sumber daya khusus untuk secara otomatis mengambil nilai tanda fitur dari Launch Darkly. Dengan tanda fitur, Anda dapat mengontrol kode apa yang diterapkan ke klaster Anda dan mengelola beberapa versi sumber daya Kubernetes di seluruh klaster, lingkungan, atau cloud. |
Set Terkelola | ManagedSet adalah definisi dan pengontrol sumber daya khusus untuk mengelompokkan sumber daya Kubernetes yang ingin Anda buat dan terapkan ke klaster secara bersamaan. |
Utilitas Kubernetes | Utilitas Kubernetes adalah paket npm yang dapat Anda gunakan untuk menyederhanakan komunikasi dengan Kubernetes. |
Untuk menerapkan Razee di klaster Anda, klaster Anda harus memenuhi persyaratan berikut:
Pertama instal razeedeploy-delta di custer Anda dengan menjalankan:
kubectl apply -f https://github.com/razee-io/Razee/releases/latest/download/razeedeploy.yaml
Contoh keluaran:
namespace/razeedeploy created
serviceaccount/razeedeploy-sa created
clusterrole.rbac.authorization.k8s.io/razeedeploy-admin-cr configured
clusterrolebinding.rbac.authorization.k8s.io/razeedeploy-rb configured
job.batch/razeedeploy-job created
kubectl get deploy -n razeedeploy
NAME READY UP-TO-DATE AVAILABLE AGE
remoteresource-controller 1/1 1 1 56s
Instal komponen RazeeDash di cluster Anda. Untuk menyimpan data yang dikirim ke RazeeDash API, Anda harus menyiapkan instance MongoDB. Anda dapat memilih untuk menyiapkan RazeeDash dan satu instans MongoDB dengan menggunakan file razeedash-all-in-one.yaml
yang disediakan atau untuk menyiapkan RazeeDash dengan instans MongoDB yang sudah ada dan berjalan di klaster Anda. Catatan : Jika Anda sudah menjalankan instance RazeeDash di salah satu cluster Anda, dan ingin menambahkan cluster lain ke daftar inventaris Anda, Anda dapat melewati langkah ini dan melanjutkan dengan menginstal komponen Watchkeeper di cluster Anda.
Untuk menginstal RazeeDash dan satu instance MongoDB :
kubectl apply -f https://github.com/razee-io/Razee/releases/latest/download/razeedash-all-in-one.yaml
Contoh keluaran:
persistentvolume/mongo-pv-volume created
persistentvolumeclaim/mongo-pv-claim created
deployment.apps/mongo created
service/mongo created
secret/razeedash-secret created
remoteresource.deploy.razee.io/razeedash created
service/razeedash-lb created
service/razeedash-api-lb created
Untuk menggunakan instance MongoDB yang sudah ada :
Buat rahasia razeedash untuk mongo_url. Gantikan perintah di bawah ini dengan nama pengguna dan kata sandi sebenarnya bersama dengan 3 instance host untuk mongo-0, mongo-1 dan mongo-3 bersama dengan port yang benar. Pastikan akhir URL mongo memiliki /razeedash?ssl=true
.
Contoh :
kubectl -n razee create secret generic razeedash-secret --from-literal " mongo_url=mongodb://username:password@mongo‑0:27017,mongo‑1:27017,mongo‑2:27017/razeedash?ssl=true "
kubectl apply -f https://github.com/razee-io/Razee/releases/latest/download/razeedash.yaml
Tunggu hingga penerapan razeedash-api
selesai. Jika Anda memilih untuk membuat RazeeDash dengan menggunakan file razeedash-all-in-one.yaml
yang disediakan pada langkah sebelumnya, instans MongoDB akan dibuat di klaster Anda dan terhubung ke instans API RazeeDash. Penyiapan MongoDB memerlukan waktu beberapa menit untuk diselesaikan dan mungkin menyebabkan kesalahan MongoNetworkError
yang terputus-putus dalam penerapan API RazeeDash Anda. Ketika MongoDB sudah sepenuhnya diatur, Kubernetes secara otomatis menyelesaikan pengaturan instance API RazeeDash Anda.
kubectl logs deploy/razeedash-api -n razee
Contoh keluaran jika MongoDB belum disiapkan:
> [email protected] start /usr/src
> node app/index.js
(node:16) UnhandledPromiseRejectionWarning: MongoNetworkError: getaddrinfo
ENOTFOUND mongo
at Socket. < anonymous > (/usr/src/node_modules/mongodb-core/lib/connection/connect.js:287:16)
at Object.onceWrapper (events.js:284:20)
at Socket.emit (events.js:196:13)
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at processTicksAndRejections (internal/process/task_queues.js:84:9)
(node:16) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch (). (rejection id: 1)
(node:16) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Contoh keluaran jika RazeeDash API sudah disiapkan sepenuhnya:
> [email protected] start /usr/src
> node app/index.js
{ " name " : " apollo/subscription " , " parseUA " :false, " excludes " :[ " referer " , " url " , " body " , " short-body " ], " hostname " : " razeedash-api-7bd66669b7-jj2vj " , " pid " :17, " level " :30, " msg " : " Apollo streaming servic e is configured on redisUrl: redis://redis-service:6379/0 " , " time " : " 2020-06-03T21:57:16.021Z " , " v " :0}
{ " name " : " apollo/subscription " , " parseUA " :false, " excludes " :[ " referer " , " url " , " body " , " short-body " ], " hostname " : " razeedash-api-7bd66669b7-jj2vj " , " pid " :17, " level " :30, " msg " : " Apollo streaming is ena bled on redis endpoint redis-service:6379 " , " time " : " 2020-06-03T21:57:17.062Z " , " v " :0}
{ " name " : " / " , " parseUA " :false, " excludes " :[ " referer " , " url " , " body " , " short-body " ], " hostname " : " razeedash-api-7bd66669b7-jj2vj " , " pid " :17, " level " :30, " msg " : " Created new collection users index users " , " time " : " 2020-06-03T21:57:17.222Z " , " v " :0}
{ " name " : " / " , " parseUA " :false, " excludes " :[ " referer " , " url " , " body " , " short-body " ], " hostname " : " razeedash-api-7bd66669b7-jj2vj " , " pid " :17, " level " :30, " msg " : " Created new View clusterStatsView " , " time " : " 2020-06-03T21:57:17.239Z " , " v " :0}
{ " name " : " / " , " parseUA " :false, " excludes " :[ " referer " , " url " , " body " , " short-body " ], " hostname " : " razeedash-api-7bd66669b7-jj2vj " , " pid " :17, " level " :30, " msg " : " Created new View resourceStatsView " , " time " : " 2020-06-03T21:57:17.241Z " , " v " :0}
{ " name " : " apollo/models " , " parseUA " :false, " excludes " :[ " referer " , " url " , " body " , " short-body " ], " hostname " : " razeedash-api-7bd66669b7-jj2vj " , " pid " :17, " level " :30, " msg " : " SetupDistributedCollections r eceived modelName=resources for DB mongodb://mongo:27017/razeedash " , " time " : " 2020-06-03T21:57:17.284Z " , " v " :0}
{ " name " : " apollo/models " , " parseUA " :false, " excludes " :[ " referer " , " url " , " body " , " short-body " ], " hostname " : " razeedash-api-7bd66669b7-jj2vj " , " pid " :17, " level " :30, " msg " : " SetupDistributedCollections r eceived modelName=orgs for DB mongodb://mongo:27017/razeedash " , " time " : " 2020-06-03T21:57:17.295Z " , " v " :0}
{ " name " : " apollo/models " , " parseUA " :false, " excludes " :[ " referer " , " url " , " body " , " short-body " ], " hostname " : " razeedash-api-7bd66669b7-jj2vj " , " pid " :17, " level " :30, " msg " : " SetupDistributedCollections:c lusters - received modelName=clusters for DB mongodb://mongo:27017/razeedash " , " time " : " 2020-06-03T21:57:17.297Z " , " v " :0}
{ " name " : " apollo " , " parseUA " :false, " excludes " :[ " referer " , " url " , " short-body " , " user-agent " , " req " , " res " ], " hostname " : " razeedash-api-7bd66669b7-jj2vj " , " pid " :17, " level " :30, " msg " : " Initialize apollo application for default auth " , " time " : " 2020-06-03T21:57:17.298Z " , " v " :0}
{ " name " : " apollo " , " parseUA " :false, " excludes " :[ " referer " , " url " , " short-body " , " user-agent " , " req " , " res " ], " hostname " : " razeedash-api-7bd66669b7-jj2vj " , " pid " :17, " level " :30, " msg " : " [] Apollo server c ustom plugin are loaded. " , " time " : " 2020-06-03T21:57:17.299Z " , " v " :0}
{ " name " : " razeedash-api " , " hostname " : " razeedash-api-7bd66669b7-jj2vj " , " pid " :17, " level " :30, " msg " : " ? razeedash-api listening on port 3333/api " , " time " : " 2020-06-03T21:57:17.723Z " , " v " :0}
{ " name " : " apollo " , " parseUA " :false, " excludes " :[ " referer " , " url " , " short-body " , " user-agent " , " req " , " res " ], " hostname " : " razeedash-api-7bd66669b7-jj2vj " , " pid " :17, " level " :30, " msg " : " ? Apollo server listening on http://[::]:3333/graphql " , " time " : " 2020-06-03T21:57:17.734Z " , " v " :0}
Ambil alamat IP eksternal layanan penyeimbang beban razeedash-lb
dan razeedash-api-lb
Anda yang secara otomatis dibuat selama penyiapan RazeeDash API. razeedash-lb
berfungsi sebagai titik akhir publik untuk instans RazeeDash Anda, dan razeedash-api-lb
berfungsi sebagai titik akhir publik untuk instans API RazeeDash Anda. Dengan menggunakan alamat IP publik yang ditetapkan, Anda dapat membuat URL publik yang Anda gunakan untuk mengakses komponen RazeeDash dan API RazeeDash. Untuk menyelesaikan penyiapan RazeeDash, kedua URL harus disimpan di peta konfigurasi RazeeDash. Gunakan perintah Bash berikut untuk mengambil alamat IP publik, membuat URL publik, dan menyimpan URL di peta konfigurasi RazeeDash. Anda juga dapat menjalankan skrip Bash bin/kc_create_razeedash_config.sh
. Perhatikan bahwa Anda harus menyertakan akhiran /
di akhir root_url
dan razeedash_api_url
di peta konfigurasi RazeeDash Anda.
# Amazon EKS uses host names, IBM Cloud Kubernetes Service uses Ingress IP addresses. This handle both.
RAZEEDASH_LB_IP= $( kubectl get service razeedash-lb -n razee -o jsonpath= " {.status.loadBalancer.ingress[*].ip} " )
RAZEEDASH_API_LB_IP= $( kubectl get service razeedash-api-lb -n razee -o jsonpath= " {.status.loadBalancer.ingress[*].ip} " )
RAZEEDASH_LB_HOSTNAME= $( kubectl get service razeedash-lb -n razee -o jsonpath= " {.status.loadBalancer.ingress[*].hostname} " )
RAZEEDASH_API_LB_HOSTNAME= $( kubectl get service razeedash-api-lb -n razee -o jsonpath= " {.status.loadBalancer.ingress[*].hostname} " )
RAZEEDASH_LB= ${RAZEEDASH_LB_HOSTNAME} && [[ " ${RAZEEDASH_LB_IP} " != " " ]] && RAZEEDASH_LB= ${RAZEEDASH_LB_IP}
RAZEEDASH_API_LB= ${RAZEEDASH_API_LB_HOSTNAME} && [[ " ${RAZEEDASH_API_LB_IP} " != " " ]] && RAZEEDASH_API_LB= ${RAZEEDASH_API_LB_IP}
kubectl create configmap razeedash-config -n razee
--from-literal=root_url=http:// " ${RAZEEDASH_LB} " :8080/
--from-literal=razeedash_api_url=http:// " ${RAZEEDASH_API_LB} " :8081/
Verifikasi bahwa semua komponen Razee telah diterapkan dan tampilkan 1/1
di kolom READY pada output CLI Anda.
kubectl get deployments -n razee
Contoh keluaran:
NAME READY UP-TO-DATE AVAILABLE AGE
featureflagsetld-controller 1/1 1 1 53m
managedset-controller 1/1 1 1 53m
mongo 1/1 1 1 34m
mustachetemplate-controller 1/1 1 1 53m
razeedash 1/1 1 1 25m
razeedash-api 1/1 1 1 25m
razeedeploy-delta 1/1 1 1 53m
remoteresource-controller 1/1 1 1 53m
remoteresources3-controller 1/1 1 1 53m
Buka layar selamat datang RazeeDash.
open http:// " ${RAZEEDASH_LB} " :8080
Buat aplikasi OAuth
untuk RazeeDash di GitHub, GitHub Enterprise, atau Bitbucket.
Dari layar selamat datang RazeeDash, pilih ubin alat tempat Anda ingin membuat aplikasi OAuth
.
Ikuti petunjuk di jendela pop-up untuk membuat aplikasi OAuth
.
Klik Simpan konfigurasi .
Dari layar selamat datang RazeeDash, klik Masuk dengan <integration_tool> .
Ikuti instruksi di jendela pop-up untuk memberikan akses RazeeDash ke alat integrasi yang Anda pilih.
Jika Anda perlu menyetel ulang salah satu kredensial OAuth
maka Anda dapat memulai kembali dengan membuka shell mongo ke instance Anda dan menjalankannya
> use razeedash
> db.meteor_accounts_loginServiceConfiguration.remove({})
Instal Watch Keeper di setiap cluster yang ingin Anda pantau. Cluster tempat Anda menginstal Watch Keeper dapat berupa cluster yang berbeda dari cluster tempat Anda menginstal RazeeDash.
Dari konsol RazeeDash, klik Daftar .
Klik Kelola .
Salin perintah Instal Razee Agent kubectl
.
Jalankan perintah di klaster yang ingin Anda pantau untuk membuat komponen Watch Keeper. Jika Anda menginstal Watch Keeper di cluster yang sama tempat Anda menginstal RazeeDash, Anda akan melihat pesan bahwa beberapa komponen Watch Keeper sudah ada di cluster Anda. Anda dapat mengabaikan pesan-pesan ini.
kubectl create -f http:// < razeedash-api-lb_external_IP > :8081/api/install/cluster ? orgKey=orgApiKey- < org_api_key >
Contoh output untuk klaster tempat RazeeDash diinstal:
deployment.apps/remoteresource-controller created
configmap/watch-keeper-config created
secret/watch-keeper-secret created
remoteresource.deploy.razee.io/watch-keeper-rr created
Error from server (AlreadyExists): error when creating
" http://4e0ef59e-us-south.lb.appdomain.cloud:8081/api/install/cluster?
orgKey=orgApiKey-d52b52fc-38ae-4da0-b187-6e097e5bfe5c " : namespaces
" razee " already exists
Error from server (AlreadyExists): customresourcedefinitions.
apiextensions.k8s.io " remoteresources.deploy.razee.io " already exists
Error from server (AlreadyExists): error when creating
" http://4e0ef59e-us-south.lb.appdomain.cloud:8081/api/install/cluster?
orgKey=orgApiKey-d52b52fc-38ae-4da0-b187-6e097e5bfe5c " : namespaces
" razee " already exists
Error from server (AlreadyExists): error when creating
" http://4e0ef59e-us-south.lb.appdomain.cloud:8081/api/install/cluster?
orgKey=orgApiKey-d52b52fc-38ae-4da0-b187-6e097e5bfe5c " : serviceaccounts
" razeedeploy-sa " already exists
Error from server (AlreadyExists): error when creating
" http://4e0ef59e-us-south.lb.appdomain.cloud:8081/api/install/cluster?
orgKey=orgApiKey-d52b52fc-38ae-4da0-b187-6e097e5bfe5c " : clusterroles.
rbac.authorization.k8s.io " razeedeploy-admin-cr " already exists
Error from server (AlreadyExists): error when creating
" http://4e0ef59e-us-south.lb.appdomain.cloud:8081/api/install/cluster?
orgKey=orgApiKey-d52b52fc-38ae-4da0-b187-6e097e5bfe5c " :
clusterrolebindings.rbac.authorization.k8s.io " razeedeploy-rb " already exists
Error from server (AlreadyExists): error when creating
" http://4e0ef59e-us-south.lb.appdomain.cloud:8081/api/install/cluster?
orgKey=orgApiKey-d52b52fc-38ae-4da0-b187-6e097e5bfe5c " : configmaps
" razeedeploy-delta-resource-uris " already exists
Error from server (AlreadyExists): error when creating
" http://4e0ef59e-us-south.lb.appdomain.cloud:8081/api/install/cluster?
orgKey=orgApiKey-d52b52fc-38ae-4da0-b187-6e097e5bfe5c " : deployments.apps
" razeedeploy-delta " already exists
Contoh output untuk klaster di mana RazeeDash tidak diinstal:
configmap/watch-keeper-config created
secret/watch-keeper-secret created
clusterrole.rbac.authorization.k8s.io/cluster-reader created
serviceaccount/watch-keeper-sa created
clusterrolebinding.rbac.authorization.k8s.io/watch-keeper-rb created
networkpolicy.networking.k8s.io/watch-keeper-deny-ingress created
deployment.apps/watch-keeper created
Error from server (AlreadyExists): namespaces " razee " already exists
Tunggu hingga penerapan Watch Keeper selesai.
kubectl get deployment -n razee | grep watch-keeper
Contoh keluaran:
watch-keeper 1/1 1 1 2m5s
Dari konsol RazeeDash, klik RazeeDash untuk membuka halaman detail RazeeDash dan memverifikasi bahwa Anda dapat melihat informasi penerapan untuk pod Watch Keeper Anda.
Dengan pengaturan Watch Keeper di cluster Anda, Anda dapat mengambil informasi penerapan untuk sumber daya Kubernetes lain yang ingin Anda pantau. Data secara otomatis dikirim ke RazeeDash API dan Anda dapat mengakses, memantau, dan menganalisis data ini dengan RazeeDash.
Putuskan informasi apa yang Anda ingin Watch Keeper ambil dengan memilih di antara tingkat detail informasi berikut:
lite
: Mengambil bagian metadata
dan status
konfigurasi sumber daya Kubernetes Anda.detail
: Mengambil semua data konfigurasi sumber daya Kubernetes, tetapi mengabaikan variabel lingkungan dan bagian data
peta konfigurasi dan rahasia.debug
: Mengambil semua data konfigurasi sumber daya Kubernetes, termasuk variabel lingkungan dan data
. bagian peta konfigurasi dan rahasia. Informasi ini mungkin berisi informasi sensitif, jadi gunakan opsi ini dengan hati-hati. Tambahkan label razee/watch-resource
ke bagian label semua sumber daya Kubernetes yang ingin Anda pantau dan tentukan tingkat detail informasinya. Misalnya, jika Anda ingin memantau penerapan Kubernetes, gunakan perintah berikut. Setelah Anda menambahkan label ke sumber daya Anda, Watch Keeper secara otomatis memindai sumber daya Anda dan mengirimkan data ke API RazeeDash. Kemudian, sumber daya Anda dipindai setiap jam sekali. Selain itu, Watch Keeper menambahkan event watcher Kubernetes ke sumber daya Anda sehingga Watch Keeper diberitahu oleh Kubernetes ketika konfigurasi sumber daya Anda berubah.
kubectl edit deployment < deployment_name >
Contoh file YAML:
apiVersion : extensions/v1beta1
kind : Deployment
metadata :
annotations :
deployment.kubernetes.io/revision : " 1 "
kubectl.kubernetes.io/last-applied-configuration : |
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app":"myapp"},"name":"expandpvc","namespace":"default"},"spec":{"selector":{"matchLabels":{"app":"myapp"}},"template":{"metadata":{"labels":{"app":"myapp"}},"spec":{"con