occurrencesResponse := grafeas.ListOccurrencesResponse{} imageUrl := "https://gcr.io/myproject/name@sha256hash" hasFixableVulnerability := false // Iterate through occurrences looking for vulnerability occurrences for this image for _, occurrence := range occurrencesResponse.Occurrences { resourceUrl := occurrence.ResourceUrl if imageUrl != resourceUrl && occurrence.Kind != grafeas.Note_PACKAGE_VULNERABILITY { continue } details := occurrence.GetVulnerabilityDetails() issues := details.GetPackageIssue() // This vulnerability is fixable, we should not insert an attestation for _, i := range issues { if i.FixedLocation != nil { hasFixableVulnerability = true } } } // If there are no fixable vulnerabilities, create an attestation occurrence if !hasFixableVulnerability { occ := &grafeas.Occurrence{ ResourceUrl: imageUrl, NoteName: "projects/vulnerabilty-certification/notes/vuln-free", Details: &grafeas.Occurrence_AttestationDetails{ AttestationDetails: &grafeas.AttestationAuthority_AttestationDetails{ Signature: &grafeas.AttestationAuthority_AttestationDetails_PgpSignedAttestation{ PgpSignedAttestation: &grafeas.PgpSignedAttestation{ Signature: "MySignature", ContentType: grafeas.PgpSignedAttestation_SIMPLE_SIGNING_JSON, KeyId: "ThisIsMyKeyId", }, }, }, }, } req := grafeas.CreateOccurrenceRequest{Occurrence: occ} }
「自動カナリア分析は Netflix の本番デプロイ プロセスに不可欠な要素であり、私たちは Kayenta をリリースできたことをうれしく思っています。Kayenta に関する私たちと Google のパートナーシップは、アプリケーション、構成、データ変更など幅広いシナリオにおいて自動カナリア分析を実行するのに役立つ柔軟なアーキテクチャを生み出しました。Spinnaker と Kayenta のインテグレーションのおかげで、チームはカナリア分析のためにツールを切り替えることなく、パイプラインに沿って一貫したプロセスでデプロイを行えます。2018 年末までに、Kayenta はカナリア分析の判定を 1 日に数千回行うようになるでしょう。Spinnaker と Kayenta は高速で信頼性が高く、使いやすいツールであり、リスクを最小限に抑えながら迅速で大規模なデプロイを可能にします。」 — Greg Burrell 氏、Netflix のシニア リライアビリティ エンジニア(Netflix のブログ記事で詳しくご覧になれます)
「Spinnaker のデプロイ パイプラインでカナリア分析を行えば、デプロイの失敗を自動的に特定できます。ただし、本番環境で 1,000 以上のパイプラインが実行されていると、カナリア分析の一環として人間が何らかの形で介在した場合、継続的デリバリに大きな支障が出てしまいます。Kayenta によって実現されるような自動カナリア デプロイを利用して、私たちのチームは早期に異常を発見し、開発をスピードアップしてきました。さらに Kayenta はオープンソースであるため、このツールで標準化することはベンダー ロックインのリスク軽減にもつながります。私たちは Google および Netflix と密接に協力し、開発サイクルへの Kayenta の統合を推し進めるとともに、自社で開発した Jenkins ジョブのカナリア プロセスをなくすことを楽しみにしています。」 — Tom Feiner 氏、Waze のシステム オペレーション エンジニア